GRIFF Desktop Control Plane (DCP)
The Desktop Control Plane is the V1 product surface — the polished operator UI that runs and configures the whole platform (setup, install, config, management, user/admin) so nothing is hand-edited as .md/.json. It is a full R/W control plane, not a read-only dashboard.
Authority note. This page is the wiki's entry point for the DCP. The DCP build's definition-of-done docs (SBOM · RUNBOOK · DEV · USER) should be reconciled into a stable owner before public release; historical worktree paths are not active authority. This wiki page plus the Griff Docs MCP corpus are the searchable documentation surface.
Stack
- Electron 32 + React 18 + Vite (electron-vite), strict TypeScript, no Tailwind (a single design-system CSS,
griffai-app.css). - Single-operator (charter D23 — NOT multi-tenant SaaS).
- Zero native dependencies — the auth module uses
node:crypto+ ElectronsafeStorageonly (no better-auth/better-sqlite3/argon2/otplib), so the build stays clean.
The 7-zone command rail
| Zone | Purpose | Surfaces (examples) |
|---|---|---|
| Home | Triage | today · cockpit · workbench · work queue |
| Operate | Run | status · brain-connector · L1-L5 · observability · flags · alerts · sessions · usage · agent ledger · recovery |
| Coordinate | Route | agent-direct · orchestrator · board · bootstrap |
| Govern | Control | governance (PEP) · MASTER ATC · approvals · replay · evidence · ID lineage · ops log · demo-lab · relational · bidirectional |
| Configure | Tune | Providers & Models · Settings · Packaging · Modules (full R/W config: atomic write + timestamped backup + receipt) |
| Setup/Install | Start | first-run setup wizard · dependency checks |
| Admin | Manage | login/MFA/recovery · profile circle · operator identity · provider presence · roles · approvals |
- a Source Library drawer (files · source index · master map · knowledge graph · mapping module · notes · plans · architecture · diagrams · artifacts · templates).
Architecture (one-direction data flow)
main process read-models → risk-tiered IPC registry → preload contextBridge → renderer useIpc hook. The rail is data-driven from appShell/zones.ts (COMMAND_ZONES), filtered by isImplementedPageId() so only real, data-backed pages render — no placeholders. Reads are bounded by a pathPolicy allowlist (registered subroots only; never an E: scan). IPC actions are risk-tiered: read (open) · sensitive (operator confirm) · hard-gated (confirm + PIN + identity), e.g. Brain restart and MFA enroll/disable.
Embedded auth (Admin zone)
A real single-operator login module: scrypt password (salt:hash, timing-safe, ≥12 chars), RFC-6238 TOTP MFA + single-use recovery codes (~80-bit, scrypt-hashed), optional configured-gated external OAuth providers (loopback PKCE), and a user-profile circle in the rail foot. Secrets live in the main process only; the renderer receives booleans/labels (the one-time enrollment ceremony is the only secret payload that crosses). At-rest store encrypted with the OS keychain via safeStorage.
Service operations surfaced in-app
- Config R/W (Configure zone) — replaces hand-editing; atomic temp-rename write + timestamped
.bak+ provenance receipt. - Brain restart (hard-gated) — runs the health-gated restart script; never a process kill (honors the codex-rc MCP/router freeze on
:8787/:8788). See Reliable Service-Ops Tool. - Scheduled-task control (MASTER ATC) — enable/disable/run/stop GRIFF-* tasks, each with a receipt.
- griff-map — live drive index via Brain
/map/query(read-only, existing bearer).
Full build docs
- SBOM / RUNBOOK / DEV / USER →
…/packages/dcp/docs/ - Build receipts (this rebuild):
06_SESSION_EVIDENCE/receipts/dcp-phase1-7zone-ia-20260618,dcp-phase2-pages-20260618,dcp-phase5-6-auth-defects-20260618,dcp-phase7-audit-fixes-20260618— each with file SHA256s + typecheck/build exit codes + screenshot pixel-proof.
Related
- Platform overview · Reliable Service-Ops Tool · end-user: Restarting services