openbot logo

openbot

Open-source AI coworkers that each get a computer of their own: a browser, files and tools, with every action decided before it happens and recorded after. Bring any AG-UI agent.

status alpha
Website GitHub

What is it?

What it is

An agent platform that runs inside your own infrastructure, providing AI coworkers each with their own computer (browser and workspace) and governed by a gateway that records every action.

Why it exists

To give users AI coworkers they can trust with real work, ensuring every action is decided and recorded, with policy enforcement and audit trails.

Who should use it

Teams and organizations seeking autonomous AI agent platforms with full control over infrastructure, security, and governance. Specifically: companies building internal AI coworkers, developers creating custom agent workflows, and teams requiring on-premise or private deployment of AI agents.

Who should avoid it

Beginners unfamiliar with AI agent concepts, projects lacking dedicated DevOps resources for managing complex deployments, and environments where strict security controls and self-hosting are not required. Those new to Docker, PostgreSQL, or the AG-UI protocol will find the initial setup challenging.

Stars over time

No change stars in the last 1 day

3.5k3.5k
Aug 30, 2026Aug 30, 2026

How it works

A quick walkthrough in plain English

How OpenBot works

Step 1 of 3

You interact with it

Open OpenBot, send a request, or connect it to your stack.

Features

A computer per Bot
A shell, not just a browser
The gateway is the only way in
CEL policy, fail closed
Watch what it is doing
Take the wheel
Secrets never enter the transcript
Bring your own agent
Components instead of prose
Governed MCP
Skills are instructions, not capabilities
Sign in with what your company already has
Decide who gets in
An audit trail you can read
Credentials encrypted at rest
Loopback by default
Durable threads and memory
Routines

Advantages

  • Runs on your own infrastructure for full data and model control
  • Each Bot operates in an isolated environment (own browser, file system, and workspace)
  • Strong security with gateway-mediated actions, policy enforcement, and immutable audit trail
  • Flexibility to bring your own AG-UI agent or use built-in coworkers
  • Component-based interactions for richer user experience beyond prose
  • Supports multiple identity providers (Google, Microsoft, Okta, SAML, OIDC)
  • MIT license allows permissive use and modification

Disadvantages

  • Currently in Alpha stage with potential rough edges and bugs
  • Requires multiple dependencies: Docker, Bun, CopilotKit Intelligence (with license), and a model API key
  • Setup involves several steps including environment configuration and credential management
  • Embedded PostgreSQL option is not suitable for production (requires external database)
  • Certain local-only features (like AGENT_COMPUTER_ALLOW_PRIVATE_HOSTS) are disabled in production

Installation

docker

docker build -t openbot .
docker run -p 3001:3001 --env-file .env \
  -e EMBEDDED_POSTGRES=on -v openbot-data:/var/lib/postgresql/data openbot

FAQ

How do I get started with OpenBot?

1. Copy `.env.example` to `.env` and fill required values. 2. Run `npx --yes copilotkit@latest login`, `npx --yes copilotkit@latest project select`, and `npx --yes copilotkit@latest license --write` to get CopilotKit Intelligence credentials and write the runtime key and license token into `.env`. 3. Add `OPENAI_API_KEY` (or other model keys) and generate a `KEY_ENCRYPTION_KEY` with `openssl rand -base64 32`. 4. Install dependencies with `bun install` and start the stack via `bash scripts/start.sh`. 5. Open <http://localhost:3010> to begin using the UI.

What are the system requirements for running OpenBot?

- Docker (for PostgreSQL and the per‑Bot computers). - Bun 1.3+ (for the app and API server). - A CopilotKit Intelligence project and license (free plan available, can be self‑hosted). - A model key (the proof‑of‑concept Bot uses OpenAI; the LangGraph Bot supports OpenAI, Anthropic, or Google). - Required environment variables: `DATABASE_URL`, `KEY_ENCRYPTION_KEY`, `INTELLIGENCE_API_URL`, `INTELLIGENCE_GATEWAY_WS_URL`, `INTELLIGENCE_API_KEY`, `COPILOTKIT_LICENSE_TOKEN`.

How do I deploy a custom agent (bring my own agent) in OpenBot?

Any AG‑UI endpoint can become a Bot. You can create a coworker via the `/agents` UI or by editing `agents.yaml`. Provide a name, title, role description, visibility (private/public), an optional AG‑UI endpoint URL, and a write‑only authorization header if needed. The server validates custom endpoints against `AGENT_ENDPOINT_ALLOWED_HOSTS` and checks them on each redirect. If no custom endpoint is set, product‑created coworkers use `MANAGED_AGENT_AG_UI_URL` when configured; otherwise they are refused. Private addresses are only allowed if listed in `AGENT_ENDPOINT_ALLOWED_HOSTS`.

How does governance and audit work in OpenBot?

Every Bot action passes through a single gateway that resolves the target, evaluates a CEL policy, writes an audit row, and then executes the action (or refuses it). Policies can inspect fields like `tool.name`, `intent`, `bot.id`, `actor.id`, `page.url`, `page.host`, `element.*`, `key`, `file.*`, and `mcp.*`. Deny rules are evaluated before allow rules; a missing policy permits nothing, and a broken rule refuses rather than opening. The audit trail is viewable at `/admin/audit`, showing permitted, refused, and failed actions with the rule that caused each refusal. Boundaries and presets are configured via `/admin/boundaries`.

How are credentials and secrets managed in OpenBot?

Credentials are stored write‑only and encrypted at rest via the `/admin/credentials` surface. They are never returned by any API and are redacted from audit events. Use a strong `KEY_ENCRYPTION_KEY` (generated with `openssl rand -base64 32`) to protect them. Never commit credential values to version control or tenant YAML files.

How do I take the wheel when a Bot needs help (e.g., login or 2FA)?

When a Bot encounters a login wall or 2FA prompt, it asks for assistance. You can take control directly in the same panel. This interaction is recorded as `computer.help_requested`, `computer.control_taken`, and `computer.control_released`. While a human is driving, Bot actions are refused rather than queued, ensuring you stay in command until you release control.

Loading documentation…
View on GitHub

Featured in Videos

YouTube tutorials and walkthroughs for openbot

Alternatives

Similar projects ranked by category, topics, and text overlap.

Compare
openbot | MushyBook