How anil-matcha/open-dots works
Open Dots is a self-hosted AI workspace. Users configure personas and models, chat with streaming responses and image attachments, and can invoke governed workspace, connector, or computer actions; riskier actions pause for approval and are audited. The Next.js client uses the FastAPI API, which routes requests to persistence, inference, and action services. The README documents optional Docker and remote computer providers. Some routing and service implementations were not excerpted, so uncertain internal links are omitted; optional integrations are shown dashed where implementation wiring is not evidenced.
Main entry points: main.py FastAPI application · storage_service.py Workspace persistence · chat.py Chat endpoints · Dashboard.jsx Workspace dashboard
Components 34
Workspace client
- Workspace dashboard
client/components/Dashboard.jsx - Chat workspace
client/components/ChatWindow.jsx - Message rendering
client/components/MessageItem.jsx - Approval prompts
client/components/ApprovalCard.jsx - Computer panel
client/components/ComputerPanel.jsx - Persona marketplace
client/components/Marketplace.jsx - App settings
client/components/AppSettingsDrawer.jsx - Model catalog UI
client/components/ModelPicker.jsx - API client
client/lib/api.js
HTTP API
- FastAPI application
server/app/main.py - Chat endpoints
server/app/routers/chat.py - Persona endpoints
server/app/routers/bots.py - Model endpoints
server/app/routers/models.py - Settings endpoints
server/app/routers/settings.py - Image upload
server/app/routers/upload.py - Approval endpoints
server/app/routers/approvals.py - Audit endpoints
server/app/routers/audit.py - Computer endpoints
server/app/routers/computers.py - Connector endpoints
server/app/routers/connectors.py - Local authentication
server/app/services/auth_service.py - API contracts
server/app/schemas/contracts.py
Workspace services
- Inference adapter
server/app/services/provider_service.py - Workspace persistence
server/app/services/storage_service.py - SQLite database
server/app/services/database.py - Action gateway
server/app/services/action_gateway.py - Approval broker
server/app/services/approval_broker.py - Confined workspace tools
server/app/services/workspace_service.py - Computer actions
server/app/services/computer_actions.py - Computer provider
server/app/services/computer_provider.py - Connector actions
server/app/services/connector_actions.py - Composio adapter
server/app/services/composio_service.py
External integrations
- Inference API
- Composio service
Other components
- Workspace user
Connections 45
- Workspace user → Workspace dashboard: uses
README.md - Workspace dashboard → Chat workspace: shows
client/components/Dashboard.jsx - Workspace dashboard → Computer panel: shows
client/components/Dashboard.jsx - Workspace dashboard → Persona marketplace: shows
client/components/Dashboard.jsx - Workspace dashboard → App settings: shows
client/components/Dashboard.jsx - Chat workspace → Message rendering: renders
client/components/ChatWindow.jsx - Chat workspace → Approval prompts: renders
client/components/ChatWindow.jsx - Chat workspace → Model catalog UI: renders
client/components/ChatWindow.jsx - Chat workspace → API client: calls
client/components/ChatWindow.jsx - Computer panel → API client: calls
client/components/ComputerPanel.jsx - App settings → API client: calls
client/components/AppSettingsDrawer.jsx - App settings → Model catalog UI: uses catalog
client/components/AppSettingsDrawer.jsx - Persona marketplace → API client: calls
client/components/Marketplace.jsx - API client → FastAPI application: HTTP requests
README.md - FastAPI application → Local authentication: authenticates
server/app/main.py - FastAPI application → Chat endpoints: registers
server/app/main.py - FastAPI application → Persona endpoints: registers
server/app/main.py - FastAPI application → Model endpoints: registers
server/app/main.py - FastAPI application → Settings endpoints: registers
server/app/main.py - FastAPI application → Image upload: registers
server/app/main.py - FastAPI application → Approval endpoints: registers
server/app/main.py - FastAPI application → Audit endpoints: registers
server/app/main.py - FastAPI application → Computer endpoints: registers
server/app/main.py - FastAPI application → Connector endpoints: registers
server/app/main.py - Chat endpoints → Inference adapter: calls
server/app/routers/chat.py - Chat endpoints → Workspace persistence: reads and writes
server/app/routers/chat.py - Chat endpoints → Action gateway: dispatches actions
server/app/routers/chat.py - Chat endpoints → Connector actions: calls
server/app/routers/chat.py - Chat endpoints → Confined workspace tools: calls
server/app/routers/chat.py - Persona endpoints → Workspace persistence: reads and writes
server/app/routers/bots.py - Settings endpoints → Workspace persistence: reads and writes
server/app/routers/settings.py - Approval endpoints → Approval broker: calls
server/app/routers/approvals.py - Audit endpoints → Workspace persistence: reads
server/app/routers/audit.py - Computer endpoints → Action gateway: dispatches actions
server/app/routers/computers.py - Computer endpoints → Computer provider: calls
server/app/routers/computers.py - Computer endpoints → Workspace persistence: reads and writes
server/app/routers/computers.py - Computer endpoints → Computer actions: calls
server/app/routers/computers.py - Connector endpoints → Composio adapter: calls
server/app/routers/connectors.py - Connector endpoints → Workspace persistence: reads and writes
server/app/routers/connectors.py - Workspace persistence → SQLite database: persists to
server/app/services/storage_service.py - Inference adapter → Workspace persistence: reads settings
server/app/services/provider_service.py - Inference adapter → Inference API: sends predictions
README.md - Composio adapter → Composio service: calls tools
README.md - Computer provider → Computer actions: provides runtime
README.md - API contracts → Chat endpoints: defines payloads
server/app/routers/chat.py