Skip to main content

A local-first workstream journal for developers and AI coding agents.

Project description

WorkRail

Python License Status

WorkRail is a local-first workstream journal for developers and AI coding agents.

It records the useful trail around meaningful work: what started, what changed, what got blocked, what should happen next, and how the work finished. WorkRail is intentionally smaller than a task board. It stores structured progress events in a local SQLite database, then turns them into reports, JSON state, and a read-only dashboard.

Why WorkRail

  • Keep a compact timeline for work that spans more than one command or message.
  • Let AI coding agents leave useful progress notes without dumping full transcripts.
  • Generate daily and weekly Markdown reports from structured events.
  • Inspect the current workstream from scripts with JSON output.
  • Keep data local by default, with no service account or hosted backend required.

Install

Install from PyPI:

pip install workrail

If the package has not been published yet, install from a local checkout:

pip install -e .

Or install directly from GitHub:

python -m pip install "git+https://github.com/xu-sheng-dev/workrail.git"

For development:

python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -e ".[dev]"

On macOS or Linux:

python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

WorkRail has no runtime dependencies outside the Python standard library.

Quick Start

workrail start "Fix token expiry handling"
workrail checkpoint "Found a timestamp unit mismatch"
workrail note "Backend returns seconds while frontend expects milliseconds"
workrail next "Verify with local mock data"
workrail done "Fixed the conversion and passed related tests"
workrail report today

WorkRail keeps one current rail. If another rail is already active, start fails by default so you do not accidentally mix two workstreams. Finish it, abandon it, or intentionally replace it:

workrail abandon "No longer current"
workrail start "New task" --force

Use --help to inspect the CLI:

workrail --help
workrail start --help

Agent Usage

WorkRail is designed to be easy for coding agents to use while they work.

workrail current --json
workrail start "Improve test coverage" --source agent --project auto --quiet
workrail checkpoint "Added storage regression tests" --source agent --quiet
workrail done "Implemented tests and verified with pytest" --source agent --quiet

The bundled skill gives agents a small policy for when to log progress, when to record a blocker, and when to stop. Install it into a supported agent skills directory:

workrail install-skill --agent codex     # ~/.agents/skills (shared with OpenCode)
workrail install-skill --agent claude    # ~/.claude/skills
workrail install-skill --agent opencode  # ~/.agents/skills (same as codex)

codex and opencode both resolve to ~/.agents/skills, the common discoverable directory; running both just rewrites the same files. Install for claude separately when you want it visible to Claude Code.

You can also install to a custom directory:

workrail install-skill --target ./installed-skills --force

With --agent auto, WorkRail installs into the only existing supported agent directory. If multiple supported directories exist, specify --agent or --target. When none exist yet, auto falls back to ~/.agents/skills.

Local Dashboard

Start the read-only dashboard:

workrail web

Open:

http://127.0.0.1:18765

The dashboard binds to 127.0.0.1 by default. Binding to another host can expose local work data on your network.

Commands

Command Purpose
start Start a new rail.
note or n Record a note on the current rail.
checkpoint Record meaningful progress.
block Mark the current rail as blocked and record why.
next Record the next step.
done Complete the current rail.
abandon Stop tracking the current rail without marking it done.
current Show the current rail, optionally as JSON.
today Show today's workstream.
report Generate a Markdown report for today or week.
web Start the local dashboard.
install-skill Install the bundled agent skill.

Data And Privacy

WorkRail stores data in a local SQLite database. Set WORKRAIL_DB to choose the database file:

set WORKRAIL_DB=C:\temp\workrail.db

On macOS or Linux:

export WORKRAIL_DB=/tmp/workrail.db

Without WORKRAIL_DB, WorkRail uses the standard local app data directory:

Platform Default location
Windows %LOCALAPPDATA%\WorkRail\workrail.db
macOS ~/Library/Application Support/workrail/workrail.db
Linux $XDG_DATA_HOME/workrail/workrail.db or ~/.local/share/workrail/workrail.db

WorkRail includes basic safeguards that reject common secret-shaped content such as token assignments, bearer tokens, private keys, and AWS access keys. Treat this as a guardrail, not a substitute for reviewing what you ask humans or agents to record.

Project Status

WorkRail is alpha software. The first release focuses on a small, stable core:

  • Local SQLite storage.
  • A compact CLI.
  • Agent-friendly JSON output.
  • Daily and weekly Markdown reports.
  • A read-only local dashboard.
  • A bundled agent skill and installer command.

Development

pip install -e ".[dev]"
ruff check .
pytest
python -m build

License

WorkRail is released under the MIT License. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

workrail-0.2.0.tar.gz (39.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

workrail-0.2.0-py3-none-any.whl (32.2 kB view details)

Uploaded Python 3

File details

Details for the file workrail-0.2.0.tar.gz.

File metadata

  • Download URL: workrail-0.2.0.tar.gz
  • Upload date:
  • Size: 39.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for workrail-0.2.0.tar.gz
Algorithm Hash digest
SHA256 88a1270597ac96d20adde940b872a8bdab9061f9452685719dcdf1c822985e93
MD5 6aac26fd470d1a12c3dfa0ae98a1dea0
BLAKE2b-256 1bdaeadf5403ed8f296398e1b034b5b9bb49082bb9b89d32b22afe71efb29de6

See more details on using hashes here.

Provenance

The following attestation bundles were made for workrail-0.2.0.tar.gz:

Publisher: publish.yml on xu-sheng-dev/workrail

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file workrail-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: workrail-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 32.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for workrail-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f39e4166e0271f506015f73aa662ea2e7dd0c0ca7e604d6ff84be4e8fd9887d3
MD5 500ccc1ed09e0c170330f405c432fb3e
BLAKE2b-256 61340e889f5a007d24d2ad326a6b415cd4479aa56e7cec0106f79aef64715536

See more details on using hashes here.

Provenance

The following attestation bundles were made for workrail-0.2.0-py3-none-any.whl:

Publisher: publish.yml on xu-sheng-dev/workrail

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page