machinate
A lightweight CLI to plan work with coding agents. It reads and writes a .machi/ directory in
your project, which holds four kinds of plain Markdown documents:
- plans: units of work with a goal and a status (
draft/active/done) - tasks: the concrete steps that make up a plan
- context: background documents an agent needs while working
- docs: project-level reference material shared across plans
One state file (.machi/machinate.toml) records project settings and the current
plan. There is no server or database: documents stay editable by hand, and search
(machi search) runs locally through Tantivy.
Install
uv tool install machinate # or: pipx install machinate
Requires Python 3.14.
Usage
machi init # create .machi/ in this project
machi plan add auth # create a plan
machi plan select auth # make it the current plan
machi task add 01-login 02-logout # create two tasks on the current plan
machi task list # show the tasks
machi context add spec # add a plan context document
machi doc add architecture # add a project-level doc
machi plan show auth # show the full plan
That leaves this tree on disk:
.machi/
├── machinate.toml project name and the selected plan
├── docs/
│ └── architecture.md machi doc add architecture
└── plans/
└── auth/
├── plan.md machi plan add auth
├── tasks/
│ ├── 01-login.md machi task add 01-login 02-logout
│ └── 02-logout.md
└── context/
└── spec.md machi context add spec
Every document is Markdown with YAML frontmatter, so it stays diffable and editable by
hand. machi plan select only rewrites machinate.toml; each add command creates one
file, and task and context names may contain subdirectories to nest documents.
machi search searches every plan and all docs through Tantivy, with fuzzy and prefix
matching on by default:
machi search "login OR logout"searches all plans and docs.machi search '"bearer token"' -p authmatches a phrase in one plan.machi search -p auth --glob 'tasks/**/*.md'filters by path, ANDed with the query.
Plan commands take the plan name positionally (machi plan show auth). -p PLAN
narrows tasks, context, or search to one plan; -P PROJECT_DIR a project, --format json
for agents.
Use with coding agents
Add the agent instructions to your project, so agents know how to use machinate:
machi instructions >> AGENTS.md
When AI_AGENT (set by Claude Code and other agents that follow that convention) or
MACHI_AI_AGENT is set, machinate runs in agent mode: plan-scoped commands need an
explicit plan, plan select is disabled so parallel sessions can't retarget each other,
and output defaults to JSON. Errors carry a machine-readable code, and
machi schema <command> prints the JSON shape of each result.
Development
See CONTRIBUTING.md for setup, checks, and releasing.
Metadata
Release files for machinate 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| machinate-0.2.0.tar.gz | 43.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| machinate-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 104.8 kB
Release files / machinate-0.2.0.tar.gz
| Download URL | machinate-0.2.0.tar.gz |
|---|---|
| Size | 43.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d45a6c1bd21a92db20d0112ea588ff56430bd55b3cd1af003ba80f2ac126940d
|
|
BLAKE2b-256 checksum How to use checksums |
5ab98bd7751d8f1772029d5f60fb5af1c49b28f51c2c00c597a4e23a710a7782
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / machinate-0.2.0-py3-none-any.whl
| Download URL | machinate-0.2.0-py3-none-any.whl |
|---|---|
| Size | 61.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
15eda9e15328b3a33c8c4fe684e8b415d509678b24aacf18f4f3a0b0a78220e3
|
|
BLAKE2b-256 checksum How to use checksums |
2024a75b91eece1642c227380d331900e6d8063c5214c023d8f8ae5f982a3679
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|