Skip to content

Latest commit

 

History

History
123 lines (96 loc) · 4.03 KB

README.md

File metadata and controls

123 lines (96 loc) · 4.03 KB

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.