Command Center is the full-screen Equanaut operating mode inside equa-web. It is no longer a supported split-origin Next.js app on port 3001. The frozen equanaut-command-center-main / command-center-so codebase remains source material for migrated behavior, but current operator workflows must open from the authenticated equa-web shell.
equa-web webpack dev server and authenticated app shell
Fleet observer
http://localhost:8080/fleet
equa-web fleet tracker route with the Equanaut rail
Admin diagnostics
http://localhost:8080/admin
equa-web site-admin Command Center dashboard
Equabot admin
http://localhost:8080/ai
equa-web Equabot admin shell
Equabotz gateway
http://localhost:8080/equabotz
equa-web gateway-control embed
Deprecated source app
http://localhost:3001/command-center
unsupported; frozen source material only
Docs
https://docs.equa.cc/web/command-center
This page
The supported local Command Center path is same-origin through equa-web. Do not start or navigate to localhost:3001 for current Command Center work unless you are explicitly comparing frozen source-material behavior.
This page is the current Command Center routing authority. Older docs that still describe command-center-so, localhost:3001, or /command-center as the current local app surface are legacy until they are reconciled with Spec 060.
Source evidence:
equa-web/specs/060-command-center-fleet-management-shell/spec.md defines equa-web as the sole supported Command Center surface and deprecates localhost:3001/command-center.
equa-web/src/logic/paths.ts defines the mounted /prime, /equabotz, /admin, and /ai route constants.
equa-web/src/app/routes/routes.ts mounts /prime, /admin, /ai/*, and /equabotz inside the authenticated equa-web app.
equa-web/src/modules/equanaut/index.tsx opens full-page Equanaut via the same-origin /prime?openEquanaut=true handoff.
equa-web/src/modules/fleet-tracker/services/fleet-tracker-config.ts defines the Fleet Tracker command-center panel used by /fleet.
Browser (PWA) | vequa-web authenticated app shell (local port 8080) | +-- /prime?openEquanaut=true -------> Equanaut chat + full Command Center rail mode +-- /fleet -------------------------> Fleet tracker observer with Command Center handoff +-- /admin -------------------------> Site-admin Command Center dashboard +-- /ai/* --------------------------> Equabot admin shell +-- /equabotz ----------------------> Gateway-control embed +-- /api/equanaut/* ----------------> Threads, fleet, sessions, and priority data +-- /api/fleet/* -------------------> Migrated fleet command contracts \-- Equabot Gateway (port 18789) ---> Gateway chat and runtime control
Command Center reads orchestration state from local JSON files written by the orchestration system and routes chat messages based on routing mode and model selection.
Use the equa-web development environment. Gateway-specific values are still read by the gateway and API layer:
EQUABOT_GATEWAY_URL=http://localhost:18789EQUABOT_GATEWAY_TOKEN=your-token-here# Optional -- only needed for OpenAI direct routingOPENAI_API_KEY=sk-...# Optional -- override local Ollama endpoint (default: http://localhost:11434)OLLAMA_URL=http://localhost:11434
yarn start already sets the legacy OpenSSL provider in equa-web’s package.json. Open the app at http://localhost:8080/prime?openEquanaut=true or use the Equanaut rail from any supported equa-web route.
Gateway health for admin and Prime operator panels
/api/v1/admin/gateway/token
GET
Site admin
Gateway token bootstrap metadata
Namespace note: /api/equanaut/* and /api/fleet/* are top-level same-origin contracts introduced by Specs 041 and 031. The /api/v1/* paths are the existing equa-web API client namespace. The retired /command-center/api/* paths are not the supported local API surface. Keep any remaining references categorized as frozen-source or compatibility-only.
The priority stack adapter ingests GitHub Project items (24-field inventory) and produces a unified TaskStackItem payload consumed by Command Center status and task surfaces.The response includes a schemaVersion field for observability.
GitHub Project field inventory (24 fields)
Last verified against source: 2026-02-28
The gh project field-list --format json CLI does not distinguish text, number, and date fields — all report as ProjectV2Field. Only ProjectV2SingleSelectField is identified by type. The update-project-field.py helper infers field type from the value format (numeric values use --number, YYYY-MM-DD patterns use --date, otherwise --text).
Visible fields (17 table columns)
#
Field Name
Field Type
Options / Details
1
Title
Title (built-in)
Issue/item title with link to source repo
2
Assignees
Assignees (built-in)
GitHub users
3
Linked pull requests
Linked PRs (built-in)
Auto-linked PRs (draft/open/merged)
4
Sub-issues progress
Sub-issues progress (built-in)
Segmented bar; numerical ratio (e.g. 2/5)
5
Priority
Single select (custom)
P0 - Critical, P1 - High, P2 - Medium, P3 - Low
6
Stack Rank
Number (custom)
Primary sort key; ascending
7
Urgency
Single select (custom)
Urgent, High, Normal, Low
8
Blocked By
Text (custom)
Free-text dependency/blocker references
9
Equabot Session
Text (custom)
Equabot session links or IDs
10
Comet Browser Thread
Text (custom)
Comet browser thread references
11
Comet Browser Space
Text (custom)
Comet browser space references
12
Gmail Email Thread
Text (custom)
Gmail thread links
13
Shortwave App
Text (custom)
Shortwave references
14
NotebookLM
Text (custom)
NotebookLM links
15
Google Drive Folder
Text (custom)
Google Drive folder URL
16
QBO Link
Text (custom)
QuickBooks Online links
17
Google Doc
Text (custom)
Google Doc links
Hidden fields (7 — configured but not displayed as columns)
#
Field Name
Field Type
Details
18
Status
Single select (built-in)
Todo, In Progress, Done; used by filter and board grouping
Project owner mapping: Two GitHub owners reference “Project #4” with different internal IDs. Orchestration scripts must specify --project-owner explicitly to target the correct project.
Issues from 9 connected repositories are automatically added to Project #4 through two mechanisms. The GitHub Team plan limits built-in auto-add workflows to 5 per project; additional repos use a GitHub Actions workflow.Method A — Built-in Project Workflows (5 repos)Configured directly on the project under Settings > Workflows. Each triggers when a new or updated item matches the is:issue filter.
Repository
Workflow Name
stacks-ranking-priorities
Auto-add to project
EQUAStart/equanaut-command-center-main
Auto-add: equanaut-command-center-main
stack-ranked-priorities
Auto-add: stack-ranked-priorities
Food-Tracking_App
Auto-add: Food-Tracking_App
sscs-qbo-sync
Auto-add: sscs-qbo-sync
Method B — GitHub Actions (4 repos)Each repo contains .github/workflows/auto-add-to-project.yml using actions/add-to-project@v1.0.2, authenticated via the ADD_TO_PROJECT_PAT classic PAT (repo + project scopes).
Repository
Trigger
Auth
task-threads
issues: [opened]
Org secret (Balancing-Rock)
demo-repository
issues: [opened]
Org secret (Balancing-Rock)
Speed-Reader-App
issues: [opened]
Org secret (Balancing-Rock)
EQUAStart/equabot
issues: [opened, transferred, reopened]
Repo secret (cross-org)
EQUAStart/equabot uses a repo-level secret because GitHub org secrets do not cross org boundaries. The PAT itself is scoped to the user account and covers both orgs.Canonical architecture reference: project-auto-add-flowchart.md
GitHub Project fields (Priority, Status, Stack Rank, Urgency) are authoritative. The UI may compute display-only decorations but does not override the normalized values from the API payload.
Agent Session is anchored by the Equabot Session field.
Subagent Context is anchored by the Comet Browser fields.
Conversation Surfaces are anchored by email and research fields (Gmail, Shortwave, NotebookLM).
Artifacts are anchored by Drive, Docs, and QBO fields.
This mapping allows different UI layouts (table, board, conversation panel, session monitor) to render the same underlying thread state from one project schema.
Unified helper for updating any GitHub Project V2 custom field by human-readable inputs. Resolves all identifiers at runtime via the gh CLI with zero raw GraphQL.
--project-number — GitHub project number (default: 4)
--dry-run — Resolve all IDs and print the gh project item-edit command without executing
Field type auto-detection: The gh CLI does not expose granular field types for text, number, and date fields (all report as ProjectV2Field). The script infers the correct gh project item-edit flag from the value format:
Value Pattern
Detected Type
CLI Flag
Has options in field metadata
Single select
--single-select-option-id
Matches YYYY-MM-DD
Date
--date
Valid integer or float
Number
--number
Anything else
Text
--text
Examples:
# Set a text fieldpython3 update-project-field.py EQUAStart/equabot#14 "Google Drive Folder" "https://drive.google.com/..."# Set a number fieldpython3 update-project-field.py EQUAStart/equabot#14 "Stack Rank" 3# Set a single-select fieldpython3 update-project-field.py EQUAStart/equabot#14 "Priority" "P1 - High"# Dry run with a different project ownerpython3 update-project-field.py --dry-run --project-owner EQUAStart EQUAStart/equanaut-command-center-main#34 "Priority" "P2 - Medium"
Error handling: Exits non-zero with actionable messages for invalid issue references, issues not in the project, unknown field names (lists available fields), unknown option names (lists valid options), and gh CLI failures.
Confirm the page is running inside equa-web and that the URL parameter openEquanaut=true is present when using the full-page action. The rail maximize control should switch the existing rail into Command Center mode without leaving the current page.