You want an AI that does things: opens the browser, fills the form, files the report. Your security lead wants to know what it touched. OpenBot gives every coworker a computer of its own and writes down each click before it happens, so you can hand over real work and still sleep. Free, on your laptop, in six commands. One catch, below.
By Raj Singh · September 2026 · 5.2k stars · 6 commands to install · 7 min read
One desk per coworker, all wired to one core. Each coworker gets its own computer, logins and files, and every click any of them makes passes through the core in the middle first. That core is the answer when someone asks what the AI did.

Free, on your own laptop. MIT licence, no subscription. Docker, a free CopilotKit account and one model key. Six commands later there is a coworker in your browser with a desk of its own.
The rules ship switched off. The whole pitch is control, and out of the box there are no rules: the coworker may do anything, and every visitor is an administrator. Fine on a laptop. Two lines fix it, and they are the first thing in the setup below.
They share one browser at first. Until you flip one setting, every coworker uses the same browser and the same logins. Flip it and each one gets a computer, a desk and a browser of its own, so no coworker can ever borrow another's session.
Your chats live in CopilotKit's cloud. Conversations and memory go through CopilotKit's hosted service, and the app will not start without it. Your rules, audit trail and credentials stay in your own database. Worth knowing before the security review.
Bring the agent you already built. LangGraph, Mastra, CrewAI, Pydantic AI, Google ADK or hand-written: thirteen examples ship in the box. Whatever wrote the agent, it arrives as a coworker with a desk and the same rules.
Drop your email and the rest opens: the six commands, the five lines that turn the rules on, how to prove it worked in under a minute, the first week of handing it real work, and the two ways it refuses to start.
One email. No follow-up unless I ship something that fits.
start.sh calls docker compose for PostgreSQL and the shipped Botspackage.jsonnpx can fetch the CopilotKit key.env.example has ten blank keys. Two are yours to fill: INTELLIGENCE_API_KEY from project select, and OPENAI_API_KEY. start.sh generates MANAGED_AGENT_TOKEN and AGENT_TOOL_TOKEN and writes them back. Everything else is already right for a laptop.
The install
Open http://localhost:3010. bash scripts/stop.sh takes it all down, including each Bot's computer, and deletes nothing: the database, files and browser profiles are volumes.
curl -s localhost:3001/api/capabilities should return JSON with "mode":"intelligence". Then open /bot and ask it to open news.ycombinator.com and tell you the top story. Watch the screen, then open /admin/audit: every click it made is a row. That row is the product..env is the whole configuration, and docs/configuration.md names every variable. These five decide whether you have a governed deployment or a demo. The first three are the ones the README's own pitch depends on, and all three ship off.
| Setting | Default | Why I change it |
|---|---|---|
| AGENT_COMPUTER_POLICY | unset: permits acting tools, forbids nothing | The shipped example refuses form submits and the Enter key. I run it in dry-run first: it decides and records without refusing, so a week of /admin/audit shows what a rule would have blocked before it blocks anyone. Then enforce. |
| COMPUTER_SUPERVISOR_URL | blank: one shared computer | Blank means every Bot uses one Chromium and one set of logins. The supervisor on 4500 gives each Bot its own container, so one Bot cannot read another's files or use its sessions. |
| OPENBOT_SINGLE_USER | true | Every visitor is an administrator. Keep it on localhost. Delete the line and configure Google, Microsoft or Okta before anyone else gets the URL; with neither, it refuses to start rather than admitting everybody. |
| KEY_ENCRYPTION_KEY | a public example value | It encrypts stored credentials. Production refuses to start with the example, so generate one now and you never migrate a vault. |
| BOT_PROVIDER and BOT_MODEL | openai, gpt-5.5 | On Anthropic set both together with ANTHROPIC_API_KEY. Compose defaults BOT_MODEL to an OpenAI model, so setting the provider alone means a Bot that fails on an unknown model. |
deny is evaluated before allow, an empty allow permits nothing, and a rule that fails to parse refuses rather than opens. Malformed JSON stops the server at startup. A refusal in /admin/audit names the rule that caused it.Start with the browser, because that is where the audit trail earns its keep. Add a rule only after you have read a day of rows. Give a Bot a standing role last, once you trust the record.
/bot for a direct chat. Ask for something visible on a public page, then read /admin/audit for the rows it left./admin/boundaries: add a deny rule or preset, retry the same action, and watch the refusal name the rule./agents: name, title, role, private or public, and an optional AG-UI endpoint. Start a channel with it and watch its screen.When a Bot hits a login wall or a 2FA prompt it asks for help. You take the wheel in the same panel, it is recorded as computer.control_taken, and Bot actions are refused, not queued, until you hand it back.
Missing: INTELLIGENCE_API_KEY means you skipped project select. No identity provider is configured means you deleted OPENBOT_SINGLE_USER=true without adding Google, Microsoft or Okta. A bad KEY_ENCRYPTION_KEY wants openssl rand -base64 32.start.sh names the port and the process. Re-run with APP_PORT= or SERVER_PORT= set to a free one, or stop the other process. PORT and SERVER_PORT must agree when both are set./admin/computers stops and resets one Bot's computer. bash scripts/stop.sh deletes nothing. To truly start fresh, remove the Compose volumes, and your database, files and browser profiles go with them.Making it yours is a copy of examples/fintech and one TENANT_PACKAGE_DIR line, relative to server/. The database, files and browser profiles are Docker volumes; back those up and the deployment moves.
Six commands, five lines in `.env`, one rule in dry-run for a week. When security asks what the agent can touch and who saw it, you open `/admin/audit` and scroll, instead of writing the answer in a document.
↑ Unlocks the moment you submit the form above.
I'm Raj Singh, founder of DebtOps.ai and a Claude certified partner. Over the last five years I've managed $25M in ads, built AI solutions for Fortune 100 companies, and installed AI operating systems and AI brains inside small businesses. Everything here is something I've shipped, debugged, or watched a client ship. My goal with AgileSingh is to make you irreplaceable in this AI age.
A governed agent with an empty calendar is a demo. The OpenSEO guide is a job worth handing one, and the God's Eye View guide is a self-hosted service to point it at.