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.3.1.tar.gz (47.2 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.3.1-py3-none-any.whl (38.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for workrail-0.3.1.tar.gz
Algorithm Hash digest
SHA256 9276c16c02199a3943c407672d63d3e25b653c343c85efe0be9d1b7967fc23e1
MD5 46dff0ec2a37273572a73f36697df845
BLAKE2b-256 e3d67367435317b485b39dfa6e3f1d4fc96015c4680609f244e07891137561e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for workrail-0.3.1.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.3.1-py3-none-any.whl.

File metadata

  • Download URL: workrail-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 38.0 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.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d72b8ebcf33824d87d1718844747745403f2c1c510a4b2bc29ae39ab928b3bbc
MD5 e5b1feb15724a0f846f3ad4114d96395
BLAKE2b-256 d6b5f5f973113a569dcc0ed7cacfc4f64a039faf45ac45ded18455c5d346b504

See more details on using hashes here.

Provenance

The following attestation bundles were made for workrail-0.3.1-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