Docs
Dashboard
Every console page reads your org database or the gateway. Search, inbox, and badges are live.
The dashboard is the Next.js app on port 3010 (bun --filter @opendoor/dashboard dev). Sign-in is a real session cookie. There is no demo tenant with fake charts.
Chrome
| Control | What it does |
|---|---|
| ⌘K | Command palette: real pages, /api/models/available, /api/keys |
| Inbox | Unresolved policy violations, pending model approvals, recent audit rows |
| Help / Docs | /docs on this site |
| Sidebar badges | Counts from /api/nav/counts (deployments, open violations, pending approvals) |
| Account | Your user name/email from users, not “Your Account” |
Pages and their source
| Page | Source of truth |
|---|---|
| Overview | requests (30 days), key count, first enabled catalog model in the snippet |
| Models | /api/models/available — enabled catalog + running deployments + local Ollama tags |
| Playground | Same catalog; sends to the gateway with a real key |
| Media | Image / video test page at /dashboard/playground/media |
| Studio | Image UI at /dashboard/studio — /api/studio/* → gateway /v1/images/generations |
| API keys | /api/keys create/list/revoke; model checklist is the live catalog |
| Usage | /api/usage aggregates |
| Pricing (in-app) | pricing_rules + GPU SKUs |
Public /pricing | Same tables, no login |
| Deployments | /api/deployments — local GPU or GCP |
| Billing | Stripe customer, credits ledger, checkout |
| AI assistants | /api/ai-assistants + catalog modelId (required) |
| Team | Members + invitations |
| Settings | Org SSO / domain / notification flags |
| Support | /dashboard/support → Linear issue + PostHog support_ticket_created |
| Provider keys | /dashboard/settings/byok → /api/byok (organization_provider_keys, never the raw secret) |
| Governance | Policies, violations, approvals, compliance, sector packs |
| Audit logs | audit_logs |
| Workflows | Graph editor. Run executes tools (web search, code execution jail, images, files, embeddings). human_review pauses a persisted run for Approve / Reject. |
Try on a model opens /dashboard/playground?model=<id>. Creating a key can store it for the playground and link there.
Empty is empty
If you have not seeded or ingested models, the catalog APIs return { models: [] }. The playground will not send. Assistants will not save without a modelId. That is intentional — we do not invent GPT-4o rows.
Seed and ingest:
bashbun --env-file=.env run scripts/seed.ts bun run ingest:open-models
Then refresh Models.