open-dot README

The project's README from github.com/composio-community/open-dot. As one markdown file: README.md.

Open Dot

OpenAI launched Dots on September 29, personal agents that keep working in the background on their own computers, but you need ChatGPT Pro or Business Premium to use them. Open Dot is an open source version that runs on your own Mac with your own OpenAI key, or with open models like Kimi, DeepSeek and Qwen through OpenRouter.

What your dots can do

Get it running on your Mac

Open Dot is a desktop app. The window runs its own local server, and closing the window keeps your dots working in the background until you quit with ⌘Q.

pnpm install
pnpm desktop:build           # makes dist/Open Dot-<version>-arm64.dmg

The build isn't notarized yet, so the first time you open it, right-click the app and choose Open.

Then in Settings:

  1. Paste your OpenAI API key, an OpenRouter key, or both. Keys are stored encrypted on your Mac. An OpenRouter key adds open models like Kimi, DeepSeek, Qwen and GLM to the model picker.
  2. Sign in with Composio to connect your apps. The sign-in opens in your normal browser.
  3. If you want dots to keep working while your Mac sleeps, paste an E2B key too, and each dot gets a cloud computer.
  4. For triggers, paste the API key of a project from platform.composio.dev, then add triggers from a dot's Setup page. You connect the apps for triggers again there, because they run in your own Composio project and not through the sign-in from step 2.

Your data stays in ~/Library/Application Support/Open Dot.

Run it from source

You'll need Node 22 or newer, pnpm and Google Chrome (Playwright's Chromium works if Chrome isn't installed).

cp .env.example .env.local   # add OPENAI_API_KEY, or paste it in Settings later
pnpm install
npx playwright install chromium
pnpm dev                     # http://localhost:3100
pnpm desktop:dev             # optional, opens the desktop window on top of pnpm dev

In development everything is stored in .data/ in the project folder.

Env var Default What it does
OPENAI_API_KEY none Your OpenAI key, unless you paste it in Settings
OPENROUTER_API_KEY none Open models through OpenRouter, unless you paste the key in Settings
COMPOSIO_API_KEY none A Composio project key for triggers, unless you paste it in Settings
DOTS_MODEL best one your key can use, e.g. gpt-5.5 Main model for the dots (Responses API)
DOTS_REVIEW_MODEL gpt-5.4-mini Checks actions against your rules and names chats
DOTS_VOICE_MODEL gpt-realtime-2.1 Voice calls
DOTS_COMPUTER_TOOL computer computer lets the model see and click the screen, off limits it to opening pages and reading them
E2B_API_KEY none Cloud computers, unless you paste the key in Settings
DOTS_COMPUTER picked automatically Force cloud, docker or local
DOTS_BOX_IMAGE node:22-bookworm Container image when dots run in Docker
DOTS_PUBLIC_URL http://localhost:3100 Where the app is served, used for the Composio sign-in redirect
DOTS_DATA_DIR .data/ Where chats, the password vault, browser profiles and workspaces are kept

Good to know

How it's put together

electron/main.mjs      the Mac app: starts the server, opens the window, sends links to your browser
scripts/desktop-*.mjs  packs the Next.js server into the app
src/server/
  agent/runtime.ts     the agent loop: streaming Responses API, a thread per chat,
                       approval cards that pause and resume a run, pause and stop
  agent/tools.ts       the dot's tools and how risky each one is
  agent/review.ts      checks an action against your rules
  agent/prompt.ts      the system prompt, rebuilt every turn from rules, memory, skills and routines
  agent/openrouter.ts  open models through OpenRouter, which keeps no history, so the app keeps it per chat
  computer/            one interface over E2B cloud computers, Docker and local folders
  computer/browser.ts  each dot's Chrome profile, computer-use actions, the live view you can take over
  composio.ts          Composio sign-in and app connections
  triggers.ts          Composio triggers and the live stream of their events
  voice.ts             voice calls (OpenAI Realtime)
  vault.ts             the encrypted password store
  scheduler.ts         routines
  repo.ts, db.ts       SQLite (node:sqlite)
src/app/api/events     one stream of live updates to the window
src/lib/store.ts       the window's state, read with useSyncExternalStore

The dots use OpenAI's built-in web_search and computer tools, or OpenRouter's web search on open models. Everything else is a function tool, so any action can go through your rules first.

Built with

OpenAI (GPT-5.5 through the Responses API, Realtime for voice, computer use), OpenRouter for open models, Composio, Next.js, Electron, Playwright with your installed Chrome, E2B and SQLite.

open-dot (composio-community/open-dot)

Searching Database…

Что это такое?Open Dot — открытая версия персональных агентов «Dots» от OpenAI, которые обычно требуют ChatGPT Pro или Business Premium. Она работает на вашем Mac с вашим собственным ключом OpenAI или с открытыми моделями вроде Kimi, DeepSeek и Qwen через OpenRouter, не давая агентам останавливаться в фоне на вашем компьютере.
Это настольное приложение или веб-сервис?Это настольное приложение для Mac на Electron, которое запускает собственный локальный сервер; при закрытии окна dots продолжают работать, пока вы не завершите приложение через Cmd+Q.
Как его запустить?Скачайте приложение для Mac и, поскольку сборка пока не нотаризована, щёлкните по нему правой кнопкой и выберите Открыть, затем в настройках вставьте свой ключ OpenAI или OpenRouter и войдите через Composio, чтобы подключить свои приложения. Альтернативно — запуск из исходников с Node 22+, pnpm и Google Chrome.
Нужен ли ключ OpenAI, или можно взять открытые модели?Нужен как минимум ключ OpenAI или ключ OpenRouter (он открывает Kimi, DeepSeek, Qwen и GLM). Вход через Composio нужен для подключения приложений, ключ E2B необязателен для облачных вычислений, а голосовые звонки всё равно требуют ключ OpenAI, какой бы моделью вы ни пользовались в остальном.
Есть ли подводные камни с расписаниями, триггерами или открытыми моделями?Рутины и триггеры срабатывают, только пока приложение открыто, поэтому всё назначенное на время сна Mac пропускается. У открытых моделей нет инструмента computer-use от OpenAI — они кликают и печатают, читая текст страницы, что не работает на интерфейсах, отрисованных в canvas; плюс нет экрана входа, так что на публичном сервере это запускать не стоит.
Работает только на Mac или на других платформах тоже?Оно создано специально для macOS; о поддержке Windows или Linux ничего не упоминается.
Может ли оно продолжать работать, пока мой Mac спит?Без дополнительной настройки — ненадёжно: по умолчанию агент останавливается, когда Mac засыпает, если только не добавить ключ E2B, который даёт каждому dot облачный компьютер, продолжающий работать.
Куда попадают мои сохранённые пароли и данные?Сохранённые пароли сайтов шифруются ключом из вашей macOS Keychain и вводятся прямо на страницу, так что модель их никогда не видит; все данные приложения лежат локально в ~/Library/Application Support/Open Dot.
Могут ли мои dots работать с настоящими приложениями вроде Gmail или Slack?Да, через Composio он подключается к Gmail, Calendar, Slack, Notion, GitHub и более чем 1500 других приложений. Читать он может сам, но перед отправкой, публикацией, оплатой или любыми изменениями спрашивает.
Можно ли общаться с dot голосом?Да, ему можно позвонить и поговорить; всё, что вы попросили за время звонка, продолжает выполняться после того, как вы положите трубку, а полная расшифровка звонка появляется в чате, чтобы можно было продолжить текстом.
Могут ли несколько dots работать вместе?Да, можно создать несколько dots с разными задачами, передающих работу друг другу; каждый запоминает что-то о вас и сохраняет навыки для повторяющихся задач.
Где на самом деле выполняется код?Каждый dot выполняет код в собственном рабочем пространстве, которым может быть облачный компьютер E2B, локальный Docker-контейнер или обычная папка на вашем Mac — в зависимости от конфигурации.
Size
0.5 MB
Stars
659
Updated
CommitSep 30
Age
19d
Commits · 90 Days