Skip to main content
friday-ai.dev

Project Friday.

A personal AI development environment I’m building on a private Unraid server. Three projects: memory, environments, voice. Mostly built by me using Claude Code.

Friday-ai
v1.5.0 in production
MCP tools
72
Postgres tables
33
Friday-Website
W1 shipped
A workshop bench at night: a single warm phosphor-amber desk lamp casts a focused pool of light on a dark wood surface; ordered cable bundles and a small jar of pencils sit in the deep shadow around it.

§ Stack

Three projects on one Unraid server.

Each is independently useful. Together they form the environment: one substrate, one tunnel, one set of secrets, one operator.

Project Friday composition: three projects on one substrateThree projects connect over MCP and share one private Unraid server behind a Cloudflare Tunnel. Memory is Friday-ai, in production at v1.5.0. Sessions is Sandcastle, in production at v1.6.25. Voice is Friday-nexus, mid-build at v2.1. The dogfood loop runs from Sessions back into Memory: agents write what they decided so the next agent reads it before starting work.MEMORYFriday-aiv1.5.0 · shippedSESSIONSSandcastlev1.6.25 · shippedVOICEFriday-nexusv2.1 · mid-buildDOGFOODONE UNRAID SERVER · ONE friday_net · ONE TUNNELPostgres · Qdrant · Redis · Traefik · Cloudflared

§ Memory

What Friday-ai is.

Shipped · v1.5.0

Memory is what makes the rest of the stack worth building. Friday-ai stores what an agent decided across sessions: architectural decisions in markdown, dated operational notes, commands that have actually been verified, error fingerprints paired with the fix that resolved them. The next agent reads its own brain before it starts work.

Pre-Friday-ai, every new Claude Code session asked me what we’d decided about JWT key rotation. Now it reads ADR-081 first.

Anything an agent writes lands in a review queue, not the brain directly. I (or another agent) approve or reject before it persists. The audit log records who decided what, when, with what evidence. Channels expose subsections of the brain to scoped consumers, so no agent sees more than its task needs.

Friday-ai: a glowing amber knowledge graph shaped like a brain, floating above layered document records in the memory explorer.

What’s inside

  • Recall: pgvector search backed by a Qdrant rerank
  • Candidates + approval: every write goes through a review queue
  • Channels: multi-agent chat with threaded replies and reactions, scoped by role
  • Guest access: invite-based scoped tokens for outside collaborators
  • Audit log: who decided what, when, with what evidence
  • Vault: encrypted secret surface, tiered by sensitivity

Friday-ai

§ Sessions

What Sandcastle is.

Shipped · v1.6.25

Sessions are throwaway development environments for AI agents. An agent calls one tool, gets a fresh container in seconds, does work, walks away. Fourteen runners cover the projects I actually use: Vite preview servers, Flutter web, Python services, Postgres-backed apps, a few that just need a shell.

Each session has its own friday_net IP, its own Cloudflare Tunnel ingress, and a live preview URL the agent can hand back to me to eyeball. Cleanup is automatic. If a session goes idle, it gets torn down. If a session fails, the next one reuses none of its state.

The point is that an agent can’t accidentally leak state across tasks. Each environment is bounded, scoped, disposable. The MCP surface is one tool call to spin up, one tool call to shut down. Everything else is the agent doing actual work inside.

Sandcastle: an agent spinning up ephemeral container sessions that materialize and dissolve into disposable dev environments.

What’s inside

  • 14 runners: Vite, Next, Flutter web, FastAPI, Django, Go, plain shell, more
  • MCP-native: one tool call up, one tool call down
  • Per-session ingress: friday_net IP + Cloudflare Tunnel + preview URL
  • Auto-cleanup: idle teardown, no state leakage across tasks
  • Codemagic CI: real Android and iOS builds from inside a session
  • CI cache: a persistent build cache, faster repeat builds

Sandcastle

§ Voice

What Friday-nexus will be.

Mid-build · v2.1

Honest section. What’s here is in motion.

Voice is the interface I want, mid-build. Wake-word activated and running. Cross-platform via Tauri 2: desktop on macOS, Windows, and Linux, live-validated on Windows so far. Mobile (iOS, Android) is planned, not started. Speech streams through Pipecat, which routes each turn down one of two paths: a fast path on Gemini for quick replies, and a slow path that hands the turn to a Claude agent able to reach the brain and the session runners over MCP. Either way the answer comes back as speech.

The voice loop runs end to end for real now, not just in fixtures: I say the wake word, Friday answers out loud, and I can talk over her to cut a reply short. Barge-in took a few rounds to get right. The avatar caught up too. What renders today is a reactive orb that pulses with the voice, built in WebGL2. A textured 3D head, a VRM model, is built behind it and waiting on visual validation before it goes on screen. The 3D avatar the name implies is closer than it was, still not shipped.

The name comes from a different fictional AI. I’m not aspiring to Iron Man, just to a stack I can talk to without typing.

Friday-nexus: a glowing translucent voice orb with a faint face forming inside, ringed by concentric audio waveforms.

What’s inside

  • Wake-word: openWakeWord, always-on, runs local
  • Cross-platform: Tauri 2 desktop (macOS, Windows, Linux), live on Windows; mobile planned, not started
  • Orchestrator: Pipecat, streams speech in and out
  • Fast path: Gemini, for quick replies
  • Slow path: a Claude agent reaching the brain and sessions over MCP
  • Avatar (today): reactive WebGL2 orb, voice-driven, live today
  • Avatar (next): textured 3D head (VRM), built, visual validation pending

Friday-nexus

§ How it works

The dogfood loop.

A round of work starts with an agent reading the brain. The agent (usually Claude Code in this house) opens a Sandcastle session for the task, has a fresh container in a few seconds, gets a friday_net IP, a Cloudflare Tunnel ingress, a live preview URL. The agent does the work.

Whatever the agent decided lands in a candidate queue: ADR drafts, dated ops-notes, working commands, error fingerprints with the fix that resolved them. I (or another agent) approve or reject. Approved candidates go to the brain. The session torches itself when done.

Tomorrow’s agent reads what today’s agent decided. The brain compounds. The agents get faster, not because the model got smarter, but because the agent stops re-deriving what we already figured out.

The loop reaches past this website. Friday-ai’s memory also backs Alpha Neural, a private automated-trading system I’m building on the same Unraid server. Every decision it makes records what it assumed and how it turned out, and the next session reads those post-mortems before it proposes anything. It’s a research build, not a signals service, and it isn’t public.

We use Friday to build Friday.

The dogfood loop: how this site gets builtAn agent reads the brain, spawns a Sandcastle session, does the work, and submits candidates (decisions, lessons, working commands). After approval, those candidates return to the brain so the next agent reads them before starting work. The return arc is the load-bearing path: without it, nothing compounds.BRAINFriday-aidecisions · lessonsAGENTClaude Codereads first · then actsSESSIONSandcastleephemeral containerCANDIDATESreview queueapprove · rejectreadsspawnssubmitsWORK HAPPENScode · ADRs · ops-notesAPPROVED · DOGFOODtomorrow’s agent reads what today’s agent decided

§ Architecture

Where this lives.

One physical box at home. One Docker bridge. One tunnel. No public ports. The whole stack reads top-down.

What rides third-party

Most layers are stuff I wrote. The voice pipeline leans on upstream tooling: Friday-nexus streams through Pipecat, an open-source voice-agent orchestrator I didn’t build, and the model work splits between Gemini on the fast path and Claude agents on the slow path. The Postgres + pgvector + Qdrant + Redis layer is upstream too. Everything else is repo code: the brain schema, the candidate-approval queue, the session runners, the tunnel-ingress layout, the deploy pipeline.

Where the details live

80+ architectural decision records are documented across the three implementation repos: zone migration, Mode B JWT pattern, blue/green deploys, the apex-CNAME flattening gotcha, every choice made. The repos are private today; the high-level shapes live on this page, the specifics live in the code. If you’ve read this far and want in, the codev portal is the next gate. See the footer.

§ Built with Friday

What the stack has built.

The three projects above are the substrate. The rest of my work runs on it: a private trading-research system, a 4x4 off-road club app, a voice-and-vision assistant for smart glasses, a multi-agent decision skill, and more, plus a few things I collaborate on.

  • Alpha Neural
  • Ad4x4
  • Friday Vision
  • DayTraders Desk
  • Driven
  • Ze Council
See what the stack has built

§ Build log

What just shipped, in order.

Every meaningful change to this site and the stack behind it, newest first. Operator-curated; the numbers stay concrete.

Latest · Built with Friday page (2026-06-20)

Read the full build log