Orc[hestrator]

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 Orc board: five columns — queue, working, review, done, blocked — with task cards
The board — queue, working, review, done, blocked (shown in Portuguese; English is canonical).

The drift

context reset

The session ends, the context compacts. The agent no longer knows what is done, what is blocked, or what comes next.

second machine

An agent on another host is invisible to the first. Two machines once spent an hour on the same feature.

gate skipped

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

queue start work start review start done

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)
compact returns counts, the next item and three items per list — with the totals beside them, so truncation is never silent. full stays 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.json for 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

local — stdio
uvx orc-hestrator-server

One SQLite file, no network. Any MCP client can register it; state defaults to ~/.orc/tasks.db.

central — http
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.