The shared work board for humans and AI agents.
One source of truth for what is being worked on, by whom, right now — enforced by the server, not by discipline.
uvx orc-hestrator-server
MIT licensed · self-hosted · one SQLite file
The drift
The session ends, the context compacts. The agent no longer knows what is done, what is blocked, or what comes next.
An agent on another host is invisible to the first. Two machines once spent an hour on the same feature.
A task file has no rules. Nothing stops an agent from marking done work that never ran.
A hosted issue tracker is built for humans typing tickets; a memory server stores facts, not the structure of work. Orc stores the work itself — the rules live in the server.
What the server enforces
complete skips straight to done. Anything can be blocked, then resumed; done can be reopened back into the queue.
- dependencies
- An item cannot leave the queue while prerequisites are open. Cycles are detected; unblocking is configurable, not only at done.
- gates
- A YAML schema declares which notes a phase requires. Missing documentation blocks the transition — so done means something.
- presence
- Every session registers as host / agent / session, heartbeats, and is reaped when it dies.
- claims
- Before working, an agent claims the item or the resource. Who is on what, right now, has an answer.
What it costs to talk to it
A board read is the most repeated call an agent makes, and its payload is charged on every turn. In 2.1.0 it is measured against a real board, not estimated: on 176 items the compact read went from 139 kB to 1.2 kB (‑99.1%).
- get_context(verbosity)
compactreturns counts, the next item and three items per list — with the totals beside them, so truncation is never silent.fullstays byte-identical to 2.0.1.- query_items(fields, compact)
- Project only the columns you need, or take the compact page:
{items, count, has_more, next_offset}. A field that does not exist is a structured error, never a silent full row. - workspaces in the database
- Workspace config left
workspaces.jsonfor the same SQLite file — with authorship, and carried inside export/import. The legacy file is imported once, then ignored.
Every new mode is opt-in. An agent that calls the tools as it did yesterday gets exactly the payload it got yesterday.
Run it
uvx orc-hestrator-server
One SQLite file, no network. Any MCP client can register it; state defaults to ~/.orc/tasks.db.
MCP_HOST=127.0.0.1 \
MCP_PORT=8005 \
ORC_DB=~/.local/share/orc/tasks.db \
uvx --from 'orc-hestrator-server[ui]' orc-serve
Every machine and agent points at the same server over HTTP, behind a TLS proxy. On first boot the admin is seeded from ORC_ADMIN_USER and ORC_ADMIN_PASSWORD.
Docs
The site presents. The repo explains.