This runbook is the repo-side blueprint for a future guarded hosted operator pilot on Render.
It is not proof that CortexPilot already runs as a hosted operator service. Treat it as a deployment contract draft that burns down the repo-side work until the remaining steps are only Render-account, secret, DNS, and live verification actions.
Use this cut only for a narrow operator pilot:
- one Render web service for the orchestrator API
- one Render web service for the dashboard
- no hosted login/account product story
- no write-capable MCP claim
- no broad-market SaaS claim
- public narrative remains anchored on
news_digestas the release-proven first-run baseline
- public front door on GitHub Pages
- API auth via
CORTEXPILOT_API_TOKEN - repo-owned role-config preview/apply HTTP surfaces
/healthand/api/healthfor simple platform probes- repo-owned run/worktree rollback semantics
- support/security/privacy docs that explicitly say the repo is not yet a hosted service
- a live operator URL
- a production secret contract, rotation plan, and owner workflow
- a hosted privacy/data-handling contract
- a hosted support/on-call expectation
- a deploy rollback playbook
- live smoke receipts for the dashboard and API together
The paired render.yaml file is a Git-backed blueprint for the narrow pilot above.
Service intent:
-
cortexpilot-api- Python web service
- starts
python -m cortexpilot_orch.cli serve --host 0.0.0.0 --port $PORT - keeps auth on by default
- requires a persistent disk because runtime state, queue state, run bundles, and logs are file-backed today
-
cortexpilot-dashboard- Node/Next.js web service
- builds the repo-owned dashboard shell
- requires the public API base URL plus a server-side operator token for dashboard-originated proxy requests
CORTEXPILOT_API_AUTH_REQUIRED=trueCORTEXPILOT_API_TOKENCORTEXPILOT_API_ALLOWED_ORIGINSCORTEXPILOT_PROVIDER- provider credential for the chosen provider:
GEMINI_API_KEY, orOPENAI_API_KEY, orANTHROPIC_API_KEY
CORTEXPILOT_RUNTIME_ROOT=/var/data/cortexpilotCORTEXPILOT_RUNS_ROOT=/var/data/cortexpilot/runsCORTEXPILOT_WORKTREE_ROOT=/var/data/cortexpilot/worktreesCORTEXPILOT_LOGS_ROOT=/var/data/logs
NEXT_PUBLIC_CORTEXPILOT_API_BASECORTEXPILOT_API_TOKEN
- Sign in to Render and connect the Git provider.
- Open the blueprint from the repository that contains
render.yaml. - Create the persistent disk for the API service.
- Fill the secret env vars in the Render dashboard.
- Deploy once to obtain the public API URL.
- Copy that API URL into
NEXT_PUBLIC_CORTEXPILOT_API_BASE. - Set
CORTEXPILOT_API_ALLOWED_ORIGINSto the dashboard URL. - Keep
CORTEXPILOT_API_TOKENserver-only; do not mirror it through anyNEXT_PUBLIC_*variable. - Re-deploy the dashboard so browser calls use the final API origin.
- If a custom domain is desired, configure DNS and validate it in Render.
- API health:
GET /healthGET /api/health
- Dashboard health:
- dashboard root loads
- the PM or Command Tower entry surface loads
- Auth:
- requests without the token fail closed
- requests with the configured token succeed
- First-run pilot:
- run the
news_digestpath only - confirm the Workflow Case and Proof & Replay surfaces render
- run the
- Boundary honesty:
- public copy still says
not hosted operator productuntil the full hosted contract changes
- public copy still says
Do not call this hosted-ready if any of these are still missing:
- persistent disk configuration
- dashboard/API origin wiring
- auth verification
- support/security/privacy wording update
- live smoke receipts