Playbooks#Multi-agent#Runtime

OpenDots, the open-source AI employee template: what it is, how to run it, and whether to build on it

OpenDots is CopilotKit’s MIT-licensed, alpha template for AI employees. What you need to run it, how approvals work, and when to build your own agent instead.

OpenDots is an open-source template from the CopilotKit team for building “AI employees”: named agents called Dots, each with a role, instructions, permissions and optionally its own container computer, reachable from a web chat, a voice call or Slack. Its repository on GitHub is CopilotKit/OpenDots, it is MIT-licensed, and its README carries an Alpha badge. As of October 18, 2026 the repository showed about 5,500 stars. If you searched “opendots github” or “open-source AI employee template”, this is the practical read: what you get, what the README says you must set up first, and where it stops.

Everything below comes from the README and docs/SETUP.md in the repository, read on October 18, 2026. Where the docs were silent, this piece is too. For a shorter catalog entry see OpenDots on our GitHub shelf.

Key points

  • The README calls OpenDots “a template, not a hosted product”: you clone it, run it and configure the infrastructure yourself.
  • Chat does not work out of the box. Conversations require CopilotKit Intelligence: hosted, a local Docker evaluation, or a licensed self-hosted deployment, plus an OpenAI-compatible model key.
  • Nothing is saved or run on a write action without a click: drafts wait for “Approve & save”, and non-read-only MCP tools wait for “Approve & run”.

What OpenDots is

OpenDots is a React app plus a Node server, with pages and workspace settings in SQLite. The README describes it as “a starting point for building your own agent workspace”, and the pieces are concrete:

PieceWhat it does
Spaces and pagesFolders of working documents with a visual editor, search, nested subpages, autosave and revision checks
Specialist DotsEach one has a name, role, instructions and permitted tools
Dot computersAn optional per-Dot container computer through the OpenBot project: persistent browser profile and files, shell, human takeover
ConnectionsMCP servers per Dot, plus Composio for email, calendar and other connected apps
ChannelsWeb chat, WebRTC voice calls, and Slack through Channels SDK
Background workScheduled server-side turns that can be paused and retried

Under the hood it uses the AG-UI protocol to stream messages and tool calls to CopilotKit’s React components, TanStack AI for model streaming, and Intelligence for durable conversation threads. Work comes back as editable documents in a Space rather than a chat transcript, which is the part that distinguishes it from a chatbot with tools.

How to run OpenDots

OpenDots needs Node.js 24 and npm. The README’s commands are:

git clone https://github.com/CopilotKit/OpenDots.git
cd OpenDots
npm ci
cp .env.example .env
npm run dev

Open http://127.0.0.1:5173. At this point you can create Spaces, write pages and define Dots, but you cannot chat: without service credentials the app shows a setup state and, per the setup guide, does not generate simulated replies.

To get conversations working you pick one of three Intelligence routes, then add a model:

RouteWhat the docs say
Hosted Intelligencenpx copilotkit@latest login, then npx copilotkit@latest project select, which writes CPK_INTELLIGENCE_API_KEY into .env
Local Docker evaluationDocker Desktop on macOS with at least 4 CPUs, 12 GiB RAM and 40 GiB free; a free CopilotKit Developer plan gives a renewable 30-day evaluation license; “not a production installation”
Licensed self-hostingNeeds a licensed self-hosted deployment and API and gateway URLs in .env

Then set OPENAI_API_KEY and OPENAI_MODEL in .env and restart. OPENAI_BASE_URL lets you point at a compatible endpoint. One trap the README flags: do not run copilotkit onboard in this folder, because OpenDots already contains its CopilotKit integration and onboarding would add a second one.

The computer feature is a separate step. Per the README, computer tools require the OpenBot container services described in docs/COMPUTERS.md; an unconfigured template does not execute commands on your host.

How Dots, voice and Slack work

OpenDots treats text, calls and Slack as three doors into the same Dot. The README says calls pair realtime speech with a separate compute agent, so a long task keeps running while you talk, and both use the same conversation context and tool permissions. Voice needs its own provider configuration.

Slack is the one to read carefully. A Dot is mentioned through a managed Slack connection built on Channels SDK, with an explicit workspace and user allowlist and a chosen specialist. The README’s own verification notes say Slack and spoken compute delegation “still need connected-service verification”. Live chat, model responses and page-context chat were verified on September 29, 2026, and computer browsing was verified locally and voice calls on September 30. Treat Slack as unproven until you have tested it in your own workspace.

Human approval

OpenDots has two approval points, and both are in the README. The first is saving: a Dot can show a draft first, and a CopilotKit human-in-the-loop card pauses the conversation for Approve & save or Decline. Approval creates the page in an authorized Space and returns a link; a changed draft needs a new review.

The second is tools. For MCP servers you attach to a Dot, read-only tools run on their own, and any other tool pauses for an Approve & run card. You can switch each tool on or off per Dot. Composio-connected apps are off until you add COMPOSIO_API_KEY and then enable them both globally and for the specific Dot. The README warns these tools act on real accounts and suggests starting with a read-only request on a test account.

Who it fits and who it does not

OpenDots fits a developer or small team that wants to see how a persistent, approval-gated agent workspace is put together, and wants source code to bend rather than a product to subscribe to. It also fits anyone who needs the model endpoint and data path under their own control, since any OpenAI-compatible endpoint works.

It does not fit a few cases, and the README says why:

  • Anyone expecting turnkey: the setup above has several moving parts, and conversations depend on CopilotKit Intelligence even when you self-host the app.
  • Teams: the README calls it a single-owner starting point; shared editing, invitations and file uploads are not included.
  • Multi-agent workflows: Dots have separate roles and conversations, but group conversations and automatic delegation between Dots are listed as further work. Schedules are recurring instructions, not an event-trigger system.
  • Production use today: the badge says Alpha, and the README separates what was verified from what was only tested with fixtures.

On privacy, the README states that conversation data goes to the configured Intelligence deployment and the model provider, and that public-web research sends queries and URLs to Parallel by default. Set WEB_SEARCH_PROVIDER=disabled to turn that off. It also documents telemetry, which COPILOTKIT_TELEMETRY_DISABLED=true or DO_NOT_TRACK=1 opt out of.

OpenDots or your own agent

The honest comparison is between adopting this template and wiring the same parts yourself.

Build your own agentStart from OpenDots
Time to first working versionLongest: chat UI, threads, tool cards, document storeShortest: clone, add Intelligence and a model key
Approval flowYou design itDraft review and tool approval already in place
Control of the stackTotalYours to edit, but you inherit CopilotKit and AG-UI choices
DependenciesOnly what you chooseIntelligence for conversations; OpenBot for computers
MaturityYoursAlpha; parts unverified against live services

If your agent is a single scripted job, a template with Spaces, voice and Slack is more than you need. If you want several named agents with their own tools and a review step, starting here and deleting what you do not use is faster than rebuilding the approval cards. For the project-level facts and install snippet in one place, see the OpenDots entry; if a Dot’s last mile is publishing to social channels, aitoearn covers that side.

What was not checked

This piece did not run OpenDots, so the setup steps are the repository’s, not ours. Pricing and limits of CopilotKit Intelligence’s hosted and licensed tiers are not covered because the README does not state them; check CopilotKit’s documentation before planning around the free evaluation license, which the docs describe as renewable but time-limited.