Tkt
A git-native ticket tracker where tasks are markdown files and git push is the claim protocol.
- ~50ms reads — tickets are local files, not API calls
- Single binary — no runtime dependencies beyond
git - Race-safe — concurrent sessions get unique IDs automatically
- Dependency graph — only shows you what's actually unblocked
- AI-agent friendly — structured output, deterministic frontier
- Zero config — just
tkt newin any git repo
Quick Start
# → ✓ created 01 auth (pushed)
# → ✓ created 02 api (pushed)
# → Ready (1):
# → 01 Implement authentication
# → ✓ closed 01 auth
# → Ready (1):
# → 02 Build API
Dependencies resolve automatically. Close a task and its dependents appear in the frontier.
Install
Pre-built binaries (fastest)
# macOS / Linux
|
# Windows (PowerShell)
|
From crates.io
With cargo-binstall (pre-built, no compile)
From source
Verify
# → tkt 0.2.1 (ea047fb)
Requirement: git on PATH (any version).
Usage
See what's ready to work on
Shows open tasks with all dependencies satisfied, sorted by priority then ID.
Create tasks
Batch creation for related work:
Claim and close
claim is optional for solo work — close works directly on open tasks. Use claim in shared repos so others see what's taken.
Edit tasks
Tags & context
Tags categorize tickets. The active context auto-applies tags to new tickets and can scope tkt ready output.
Project health
Query
Migrate from other tools
Task Format
---
id: "01"
title: "Implement authentication"
status: open
blocked_by:
priority: high
tags:
requires:
validation_criteria:
- "JWT tokens issue correctly (test: auth_test::jwt_issue)"
---
## What to build
JWT-based auth with refresh token rotation.
## Acceptance criteria
- JWT tokens issued on login
- Refresh token rotation works
Tasks are just files in .tickets/. Edit them by hand anytime — tkt reads whatever's there.
Configuration
Optional. Create .tickets/config.toml to customize behavior:
[]
= true # false for local-only repos (no network on writes)
[]
= true # require acceptance criteria checked before close
= false # require --note when closing
[]
= "" # filter frontier by environment
[]
= "medium" # default priority for new tasks
[]
= "gpu,linux" # capabilities this workstation provides (filters tkt ready)
User-level defaults in ~/.config/tkt/config.toml. Project config overrides.
AI Agent Integration
Add to your project's AGENTS.md:
tkt ready # see what's unblocked
tkt claim <id> # mark in-progress
tkt close <id> --check-all --resolution "what was done"
Solo agent: tkt ready → pick first → tkt close <id> --check-all --resolution "...".
Multi-agent: tkt ready → tkt claim <id> → work → tkt close <id>.
Structured output everywhere: tkt ready --json, tkt query, tkt validate --brief.
Environment Variables
| Variable | Effect |
|---|---|
CREW_ENV |
Filter frontier by environment (legacy; prefer machine.capabilities config for new projects) |
TKT_ASCII=1 |
ASCII-only symbols (✓→[ok], ✗→[err]) |
NO_COLOR=1 |
Disable ANSI color |
TKT_DEBUG=1 |
Debug output to stderr |
Contributing
Found a bug? File a report. Want a feature? Request it.