Quickstart
Goal: from zero to a deployed app in under 10 minutes. If you have never used Dooor OS before, follow these steps in order. Each step links to the deeper reference further down the page.
1. Create your account
Go to os-develop.dooor.ai and sign in with one of:
- Google (recommended for individuals)
- Microsoft / Azure AD (recommended for SSO-managed teams)
- Magic Link (email-based, no SSO)
On first login Dooor creates an Organization and a default Workspace called My Workspace. You can rename or add more later.
2. Find your workspace ID
Most API calls and the MCP need to know which workspace to act on. The workspace ID is in the URL when you are inside the workspace - look for ?ws=...:
https://os-develop.dooor.ai/apps?org=<orgId>&ws=<workspaceId>You can also get it from Settings > General > Workspace ID.
3. Generate an API key
- Open Settings > API Keys.
- Click Create key.
- Pick a name (e.g.
local-dev). - Pick scopes. For first-time exploration the Deploy automation bundle is enough - it grants read+write on apps, deploys, env vars, builds, monitoring, and Harbor.
- Copy the
dor_sk_...value now. It will not be shown again - if you lose it, revoke and create a new one.
4. Make your first API call
Verify the key works by listing apps in your workspace:
curl -H "Authorization: Bearer dor_sk_your_key_here" \
"https://os-develop.dooor.ai/api/v1/workspaces/<workspaceId>/apps"On a fresh workspace you will get an empty array - that is the expected response.
5. Deploy your first app (UI)
The fastest path on day one is the console:
- Go to Settings > Integrations and connect GitHub. Authorize the Dooor OS GitHub App on the repo (or org) you want to deploy.
- Open Apps > New App. Pick the repo and branch.
- Dooor auto-detects the buildpack (Node, Python, Go, Docker). Confirm or override.
- Add any env vars your app needs in the same dialog.
- Click Deploy. Watch the build logs stream in the canvas.
Once the deploy finishes, the app gets a public URL on *.apps.dooor.ai. You can attach a custom domain later from the app's Domains tab.
6. Use Harbor in your app code
There is no extra step to enable Harbor. The first deploy of your app already provisioned a CortexDB database and injected two env vars into your container:
CORTEXDB_CONNECTION- connection stringcortexdb://<key>@harbor.dooor.ai/<db>HARBOR_PROJECT- your App ID, used to tag every trace.
Easiest path: wrap any LangChain chat model with createAutoLlm — it reads both env vars on its own.
npm install @dooor-ai/toolkit @langchain/google-genaiThen in your app:
import { ChatGoogleGenerativeAI } from "@langchain/google-genai"
import { createAutoLlm } from "@dooor-ai/toolkit/auto"
const llm = await createAutoLlm(
new ChatGoogleGenerativeAI({
model: "gemini-2.0-flash",
apiKey: process.env.GEMINI_API_KEY,
}),
)
const res = await llm.invoke("Hello")
// Guards, evals and traces happen automatically.Open the Harbor tab on the app page (or the workspace dashboard) to see traces show up in real time.
Not using LangChain? Use logTrace from @dooor-ai/toolkit to instrument OpenAI/Anthropic/Gemini SDK calls. Python apps have no official SDK yet. Full details in Harbor docs.
7. Wire up Claude Code or Codex via MCP
Build the MCP server once from the monorepo, then point your AI client at it. Full setup for Claude Code and Codex is in the MCP Server section below.
git clone https://github.com/Dooor-AI/dooor-os.git
cd dooor-os/dooor-os-mcp
npm install && npm run build
# Then in Claude Code:
claude mcp add dooor-os \
-e DOOOR_API_KEY=dor_sk_your_key_here \
-- node $(pwd)/dist/index.jsRestart Claude Code and run /mcp to confirm dooor-os shows up. Then try things like:
- “List my apps and tell me which deploy failed last.”
- “Deploy
my-apifrom themainbranch.” - “Create a Postgres 16 database called
analytics, attach it tomy-apiasDATABASE_URL.”
DOOOR_WORKSPACE_ID. For self-hosted instances, also set DOOOR_BASE_URL.