aria · for muiez · 2026-05-03 · v2 (evening update)

Aria can now read your saves, control Spotify, pause missions to ask you back, and watch its own budget.

Same voice channel as the morning version — now smarter and more connected. 12 tools, mission resumption, cost-burn alerts, three-line cleanup of every captured thought, all running on Mina's Mac for ~$0.20/day.

12tools 8endpoints 36/36tests passing $0new infra cost ~$0.20per day +5capabilities since v1
since v1 (a few hours ago)

The problem.

All Mina's stuff lives on his Mac. He doesn't.

before

Six dashboards. One desk.

Cockpit · mina-pt · insta-agent · LeedAB · n8n · Second Brain. All useful, all anchored to a screen. Every walk, every chore, every commute = blind spot. Insights vanish. Captures don't happen. Decisions wait for desk time.

after

One agent. JBL or AirPods.

Aria sits in his pocket. He talks. She reads his vault, asks his other agents, captures his thoughts, briefs him in the morning, can pause to ask him a follow-up question, controls his music. The desk is optional, not central.

What Aria is.

A FastAPI service on the Mac, a Telegram bot, three iOS Shortcuts on watch + phone, three launchd timers, persistent vault memory. ~2,200 lines of Python. Built across two weekends.

12tools
capabilities
Read vault, talk to mina-pt, search saved reels, capture thoughts, control Spotify, push, ask back mid-mission.
8endpoints
surface area
/tell · /push · /latest · /reply · /status · /mission · /stop · /health.
2timers
proactive
Morning brief at 08:00. Daily capture cleanup at 22:00. Both run as launchd jobs.
memory
persistent
aria-learnings.md grows over time. New facts ride in the system prompt every call.

How it's wired.

Phone is I/O. Mac is brain. Cloud is the model. Vault is memory. Other agents are spokes.

                     ┌── apple watch (haptic + tap surface)
                     
   jbl flex 3            ┌── second brain vault (read + soft-write)
                          │   _inbox/aria-captures/YYYY-MM-DD.md
                          │   Mina/aria-learnings.md (persistent memory)
                          
                          
   ┌────────────────────────┐         ┌──────────────────────────────┐
   │  iPhone                │         │  Mac (always-on, caffeinate) │
   │                        │         │                              │
   │   • iOS Shortcuts      │ ───────►│   FastAPI · port 8770        │
   │     (Relay/Latest/     │   POST  │   ├─ /tell  /push  /reply    │
   │      Respond)          │         │   ├─ /mission  /stop         │
   │   • Telegram bot DM    │ ◄───────│   └─ /latest /status /health │
   │     (watch buzz on     │         │                              │
   │      push)             │         │   Mission worker (asyncio)   │
   │                        │         │   • picks up pending          │
   └────────────────────────┘         │   • runs Claude w/ 12 tools   │
                                      │   • pauses on ask_mina      │
                                      │                              │
                                      │   launchd timers             │
                                      │   • 08:00 morning brief      │
                                      │   • 22:00 daily cleanup      │
                                      └────────────┬─────────────────┘
                                                   
   ┌──────────────┬──────────────┬──────────────┼──────────────┬──────────────┐
                                                                         
 claude api    mina-pt :8766  cockpit :8767  vault          insta-agent    spotify
 (sonnet 4.6)  (his coach)    (brain score)  (read+capture) :8765 search   via osascript

The 12 tools Aria has.

Every tool is async, returns a short string Claude can summarise, and writes nothing destructive without a soft-capture step. Tools tagged new shipped this evening.

read

read_vault(path)

Markdown read across allow-listed Second Brain folders. Denied: _secrets, _attachments.

read

read_cockpit()

Snapshot of meta-dash cockpit (brain score + dashboard summary).

read

read_aria_state()

Aria's own recent inbox + replies + unread count.

write

capture_thought(text, tag)

Soft-write to today's _inbox/aria-captures/. NEVER touches project files directly.

read

list_captures_today()

Used by the 22:00 cleanup mission to triage the day's captures.

read

query_mina_pt(question)

Ask Mina's existing health coach about training, recovery, supplements, sleep.

read

get_mina_pt_morning_brief()

Fetch the pre-built morning brief from mina-pt.

write

log_to_mina_pt(text)

Free-text log into mina-pt — workouts, meals, sleep, mood.

write

remember_about_mina(fact, category)

Append to Mina/aria-learnings.md. Loaded into system prompt every call. Cross-session memory.

read

search_insta_agent(query)

Search Mina's saved IG reels corpus (354+ reels). PT, mobility, anatomy, recovery — voice-callable.

action

spotify(action)

play / pause / next / previous / now_playing on macOS Spotify. AppleScript-based, no API key needed.

push

push_to_mina(message)

Telegram + watch buzz mid-call. Used when Aria has something Mina should hear separately from her main reply.

async

ask_mina(question, options)

Mission-only. Pauses the mission, pushes the question to Mina's watch, resumes when he replies. Round-trip async.

A day in the life.

Four flows Aria runs daily. The fourth — pause-and-ask-back — is new since v1.

08:00 · morning

Brief while making coffee.

launchd fires the morning brief. Aria reads _PLANS.md, fetches mina-pt's brief, snapshots cockpit, pushes 3 staged messages to watch.

"TODAY: Obsidian Sync overdue. Anthropic key still pending. Right shoulder still flared — protect overhead. Quick win: rotate the mina-pt token, 5 min."
15:30 · walking

Capture mid-walk.

Mina has a thought. Holds JBL → "Hey Siri, Relay" → "Capture: substrate license is the strongest shape. Tag pillarix."

"Done. Tagged pillarix and saved to today's captures."
17:45 · async mission

Aria pauses to ask back.

Mina dispatches a mission Aria can't fully decide alone. Mid-flow she calls ask_mina, which pushes the question + pauses. Mina taps Respond → speaks → mission resumes.

"❓ I can lean Rome AI or Pillarix this week — which industry are you actually trying to land first?" → "Construction." → mission continues.
22:00 · evening

Triage while winding down.

launchd fires the cleanup mission. Aria reads today's captures, proposes where each should land in Second Brain. Doesn't auto-merge.

"3 captures today: 2 → Pillarix project notes, 1 → Permanent. Approve in the morning."

What it's connected to.

Two new spokes since v1 — insta-agent (saved IG reels) and Spotify (macOS app via AppleScript). No new infra. No new credentials.

vault

Second Brain

Obsidian vault — projects, plans, daily notes, identity files.

readsoft-write
health

mina-pt

His existing AI coach. Training, recovery, nutrition, sleep, supplements.

readlogbrief
ops

Cockpit / meta-dash

Daily ops snapshot — brain score, dashboard health, break reminders. Aria panel inside cockpit shows turns + cost + unread + last reply.

read
corpus

insta-agent

Mina's saved IG reels (354+ reels, mostly PT / movement / nutrition). Voice-searchable.

readv2
media

Spotify

macOS Spotify control via AppleScript. play / pause / next / now playing.

actionv2
memory

aria-learnings.md

Persistent facts about Mina. Loaded into system prompt every call.

appendload
channel

Telegram bot

Outbound delivery. Watch buzzes via standard iOS notification on the bot DM.

push
parking

aria-captures inbox

Daily soft-write target. Reviewed at 22:00 by the cleanup mission.

capturereview
budget

Cost-burn alerts

Aria pushes a one-time alert at 50%, 80%, 95% of daily cap. Stateless threshold-crossing detection.

push

Operational guarantees.

Aria is cheap, bounded, and graceful — these are the rails that make it safe to leave running.

cost

$5/day hard cap.

If daily spend hits the cap, /tell and /mission return 429 until Sydney midnight. Three soft-warning pushes precede the hard stop (50%, 80%, 95%). Today's run cost $0.18 across 20 turns and 6 missions.

latency

30s timeout per call.

If Anthropic's API hangs, Aria returns "thinking too hard, try again" rather than blocking the iOS Shortcut. Typical reply latency: 1.5–3s for no-tool, 3–8s for tool-calling.

safety

Allow-listed everything.

Vault writes go ONLY to _inbox/aria-captures/ — never project files. Vault reads exclude _secrets. Tools that take action (spotify, log_to_mina_pt, capture_thought) are scoped narrowly. No shell access in v1.

why this matters for leedab

Aria is the operator surface. Per-customer Aria is the LeedAB consumer-facing endgame.

What Mina built today is the personal version of what every LeedAB customer business will eventually need. Same shape: a per-business voice channel sitting between the operator and their AI ops system. Same substrate: a per-customer brain (Obsidian vault) underneath. Same delivery: phone + earbuds, no desk required.

The 12 tools Aria has on Mina's stack map almost 1:1 to the tools a small-business operator would need: read your CRM, capture a customer thought mid-call, log to your finance brain, brief me on today's sales, remember that this customer prefers async, pause and ask me before sending the contract. We're not building from scratch — we're proving the shape on the easiest customer (Mina) before generalising.

Status & next.

shipped 2026-05-03 (across two sessions)

What's done.

  • FastAPI service on Mac (port 8770) under launchd
  • 3 iOS Shortcuts wired (Relay, Latest, Respond) + Watch complications
  • Telegram bot wired (token + chat_id filed in _secrets/)
  • 12 tools live: vault, cockpit, mina-pt, captures, memory, push, insta-agent, Spotify, ask_mina
  • Async mission worker — long tasks run in background, push when done
  • Mission resumption via ask_mina + /reply routing
  • Persistent cross-session memory (Mina/aria-learnings.md) — proven recall
  • Two launchd timers (08:00 morning brief, 22:00 daily cleanup) — FDA fix shipped
  • Cost-burn alerts at 50% / 80% / 95% of daily cap
  • Aria panel inside cockpit (turns + cost + unread + active missions)
  • $5/day budget cap · 30s timeout · 36/36 tests passing
parked spec — ship when triggered

Phase 5 — n8n workflow trigger tool.

  • One Aria tool exposes every n8n workflow as a voice-callable capability
  • Config-driven workflow registry — add a workflow, instantly Aria-callable
  • Trigger condition: lead-gen pipeline + LeedAB workflows running. Until then, premature.
  • Build estimate when triggered: ~1.5 hours. Spec: aria/PHASE-5-n8n-trigger-plan.md.