Performance debt, made actionable

Know which performance debt to fix first.

Slowpoke measures the time slow requests, queries and jobs cost you each day. Give your team a clear priority, then see whether the fix paid off.

Free · Open source · Self-hosted Demo needs no sign-up

Choose which part of Slowpoke to preview
Open the live demo
The panel of the demo shop: a speed index of 77.2 with its level and where the next points are, 7 hours 37 minutes of waiting per day as technical debt with the queries that cause it, thirty days of the index against every deploy, the open missions with their points, the wins of the week and the badges.
Open the live demo
The infrastructure map Slowpoke drew by itself: six machines, the services inside them, who talks to whom, and the two nobody is measuring yet.
Open the live demo
Slow things: the statements that cost the most, each with what it costs per day, whether it is an N+1, and the line of application code that ran it.
Open the live demo
Missions: what each one costs per day, what winning means, what an hour of work gives back, the points ledger and the hall of fame.

Real product screens with sample data. Explore the demo to see the full workflow.

For engineering leaders

Make performance work easier to prioritise.

Find the work that matters

A small delay repeated all day can cost more than one slow report. Rank issues by cumulative daily cost.

Give the team a starting point

Turn costly issues into missions, with query diagnoses and code origins where available.

Show what improved

Track the cost after a change and share a debt report that makes progress clear beyond engineering.

The cost of repetition

Small delays add up.

A query can look fast in isolation and still consume an hour of execution time every day. Slowpoke makes that cumulative cost visible, so your next sprint tackles the right problem.

Daily cost is measured in time, not an estimate of lost revenue. Understand the calculation.

Illustrative example

40 ms per query × 90,000 calls/day

1 hourof query execution every day

Fits your stack

Start with the systems you already run.

Read access logs and database statistics first. Add a framework package when you want to trace a query back to your code.

Explore integrations and deployment →

Your data. Your infrastructure.

Self-host Slowpoke alongside your applications. Keep your existing monitoring and use the daily cost ranking to decide what to improve next.

Web servers · SQL databases · Queues and caches · Framework packages

Compare with other tools →

Get started

Running in three steps.

About 15 minutes, nothing to sign up for. Here is where each command runs, what it changes and what you will see.

  1. On the server that will host the panel

    Start the panel

    How to run the panel
    curl -fsSL https://getslowpoke.com/install.sh | sh

    Select the command to copy it. Needs Docker with the compose plugin; the installer checks and says what is missing.

    • Creates /opt/slowpoke with a compose.yaml and a database password it generates itself
    • Starts two containers, Slowpoke and PostgreSQL 17, on port 8080
    • Changes nothing else on the server, and asks no questions
    • Safe to run again: keeps the data and the password, updates the images
    what you will see
    Database password generated, written to /opt/slowpoke/.env Fetching the images and starting… Slowpoke is up. 1. Open http://10.0.0.5:8080/setup?code=WFRC-EUNP-BVMH and create the administrator (setup code: WFRC-EUNP-BVMH)
    B=https://github.com/getslowpoke/slowpoke/releases/latest/download curl -fsSL -o /usr/local/bin/slowpoke-server $B/slowpoke-server-linux-amd64 && chmod +x /usr/local/bin/slowpoke-server mkdir -p /usr/local/share/slowpoke && cd /usr/local/share/slowpoke curl -fsSLO $B/slowpoke-agent-linux-amd64 && curl -fsSLO $B/slowpoke-agent-linux-arm64 SLOWPOKE_DATABASE_URL=postgres://slowpoke:PASSWORD@127.0.0.1:5432/slowpoke slowpoke-server serve

    On an ARM server, take slowpoke-server-linux-arm64. Keep both agents: your machines may differ. Every release lists its checksums in SHA256SUMS.

    • One static binary for Linux: the panel, the API and the workers
    • The agents sit in /usr/local/share/slowpoke, so in step 3 your machines download them from your own server
    • Needs an empty PostgreSQL database and a user that owns it; the tables are created on the first start
    • To try it without a database, point it at a file: sqlite:///var/lib/slowpoke/slowpoke.db
    • Answers on port 8080. For production, run it as a systemd service: the unit is in the server docs
    what you will see
    background workers started slowpoke server listening addr=:8080 database=postgres no administrator yet: open the panel and enter this setup code setup_code=WFRC-EUNP-BVMH
  2. In your browser

    Create your account and a project

    • The first visit asks for the setup code the installer printed, then a name, an email and a password: that user is the administrator
    • Create a project for your application and pick its time zone
    • Open Machines → Add agent: you get one command with a token for that machine only, revocable at any time
    • The code is what keeps a fresh panel from belonging to whoever reaches it first. Lost it? slowpoke-server setup-code prints it again
    http://your-server:8080/setup

    Welcome to Slowpoke

    Setup code

    WFRC-EUNP-BVMH

    Then Machines → Add agent gives each machine its command.

    Waiting for the agent

  3. On each machine that runs your app

    Connect a machine

    curl -fsSL http://your-server:8080/install.sh | sudo sh -s -- --token spa_…

    Copy it from the panel: it carries your server address and the machine's token.

    • No Docker here, whichever way you ran the panel: one binary and a systemd service
    • Downloads the agent from your own server and checks its checksum
    • Creates a slowpoke system user with no shell. It may read any file, which is how it reaches every log, and cannot write outside its own state directory
    • Looks at the machine and writes /etc/slowpoke/agent.yaml by itself
    • Runs as a systemd service, capped at 128 MB, at low priority, with the system read-only
    what you will see
    -> Downloading the agent (linux-amd64) from http://your-server:8080 -> Looking at this machine Configuration written to /etc/slowpoke/agent.yaml The agent is running. This machine shows up in the panel within a minute

What it can touch, before you run it

Your machines

The agent may read any file, to reach the logs, and writes only to its own state directory. The system is read-only to it, memory is capped at 128 MB and it runs at low priority. The same command with --uninstall removes the agent, its service and its configuration.

Your database

A user you create, with read access to your tables: EXPLAIN needs it. Plain EXPLAIN, never ANALYZE, so no statement is executed, in a read-only transaction, and only on statements already seen on that machine.

What leaves the machine

Timings and statements with their values redacted, sent to your own panel only. Real values stay on the machine unless you turn on sample sharing.

The network

The agent refuses plain http to a public address, because the token would travel in clear. Nothing is sent to us: the update check runs only when someone asks for it.

The panel's server

1 vCPU, 256 MB of memory and 1 GB of disk to start. 2 vCPU and 512 MB plus PostgreSQL is comfortable. Until an administrator exists, the panel asks for a one-time setup code that only the server can print.

The licence

Server and panel under AGPL-3.0-or-later, agent and framework packages under MIT. Free, with no per-host or per-seat fees.

For anything beyond a try, put the panel behind HTTPS and set SLOWPOKE_PUBLIC_URL. Read the installer · Installation docs

Look around the live demo first

Before you install

Is Slowpoke an APM?
Slowpoke focuses on performance debt: its cumulative daily cost, what to fix first and whether the work helped. You can run it alongside your existing APM. It does not provide session replay, log management or on-call tooling.
What do I need to install it?
A Linux server for the Slowpoke panel, with Docker or without it (one binary and your PostgreSQL), plus an agent on each machine you want to monitor: a single binary run by systemd, no Docker needed. Start with access logs and database statistics. Optional framework packages add application context and query origins.
What can the agent access?
It may read any file on the machine, which is how it reaches every log, and cannot write outside its own state directory. Its database user can read your tables, because EXPLAIN needs it, but it runs plain EXPLAIN, never ANALYZE, in a read-only transaction. Query values are redacted before anything leaves the machine.
Does my data stay on my infrastructure?
Yes. Agents send observations to your own Slowpoke server. Query values are redacted by default; the original statements used for query plans stay on the machine that observed them.
What does it cost?
Slowpoke is free and open source, with no per-host, seat or event fees. You provide and pay for the infrastructure that runs it.