Skip to main content

.track — lightweight ticketing & agent coordination for multi-agent coding workflows

Project description

.track

License PyPI

Lightweight ticketing & agent coordination for multi-agent coding workflows.

Built to orchestrate multiple Claude Code sessions (or any AI agents) working on the same codebase in parallel. All state lives in a .track/ directory as markdown and JSON files. No database, no external services, zero dependencies -- Python stdlib only.

Install

The PyPI package name is agent-track (.track is not a valid package name):

pipx install agent-track    # recommended
# or
pip install agent-track

This gives you the track command.

Quick Start

track init                                          # create .track/ directory
track create --title "Fix auth bug" --priority high # create a ticket
track register --agent agent-alpha                  # register an agent
track claim T-0001 --agent agent-alpha              # claim the ticket
track update T-0001 --status in-progress --agent agent-alpha
track log T-0001 --agent agent-alpha -m "Found root cause in token_refresh()"
track board --agent agent-alpha -m "Starting work on auth module"
track list                                          # see all active tickets
track serve -d                                      # start web dashboard

Features

  • Zero dependencies -- pure Python stdlib, single pip install
  • File-based storage -- markdown tickets + JSON agents in .track/
  • Concurrent-safe -- fcntl.flock advisory locks, atomic writes
  • Web dashboard -- kanban board at localhost:7777 with auto-refresh
  • Agent coordination -- heartbeats, file ownership tracking, message board
  • Git-friendly -- all state is plain text, easy to commit and review

Commands

Command Description
track init Create .track/ directory structure
track create --title "..." [-p priority] [-l labels] Create a ticket
track list [--status X] [--agent X] [--label X] List tickets (excludes done by default)
track show T-0001 Print full ticket markdown
track claim T-0001 --agent X Claim a ticket (checks dependencies)
track update T-0001 --status X [--agent X] Update ticket (enforces valid transitions)
track log T-0001 --agent X -m "message" Append to ticket work log
track board --agent X -m "message" Post to the message board
track board --last 10 Read recent board entries
track register [--agent X] [--capabilities python,ui] Register an agent
track deregister --agent X [--release-tickets] Deregister an agent
track files --add path --agent X --ticket T-0001 Track file ownership
track files --check path Check who owns a file
track heartbeat --agent X Update heartbeat timestamp
track stale [--reclaim] Detect/reclaim stale agents
track serve [--port 7777] [-d] Start web dashboard
track stop Stop background dashboard

Ticket Lifecycle

backlog -> claimed -> in-progress -> review -> done

Valid transitions are enforced. Use --force to override.

TRACK_DIR Discovery

By default, track walks up from the current directory to find a .track/ folder (like git finds .git/). You can override this with the TRACK_DIR environment variable:

TRACK_DIR=/path/to/.track track list

Dashboard

Start the web dashboard with track serve (default port 7777). Use -d to daemonize:

track serve -d        # background mode
track stop            # stop the background server

The dashboard shows a kanban board, active agents, file ownership conflicts, and the message board. Auto-refreshes every 5 seconds.

CLAUDE.md Integration

To make Claude Code sessions automatically follow the agent protocol, add the following to your project's CLAUDE.md:

## Agent Protocol

This project uses `track` for multi-agent coordination. All task state lives in `.track/`.

### On session start
1. Register: `track register --capabilities python,ui`
2. Read the board: `track board --last 20`
3. Check work: `track list --status backlog`
4. Claim a ticket: `track claim T-NNNN --agent {your-id}`

### While working
- Log progress: `track log T-NNNN --agent {your-id} -m "what you did"`
- Track files: `track files --add path/to/file.py --agent {your-id} --ticket T-NNNN`
- Check ownership: `track files --check path/to/file.py`
- Post to board: `track board --agent {your-id} --ticket T-NNNN -m "message"`
- Heartbeat: `track heartbeat --agent {your-id}`

### When done
- `track update T-NNNN --status review --agent {your-id}`

### On session end
- `track deregister --agent {your-id} --release-tickets`

### Rules
- One ticket at a time
- Check the board before claiming
- Don't edit another agent's files without checking ownership
- Reference ticket IDs in commits: `T-0001: description`
- Never modify `.track/` files directly — use the `track` CLI

A full example is available at src/agent_track/data/CLAUDE.md.example.

Platform

macOS and Linux only. Uses fcntl.flock for file locking and os.fork() for daemon mode, which are not available on Windows.

License

MIT

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

agent_track-0.1.0.tar.gz (37.7 kB view details)

Uploaded Source

Built Distribution

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

agent_track-0.1.0-py3-none-any.whl (27.3 kB view details)

Uploaded Python 3

File details

Details for the file agent_track-0.1.0.tar.gz.

File metadata

  • Download URL: agent_track-0.1.0.tar.gz
  • Upload date:
  • Size: 37.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.11

File hashes

Hashes for agent_track-0.1.0.tar.gz
Algorithm Hash digest
SHA256 61bcda7a6705dfd28612ebc446e720537958b9075b3eaea920d394a6c9d8ea2d
MD5 5ccbf7385c50731faa20fac41dc88e2c
BLAKE2b-256 66cd22faf93c18355ca8619d1d2d78bbe5d6e33741887347a8bb13c19b6e0570

See more details on using hashes here.

File details

Details for the file agent_track-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for agent_track-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d59e833c6452cfd4f1d85b05faa249a0d1754599577c1ecfc83036cf9853d573
MD5 4e22ce26f1c76110b71c3920acec7add
BLAKE2b-256 bee40b2ecd9a9993ed11d68d4ea80e64c36ab4bcdc7a4c90456089b073b48561

See more details on using hashes here.

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