---
cuppy_hub: cuppy
cuppy_path: guides/runbooks/register-in-commander.md
cuppy_section: docs
cuppy_doc: EYCF-9MBY
cuppy_doc_uuid: 335f310d-1a8d-4fad-b356-d734cb953496
cuppy_permalink: https://cuppy.io/cuppy/d/EYCF-9MBY
cuppy_version: 1
cuppy_updated: 2026-10-17T06:32:45.511Z
cuppy_canonical: https://cuppy.io/cuppy/docs/guides/runbooks/register-in-commander
cuppy_mcp: https://cuppy.io/mcp
cuppy_body_sha256: b7a077305f7d0b117a5788fd741ef170b2e0d8d15ae9a8be6c607ef2e86908ca
# cuppy_body_sha256 is over the document body ALONE, excluding both generated blocks.
---

# Runbook: register cuppy / Semarchy in the Commander console

**Status 2026-10-11: REGISTERED on the dev instance; prod row still operator-hand.** Commander DEV (the
instance that holds the test harness, the dev-gov standards and the usage telemetry) already carries the row
`Semarchy — semarchy.cuppy.io`, slug `semarchy`, short id `pv7ckc`, id `9f4392d4-3211-4372-977c-d12f2acfa507`,
with `working_dir` and `git_repo_path` both at ``. That row is the record
for the rewrite week; session labels use `cuppy-rewrite-<sprint>`. A second dev row `cuppy.io (hub)` points at
`/home/datashield/projects/cuppy/`, a different checkout, and is left as is. The production console
(`commander.myorg.ai`) has no row; creating it is the production database write below, operator-hand.

## Why the console panel is empty
Two separate causes, one now fixed:
1. **Fixed.** `QUICKSTART.md` existed only at `.claude/QUICKSTART.md`. The boot-sequence endpoint reads it
   from the project root (`claude-commander/server.js:7930`, `path.join(gitPath, 'QUICKSTART.md')`). It is
   now at the root, matching every sibling project.
2. **Outstanding.** There is no project row. Commander holds thirteen projects and none is this one, so the
   panel has nothing to resolve. The 2026-07-20 commit "onboard Semarchy App Factory into Commander" added
   `tracking/PROJECT.md` to this repository but never created the row.

## Register it
Use the API rather than raw SQL: `short_id` is `NOT NULL` with no default and the endpoint generates it,
and the endpoint also applies the plan gates. Authenticated as the operator, against the console:

```bash
curl -sS -X POST https://commander.myorg.ai/api/projects \
  -H 'content-type: application/json' \
  -H "authorization: Bearer $COMMANDER_TOKEN" \
  -d '{
    "name": "cuppy / Semarchy",
    "slug": "cuppy-semarchy",
    "working_dir": ".",
    "git_repo_path": ".",
    "live_url": "https://cuppy.io",
    "pm2_processes": ["semarchy"],
    "database_name": null,
    "color": "#b1162f",
    "preflight_prompt": "Read QUICKSTART.md then execute the boot contract. No greetings. Minimize tokens before the selection; maximize quality after it.",
    "notes": "One process serves cuppy.io and semarchy.cuppy.io on 8787. semarchy.cuppy.io is walled behind the beta signup; cuppy.io is public; anonymous MCP stays open on both. Storage is SQLite plus file stores; the dedicated Postgres cluster is Phase 1. Production still deploys from .-app-factory/src until the cutover runbook is executed."
  }'
```

`git_repo_path` is the field the boot-sequence endpoint prefers (`git_repo_path || working_dir`), so point
both at the checkout. **Point them at the checkout, not at the running tree**: the running tree is not a git
repository, so the panel's branch, status and log would all come back empty.

## Verify
```bash
curl -sS -H "authorization: Bearer $COMMANDER_TOKEN" \
  https://commander.myorg.ai/api/boot-sequence/<new-project-id> | head -c 400
```
Expect `quickstart` and `currentWork` non-null and `gitStatus.branch` = `sprint/phase-0-preconditions`.

## Note on ordering
Registering before the cutover is correct and intentional. The console should describe the repository that
is the source of truth, not the directory that happens to be running. After the cutover the two agree.


---
<!-- cuppy -->
You are reading one file. The same content is free over MCP at https://cuppy.io/mcp with no signup: ranked search across all 18 documents in this hub, the merged view when you work in a layer, known workarounds matched to the error you hit, and depth control so you spend tokens on what you need. Start with the `_hello` tool. How to connect: https://cuppy.io/cuppy/
<!-- /cuppy -->
