Skip to content

Latest commit

 

History

86 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Progress Watch
Progress Watch

Open source progress tracking for anything that runs without you

A nightly crawl, a training run, a migration, a CI pipeline, an AI agent working through a long task — they all run for hours with nobody watching. Progress Watch gives them one place to report to, one place for you to look, and a push notification when they finish.

This repository is the server. The command line client is progresswatch-cli.

Features

  • CLI for shells and CI jobs
  • MCP server and an agent skill for AI agents
  • One HTTP request from anything else, no SDK needed
  • Counts, not just percentages: 1200 / 50000 pages
  • Steps, one level deep
  • Live dashboard in the browser
  • Web Push when something finishes, with nothing to register with Apple or Google
  • No accounts: a space UUID is the credential
  • Progress stays out of the database, so it never grows
  • SQLite or PostgreSQL

Deploy

Render DigitalOcean Railway
Deploy to Render Deploy to DigitalOcean Deploy on Railway

Docker

docker run --name progresswatch -p 7979:3000 -v progresswatch:/data progresswatch/progresswatch

Then open http://localhost:7979. It uses SQLite by default; set DATABASE_URL to use PostgreSQL.

Docker Compose

services:
  progresswatch:
    image: progresswatch/progresswatch:latest
    container_name: progresswatch
    restart: unless-stopped
    ports:
      - 7979:3000
    volumes:
      - progresswatch:/data

volumes:
  progresswatch:
docker compose up -d

Everything is configured with environment variables.

Reporting into it

npm install -g progresswatch
progresswatch space new "My work"

TASK=$(progresswatch new "Crawl docs")
progresswatch update $TASK --current 1200 --end 50000 --values pages=1200
progresswatch done $TASK

Or wrap a command you cannot change; that reports a start and a finish, not counts:

progresswatch run "python train.py"

Documentation

Development

Ruby 4.0.5 (see .tool-versions), Node 22, and a local Redis.

bundle install
npm install
bin/rails db:prepare
bin/dev

Set PW_PORT to move the server, since foreman overrides PORT. docker compose up runs the published image, not your checkout.

bundle exec rspec
bundle exec rubocop

Run ./bin/shakapacker once before the specs if bin/dev has not built the assets yet. Migrations have to run on both SQLite and PostgreSQL, and CI checks both.

License

Distributed under the AGPL-3.0 license.

Releases

Contributors

Languages