In daily use on real software development, by the team that builds it.
A small team of Claude Code sessions, on one machine.
OpenOv AI runs a small team of Claude Code sessions on one machine. One session is the Leader; the others are named Workers with one task each. Every session's identity is a directory on disk, not a process — so a session can be replaced at any time without losing the work.
curl -fsSL https://raw.githubusercontent.com/nilcaream/openovai/main/openovai | sh ~/.local/bin/openovai
Or, with Node.js 24 or newer:
npx @openovai/ovai@latest
What you get
-
A session is a directory, not a process.
Every seat owns a desk: one Markdown file, written with a tool as the work moves. A conversation that fills up writes its desk and ends; a fresh one reads it and carries on. Nothing is compacted away.
The Leader and the Workers → -
One Leader, named Workers.
The Leader hires, delegates, relays, stops and restarts, and settles what the instance may do; it does no project work. Workers do one task each and say when it is done; the Leader decides whether they stop. Whatever one Worker says to another, the Leader hears.
How the team works → -
Permissions are popups on the page.
Every seat starts in auto mode, as the Claude Code CLI does, and Claude Code's classifier settles what no rule does. What a rule says to ask about, and in Manual anything unsettled, stops on the session's panel with the command and its reason. Allow it once, deny it with a sentence, or always allow the shape — one rule per side of a compound command. A rule the Leader wants gone is yours to remove on one popup.
Permissions and safety → -
Only the server writes to a session.
Every turn arrives in a frame the server sets, and nothing inside a message can close it. Who is calling a tool is a per-process secret the server minted, never a name a session could claim.
Who is speaking → -
What the workspace knows is a directory of files.
One flat
Knowledge →knowledge/of Markdown notes, one topic per file, written by whoever learnt the thing.indexfinds them by tag;validatereads the whole shelf back and says which rule a note breaks. -
The lifecycle is tools, not phrases.
Grown too large, idle, out of quota, parked: the server says so in an event and the Leader answers with a tool call — for itself, or to stop or restart a Worker. A Worker that has to end is told its session is closing, writes its desk, and goes when that turn is over. No button on the page starts or ends a seat, and the desk comes first, always.
The lifecycle → -
It knows the quota, and never runs it dry.
The server reads the account's usage windows every few minutes while a page is open, and at the end of a turn. When a window is spent the Workers are closed, each writing its desk; the Leader stays, because talking to it costs little, and tells you which window and when it resets. A spent window holds turns rather than failing them mid-work; at the reset the Leader is told, and brings the team back.
The quota gate → -
Every session on one page.
No terminals. Three columns, one stream, installable as a web app, opened in each browser once with a one-time link. The tab's icon rings while any panel waits for you, and the browser notifies you while you are somewhere else. A file a reply names opens read-only in a tab of its own.
The page → -
A file is a tool.
Three exports under
Plugins →plugins/and a restart: a tool of your own, served to every session under the one rule the instance already has. No permission popup, no registration. -
Self-contained, and it updates itself.
An instance carries its own copy of the toolkit, and the Node.js and Claude Code it runs on are pinned per release and fetched for you, never taken from the system.
Install and update →ovai updatetakes the next release whole, only once its signature checks, and leaves what is yours alone.
The shape of it
The Leader's panel is in the middle, the Workers' either side. A panel is a head — a dot, the name, the model, the context in k, and what the session is doing — a transcript, and a text box. You can type on any of them; the Leader hears what you say to a Worker the same moment. Right above the Leader's box stands its status: what waits for you, and the loose ends nobody is on.
Why a handover, and not a summary
Resuming a conversation the model service has stopped holding costs most of it again at write price: measured at fourteen times an ordinary turn on a conversation of 40,000 tokens, and about twenty on a large one. So a full session is not resumed. It writes its desk, ends, and a fresh one reads the desk and carries on — in the same panel, with whatever was queued for it.
This is not a setting and there is nothing to turn on. It is the shape of the thing.
Built from what you already have
Three persona templates, project settings, a hook, an MCP server, a shell shim, a guide the Leader reads from, a few Node tools and a small web page to host it all on. Nothing runs that you cannot read in an evening. Thirty-six test suites on Node's own runner, and every check in them was watched going red before it was kept.
Where it stands
Early development. The team that builds it runs its own software development on it every day, and it changes fast: releases are frequent, features move, and what a release does is in its NOTES.md. Bugs are expected. The repository is open and there is no gate: use it, and tell us what you tried, what happened and what you expected — or send the fix.