Skip to main content

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.

Metadata

Release files for workrail 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for workrail 0.3.1
File Size Uploaded
workrail-0.3.1.tar.gz 47.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for workrail 0.3.1
File Interpreter ABI Platform
workrail-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 85.2 kB

Release files / workrail-0.3.1.tar.gz

Download URL workrail-0.3.1.tar.gz
Size 47.2 kB
Tags Source
SHA-256 checksum
How to use checksums
9276c16c02199a3943c407672d63d3e25b653c343c85efe0be9d1b7967fc23e1
BLAKE2b-256 checksum
How to use checksums
e3d67367435317b485b39dfa6e3f1d4fc96015c4680609f244e07891137561e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 17, 2026.

Transparency log

Release files / workrail-0.3.1-py3-none-any.whl

Download URL workrail-0.3.1-py3-none-any.whl
Size 38.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d72b8ebcf33824d87d1718844747745403f2c1c510a4b2bc29ae39ab928b3bbc
BLAKE2b-256 checksum
How to use checksums
d6b5f5f973113a569dcc0ed7cacfc4f64a039faf45ac45ded18455c5d346b504
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 17, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page