How composio-community/open-dot works
Open Dot is a local-first desktop app for creating persistent personal agents (“dots”). Users configure a dot, send it work in chat, and follow its progress or take over its computer; the agent can use tools, request approval for risky actions, and retain chat and dot data. Separate capabilities include connected-app actions, scheduled routines, event triggers, voice, password vaulting, and multi-dot channels. Relationships below follow sampled imports, excerpts, and README statements; unsampled subsystem internals are represented at their documented paths.
Main entry points: actions.ts Server actions · runtime.ts Agent loop · repo.ts Dot and chat data · client.ts Model client
Components 23
User interface
- Chat
src/components/Chat.tsx - Settings
src/components/SettingsView.tsx - Server actions
src/app/actions.ts - Live events API
src/app/api/events/route.ts - Client state
src/lib/store.ts
Agent runtime
- Agent loop
src/server/agent/runtime.ts - Agent tools
src/server/agent/tools.ts - Action review
src/server/agent/review.ts - Model client
src/server/agent/client.ts - OpenRouter models
src/server/agent/openrouter.ts
Dot computers
- Computer interface
src/server/computer/index.ts - Dot browser
src/server/computer/browser.ts - Cloud computer
src/server/computer/cloud.ts
Apps and automation
- Connected apps
src/server/composio.ts - App triggers
src/server/triggers.ts - Routines
src/server/scheduler.ts - Voice calls
src/server/voice.ts
State and services
- Password vault
src/server/vault.ts - Dot and chat data
src/server/repo.ts - SQLite
src/server/db.ts - Event bus
src/server/bus.ts - Initial snapshot
src/server/snapshot.ts
Other components
- User
Connections 32
- User → Chat: sends work
- User → Settings: configures
- Chat → Server actions: invokes
src/components/Chat.tsx - Settings → Server actions: invokes
src/components/SettingsView.tsx - Server actions → Agent loop: starts runs
src/app/actions.ts - Agent loop → Model client: requests model
- Model client → OpenRouter models: selects open models
src/server/agent/client.ts - Agent loop → Agent tools: dispatches tools
- Agent loop → Action review: checks actions
- Agent tools → Connected apps: uses app tools
- Agent tools → Computer interface: uses computer
- Computer interface → Dot browser: delegates browser
src/server/computer/index.ts - Computer interface → Cloud computer: delegates cloud
src/server/computer/index.ts - Server actions → Dot and chat data: updates data
src/app/actions.ts - Server actions → Connected apps: connects apps
src/app/actions.ts - Server actions → Password vault: saves passwords
src/app/actions.ts - Server actions → App triggers: manages triggers
src/app/actions.ts - App triggers → Agent loop: wakes dot
- Routines → Agent loop: runs routine
- Voice calls → Agent loop: continues work
- Dot and chat data → SQLite: reads and writes
src/server/repo.ts - Password vault → Dot and chat data: stores encrypted passwords
src/server/vault.ts - Model client → SQLite: reads settings
src/server/agent/client.ts - Model client → Password vault: unseals keys
src/server/agent/client.ts - Dot and chat data → Event bus: emits updates
src/server/repo.ts - Server actions → Event bus: emits updates
src/app/actions.ts - Live events API → Event bus: subscribes
src/app/api/events/route.ts - Live events API → Initial snapshot: sends initial state
src/app/api/events/route.ts - Client state → Live events API: receives stream
- Initial snapshot → Dot and chat data: loads dot state
src/server/snapshot.ts - Initial snapshot → Connected apps: loads app status
src/server/snapshot.ts - Initial snapshot → App triggers: loads trigger status
src/server/snapshot.ts