A login. An approval. A rule nobody wrote down. One of your people takes over for a minute, and the whole fleet keeps the fix.
A login it has no credentials for. An approval it may not give. A step only your team knows. It asks once, with the screen attached.
A live browser, in their hands, no account needed. Credentials, approvals, and the way your company actually does it: authority a model should not have.
A procedure, not a recording, with an explicit boundary: what the fleet may now do alone, and what it must still hand back to a person. Skills keep a track record and retire themselves if they stop working.
Next agent, same wall: answered from the skill in milliseconds, inside the boundary a person set. Nobody paged, and the record shows who set it.
Every agent borrows a person's authority sometimes. Today that borrowing is a Slack message, a shared password, a fix nobody keeps, and no record of who allowed what.
Not tied to your model, your framework, or your cloud.
Agent stacks change every few months. DoubleOh sits beside yours instead of inside it, so the skills your team builds are not hostage to a framework choice or a cloud vendor. Python and TypeScript SDKs, an MCP server, and adapters for LangChain, LangGraph, CrewAI, LlamaIndex, the OpenAI Agents SDK, AutoGen, and Pydantic AI. Switch any of it, keep everything you have learned.
That independence is the point. A fix desk owned by one cloud or bolted onto one framework only works while you stay there. Yours should outlive the stack it started on.
Three calls. That's the whole integration.
// Before a task it has failed before, ask what the fleet knows. const skills = await doubleoh.skillsFor(task); // Stuck? A human is paged once. A known wall is answered instantly. const fix = await doubleoh.requestFix({ url, task }); // Close the loop. Skills that stop working retire themselves. await doubleoh.reportSkill(skill.name, worked);
pip install doubleoh · npm i @doubleoh/sdk · MCP: doubleoh-mcp
Run it on your own machines. Free.
One container carries the app, the API, the browser your agents drive, and its own database. Nothing leaves your network except the model calls you configure. That is the whole security review for a hospital or an insurer, and it is why the cloud is optional.
git clone https://github.com/cheedli/doubleoh.git && cd doubleoh cp .env.example .env # fill it in docker compose up -d # open http://localhost:3001
Source available under the Sustainable Use License: free to run and modify for your own business, not to resell as a service. The SDKs, the MCP server and the examples are MIT so they can live inside your code. github.com/cheedli/doubleoh
Approval tools page a person for every wall, forever. DoubleOh answers known walls from a procedure a person already approved, inside the boundary they set. What your team teaches becomes a library that belongs to you, compounds every month, and comes with the audit trail a regulator will ask for.
The library is the asset.
Every fix your team makes is added to a library of procedures that only your fleet uses. Month one it saves a few runs. Month six it is the accumulated knowledge of how your company gets things done in the systems it depends on, written down at last, and executable. New agents inherit it on day one. New hires do not have to explain it.
It is yours. Skills are scoped to your account, never shared with other customers, and exportable if you leave. We think the reason to stay should be that the library keeps getting more valuable, not that you cannot take it with you.
Priced on the fleet you run and the work it hands back.
A platform fee by agent count. Human fixes and deflections are bundled, and metered past the bundle: a deflection is a quarter of an hour of a person's time, replaced, for a few cents.
Enterprise, from $60,000 a year. Unlimited agents, VPC or self-hosted deployment, private targets, SSO, audit exports, a BAA, and SOC 2 as it lands. Talk to us
What an agent can never do alone.
Better models close every gap but three. Those three are where DoubleOh lives.
| It cannot | Because | With DoubleOh |
|---|---|---|
| Hold your credentials | A password in a prompt is a password in a log. No model should carry it. | A person signs in on the live screen. The skill records that a login needs a human, never the login itself. |
| Grant an approval | Authority to commit money, send a filing, or accept terms belongs to a named person. | The approval happens on screen, by that person, and the record shows who and when. |
| Know your unwritten rules | The exception your operations lead applies on Fridays is in nobody's documentation. | They do it once. The procedure is compiled, bounded, and reused by every agent after. |
| Prove any of it happened | Oversight obligations ask who supervised an agent's action and under what authority. | Every intervention is an exportable record: approver, timestamps, before and after, what the fleet learned. |
Questions, answered.