| Workspace |
The top-level tenant. Owns billing, members, integrations, projects. |
| Project |
A single app / site / repo, owned by a workspace. Has files, chat history, deploy config. |
| Mode |
A configurable AI persona — system prompt + tool whitelist + provider preferences. Per-project or workspace-default. |
| Skill |
A higher-level capability composed of one or more tools (e.g. "Refactor", "Add feature"). |
| Connector |
A first-party integration (Stripe, Linear, GitHub, ...). See Add an integration. |
| Integration |
An installed connector for a specific workspace, with auth credentials. |
| MCP |
Model Context Protocol — Anthropic's open standard for tool servers. Doable can both expose and consume MCP servers. |
| Tool |
A callable function the AI can invoke. Each tool has a JSON-Schema for its arguments and a permission policy (auto/ask/block). |
| Tool policy |
The per-workspace rules for whether a given tool runs automatically, asks for confirmation, or is blocked. |
| DoCore |
The AI engine package (@doable/docore) — pools workers, maps provider events into a uniform shape, runs tool calls. |
| DoCoreEngine |
A single AI conversation runtime instance. |
| DoCorePool |
A pool of DoCoreEngine workers shared across users to bound concurrency. |
| DoVault |
The sandboxing package (@doable/dovault) — spawns child processes inside a jail with config + resource limits. |
| Vault |
A configured dovault instance that knows which backend to use on the current OS. |
| Backend (sandboxing) |
Platform-specific implementation: Direct, Systemd, Nsjail (Linux); JobObject, WindowsHeap (Windows). |
| Jail |
The combined process-isolation layer: cgroups + namespaces + seccomp on Linux; Job Objects + AppContainer on Windows. |
| Isolator |
The component that places a process into the jail. ProcessIsolator chooses a backend. |
| Policy |
A declarative ruleset (PolicyStore) describing what tools/files/network a process or AI can touch. Enforced via createPolicySandbox. |
| Sandbox |
The combination of a jail + a policy applied to an in-flight tool call. |
| EventBus |
The in-process pub/sub used by docore to fan out AI events to subscribers (chat UI, audit log, billing). |
| mapSdkEvent |
The function that translates Copilot SDK events into Doable's uniform AIEvent shape. |
| Awareness |
The Yjs concept tracking each connected user's cursor, selection, and presence in real time. |
| Room |
A WebSocket channel for one collaborative document (typically one project file). |
| Yjs |
The CRDT library that powers conflict-free multi-user editing. |
| Tunnel |
Cloudflare Tunnel — a daemon (cloudflared) that exposes local services without opening firewall ports. |
| PROJECTS_ROOT |
The directory on disk where project files live. Default services/api/projects/ (bare-metal) or the api_projects Docker volume. |
| SITES_DIR |
The directory served by Caddy/nginx for published static sites. |
| Credit |
The internal billing unit. 1 credit ≈ a small unit of LLM work; exact ratio set per provider. |
| Plan (billing) |
A subscription tier (Free, Pro, Team, ...). Plans cap monthly credits, member counts, and feature flags. |
| Plan (AI) |
A multi-step proposal the AI generates before executing — see Plan Mode. Different from billing plan. |
| KV store |
The lightweight key-value abstraction in @doable/shared/kv-store.ts. In-memory by default; switches to Redis if REDIS_URL is set. |
| Internal secret |
A shared secret (INTERNAL_SECRET) the API uses to authenticate WS server callbacks and other backend-to-backend traffic. |
| JWT |
The signed token used for user-facing auth. Signed with JWT_SECRET. |
| Encryption key |
The 32-byte key (ENCRYPTION_KEY) used to encrypt OAuth tokens and BYO API keys at rest. |