← back to AbramsEgo
SPEC.md
36 lines
# AbramsEgo — Build Spec (the target the autonomous loop builds toward)
**What it is:** an Abrams-branded **AI-agent command center** — a single local page that
gives immediate situational awareness across Steve's whole agent fleet, so he never has to
hop between terminals/CNCP/pm2/launchd to know the state of the operation. Design north-star
is the `@androoagi` "AI Agent Environment Tour" (OpenClaw-style mission control).
Runs under pm2 as **`abramsego`** on **:9773**, Basic Auth `admin:DW2024!`. Local only.
## Panels (the command-center surface)
1. **Top metrics bar** — live CPU / RAM / swap / disk, color-coded by threshold; always on.
2. **Fleet health** — pm2 (Mac2 + Kamatera) up/down counts, launchd job status, gateway/uptime.
3. **Cost & energy P&L** — today / all-time / projected-monthly from `~/.claude/cost-ledger.jsonl`;
per-provider donut; the 4 gated revenue engines with `gated`/`live` pills (money = GATED).
4. **Cron / launchd status** — every scheduled job: status, schedule, last/next run, model.
5. **Sessions & sub-agent runs** — active Claude sessions, recent sub-agent runs, model usage.
6. **Activity feed** — recent git commits across `~/Projects`, recent wins (CNCP), canary verdicts.
7. **AI chat** — natural-language queries over costs/sessions/crons/config.
8. **Auto-refresh** — stale-while-revalidate snapshot; live without reload.
## Steve's HARD rules this build must satisfy (from global CLAUDE.md)
- **Admin cards show created DATE + TIME** (`🕓 May 20, 2026, 3:17 AM`, `toLocaleString`, visible on
the card, full ISO in `title=`). AbramsEgo is an admin surface → every card/tile obeys this.
- **Any product/list grid gets sort + density slider + infinite scroll** (localStorage-persisted).
- **Always show costs** — every paid-API figure surfaced; free/local labeled `$0 (local)`.
- **Gitify** — commit after each success (author `steve@designerwallcoverings.com`).
## GATED — draft to `~/.claude/yolo-queue/pending-approval/`, never execute
Deploy to Kamatera, DNS/domain, Stripe/pricing/publish, send-to-list, spend, remote push,
canonical `dw_unified` writes. Each gated step → officer APPROVE/REVISE/BLOCK memo.
## Build discipline for the loop
- One task = one self-contained, <15-min chunk. Test against the RUNNING pm2 instance
(`pm2 restart abramsego` + curl :9773) — never start a second node on 9773.
- Use `/dtd` to decide judgment calls. Commit on success. Leave gated work as drafts.