Watch any process
Some things run for hours with nobody watching: a nightly crawl, a training run, a migration, a CI pipeline, an agent working through a long task. Progress Watch gives them one place to report to, and gives you one place to look — plus a notification when they finish.
Three commands from inside the work
Create a task where the job starts, report against it as it moves, close it when it is done. The middle one is the call that goes in your loop, and it is the only thing that knows the numbers.
Counts, not percentages: the screen shows 1200 / 50000 pages, which tells you something that 2.4% does not. The total may change as a job discovers more work — send the new number and the bar recalculates. The CLI page has all three, ready to paste.
When the process is not yours to change, progresswatch run "python train.py" wraps it whole — it creates the task, passes the output through untouched and closes it with the exit code, so a job that fails still notifies you. It reports start and finish rather than counts, because nothing outside a process knows how far along it is.
Or one request, from anything
Underneath all of it is a single HTTP request, and that is the whole API. There is no SDK to install and nothing to import, because wrapping one PUT would add nothing you could not write yourself in less time than reading its documentation.
The API reference is the reference to build against, and pasting the curl examples is the fastest way to see the thing work before you commit to it.
Agents report their own work
An AI agent breaks a job into steps and then works for a long time with nothing to show for it. Connect one over MCP and it gets tools for creating a task and reporting against it: one task for the job, one child task per step, updated as it goes. MCP needs nothing installed anywhere; for a client that does not speak it, an agent skill teaches the same thing through the CLI.
The agent decides when tracking is worth it and how often to report. The tool descriptions tell it what a task is for, not a schedule to follow.
No accounts
A space is a container for tasks, and its UUID is the credential. Whoever has the link can read and write it; sharing is giving someone the link. There is nothing to sign up for, nothing to log into, and no password to lose — which also means the link is the only way back to a space, so it is worth keeping like an API token.
Progress is not stored
Current state lives in memory and expires on its own. A crawler reporting every second for three months does not grow a database, and there is nothing to clean up afterwards. The trade is deliberate: there is no history and no charts, only what is happening now.
What it will not do
- Send commands back. It is a departures board, not an orchestrator. A process reports; nothing reports to it.
- Keep a log. One line, the latest, per task. Log storage is a solved problem and this is not it.
- Nest more than one level. A task may have steps; a step may not.
Run it yourself
The server is open source and self-hosting is one container plus a Redis — see the Docker snippet to start it and self-hosting for running it properly. The hosted service exists so you do not have to, not because the software is crippled without it.
Nothing to sign up for
Make a space, keep its link, and start reporting into it from anything.
Create a space