Field notes
All writingRSSAbout

Setting up AI Coworkers with OpenBot

A first look at CopilotKit's OpenBot: an open-source template for running AG-UI agents as coworkers with their own computers, gated through a single policy-enforcing gateway.

10 September 2026·4 min read

What this is

OpenBot is an open-source template from CopilotKit for running AI agents as "coworkers" you can hand real work to. Each Bot gets its own computer — a container with its own browser, its own logins, and its own /workspace volume — and every action it takes against a browser, file, MCP server, or component passes through a single gateway that decides whether to allow it and records what happened either way. The project explicitly describes itself as "a template, not a product," with no hosted version and nothing published as a package to depend on. You clone the repo, replace the example coworkers under examples/ with your own, and run it yourself. It's currently alpha and under active development, per the GitHub repo.

Install

There's no package to npm install. You clone the repository and bring it up with Docker Compose and Bun. The documented sequence from the quick start is:

# 1. Create your env file
cp .env.example .env

# 2. Get CopilotKit Intelligence credentials
npx --yes copilotkit@latest login
npx --yes copilotkit@latest project select
# put the cpk-... key from `project select` into .env as INTELLIGENCE_API_KEY

# 3. Fill in the one remaining required value in .env:
# OPENAI_API_KEY

# 4. Install and run
bun install
bash scripts/start.sh

Requirements per the source: Docker (for PostgreSQL and the Bots), Bun, a CopilotKit Intelligence project (a free plan exists, and Intelligence can be self-hosted), and a model key — the proof-of-concept Bot uses OpenAI, and the LangGraph Bot can use OpenAI, Anthropic, or Google.

scripts/start.sh starts the Docker services, applies migrations, starts the API server on port 3001, starts the app on port 3010, and checks that everything answers its own health route before printing next steps. Then you open http://localhost:3010.

The repo also ships a prompt.txt meant to be pasted into an AI assistant if you're setting this up with one — the README says it carries the same steps plus the parts that are easy to get wrong, like which of the ten blank keys in .env.example you actually need to fill yourself (three) versus which the start script generates.

Hello world

Once the app is running, the shortest documented interaction is in the "Try it" section of the README: open /bot and give it a task.

Open news.ycombinator.com and tell me the top story.

No agent configuration is required first, because a default Bot is already wired up. From there the source suggests two follow-ups: ask the Bot to fill out https://httpbin.org/forms/post and then inspect /admin/audit to see the recorded action trail, or open /admin/boundaries, add a deny rule, and retry the same browser action to watch it get refused.

The one concept you must understand first

Everything in OpenBot routes through one gateway, and that gateway is the whole point. Per the source: "Anything a Bot does to a computer, a file, an MCP server or a component goes through one gateway that decides and records it. That is the difference between an agent that can use your tools and an agent you can let near them." Concretely, the gateway resolves the target from a server-held snapshot, evaluates a CEL policy against it (deny is checked before allow, a missing policy permits nothing, and a broken rule refuses rather than opens), writes an audit row, and only then calls the Bot's computer — there's no path that acts before the record exists. Once you see the gateway as a mandatory checkpoint rather than a logging layer bolted on afterward, the rest of the surface area — boundaries, audit, credentials, MCP grants — reads as configuration of that one checkpoint rather than separate systems.

Next steps

  • The full docs index, for everything past the quick start: docs/README.md
  • Deployment sizing, platform notes, and multi-replica behavior for running this somewhere other than a laptop: docs/deployment.md
  • The AG-UI protocol that any Bot must speak to plug in — relevant once you want to bring your own agent instead of using the shipped examples: ag-ui-protocol/ag-ui

More background and framing on the project is at copilotkit.ai/openbot.

openbotai agentscopilotkitdockermcpllm

Sources

  1. 01
    CopilotKit/OpenBot

    <div align="center"> # OpenBot **AI coworkers you can hand real work to, and actually trust with the access.** Each gets a computer of its own: a real browser with its own logins, its own files, and only the tools you grant. Every action decided before it happens and recorded after. [**copilotkit.ai/openbot**](https://copilotkit.ai/openbot) · [**Quick start**](#quick-start) · [**Features**](#features) · [**Bring your own agent**](#bring-your-own-agent) · [**Architecture**](#architecture) · [*

More from the field

  • XZ Utils Backdoor: A Technical Deep Dive

    10 Sept 2026

  • Introducing CUDA Rust: Two Tracks for Writing GPU Kernels

    10 Sept 2026

  • How to Read Server Monitoring Graphs

    10 Sept 2026

All writingArchiveTopicsAboutPrivacyRSS

© 2026 Field notes