Glossary¶
| Term | Meaning |
|---|---|
| 2FA / Two-Factor Authentication | Optional second login factor using TOTP (authenticator app) plus 10 single-use recovery codes. Users self-enroll; platform admins can force-reset via /admin/mfa. |
| BYOK (Bring Your Own Key) | Pattern where a user or workspace supplies their own API key for an AI provider instead of using a platform-managed credential. |
| doable-cli | The Rust all-in-one operator binary (doable install / doable admin) for provisioning and administering Doable servers, locally or over SSH. |
| Egress firewall | The workspace-level allow/deny ruleset governing which network destinations AI tools may reach. Backed by workspace_sandbox_rules (rule_type='network'). OS-level enforcement via nft/Squid. |
| Personal scope | An AI account (Copilot account or custom provider) whose scope='user' makes it visible only to the owning member. Contrast with Workspace scope. |
| Platform admin | A user with is_platform_admin=true; can manage all workspaces, users, and server config. Distinct from a workspace admin, who only manages one workspace. |
| Provider Bridge | The platform-managed credential store for AI providers. Workspace admins configure shared API keys once; members pick a provider without seeing the raw secret. |
| Row-Level Security (RLS) | Postgres-native per-row access control enforced via SET LOCAL "doable.current_user_id" inside a transaction. Active on projects, workspaces, integrations, and GitHub connections. |
| Sandbox allowlist | The per-workspace rule set governing which AI tools and shell commands may run. Backed by workspace_sandbox_rules (rule_type='tool'). First-match-wins, glob patterns supported. |
| Workspace admin | A workspace member with role admin or owner; can manage workspace settings, integrations, shared AI providers, and member roles. Cannot cross workspace boundaries. Contrast with Platform admin. |
| Workspace scope | An AI account (Copilot account or custom provider) whose scope='workspace' makes it visible to all workspace members. Only workspace admins can create or modify workspace-scoped rows. |
| 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. |