Your AI assistant should read facts from a database, not guess.
AI coding agents need to know what remains open and where to continue. The dc tools make recorded work state and code facts queryable over MCP.
The problem
Every session starts cold. You re-explain, or the assistant guesses.
What was decided, what's mid-flight, how the code hangs together — re-inferred from scratch, every time. That reconstruction can lose the exact stopping point: the pending checkpoint, a review gate, or the reason behind a decision. TODO.md rots. GitHub Issues track a repo, not your working state — per-repo, remote, and blind to what's mid-flight across your projects.
- “Let me re-read the codebase…”
- Stale TODO.md as memory
- Decisions lost between sessions
- Hundreds of reads to rebuild context
- Plausible ≠ true
- One user-scoped database
- Read & written over MCP
- Append-only ledger of decisions
- State read once, not re-inferred
- Same input, same answer
What it records
Open items, checkpoints and gates stay recorded between sessions.
A handoff preserves the next action and the context needed to continue it.
Notes and decisions remain queryable alongside the work they explain.
The tools
dct
v1.7.0 · availableCross-project work tracking for AI coding agents. Issues, todos, plans, changelogs, sprints, decisions and session handoffs in one database your agent reads directly — DCT provides 76 MCP tools and a standalone CLI; other MCP clients need manual server registration. DCT v1.7.0 includes Claude Code and Codex setup, explicit workflows and diagnostics.
github.com/fotodeveloper/dct →dcg
in developmentA deterministic code knowledge graph. Your codebase parsed into a graph database — language, framework and business-logic relationships — queryable over MCP.
read the teaser ↓End the day with /handoff. Start the next with /pickup.
The next session picks up the same open threads, decisions and plan — the outgoing session wrote the handoff while it still had the context, so nobody re-explains in the morning. Nothing to memorize, either: plain conversation drives it, and the slash commands below are optional shortcuts.
- Cross-project trackerIssues, todos and features with priorities, notes and checkpoints — one database across every repo, read and written by the agent over MCP.
- Session handoffs/handoff records the next action and keeps sprint membership unless a change is requested; /pickup reads that state to resume, across projects.
- Markdown plans, indexedPlan, spec and ADR files stay markdown; dct anchors their sections and checkpoints in the DB — promotable to items and sprints.
- Append-only ledgerNotes and decisions are soft-deleted, never dropped.
- Gate checkpointsA feature can't resolve while its gates are pending — dogfood, security, review, approval. Enforced in code.
- Changelog-firstA Claude Code hook (wired at init with your consent, then on by default per project) blocks agent commits until a changelog entry exists — one line per change, written while the diff is still on screen; /release is one command.
- One-read pickup/pickup returns recorded sprint state, handoffs and checkpoints in one structured response. Further code inspection depends on the task.
- Local dashboarddct web — a read-only web viewer over the same database.
Client capabilities
DCT v1.7.0 includes Claude Code and Codex integrations over the same recorded work state. Other MCP clients require manual server registration and workflow instructions.
| Capability | Claude Code · v1.7.0 | Codex · v1.7.0 | Other MCP clients |
|---|---|---|---|
| Tracking and session state | 76 shared MCP tools | Same shared MCP tools | Shared MCP server |
| Guided workflows | 14 Claude Code skills | 14 shared workflows; same authored contracts | Manual workflow instructions |
| Setup and diagnostics | dct init; dct integrate; dct doctor | dct integrate; dct doctor | Manual MCP registration |
| Hook automation | 4 Claude Code hooks; opt-in | Experimental native hooks; explicit trust | No packaged hook integration |
Native Codex hooks require review and trust in /hooks. Task mirroring runs only when the host emits update_plan; installed files alone do not prove active automation. DCT preserves work state; token savings are not established by the current benchmark. Read the acceptance and benchmark evidence →
The blast radius of a change, visible before the damage.
dcg parses your codebase into a graph database and serves it to agents over MCP — 17 tools, Go single binary, Neo4j storage, Python and Go parsers, Django-aware.
> get_impacted billing/models.py::Invoice.total Invoice.total ─ impacted (14 nodes, depth ≤3) ├─ billing/views.py │ ├─ InvoiceDetail.get_context_data [dj:view] │ └─ export_csv [fn] ├─ billing/serializers.py │ └─ InvoiceSerializer.get_total [drf:fld] ├─ reports/monthly.py │ └─ build_revenue_report [fn] ⚠ entry pt └─ templates/billing/detail.html [dj:tpl] coverage: py 96% · dj 91% · tpl 78% unparsed: 3 files (listed on request)
Same input, same graph, every time.
Every parser reports coverage — it tells you what it doesn’t know.
One graph query instead of a grep-and-read expedition.
Philosophy
Deterministic
Facts come from a database, not from a model's best guess: same query, same answer. Where a model does help — classifying an ambiguous plan heading — its verdict is written down once and becomes a stored fact, never re-guessed. Determinism here means retrieval: once recorded, state is never inferred again.
Append-only
A ledger, not a whiteboard. Notes, checkpoints and decisions are soft-deleted at most; nothing is ever hard-deleted.
Enforced, not suggested
Gates and hooks live in code, not in convention. With the relevant hooks installed and active, recognized agent commit commands are checked for a changelog entry. A feature with pending gates cannot resolve.
Local-first
Your tracking data lives in your own database — SQLite in your platform's data directory by default, first-class PostgreSQL when you want a server — and is never uploaded. The only network touchpoints are explicit and optional: a daily PyPI version probe (opt-out) and LLM plan-classification through the claude CLI you already use.
Honest about limits
dcg's parsers report coverage; across the family, the tools tell you what they don't know, so you never mistake a partial answer for a complete one.
Open source
Built in the open.
dct ships under the MIT license and takes issues and pull requests today; dcg opens to contributions with its first public release. Bug reports, docs fixes and framework ideas are all welcome.
Contribute on GitHub →