Command Center

What this page is

This is the manual for the system Topher and Aria run together. If Topher got hit by a bus tomorrow, Jaime could read this page and know how everything works. If Aria's memory got wiped tomorrow, you could read this page and rebuild her in an afternoon.

It pairs with the Aspire Digital cheat-sheet — that one covers the agency (Vegas, Jaime, the client work). This one covers Topher's whole life, of which the agency is one lane.

Written so a fifth grader could follow it. If anything here uses jargon, it's defined in the glossary at the bottom.

The team

Who does what

Two humans, one AI Chief of Staff, five AI specialists for client work. Aria runs both lives Topher has — personal and agency-owner.

Owner

Topher

The human running it all. Five businesses, one household with five kids, two boxers, an HOA board seat, a Synchrony day job, and a 401(k) loan he's trying to pay off. Picks the strategy. Makes the calls AI shouldn't make.

Partner

Jaime

Wife. UX Research lead at Synchrony. Creative director at Aspire Digital — Jaime works directly with Vegas on every client website. Co-user of the Command Center for shared things (calendar, finance, family).

↓ Humans direct the AI helpers below ↓

🤖 Chief of Staff + COO

Aria

Single front door. Runs Topher's life accountability (HOA, family, day-job, travel, finance, 3D printing, etc.) AND the Aspire Digital COO role (since 2026-05-15 when Aria absorbed the former Linq agent). One chat to open in the morning.

Specialists (agency work only)

Vegas · Sahara · Circa · Strat · Paris

Five AI builders. Vegas (websites), Sahara (Shopify), Circa (CRM), Strat (SEO), Paris (prospect research). When Topher needs one for client work, he asks Aria to do a handoff (Greeter task 1H) — Aria builds the brief, Topher pastes it into a fresh specialist chat. Specialist details.

Topher's life

The 11 lanes

A "lane" is a parallel life area. Each has its own memory folder, its own priorities, its own people. Aria can be asked about any of them from a single chat — pick the lane with a compact code like 2A (lane #2 = Aspire Ventures, task A = Brief me).

1

🚀 Aspire Digital

The agency. Aria runs it.

2

🧠 Aspire Ventures

Higher-margin plays beyond websites.

3

💼 Day Job (SyF)

Synchrony Financial. Exit ~Apr 2027.

4

💰 Finance

Cards, taxes, 401(k) payoff gate.

5

❤️ Family & Health

Jaime, kids, Tirzepatide, CrossFit.

6

🏠 HOA

Willowbrook board, 213 houses.

7

🏈 Jr Pacers

Youth football nonprofit board seat.

8

👤 Personal Brand

LinkedIn, /chris, public face.

9

🏡 Smart Home

NAS, Tailscale, AdGuard, Homebridge.

10

✈️ Travel

Delta Diamond, 4+ trips/year goal.

11

🖨️ 3D Printing

Bambu P2S, the hobby.

retired

📰 News-intel · 🛠️ Home Projects · 💼 Taxes

Folded into morning cron / merged / dormant.

A day in the system

How a Topher-day flows through Aria

Three things happen automatically. Two things happen when Topher decides to open a chat. None of it is on a fixed schedule that he has to remember.

Automatic · 5am

Morning briefing cron

A scheduled job runs on the M4 Mac Studio. Pulls Linear urgent items, scans calendar, checks email priority senders, syncs urgent.json from BOTH Linear teams (OSB + ADL). Writes today's narrative to memory/NEXT.md. Topher sees the result at /info/today when he wakes up.

Automatic · 12pm + 5pm

Email triage cron

Twice a day, an automated session reads new email, classifies by priority signal (Eric, Jaime, family, clients), drops anything actionable into Linear, and updates the Command Center email digest. Sponsor noise is dropped silently.

Automatic · Sundays 6:33am

Weekly memory self-audit

Checks NEXT.md size, MEMORY.md size, urgent.json/NEXT drift, and session-journal coverage gaps. Surfaces findings in the next morning briefing. Stops the memory from growing unbounded.

Whenever Topher opens a chat

Aria's Greeter — single front door

First message in any fresh Aria chat runs the Greeter. Topher can type:

  • hi / morning / B → State-of-the-Week summary (top 3 priorities, blockers, conflicts)
  • 2A → compact code: lane 2 (Aspire Ventures) + task A (Brief me)
  • 1H → Handoff to a specialist (Aria builds a paste-ready Vegas/Sahara/Circa/Strat/Paris brief)
  • "Hi Aria, HOA, plan" → voice-style, skips picker, goes to confirmation
  • ? → show the full lanes-and-tasks picker

Full spec in aria-secondbrain/CLAUDE.md — the Greeter section at the top.

End of every chat

Session journal entry

Before closing a conversation, Aria writes a journal entry to memory/sessions/aria/YYYY-MM-DD-slug.md. The next session reads NEXT.md + the journal + relevant lane files and picks up where the last one left off. "If you don't log it, it didn't happen."

The rules

The rules Aria runs by

Same rules every session. Live at the bottom of CLAUDE.md.

Be proactive

Catch conflicts, missed follow-ups, approaching deadlines before Topher does. Come with answers, not options.

Do the work

Aria executes for personal + COO-level. Dispatches to specialists for client-specific builds via the Greeter handoff task.

Build memory every session

Write down what you learn. Update NEXT.md at session end — but prune as you add. Memory hygiene is non-negotiable.

Verify before claiming done

Topher's trust in AI is finite. Don't claim "shipped" without evidence — false-positives burn trust.

Keep lanes separate in memory, connected in awareness

HOA stuff lives in HOA memory. But if HOA work conflicts with a SyF deadline, surface it. The lanes are organizational, not isolation.

Linear is the system of record

Discrete action items live in Linear (OSB for personal, CLI for agency). The Command Center reads Linear; never hand-edit urgent.json.

The setup

Where everything lives — the eight cupboards

If you wanted to copy this setup, you'd need all eight.

🤖 Claude Code

The brain

The AI Topher works with. Reads files, runs commands, remembers across sessions. Max plan ($200/mo). Other AIs can do this work too — see Plan B below.

📂 aria-secondbrain (GitHub)

Aria's whole world

CLAUDE.md, identity files, every lane, memory, session journals, the Command Center site source — all in one private repo. Mirrored to NAS hourly.

📐 Linear

Action items

Two teams since 2026-05-10: OSB (Otten Second Brain, personal) + CLI (Aspire Digital LLC, agency). Aria writes to both. The Command Center dashboard reads urgent items live.

🌐 Command Center (cc.madebyotten.com)

The dashboard

Astro + Cloudflare Pages. Auto-deploys on every push to main. Behind Cloudflare Access — only Topher and Jaime can read it. No LLM dependency at all.

📅 Google Calendar + Gmail

Time + inbox

Aria reads calendar + email via the Google MCPs. Knows Topher's day, who's emailing him, what deadlines are real. Never sends without explicit say-so.

🖥️ M4 Mac Studio

The runtime

Always-on Mac in Topher's office. Cron jobs run here. Claude Code sessions run here. If this machine dies, the work isn't lost — everything is in GitHub.

🛡️ NAS (UGreen, in Topher's house)

Local backup + services

Mirrors GitHub hourly via Gitea. Runs AdGuard (DNS filtering), Homebridge (HomeKit bridge), Crawl4AI (research helper). On Topher's private network, reachable over Tailscale when traveling.

🎙️ Scribe (in-person meetings)

Voice → transcript pipeline

iPhone Voice Memos → iCloud → M4 Mac Studio runs MLX-Whisper + pyannote → transcripts at /info/meetings. 100% local, no usage caps. User guide.

How memory works

The 4-layer memory system

AI doesn't remember last Tuesday unless we wrote it down. Aria's memory has four layers, each loaded differently. Same pattern Linq used to follow on the agency side; same pattern works in any AI tool that can read files.

Layer 1 — Sticky Notes ~500 words · loaded every chat

The compact essentials. CLAUDE.md is mostly this — facts, file paths, conventions.

aria-secondbrain/CLAUDE.md

Layer 2 — Identity + Rules ~1500 words · loaded every chat

Who Aria is, what her job is, the hard rules, the Greeter spec, the cold-start order.

agents/aria/IDENTITY.md + SOUL.md + LANES.md + the rest of CLAUDE.md

Layer 3 — The Library no size limit · loaded on demand

Lane files, deep references, the playbook, archived doctrine. Read when relevant.

memory/drawers/<lane>/*.md · memory/topher/*.md · aspire-digital/agents/_archived/linq/AGENTS.md

Layer 4 — The Filing Cabinet no size limit · never auto-loaded

Session journals, daily cron audits, archived sessions. Searched when needed; never carried in working memory.

memory/sessions/aria/YYYY-MM-DD-slug.md · memory/daily/YYYY-MM-DD-audit.md

Hygiene rules (adopted 2026-04-29 from a Hermes Agent review): NEXT.md soft-capped at 200 lines / 20 KB. MEMORY.md soft-capped at 250 lines / 25 KB. Sliding window — at session end, ADD today's deltas and DELETE the prior session's "Done This Session" block (it's in the journal). Don't carry narrative forward. Past work lives in memory/sessions/aria/INDEX.md, not in NEXT.md.

The backup system

How everything backs up — three places, same data

Same principle as the agency cheat-sheet: every important file lives in three places at once. If one is attacked, breaks, or has a bad day, the other two still have it.

🖥️

1. M4 Mac Studio

Topher's office · always-on

Where the AI thinks. Live working folders. All memory .md files. Cron jobs.

☁️

2. GitHub (madebyaspire)

Microsoft's cloud · public internet

Official copy. Pushed many times a day. aria-secondbrain is a private repo here.

🛡️

3. NAS (UGreen, OttenNAS)

Topher's house · private network

Hourly Gitea mirror of GitHub. Nightly 3am snapshot of M4. 10.8 TB. Not on public internet.

What if one breaks? M4 dies → new computer, clone from GitHub, ~30 min back to speed. GitHub down → pull from NAS Gitea at LAN speed, same hour. NAS dies → M4 + GitHub still have current state; replace hardware. All three at once is implausible (different networks, different vendors, different physical locations).

Vendor independence

What if Claude Code stopped working tomorrow?

Real risk. Real answer: most of the system ports to another LLM in an afternoon. Some pieces are Claude-specific and would need quick replacements.

For the full recovery deep-dive — see

/info/recovery — the encyclopedia. 11 sections covering Claude Code down / GitHub down / NAS dies / M4 dies / nuclear option, full repo inventory, alternative tools comparison, and a quick reference card. That's where the scenarios + Plan-A-through-D + tool matrix live in depth.

This page (the cheat-sheet) keeps just the portability matrix below — the row-by-row "what surface ports at what cost" view that's useful for a quick mental audit. Use the recovery guide when you actually need to do the swap.

Portability matrix — what ports, what we'd rebuild:

Surface Portable? Cost to swap LLM
CLAUDE.md + identity files✅ Yes — markdownZero
Memory architecture (4 layers, sessions, daily)✅ Yes — markdownZero
Lane files in memory/drawers/✅ Yes — markdownZero
Linear routing scripts (Node)✅ Yes — pure NodeZero
Brief generator (buildPrompt.mjs)✅ Yes — pure NodeZero
Command Center site✅ Yes — no LLM depZero
Greeter pattern (compact codes)✅ Yes — pattern not codeZero — re-spec in 30 min
Scribe (transcription)✅ Yes — local PythonZero — runs on Mac
Morning / lunch / EOD cron jobs✅ Mostly portableSwap the LLM call wrapper
CLAUDE.md auto-load convention⚠ Claude-specificSymlink to GEMINI.md / .cursorrules
TodoWrite / Skill / MCP integrations⚠ Claude-specificDrop or replace — half-day audit
Slash skills (/loop, /ultrareview, /review)⚠ Claude-specificReimplement as scripts — 1-2 days
Session JSONL storage⚠ Claude-specificProvider stores its own; our markdown journal IS the canonical record
Standing-autonomous-commit harness model⚠ Claude-specificEquivalent in Codex; manual elsewhere

The principle: we never lock the knowledge inside one company's tool. Identity, doctrine, memory, and all the action-items live in plain text + plain Node. Any AI can read all of it. If Anthropic disappeared overnight, the system would be slower for a week and back to full speed within two. The knowledge is the moat — the AI is interchangeable.

The real runbook (shipped 2026-05-15)

The matrix above is the theory. aria-secondbrain/CONTINGENCY.md is the practice — a 30-second swap script + a tested step-by-step recovery. Three scripts in ops/ do the actual work:

  • ops/swap-llm.sh codex|cursor|gemini|all — symlinks AGENTS.md → CLAUDE.md (the open standard), plus provider-specific extras (Gemini's GEMINI.md, Cursor's .cursor/rules/aria.mdc)
  • ops/validate-swap.sh — verifies symlinks resolve + content matches CLAUDE.md byte-for-byte. Use to confirm a swap is healthy before launching the provider.
  • ops/swap-back-to-claude.sh — clean reverse. Only removes symlinks + auto-generated files; never deletes hand-written content.

All three are idempotent — safe to run repeatedly. Tested end-to-end on 2026-05-15 with 9 test cases (dry-run, swap-to-each-provider, idempotent re-run, swap-all, swap-back, idempotent swap-back). The live test with Codex/Cursor/Gemini actually installed is queued — first to validate is when Topher next has one of them set up.

For people who want to copy this

If you wanted to set up your own personal Chief of Staff

Honest 6-step starter. Works for any small-business owner / professional who manages a lot of parallel threads.

Step 1

List your lanes

Write down every parallel life area. Day job, family, hobbies, side businesses, finances, health. Be honest — 8-12 is normal. Mine is 11.

Step 2

Write a CLAUDE.md (or whatever your AI reads at session start)

Identity + rules + cold-start order. Treat it like onboarding the most patient new hire ever. ~500-1500 words. Mine is at aria-secondbrain/CLAUDE.md — feel free to fork.

Step 3

Set up a 4-layer memory directory

memory/ with NEXT.md, MEMORY.md, drawers/<lane>/*.md, sessions/YYYY-MM-DD-slug.md. Plain markdown. Put it in git.

Step 4

Pick a Linear (or any issue tracker) as your action-item home

Don't let action items live in markdown files — they go stale. Linear (or Linear-alternative) is the SYSTEM OF RECORD. Your AI reads it, you write to it through the AI.

Step 5

Set up ONE rule: verify before declaring done

Biggest difference between an AI that works and one that fakes. After every task, the AI runs a check — did the commit land, did the issue close, did the file save — and only then says "done."

Step 6

Add automation slowly

Morning briefing cron. Email triage cron. Weekly memory audit. Each one is a small launchd plist that runs a Claude Code session with a saved prompt. Don't try to build all three at once — get one stable, then add the next.

How long? First useful version: a weekend. Daily-useful version: a month of refinement. Aria took about 4 months from "blank repo" to "I forgot what I did before her." The pattern is straightforward; the discipline is keeping memory clean as you go.

Glossary

Words you might bump into

Lane
A parallel life area — HOA, day-job, family, etc. Each lane has its own memory folder.
Greeter
The protocol that runs on the first message of any Aria chat. Reads what you typed, decides which lane + task, asks if anything's missing, confirms, loads.
Compact code
A short shorthand for the Greeter. 2A = lane 2, task A. 1H = lane 1, task H (Handoff).
Specialist
An AI agent specific to client-build work. Vegas (websites), Sahara (Shopify), Circa (CRM), Strat (SEO), Paris (prospects). Not Aria; she dispatches to them.
Linear
The issue tracker. Two teams: OSB (personal) and CLI (agency). Aria writes to both.
Cron / launchd
Mac jobs that run on a schedule. The morning briefing, email triage, weekly audit are all cron jobs.
MCP
Model Context Protocol. Lets Aria talk to Gmail, Google Calendar, Linear, etc. via plug-ins.
Tailscale
A private network that connects Topher's devices wherever he is. Lets him reach the NAS from a hotel.
Cloudflare Access
The lock on cc.madebyotten.com. Only Topher and Jaime's identities can read the dashboard.
Scribe capture
When an idea hits and Aria isn't open, record a voice memo. Scribe transcribes it and Aria works the items with Topher later. (Replaced the Capture Interview, retired June 2026.)
Tip Jar
Where ideas go when they're not actionable today. Reviewed quarterly. Prevents "I'll think about that later" from clogging the priority list.
Session journal
Aria writes one of these at the end of every chat. Saves what was decided, what's blocked, what's next. The next session reads them.

Where this page fits

This is the personal-side manual. The Aspire Digital cheat-sheet is the agency-side version (public-facing). The Scribe page is the user guide for in-person meeting transcription. The AD COO dashboard is the live agency state.

Together they are the answer to "how do you actually do all this?"