Subsystem deep-dive

The Command Center

The cockpit that runs the day: one FastAPI app reading the single task list, the calendar, and the vault, and surfacing them as a one-tap PWA. Far more sits under the four chips it gets on the overview.

0
API routers
0
Endpoints
0
Live panels
0
One-click skills
How it's wired
Inputs → backend → one-tap PWA

A thin FastAPI backend reads the same sources the rest of the system uses, with no separate database of record. The frontend is a single PWA that talks to the routers.

Inputs

read live, no duplicate state

TASKS.md (the one list) · Calendar (EventKit) · Brain vault · ~/Journal/feelings · task-scheduler.

Backend

FastAPI · localhost:7777

25 routers · 88 endpoints · tasks_md parser (sections + tiers) · osascript bridge (osa.py) · SQLite (db.py).

Frontend

PWA · "CMD CTR" app

index.html + app.js + style.css · 35 live panels · one-tap from the dock.

The surface
35 live panels, view-aware

Each panel is backed by its own router. This is the part the overview compresses to a single "dashboard" chip.

Status pills

status

System health at a glance: services, graph freshness, git state.

Projects & tasks

projects · tasks

TASKS.md rendered by section, tier-aware (scheduled vs secondary), collapse/expand per task.

Skill launcher

skills

One-click run of every dashboard:true skill, with last-run timestamps.

Calendar

calendar

Today's events, with Start buttons wired onto Focus Block events.

Plan Tomorrow

tasks

Drives the task-scheduler to time-block tomorrow's schedulable tasks.

Capture

brain

Quick-capture notes and a scratchpad straight into the Brain vault.

CallConnor leads

callconnor

The callconnor.com lead pipeline, viewable and editable inline.

Mood capture

feelings

Privacy-walled. Writes to ~/Journal/feelings, never rendered back or committed.

Recently done + sparkline

projects

Completed items and a trailing-average accomplishment sparkline.

Usage

usage

Claude / API usage monitor so cost stays visible.

Email triage

triage

Surfaces triaged inbox state from the email-triage flow.

Morning data

morning-data

Pre-warmed briefing cache so the first morning briefing hits instantly.

Up close
Four of them, in the flesh

Faithful replicas drawn with demo data — the real panels run on live local data (the actual inbox, task file, and service fleet) that stays on the machine.

command center — localhost:7777 · demo data
New TaskAI-drafted · review before save
the morning brief sometimes shows yesterday's calendar
- [ ] Fix morning-brief calendar staleness — re-query events after the wake guard instead of at cache warm#high#deep-work~90m
filed: Dashboard · duplicates: none of 209 open · rationale: daily surface, blocks trust in the brief
Not dictation — the model turns a symptom into an imperative task with a concrete mechanism, files it in the right section, checks every open task for duplicates and dependencies, and shows its rationale. Reviewed before anything is saved.
Completed / Week29 closed · counted from the task log
M
T
W
T
F
S
S
Every completed task feeds a weekly rhythm view. The system tracks its own throughput instead of relying on how the week felt.
Inbox Pulserated by a local model · action > signal > noise
ACTIONmailElectric Co.Your statement is readyopen
ACTIONgmailCalendarInvite: Thursday 2:00accept
SIGNALgmailGitHubCI green on main — deploy finishedarchive
NOISEgmailSubstackThis week in AI, issue 41unsub
A model running locally rates every message ACTION / SIGNAL / NOISE — asks float to the top, noise sinks. One-tap actions per row, and a demote toggle for when the model gets one wrong.
Stack Viewevery pill is one click from a fix
open-webuisearxngcrawl4aicloudflaredntfyrsshubn8n
drift check — all 7 pinned versions current
n8n unhealthy → click opens Claude pre-loaded: container state, last logs, likely fix
Services alert on failure only, so this view makes healthy silence visible — and a failing pill is a button: one click opens an AI session already loaded with that service's state, logs, and a targeted troubleshoot prompt.
Demo data throughout — senders, subjects, task text, and the n8n failure are invented; the service names are the real fleet.
The depth
The mechanisms that earn it

The robustness isn't the panel count; it's the careful machinery behind the buttons.

Self-regenerating #weekly tasks

Marking one done is a single atomic rewrite that completes it AND re-inserts a fresh copy dated to next Sunday. Cadence never drifts, and identity stays stable across regenerations.

One-click #exec Start

The Start button pastes the task's command verbatim instead of boilerplate. True one-click-then-Enter.

#blocked + gates

Dependency and defer-until markers keep not-yet-actionable tasks out of the schedule without deleting them.

Drag-reorder, safely

Within-group reordering writes back through a strict permutation invariant, so a reorder can never silently drop or duplicate a task.

Dynamic skill enumeration

The skill row scans Brain/AI/Skills for dashboard:true frontmatter live (≤60s, no restart), so there are no hardcoded lists to drift.

Privacy-walled mood capture

Capture-only by design: the mood panel writes to the Journal and is never rendered, logged, echoed, or committed.

Completion sparkline

A no-denominator trailing average swept off the ✅ date. Momentum without vanity-metric noise.

Focus-block Start buttons

A durable AppleScript-safe marker is embedded in the event notes, so the button maps to the task with zero fuzzy title matching.

Operational lore
The deploy ritual

Hard-won gotchas, the kind of thing that only lives in a runbook.

One canonical app. ~/Dev/dashboard only. Look-alike decoys were deleted after repeated wrong-file edits.
Backend changes need a launchd kickstart; uvicorn runs without --reload.
Frontend changes need a ?v= bump. Static assets have no cache-busting, so a stale PWA will silently freeze panels.
Always on. Served by launchd com.connor.dashboard with RunAtLoad, opened as the "CMD CTR" Chrome PWA.