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 — markdown | Zero |
| Memory architecture (4 layers, sessions, daily) | ✅ Yes — markdown | Zero |
Lane files in memory/drawers/ | ✅ Yes — markdown | Zero |
| Linear routing scripts (Node) | ✅ Yes — pure Node | Zero |
Brief generator (buildPrompt.mjs) | ✅ Yes — pure Node | Zero |
| Command Center site | ✅ Yes — no LLM dep | Zero |
| Greeter pattern (compact codes) | ✅ Yes — pattern not code | Zero — re-spec in 30 min |
| Scribe (transcription) | ✅ Yes — local Python | Zero — runs on Mac |
| Morning / lunch / EOD cron jobs | ✅ Mostly portable | Swap the LLM call wrapper |
| CLAUDE.md auto-load convention | ⚠ Claude-specific | Symlink to GEMINI.md / .cursorrules |
| TodoWrite / Skill / MCP integrations | ⚠ Claude-specific | Drop or replace — half-day audit |
| Slash skills (/loop, /ultrareview, /review) | ⚠ Claude-specific | Reimplement as scripts — 1-2 days |
| Session JSONL storage | ⚠ Claude-specific | Provider stores its own; our markdown journal IS the canonical record |
| Standing-autonomous-commit harness model | ⚠ Claude-specific | Equivalent 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— symlinksAGENTS.md → CLAUDE.md(the open standard), plus provider-specific extras (Gemini'sGEMINI.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?"