Admin V2 Architecture And First Slice
Objective
Admin V2 is the local-first Pro console for OMEGA. It reads from local adapter contracts first and treats customer-owned providers as optional capabilities. Supabase is optional mirror infrastructure, not a required source of truth.
The first slice implemented:
- Overview
- Connections
- Health
The second slice adds:
- Settings
- License
The third slice adds:
- Projects
The fourth slice adds:
- Memory List
- Memory Detail
The fifth slice adds:
- Operations
Internal Console remains separate at /admin/internal.
Product Boundary
Admin V2 answers Pro-user operational questions:
- What is the current state of my OMEGA?
- What providers are configured?
- Is OMEGA healthy?
It must not show creator metrics, GitHub growth metrics, PyPI metrics, grants, downloads, raw cron internals, Edge Quality, audit logs, or internal research surfaces.
Route Structure
Implemented:
-
/admin/v2- Overview -
/admin/v2/connections- Connections -
/admin/v2/health- Health -
/admin/v2/settings- local installation settings -
/admin/v2/license- local license status -
/admin/v2/projects- canonical project registry -
/admin/v2/projects/[projectId]- project identity detail -
/admin/v2/memory- local memory list -
/admin/v2/memory/[memoryId]- local memory detail -
/admin/v2/operations- outcome-focused runtime operations Linked but not rebuilt in this slice: -
/admin/memories/graph- existing Memory Graph surface -
/admin/settings- legacy hosted account/settings surface
Deferred:
/admin/v2/agents/admin/v2/memory/search/admin/v2/memory/graph
Component Structure
admin/app/admin/v2/page.tsxadmin/app/admin/v2/connections/page.tsxadmin/app/admin/v2/health/page.tsxadmin/app/admin/v2/settings/page.tsxadmin/app/admin/v2/license/page.tsxadmin/app/admin/v2/projects/page.tsxadmin/app/admin/v2/projects/[projectId]/page.tsxadmin/app/admin/v2/memory/page.tsxadmin/app/admin/v2/memory/[memoryId]/page.tsxadmin/app/admin/v2/operations/page.tsxadmin/app/admin/v2/V2Shell.tsxadmin/app/admin/v2/v2-data.tsadmin/app/admin/v2/v2.css
The V2 pages are server-rendered. They do not introduce client-side provider fetching or new API routes.
Adapter Usage Map
| Surface | Adapter | Purpose |
|---|---|---|
| Overview | HealthAdapter | health summary, memory count, graph count, coordination count |
| Overview | ProjectStoreAdapter | active project count |
| Overview | LicenseAdapter | license plan and status |
| Overview | ConnectionAdapter | provider and sync summary |
| Connections | ConnectionAdapter | provider status and capabilities |
| Health | HealthAdapter | public health checks |
| Settings | ConnectionAdapter | provider configuration visibility |
| Settings | HealthAdapter | local storage/runtime configuration health |
| Settings | LicenseAdapter | local license summary |
| License | LicenseAdapter | status, plan, verification, expiry, device binding |
| Projects | ProjectStoreAdapter | canonical project registry list and detail |
| Memory | MemoryStoreAdapter | read-only local memory list and detail through list() and get() only |
| Operations | HealthAdapter | memory, graph, coordination, runtime, license, and connection outcomes |
| Operations | ConnectionAdapter | provider configuration and customer-owned mirror status |
| Operations | LicenseAdapter | local license outcome summary |
Local-First Rules
omega.dbremains the canonical local store.- Project registry is read through
LocalProjectStoreAdapter. - Health is read through
LocalHealthAdapter. - Connections are read through
LocalConnectionAdapter. - License is read through
LocalLicenseAdapter. - No page requires
NEXT_PUBLIC_SUPABASE_URLorSUPABASE_SERVICE_ROLE_KEYfor its data. - No secrets or token values are rendered.
- Supabase is labeled as an optional customer-owned provider, not a required platform service.
- Projects V2 reads only canonical registry records from
LocalProjectStoreAdapter; it does not infer projects from legacy memory labels, Supabase mirrors, workspace rows, or filesystem scans. - Memory V2 uses
LocalMemoryStoreAdapter.list()andLocalMemoryStoreAdapter.get()only. - Memory V2 does not call search, graph expansion, retrieval ranking, context packet generation, Dreams, or Edge Quality.
memories.projectremains a legacy project label and is never used for Memory V2 filtering or routing.- Operations V2 shows outcomes from local adapters only. It does not expose cron definitions, scheduler internals, raw audit logs, creator metrics, Edge Quality, Dreams, or deployment internals.
First-Time Success Contract
The first independent Pro user test depends on a single first-run path:
- Install OMEGA.
- Activate Pro.
- Restart Claude Code.
- Run
omega doctor. - Run
omega dashboard. - Create a memory from real Claude Code work.
- Open Admin V2 Memory and verify the record.
- Confirm local ownership in Overview or Settings.
The first-run activation goal is not search, graph exploration, Agents, or context packets. The activation goal is:
- Pro license is active.
- Claude Code is connected.
- Local runtime is healthy.
- At least one memory exists.
- The user can inspect that memory.
- The user can see where local OMEGA data lives.
Admin V2 supports this with:
- Overview first-run checklist.
- Overview and Settings local ownership cards.
- Memory empty state with first-memory instructions.
- Memory first-value callout once records exist.
- Projects empty-state copy that explains projects as organizational lenses.
- Operations labels that describe user-facing outcomes instead of internal implementation names.
Migration Plan From V1
V1 remains operational while V2 grows.
- Dashboard stays V1 until Overview replaces its Pro-user decisions.
- Memory Graph stays as the current Memory surface until Memory Explorer is designed.
- Projects stays V1 until local project workflows are moved behind adapters.
- Coordination stays V1 until Agents data contracts are ready for UI.
- Insights stays V1 until health and memory insight metrics are normalized.
/admin/settingsremains V1 for hosted account/workspace/subscription management./admin/v2/settingsreplaces the Pro-user local installation visibility portion./admin/v2/licensereplaces read-only local license visibility, but activation remains deferred to existing flows./admin/v2/projectsreplaces the canonical project identity portion of V1 Projects, but activity, task, checklist, and dashboard summaries stay deferred./admin/v2/memoryreplaces the record inspection portion of V1 Memory Graph, but graph navigation, search, retrieval ranking, and context packet views stay deferred./admin/v2/operationsreplaces user-facing operational health outcomes from V1 Jobs/Diagnostics, but job internals, schedules, raw audit logs, and creator diagnostics remain internal-only.
V1 Settings Migration Matrix
| V1 Surface | V2 Action | Rationale |
|---|---|---|
| Profile identity | Defer | Current profile is hosted-auth/account metadata, not local OMEGA ownership. |
| Subscription plan | Defer | SaaS billing/Stripe concerns do not belong in local-first Admin V2. |
| License status | Migrate | Local license state is owned by LocalLicenseAdapter. |
| License activation | Defer | Existing activation flow remains owned by current account/API flow; V2 is read-only. |
| Workspace list | Rewrite later | V2 should use canonical local workspace/project ownership, not hosted workspace assumptions. |
| Cloud Sync Supabase form | Rewrite later | V2 should use provider configuration flows that never reveal or store secrets in the browser. |
| Danger zone/account delete | Delete from V2 | Hosted account deletion is not a local OMEGA installation decision. |
V1 Projects Migration Matrix
| V1 Surface | V2 Action | Rationale |
|---|---|---|
| Project identity | Migrate | Canonical project identity is owned by the local project registry. |
| Project aliases/root paths/entity links | Migrate | These are explicit registry records exposed by LocalProjectStoreAdapter. |
| Project activity summaries | Defer | Activity should wait for normalized local memory/coordination contracts. |
| Project checklist/task summaries | Rewrite later | Current V1 summaries mix inferred activity and legacy project labels. |
| Project search | Defer | Search should not infer projects from memories.project or filesystem scans. |
| Project dashboard cards | Rewrite later | V2 should rebuild these from canonical registry plus future memory/activity adapters. |
| Supabase project rows | Delete from V2 | Supabase is mirror-only and must not be a project source of truth. |
V1 Memory Migration Matrix
| V1 Surface | V2 Action | Rationale |
|---|---|---|
| Memory list | Migrate | LocalMemoryStoreAdapter.list() is read-only and canonical enough for record inspection. |
| Memory detail | Migrate | LocalMemoryStoreAdapter.get() exposes identity, content, lifecycle, provenance, and sync metadata. |
| Memory Graph | Defer | Graph expansion is intentionally unsupported by Phase 1 adapter. |
| Search | Defer | Search is intentionally unsupported by Phase 1 adapter. |
| Retrieval ranking | Defer | Ranking is not a V2 display contract yet. |
| Context packet views | Defer | Release D remains held and out of scope. |
| Dreams integration | Delete from V2 for now | Dreams remain outside Pro-user Memory Explorer scope. |
| Edge Quality | Keep internal | Edge Quality is diagnostic and remains outside Memory Explorer. |
V1 Operations Migration Matrix
| V1 Surface | V2 Action | Rationale |
|---|---|---|
| Jobs status | Rewrite | Pro users need operating outcomes, not job implementation internals. |
| Schedule internals | Keep internal | Schedulers are implementation detail and remain Internal Console concerns. |
| Diagnostics health cards | Migrate selectively | Health, memory, graph, coordination, provider, license, and runtime outcomes are useful. |
| Raw audit summaries | Keep internal | Audit logs are operator/debugging tools, not Pro-user operations state. |
| Writer runtime status | Migrate | Writer health is a user-facing operational outcome. |
| Embedding runtime status | Migrate | Embedding availability affects OMEGA operation. |
| MCP runtime status | Defer | Current local adapter does not report MCP process health yet. |
| Edge Quality | Keep internal | Edge grading is diagnostic/research, not Operations V2. |
| Dreams jobs | Keep internal | Dreams remain outside Admin V2 operations. |
First Implementation Plan
- Add
/admin/v2route family. - Use
createAdapterResolver()as the only data access boundary. - Build Overview from health, projects, license, and connections.
- Build Connections from local provider connection records.
- Build Health from public health checks only.
- Improve mobile parity in V1 so Memory Graph and Settings are discoverable.
- Run
npm run typecheckandnpm run build.
First-Time Success Sprint
Implemented as a narrow onboarding/readiness layer:
- Add
omega dashboardas the canonical dashboard launch command. - Update
omega activatecompletion copy with explicit next steps. - Add the Overview first-run checklist.
- Add Memory empty-state and first-memory callout copy.
- Add local ownership cards to Overview and Settings.
- Soften Projects empty-state behavior for new users.
- Update Operations wording from internal process labels to user-facing outcomes.
This sprint intentionally does not add Agents V2, search, graph navigation, context packet views, retrieval changes, project registry writes, or sovereignty changes.
Risks
- Existing
/admin/*middleware still depends on the current auth model. This slice removes Supabase from V2 data reads, not from the legacy admin authentication gate. LocalMemoryStoreAdapteris Phase 1 only, so Overview uses HealthAdapter memory count instead of memory search or graph expansion.- Health checks are summaries. Raw job internals, audit logs, and schedule internals remain internal-only.
- Provider ownership classification is enforced by sovereignty/sync policy, not by the Connections page.
Recommended PR Sequence
- Admin V2 first slice: routes, shell, local adapter reads, mobile parity.
- V2 route tests and smoke tests once the project has a stable app-router test harness.
- Memory Explorer foundation audit before building
/admin/v2/memory. - Agents data contract audit before building
/admin/v2/agents. - Settings write flows only after local credential/provider mutation contracts are explicitly designed.