exocortex-project
A personal project-management layer on a self-hosted fork of Plane Community Edition, for a solo developer who works with Claude Code and with OpenAI Codex run by Symphony. The loop:
capture ──► clarify ──► dispatch ──► Human Review
note capture next review
You say "note: ..." and the agent records your words verbatim. A clarify pass turns notes and ideas into well-specified work items with parent and blocked-by links. The ready queue picks what can start now, and the item is worked in your session or handed to Codex through Symphony. Finished work waits in Human Review with its patch until you approve it or send it back with a comment. The agent does all of this through MCP tools. You use the Plane web app and talk to the agent.
Status (0.1.1): setup --bare and the full loop with a stand-in Codex have been tested. One
trial with real Codex through Symphony (0.1.0's WORKFLOW) found what 0.1.1 fixes, listed in
CHANGELOG.md; a real-Codex hand-off with 0.1.1 has not run yet. plane up --docker /
setup --docker are not yet verified.
What the wheel contains
- Client core (
exocortex_project.core): a client for Plane's/api/v1/, the ready rule overblocked_by, context packs for one item, capture with parent and blocker links, and the Human Review queue with per-file patch stats. - MCP server
exocortex-project-mcp(stdio): every everyday operation as a tool, the procedures as prompts, the state vocabulary and the working rules as server instructions. - One-time commands
exocortex-project:guide,version,setup,init,doctor,plane up|down|status|bootstrap|backup|restore,symphony workflow|check. - The Plane fork server: the Django API with Celery worker and beat, its migrations, a
bootstrap_exocortexmanagement command, and the prebuilt web app, served by the API on the same port (no Node, no proxy). The public boards, God Mode admin and realtime servers are not included. - Offline docs:
SETUP.md,USAGE.mdandARCHITECTURE.md.
Not bundled: PostgreSQL, Redis or Valkey, and MinIO or S3 (for --bare), or Docker (for
--docker); Symphony with a Plane tracker adapter (the separate package exocortex-symphony, which
this one does not depend on) and the Codex CLI (optional); Claude Code or another MCP client.
Install and first run
Python 3.11 or newer.
pip install exocortex-project # or: pipx install exocortex-project
Then, in the repository the work is about, tell your agent:
exocortex-project is installed, set it up
The agent reads the setup checklist with exocortex-project guide and runs it. To do it yourself:
exocortex-project guide # the full SETUP.md
exocortex-project setup --bare --workspace <slug> --project <IDENT>
# or: exocortex-project setup --docker --workspace <slug> --project <IDENT>
setup runs guide, plane up, plane bootstrap, init and doctor in order and stops at the
first failure, saying how to fix it. Every step is safe to repeat. Afterwards, log in to the web app
with the admin account that plane bootstrap printed, change its password, and approve the
exocortex-project MCP server when your client asks.
MCP tools and prompts
17 tools:
| tool | does |
|---|---|
note |
record the user's words verbatim as one item in Unsorted (the inbox for quick notes) |
capture |
create or update well-specified items with parent and blocked-by links, in one call |
ready |
the ready queue: unstarted, no open blocker, best first |
prompt |
the context pack for one item (north star, brief, parent, blockers, progress) |
show |
one item in full |
list |
a project's items, filtered by state or name |
blocked |
open items still waiting on an open blocker |
start |
move an item to In Progress and name its branch |
set |
change state, priority, title, dates, parent or assignee, with a dry run |
link |
add blocked-by, blocks, parent or duplicate links |
comment |
add a Markdown comment |
history |
an item's activity, oldest first |
review |
what waits in Human Review, longest wait first, with patch stats; flags items with nothing attached |
approve |
move a reviewed item to Merging or Done; refuses an item with nothing attached unless force |
rework |
comment what to change, then move the item to Rework |
states_init |
give a project the nine states, adding only the missing ones |
plane_api |
one call to any other Plane /api/v1/ endpoint |
4 prompts: note, capture (also the clarify pass over Unsorted), next and review. In Claude
Code they appear as /mcp__exocortex-project__<name>. For clients without MCP prompts, init writes
the same procedures as the skills pm-note, pm-capture, pm-next and pm-review.
Configuration
| what | where |
|---|---|
| Plane URL, workspace, assignee, review state, notify states | .exocortex-project.toml in the repository, else ~/.config/exocortex-project/config.toml; PLANE_* environment variables override both |
| API key | PLANE_API_KEY, else ~/.config/exocortex-project/token (mode 600, written by plane bootstrap) |
| MCP registration | .mcp.json in the repository and ~/.codex/config.toml (written by init) |
| default project | the exocortex-project section of the repository's AGENTS.md (written by init) |
Plane runtime (.env, logs) |
~/.local/share/exocortex-project/plane/ (--runtime-dir to change) |
| Symphony workflow | WORKFLOW.md, written by exocortex-project symphony workflow --project <IDENT> [--model <model>] [--effort <effort>] |
The package stores no data of its own. Work items live in Plane's Postgres and storage bucket, and
plane backup / plane restore cover both.
More
exocortex-project guide prints the full SETUP.md: prerequisites, every step with its expected
output, all doctor checks, the optional Symphony setup (pip install exocortex-symphony), and
upgrades, backups and rollback.
USAGE.md and ARCHITECTURE.md are next to it in the installed package.
License
AGPL-3.0-only, like the Plane code it includes. This project is not affiliated with or endorsed by Plane Software, Inc.
Metadata
Release files for exocortex-project 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| exocortex_project-0.1.1.tar.gz | 19.7 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| exocortex_project-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.3 MB
Release files / exocortex_project-0.1.1.tar.gz
| Download URL | exocortex_project-0.1.1.tar.gz |
|---|---|
| Size | 19.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dab3d7ba322e8bba09ea4cf4bbdfed3e616b44dff7a2d3fcb2a06511066bf986
|
|
BLAKE2b-256 checksum How to use checksums |
ac2c156b4abc6ee92926749b29687f7dcd1ff9debc687960ae7af6151393b5fc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / exocortex_project-0.1.1-py3-none-any.whl
| Download URL | exocortex_project-0.1.1-py3-none-any.whl |
|---|---|
| Size | 20.6 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7107696bc1347ae1422480417fb4e34bdfc50ca69f99fff8a9f739f4e91b76ad
|
|
BLAKE2b-256 checksum How to use checksums |
fbee39cf0e8df3e6193144b8bc24a74f17b24ef9b15d78fd7163359ba50f51a8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|