Meet G.R.A.C.E my AI Operating System
AIAI OSAI SDKAutomation

Meet G.R.A.C.E my AI Operating System

James Aspinall11 June 20262 min read

GRACE and the Agentic OS

For months I had a quiet diagnostic: the gap between what I felt I'd achieved in a day and what I'd actually shipped was wider than I wanted to admit. TikTok gave me the dopamine of progress without the substance. So I built a system that keeps score. I call it GRACE.

What I built

GRACE is a voice-first chief of staff. She lives at /admin on my own site, and /admin/home is the daily scoreboard. The pipeline is end-to-end: capture (voice note, iOS share-sheet, paste box), an overnight cron triages, a morning planner proposes three intentions, a content lane turns signals into drafts for LinkedIn / X / Threads / IG / article, and an evening check-in tallies what I actually shipped, not what I knew about.

How it's wired

Next.js, Supabase, and the Anthropic SDK. The voice turn loop runs Sonnet 4.6 with around a dozen registered tools; the cron generators run Haiku 4.5 with prompt caching on the system block, so the prompt hits the cache after the first run. Tools live in lib/jarvis/tools/, cron routes sit under /api/routines/* on Vercel's scheduler. The dashboard subscribes to Supabase Realtime, so a voice command on my phone updates the desktop view inside a second. Every Haiku generator has a tolerant JSON parser, a confidence gate, and a discriminated success/failure return, so no exceptions cross the route boundary.

Features shipped

  • Capture. Voice + iOS share-sheet hitting a token-auth'd webhook, with a dedup window and a markdown fallback if Supabase is unreachable.
  • Triage. Nightly classifier tags project + confidence and auto-archives anything untouched for 14 days.
  • Morning plan. ≤3 ranked intentions written to morning_proposed, never overwriting a locked-in trio.
  • Intention ticks + habits. Live-synced from voice or click, scored honestly.
  • Content lane. Hook generator → approve → channel-aware drafter → copy/publish → published-today strip on the scoreboard.
  • End-of-day check-in. Commits + vault actions + posts shipped, with a gap sentence that names the drift.
  • Vercel build status. Voice and dashboard read-through across a multi-agent registry, with an 8h cron persisting history.
  • Aspinall ideation lane. Originated thoughts promoted through a brand-aware drafter, with client names redacted at capture.

What's next

iPhone smoke test on the ideation lane. Wiring brand voice into the morning content digest. A DM-funnel skill that turns engagement-CTA comments into queued replies. Evaluating Blotato as a publishing layer. And a "deploys broken today" axis on the scoreboard, once the build-history table has a week of data behind it.

The point isn't that the system is finished. It isn't. The point is that the score is now honest.

James Aspinall

James Aspinall

Full Stack Developer