OpenDots README

The project's README from github.com/CopilotKit/OpenDots. As one markdown file: README.md.

OpenDots

Always-on AI coworkers that move between text, calls, and Slack.

An open-source template for persistent AI agents, each with its own computer. Available on Web and Mobile.

Built with CopilotKit and AG-UI. · Get started · Overview · Architecture · Features · Contributing

CI License: MIT Alpha

Fully self-hostable. Clone this template and customize it however you want.

Building on OpenDots? Meet with the CopilotKit team →


https://github.com/user-attachments/assets/4c74fe7d-ecdd-42dd-95da-5d34f9b9576e

Ask → browse → approve → save. A live computer view and a human review card appear right in chat, then the approved draft becomes an editable Space page. Enlarged for readability; idle time is trimmed and playback is accelerated.

Overview

OpenDots is a starting point for building your own agent workspace. Clone it, define your Dots, connect your services, and adapt the interface and tools to your needs.

A template, not a hosted product. You run the application and configure its infrastructure. The template is in early development; the Features section below describes what's included and distinguishes local verification from connected-service testing.

Spaces

A Space is a home for working documents. Dots appear separately in navigation and can be granted access to multiple Spaces in their settings. Each Dot has a default destination for saved pages; existing installations retain their original Space access. Browse pages in a searchable library, switch between grid and list views, and organize documents as nested subpages. Open a page in a focused visual editor with formatting, slash commands, and undo/redo. Write directly, save a conversation as a page, or ask a specialist to create and revise content.

Pages stay in the local workspace database. Their conversations use CopilotKit Threads, with a separate conversation for each page and specialist. Page links connect the document workspace to Dot chat. Manual editing works before you configure conversation services. Autosave reports its progress, failed saves retain your draft, and revision checks prevent stale edits from overwriting newer content. Markdown source mode remains available.

https://github.com/user-attachments/assets/d20c3405-4339-49e7-a799-43298728015c

Open a Space, navigate to its launch brief, ask Scout about the saved page, and continue in Dot chat. This recording uses live page chat and example launch content.

Specialist Dots

Give each Dot a name, role, instructions, and permitted tools. A researcher can investigate a topic; a writer can turn findings into a draft. Inspect their work and control what they can do.

Dot computers

Each Dot can have its own computer, using OpenBot's container supervisor and computer service. Its browser profile and workspace files persist across stop/start. The Computer panel exposes browser control, human takeover, files, terminal output, and activity, with browser, file, and shell permissions set per Dot. The application keeps service credentials on the server and derives a different computer credential for each Dot.

See Computer setup to build the pinned services and connect your deployment. Computer tools require those services; an unconfigured template does not execute commands on your host.

https://github.com/user-attachments/assets/30b691c3-0f66-4964-9fdb-67d4feab5568

Ask Scout to open a website, summarize it, save notes, and verify the file. Every computer action in this demo is requested through chat; CopilotKit tool renderers show the live browser, saved file, and terminal output inline.

Review before saving

Ask a Dot to show a draft before saving it. 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; retries recover the same saved page. The agent continues after your decision.

Text and calls

A continuous conversation keeps the Dot's avatar and status above the messages, with text and call controls close at hand. Work updates, source links, and call receipts appear in the timeline; a side panel shows results or the agent's computer.

Calls pair realtime speech with a separate compute agent, so the conversation can continue while longer work runs. Both use the same conversation context and tool permissions. The call screen includes a live timer, separate user and Dot captions, microphone mute, speaker mute, and a minimized view for continuing in chat. Voice needs separate provider configuration.

https://github.com/user-attachments/assets/3c06cf71-39ed-4e2b-b846-5463b2722389

Connect, talk, mute, minimize, and return to chat. This is a silent screen capture of a real call, with waiting time trimmed and playback accelerated.

Slack

Mention a Dot through a managed Slack connection using Channels SDK, then continue in its thread. The integration follows OpenTag, with an explicit workspace/user allowlist and a selected specialist. See Slack setup to connect your deployment.

https://github.com/user-attachments/assets/27d03a6c-a9e0-4c29-8d96-fafe0fbae20f

Bring your agents into Slack with Channels SDK. See the managed Channels documentation to connect them through CopilotKit Intelligence.

Architecture

AG-UI connects the agent to the interface

AG-UI carries streamed messages, tool calls, and agent state between the backend and CopilotKit components. Computer activity appears inline as the agent works; human-in-the-loop cards pause a tool call for your decision before it continues.

The template uses TanStack AI for model streaming and server-tool execution, CopilotKit's React SDK and runtime, Intelligence for durable Threads, and Channels SDK for Slack. Pages, application metadata, and background-work state are stored separately from conversation history.

flowchart TB
  Web["Web app: pages, Spaces, Dots, chat"] -->|AG-UI| Runtime[CopilotKit runtime]
  Slack[Slack] <--> Managed[Managed channel connection]
  Managed <--> Channels[Channels SDK]
  Channels --> Agents[Specialist compute agents]
  Runtime --> Agents
  Agents --> AI[TanStack AI]
  AI --> Provider[OpenAI-compatible model provider]
  Runtime <--> Intelligence["Intelligence / Threads"]
  Channels <--> Intelligence
  Web <--> Speech[Realtime speech]
  Speech --> Bridge[Compute bridge]
  Bridge --> Agents
  Agents --> Controls[Tool permissions]
  Controls --> Computer[Isolated browser / workspace]
  Agents --> Jobs[Background work]
  Runtime --> Metadata[(Pages, Spaces, Dots, work metadata)]

You configure the Intelligence project, model provider, and channel connection for your deployment; calls also need a speech provider. Credentials stay on the server. Missing configuration should produce a clear setup state, and test fixtures should remain visibly separate from live integrations.

OpenMuse and OpenBot are code references for persistent work, agent computers, and execution controls. OpenDots can be adapted to your own workflows and deployment choices.

Get started

Use Node.js 24 and npm:

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. You can create Spaces, write pages, and configure Dots before connecting services. Add your conversation and model settings to .env to start chatting.

See Setup for configuration, Slack, calls, the browser service, and Docker.

Features

Area Included
Spaces and Specialist Dots Saved names, role instructions, and per-Dot research and memory permissions
Pages Searchable library, visual editor, slash commands, autosave, and revision checks
Conversations React SDK chat and Threads integration, page-specific conversations, and source links
Slack Managed Channels SDK declaration with workspace and user allowlists
Calls WebRTC speech, delegated compute, bounded sessions, hangup, and timeline receipts
Background work Scheduled server-side turns in their original conversation, with pause and retry controls
Browser Separate read-only public-page service with page capture and navigation limits
Dot computers Per-Dot browser profiles, files, shell, takeover, permissions, and action records through OpenBot
Memory User-managed preferences that permitted Dots can use
Automatic Learning Per-Dot Learning containers, conversation evidence routing, and published-skill delivery; see setup
Deployment Local Node setup and separate application/browser containers

Local checks cover setup, persistence, permissions, SDK failure handling, and browser isolation. Automated tests use service fixtures. Live Intelligence, model responses, and page-context chat were verified on September 29, 2026. Live OpenBot computer browsing, file creation, shell verification, and file persistence across stop/start were also verified locally. Live Realtime speech, call controls, and receipt persistence were verified locally on September 30, 2026. Slack and spoken compute delegation still need connected-service verification. See recording notes for the demonstrated flows and limits.

Automatic Learning routing and skill delivery are configured locally. Cloud schedules, eligible-thread counts, and published-skill delivery still need connected-service verification. Skills require review and publication in Intelligence; existing conversations without a container are not enrolled retroactively.

This is a single-owner starting point. Shared editing, invitations, file uploads, and interactive page embeds are not included. Schedules are recurring instructions, not a complete goal or event-trigger system. Specialist Dots have separate roles and conversations; multi-Dot group conversations and automatic delegation are further work.

Extending the template

Contributing

See Contributing for development guidance and Security for reporting issues. Contributions should describe the workflow they enable, include verification evidence, and distinguish live integrations from fixtures.

References

License

MIT.

OpenDots (CopilotKit/OpenDots)

Searching Database…

Что это?OpenDots — опенсорсный шаблон постоянно доступных ИИ-коллег ('Dots'), которые перемещаются между текстовым чатом, голосовыми звонками и Slack, и у каждого свой постоянный компьютер.
Это готовое к использованию приложение или шаблон, который я сам настраиваю и запускаю?Это шаблон для самостоятельного хостинга, а не готовый hosted-продукт: вы клонируете репозиторий, сами запускаете приложение и настраиваете его инфраструктуру (провайдер моделей, сервис бесед, Slack, речь).
Как его запустить?Склонируйте репозиторий, используйте Node.js 24 с npm, запустите локально и добавьте настройки бесед и модели в файл .env, чтобы начать общаться.
Что нужно настроить, чтобы Dots реально заработали?Нужно настроить проект Intelligence, провайдера моделей и подключение канала; для звонков требуется ещё отдельный провайдер речи, а компьютерным инструментам нужны закреплённые сервисы OpenBot.
Чего не хватает или что пока сделано сыро?Проект прямо называется ранней стадией с единственным владельцем: пока нет совместного редактирования, приглашений, загрузки файлов или интерактивных встраиваний страниц, а для Slack и делегирования голосовых вычислений всё ещё нужна проверка подключённых сервисов.
Работает ли на мобильных или только в вебе?OpenDots доступен и в вебе, и на мобильных, а для самостоятельного хостинга разворачивается как отдельные контейнеры приложения и браузера.
Где в итоге оказываются мои учётные данные сервисов?Учётные данные подключённых сервисов остаются на сервере, а приложение выводит для каждого Dot отдельные ограниченные учётные данные компьютера вместо того, чтобы раздавать главные учётные данные.
Что такое 'Dot' на самом деле?Dot — это специализированный ИИ-агент с настраиваемыми именем, ролью, инструкциями и разрешёнными инструментами (например исследователь или писатель), у которого по желанию может быть собственный компьютер на базе контейнера.
Что умеет собственный компьютер Dot?Через OpenBot каждый Dot получает постоянный профиль браузера и файлы рабочего пространства, плюс управление браузером, терминал, перехват управления человеком и гранулярные права на браузер/файлы/shell.
Как работает проверка человеком перед сохранением?Когда Dot что-то готовит черновиком, карточка human-in-the-loop приостанавливает чат, чтобы вы могли «Одобрить и сохранить» или «Отклонить»; одобрение публикует черновик как редактируемую страницу в Space.
Зачем мне подключать Slack?Управляемая интеграция Channels SDK позволяет упомянуть Dot в канале Slack из белого списка и продолжить ту же беседу в его треде.
Creator
CopilotKit
Size
18.9 MB
Stars
5.5K
Updated
CommitOct 15
Age
18d
Commits · 90 Days