A deterministic task + dependency tracker for coding agents (SQLite + Pydantic, MCP + CLI).
Project description
tackit
A deterministic task + dependency tracker for coding agents. One local SQLite file is the single source of truth for a project's build plan — its tasks, their dependencies, and their reconciliation state. An agent fetches small slices on demand instead of re-reading monolithic plan documents, so project truth survives across sessions and context-window compaction, and a change to one task can be traced to everything that depends on it.
Strict Pydantic validation at the boundary (malformed data is refused, not stored), a manual dirty-propagation discipline (editing a task marks its dependents stale; a stale task can't be closed until reconciled), and full-text search over tasks via SQLite FTS5. Exposed two ways over one core: an MCP server (the agent's primary door) and a CLI (debugging / scripting / fallback).
Status: alpha (0.1.0). The data model, interfaces, and sync design are settled and implemented; expect rough edges.
Install
pip install tackit && tackit setup
tackit setup doesn't touch your config — it emits the post-install steps with
contextualized paths (the MCP registration snippet, where to drop the bundled
SKILL.md, and tackit init) for the driving agent to carry out.
Quickstart (CLI)
tackit init # create .tackit/ in this project
tackit add "parse FTS5 query" --label search # create a task (D3)
tackit add "rank search results" --dep 1 # task 2 depends_on task 1
tackit search "fts" # ranked keyword search (D17)
tackit show 2 # slice: task + deps + dependents
tackit edit 1 --desc "tokenized MATCH" # edits stale task 1's dependents
tackit stale # the reconciliation worklist
tackit reconcile 2 # reviewed-OK; clear stale
tackit close 2 # refused while stale (D14)
tackit ls --status open # query/board (D15)
tackit --help # full, self-documenting surface
The store lives at .tackit/tackit.db (binary, gitignored). Its git-canonical form
is a deterministic SQL text dump, .tackit/tackit.sql, re-written on every mutation
and committed — so diffs and merges are reviewable text, never a binary blob. Sync
between the two is automatic; tackit status / export / import / restore
exist only for the divergence cases the auto-sync deliberately refuses to guess at.
MCP
tackit mcp # serve the stdio MCP server (the agent's primary door)
Tool names are the bare verbs (add, show, search, edit, close,
reconcile, dep_add, …); their input schemas are generated from the Python type
hints, so they can't drift from the real interface. Each mutating tool returns the
agent's review obligations in its result.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tackit-0.1.0.tar.gz.
File metadata
- Download URL: tackit-0.1.0.tar.gz
- Upload date:
- Size: 27.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ca3439503c63aa70ac5df3f2c3200e7f8e985098608326aed77e39f127087cc
|
|
| MD5 |
0d6324a44a4475a8570a96294208f19c
|
|
| BLAKE2b-256 |
51e6322cbb1bd43b8e47ea84db749f1c7515fab108f4b54ae8b347d134be96f0
|
File details
Details for the file tackit-0.1.0-py3-none-any.whl.
File metadata
- Download URL: tackit-0.1.0-py3-none-any.whl
- Upload date:
- Size: 30.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a599b40cb30e291f437d0269927d1a4570ed3af8d9b39d42a710bb410ffa0e9e
|
|
| MD5 |
39c77087966c3c58eada7e096b13d343
|
|
| BLAKE2b-256 |
2a901e2b57890379121645d459d101c88df65a109ce19ca78180bc8a9048732f
|