Features
What Project Orchestrator does
Plans, tasks, notes, decisions and specialized assistants, kept together in one memory for each project. See what Project Orchestrator does for you.
Projects, with or without code
A project holds its own plans, tasks, notes and decisions. It can be a codebase, or a piece of work with no code, such as an event or a budget.
- Shows all your projects on one screen, Today: what waits for your answer, what to resume, what moves on its own.
- Groups several projects in a workspace that shares context and objectives.
- A project with no code is created by asking an assistant for now. The project form in the app does not offer the choice yet.
Under the hood
A project has a profile: software is a codebase that is synced and watched, work is documents, plans, tasks and notes with no source tree.
- project · create
- workspace · list
- project · get_roadmap
Objectives, plans and tasks
An objective is what you aim for. A plan says how to get there, as tasks and steps. PO shows what is done, what is blocked and what comes next.
- Tracks the status of each step, task and plan, with the progress added up.
- Shows the longest chain of tasks, so you know what sets the end date.
- Shows the same plan as a map of links or as a board with columns.
Under the hood
The longest chain is the critical path, computed from the dependency graph with plan(action: "get_critical_path").
- plan · get_critical_path
- task · add_dependencies
- step · update
Assistants that work together
PO groups the tasks that do not depend on each other and gives each one to its own assistant. Four tasks run at a time by default. PO checks the result before the next group starts.
- Shows live which tasks have started and which are finished.
- Stops a run at any time, and keeps the list of past runs with their status.
- Starts a plan on a schedule or when something happens, with nobody at the keyboard.
Under the hood
plan(action: "run") starts the runner on its own git branch, from a project folder. The build check runs for Rust, Node and Go projects.
- plan · get_waves
- plan · run
- plan · run_status
Notes and decisions
Notes and decisions belong to your project, its tasks and its files. Each one has a status (active, needs review, stale or obsolete), so assistants know what to trust.
- Saves a decision with its reason and what it affects, and replaces it when it changes.
- Finds a note by meaning, not only by exact words, and lists the notes that need a review.
- A proposal puts a change up for review before it is decided.
Under the hood
Notes and decisions are nodes in a Neo4j graph. Notes used together are linked by synapses that grow stronger, and a search follows those links.
- note · search_semantic
- decision · add_affects
- note · get_needing_review
Documents
Documents are filed under a project. The original file stays on your computer, and PO cuts the text into passages that remember where they came from.
- Upload a file to a project, open the original again later, or delete it.
- Reads the text of PDF and text files.
Under the hood
Originals are stored on local disk, addressed by their SHA-256. The text is cut into chunks that keep their position in the source.
Specialist assistants
A persona is an assistant specialized in one area of your work. A skill is a group of related notes that the assistant switches on by itself when the topic comes up.
- Picks the persona that fits the task.
- A persona sets a time limit, a cost limit and the model for its tasks.
- A skill goes from emerging to active, and to dormant after 30 days without use. Skills can be exported and imported.
Under the hood
Skills are detected from clusters of notes (Louvain community detection). Each one has an energy and a cohesion score. The persona builder offers code-based modes and a manual mode.
- persona · get
- skill · activate
- skill · export
Repeatable procedures
A protocol is a procedure with a start, steps and an end. The assistant follows it in order, and each run is recorded.
- Define the steps and what moves a run from one step to the next, then start a run and follow it.
- Link a protocol to a skill, so it starts when that skill applies.
- A run can wait for a person to review before it goes on.
Under the hood
A protocol is a finite state machine: start, intermediate and terminal states, and transitions fired by triggers. plan-runner-reviewed adds an awaiting_review state.
- protocol · add_state
- protocol · start_run
- protocol · link_to_skill
For developers
PO also reads your code
PO turns each repository into a graph of files, functions, types and calls, and answers who calls a function and what a change affects. Every concept is a tool for Claude Code, Cursor or any MCP client.
Under the hood
- Parses Rust, TypeScript, Python, Go, Java, C and C++, Ruby, PHP, Kotlin, Swift, Scala, Zig, Dart and more.
- Searches code through Meilisearch, across one project or a whole workspace.
- Connects other MCP servers through mcp_federation.
Tree-sitter parses the code into a Neo4j graph, and a file watcher keeps it in sync as you edit.
- code · get_call_graph
- code · analyze_impact
- code · find_references
- mcp_federation · list
Get started
Give your agents a memory and a plan
Install the orchestrator, connect Claude Code over MCP, and let your first agent read the project before it writes a line.
Or start from the terminal
brew install this-rs/tap/project-orchestrator