A personal command center: a markdown vault (your knowledge + your projects) plus a SvelteKit face that gives it a read surface, a Human-Gate inbox, and a governed kanban board for every plan. You drive it from the terminal and the face; the AI drafts and does the work; you hold the judgment.
The repo root is the vault — the installer places it at ~/vault, and the
face lives in frontend/.
git clone https://github.com/jneaimi/command-center-starter-final.git
bash command-center-starter-final/install.shThe installer places the vault at ~/vault (archiving any previous one to
~/archive — nothing is deleted), stages the ~/.claude side (rules, settings,
the guard hook), puts the vault command on your PATH, and
verifies everything. Then, in two places:
# drive it from the terminal
cd ~/vault && claude
# open its face (the app)
cd ~/vault/frontend && npm install && npm run devWindows: run the same steps inside WSL (Ubuntu).
install.sh copies files out of this repo into ~/vault and into
~/.claude. A plain git pull refreshes the vault, the vault command, and the
my-vault skill (a project skill — it lives in the vault at .claude/skills/),
but not the ~/.claude side (the guard + settings). To pull everything up to date
without reinstalling — and without touching your notes, projects, or inbox:
cd ~/vault && git pull && bash update.shupdate.sh re-stages the ~/.claude files and re-checks the tools; it archives
nothing and leaves your vault content exactly as it is. Restart your Claude Code
session afterward so the refreshed guard and skill load.
CLAUDE.md the vault rules the doctor enforces
bin/vault the doorway — one command, both of you use it:
draft capture · adr · plan · scope · task
move claim (→active) · submit (→review)
gate accept · reject · commit (human only)
read projects · recent · search · tree
doctor.sh the read-only check-up for the whole vault
knowledge/ interlinked notes + index (the method, the tools)
projects/hello-world/ a guided tour — each ADR/plan/scope/task explains
the step; build the tiniest thing and drive the
whole loop once
projects/profile-site/ a realistic build, ready to test on the board:
decisions + a draft plan + scopes + backlog tasks
inbox/ quick captures waiting to be filed
frontend/ the SvelteKit face (see frontend/README.md)
setup/dot-claude/ the ~/.claude side the installer stages:
CLAUDE.md global rules
settings.json the guard on Bash|Write|Edit
hooks/ vault-write-guard.sh — its 4 laws
skills/my-vault the skill, wired to the doorway
The lifecycle of a task: backlog → planning → active → review → completed.
Each step has an owner, and the rules are enforced three ways — the engine
refuses illegal moves, the face reflects the gates, and the guard + vault
command stop the AI from going around them.
| Move | Who | Where |
|---|---|---|
| Approve a decision (ADR → accepted) | human | inbox / the ADR's page |
| Commit a plan (→ accepted) — only once its decision is accepted | human | the board |
| Commit a scope → its tasks move to planning | human | the board |
| Claim a task (planning → active) | AI | vault claim <project> <task> |
| Submit a task (active → review) | AI | vault submit <project> <task> |
| Approve (review → completed) / send back (→ planning) | human | the board |
The AI can never complete work or approve anything — vault done,
vault accept, vault reject, and vault commit are blocked at the door. It
drafts and does; you sign.
To keep the face running in the background and surviving a reboot, run the built server under PM2 — see the bonus lesson. In short:
cd ~/vault/frontend && npm run build
VAULT_DIR=$HOME/vault PORT=5180 pm2 start build/index.js --name command-center
pm2 save && pm2 startup # run the line it printsNon-sensitive content only. Reads run free; writes wait for your review. The AI drafts, does the work, and stops at every gate. You hold the judgment.