Primitives, not frameworks. Headless, local infrastructure for AI agents.
tx gives you a small set of reusable primitives for task state, docs-first specs, memory, coordination, and observability. You keep the orchestration loop.
# Standalone binary (recommended)
curl -fsSL https://raw.githubusercontent.com/jamesaphoenix/tx/main/install.sh | sh
# Or via npm (requires bun)
npm install -g @jamesaphoenix/tx-cliThe recommended first path is:
- Task Management
- Spec-Driven Development
- Memory & Context
- Bounded Autonomy
- Coordination
- Observability
Most users should start with just the first two.
tx init --codex # or: --claude, or plain tx init
tx add "Write auth PRD" --json
tx add "Implement auth flow" --json
tx block <implement-task-id> <prd-task-id>
tx ready
tx show <prd-task-id>
tx done <prd-task-id>
tx ready
tx sync exportThis proves the basic loop:
- the queue works
- dependencies affect readiness
- completion advances the queue
- state exports cleanly to
.tx/streams
tx doc add prd auth-flow --title "Auth Flow"
# add or update tests with [INV-*], _INV_*, @spec, or .tx/spec-tests.yml
tx spec discover
tx spec status --doc auth-flow
vitest run --reporter=json | tx spec batch --from vitest
tx spec complete --doc auth-flow --by youUse the spec primitives like this:
tx spec fci: compact machine score for agents and automationtx spec status: human-readable blocker view for one scopetx spec health: repo rollup, not part of the minimum day-1 loop
Core queue and persistence:
tx inittx addtx readytx showtx donetx blocktx sync
Docs-first intent and closure:
tx doctx spectx decision
Durable knowledge and prompt context:
tx memorytx pin
Controls for agents with more freedom:
tx labeltx guardtx verifytx reflecttx gate
Multi-worker and multi-actor primitives:
tx claimtx send/tx inboxtx group-context
Operational visibility once the earlier layers are in place:
tx tracetx spec healthtx stats- dashboard
| Interface | Best For |
|---|---|
| CLI | Shell scripts, human operators, local loops |
| MCP Server | Claude Code, Cursor, IDE integrations |
| TypeScript SDK | Custom Node/Bun agents |
| REST API | Language-agnostic HTTP clients |
| Dashboard | Visual monitoring and management |
Watchdog is intentionally not part of the main getting-started path.
Use it only if you need detached, long-running supervision:
tx init --watchdog --watchdog-runtime auto
./scripts/watchdog-launcher.sh startRunbook:
| Native Tasks | Static Agent Docs | tx | |
|---|---|---|---|
| Persistence | Session-scoped | Manual file edits | SQLite + git-backed streams |
| Multi-agent safety | Easy collisions | Manual coordination | Claims, dependencies, messaging |
| Intent tracking | Weak | Weak | Docs-first specs + decision capture |
| Knowledge reuse | Lost each session | Static dump | Searchable memory + pins |
| Orchestration | Fixed by tool | None | You own the loop |
tx should stay small.
It is not an agent framework, not a hosted memory product, and not a prescribed workflow. It is a local set of primitives you can compose into your own loop.