Root workspace repo: launcher / orchestrator for the ACT / Terminus stack.
It unifies the operator experience — not the engine. It owns the Tauri shell
at apps/shell (the non-engine operator UX) and remains the launcher/orchestrator
root. It coordinates separate, independently-owned sibling repos and owns none of
their engine / MCP / KSL source. Not a monolith.
ACT-MCE, cards-and-decks-mcp, and terminus-ksl-protocol remain separate
authority lanes: ACT-MCE keeps execution authority, Cards MCP keeps Card/Deck
access, KSL keeps governance/gate/receipt doctrine. The shell observes and stages;
it holds no execution authority.
act-workspaceis the canonical launcher/root repo (cwwjacobs/act-workspace).act-workstationis only a local parent folder that holds the sibling checkouts beside this one — it is not a repo, and nothing is renamed or moved into this one.
act-workstation/ (local parent folder only)
├── act-mce/ engine · gates · command API · receipts · execution authority
├── act-tui-html-hybrid/ TUI manager + HTML readout (observation-only)
├── cards-and-decks-mcp/ local-first read-only Card/deck MCP
├── terminus-ksl-protocol/ KSL doctrine / gates / checks
└── act-workspace/ ← you are here (launcher/orchestrator root)
└── apps/shell/ OWNED Tauri shell (operator UX; no exec authority)
Sibling repos are referenced by relative path (../act-mce, …) and stay
independently owned. The only app source this repo owns lives under
apps/shell/. See docs/ARCHITECTURE.md, docs/BOUNDARY.md,
docs/SCHEMA_VOCABULARY.md, docs/REPO_AUDIT.md.
cd ~/Desktop/act-workstation/act-workspace
./ACT-Workspace.status # observe: repo paths, branches, pids, ports (changes nothing)
./ACT-Workspace # start enabled daemons (the two ACT-MCE listeners)
./ACT-Workspace.status # observe again
./ACT-Workspace.stop # stop only the pids this launcher createdWhat ./ACT-Workspace starts (v0): the ACT-MCE read surface (127.0.0.1:8765)
and command API (127.0.0.1:8766). Logs → run/logs/, pids → run/pids/.
# TUI (interactive; needs a terminal + textual)
pip install 'textual>=0.40.0'
cd ../act-tui-html-hybrid && python3 -m act_tui_html_hybrid.tui
# HTML snapshot (one-shot)
cd ../act-tui-html-hybrid && python3 -m act_tui_html_hybrid.html_export \
--out ~/Desktop/act-workstation/act-workspace/run/logs/latest-dashboard.html
# Cards & decks MCP (stdio; started by an MCP client, not this launcher)
cd ../cards-and-decks-mcp && npm install && npm run build # once
CARDS_AND_DECKS_DATA=../act-workspace/data/card-forge npm startpython3 -m pytest -q # workspace config + no-vendor-source tests
./ACT-Workspace.check # run each sibling repo's OWN local tests
./ACT-Workspace.check act-mce # ... or just one./ACT-Workspace.check exists partly to exercise repos whose donor side has
no CI (act-tui-html-hybrid) without patching it.
data/card-forge/{cards,stacks,decks,receipts} ships as empty .gitkeep
placeholders. To copy real card data in later (copy only, never overwrite),
see docs/COPY_MAP.md.
Everything this launcher prints is an observation (process started, port
listening, branch name, test exit code). None of it means the system is ready,
correct, or safe. Operator acceptance is final. See docs/BOUNDARY.md.
| Repo | Branch used | Tests at audit |
|---|---|---|
| act-mce | main |
163 passed |
| act-tui-html-hybrid | main (GitHub default initial-read-surface-viewer is stale) |
23 passed |
| cards-and-decks-mcp | main |
smoke test passed (after build) |
| terminus-ksl-protocol | main |
17 passed, 1 skipped |
Full evidence: docs/REPO_AUDIT.md.