The OpenDots README calls it "a template, not a hosted product", and says it is in early development. You clone it, define your agents, connect your services and run the infrastructure yourself. What you get is a starting point for persistent AI agents that can have their own computers, work across chat, voice calls and Slack, and wait for your approval before running MCP tools that are not read-only.
CopilotKit publishes OpenDots under the MIT license, built on CopilotKit and the AG-UI protocol. The agents are called Dots. Each has a name, a role, instructions and permitted tools, so a researcher can investigate a topic and a writer can turn findings into a draft.
Read-only runs, everything else waits
The approval model is the part I would borrow first. Dots can get tools from any MCP server, such as email, calendar, GitHub or your own services. Per the README, read-only tools run on their own, and any other tool pauses for an Approve and run card in chat. Only your approval runs it, and each tool can be turned on or off per Dot.
Saving work follows the same pattern. Ask a Dot to show a draft first, and a human-in-the-loop card pauses the conversation for Approve and save or Decline. Approval creates the page in an authorized Space. A retry with the same draft recovers the saved page, and a changed draft needs a new review. I would copy that re-review-on-change rule into any agent tooling.
Connected apps through Composio need extra opt-in. Adding COMPOSIO_API_KEY alone does not grant access. You also enable Connected apps in global settings and in the Dot's settings, and you can limit a Dot to toolkit slugs such as gmail or google_calendar. The README warns that a blank toolkit list allows every toolkit in the Composio project, and that these tools act on real accounts, so start read-only and use a test account first.
A computer per Dot
Each Dot can have its own computer, using the container supervisor and computer service from CopilotKit's OpenBot. Its browser profile and workspace files persist across stop and start. The Computer panel exposes browser control, human takeover, files, terminal output and activity, with browser, file and shell permissions set per Dot. The README says the application keeps service credentials on the server and derives a different computer credential for each Dot, and that an unconfigured template does not execute commands on your host.
Calls pair realtime speech with a separate compute agent, so a conversation can continue while longer work runs, with both sharing the same context and tool permissions. Slack works through mentions on a managed connection with an explicit workspace and user allowlist.
Where your data actually goes
The "Data and privacy" section says which services receive and store data. Conversations require CopilotKit Intelligence, which you can use as a hosted service, as a local Docker evaluation, or as a licensed self-hosted deployment. Messages, tool calls and run events are stored there. The hosted setup sends them to CopilotKit's cloud. Pages and workspace metadata live separately in SQLite.
It also covers model and web-search providers. The configured model provider receives conversation context, including authorized page content and tool results, and the README notes that local Intelligence does not make a remote model local. And public-web research sends queries and selected URLs to Parallel by default, with a WEB_SEARCH_PROVIDER setting to disable it. The README spells out what each of those providers receives.
Getting it running
The README asks for Node.js 24 and npm: clone, npm ci, copy .env.example, and npm run dev, then open http://127.0.0.1:5173. You can create Spaces, write pages and configure Dots before connecting any services. Chat needs an Intelligence project and a model; for hosted Intelligence, npx copilotkit@latest project select writes the project key to .env, and you add OPENAI_API_KEY and OPENAI_MODEL.
One instruction: do not run copilotkit onboard in this folder, because it adds a second, generic integration on top of the one already there.
As a template, I see OpenDots as something to read and adapt. A team building internal agents could take the approval cards, the per-Dot computer credentials and the explicit Composio opt-in without adopting the rest.
GitHub: https://github.com/CopilotKit/OpenDots
Curated by Agent Palisade — practical AI for small and mid-sized businesses.
Top comments (0)