# JoelClaw

> JoelClaw: My Bespoke OpenClaw-inspired Mac Mini. Learning how personal AI systems work by building one from scratch.

By [Joel Hooks](https://joelclaw.com)

## Posts

- [Agentic AI Optimization: Implementation Checklist](https://joelclaw.com/aaio-implementation-checklist) — An implementation-first checklist for making a website crawlable, citable, and usable by AI agents.
- [Agentic AI Optimization: Implementation Checklist](https://joelclaw.com/aaio-implementation-checklist) — An implementation-first checklist for making a website crawlable, citable, and usable by AI agents.
- [Redis, Dkron, Restate, and Sandboxes](https://joelclaw.com/redis-dkron-restate-and-sandboxes) — The runtime shape behind ADR-0217: Redis for pressure, Dkron for time, Restate for durable execution, and sandboxes for side effects.
- [Dogfooding Story 4: the queue observer earns dry-run, not enforce](https://joelclaw.com/dogfooding-story-4-queue-observer) — The bounded queue observer is real, the dry-run path is earned, and the enforce canary still hasn't earned autonomous mutation.
- [Contributing to pi-mono with a public maintainer corpus](https://joelclaw.com/contributing-to-pi-mono-with-a-public-maintainer-corpus) — I turned one fair pi-mono maintainer pushback into a public search corpus, a pi extension, and a contribution skill so upstream work starts with evidence instead of guesses.
- [AI Job Scheduling on Mac as Local-First Video Infrastructure](https://joelclaw.com/ai-job-scheduling-macos-launchd) — maps directly to joelclaw video-ingest pipeline — same durability pattern but running on Mac hardware instead of k8s
- [Breakable Toys in the Wild: Apprenticeship Patterns and the joelclaw Experiment](https://joelclaw.com/breakable-toys-joelclaw) — A book report on the Breakable Toys chapter from Apprenticeship Patterns, and how joelclaw exemplifies the pattern of deliberate overengineering as a learning practice.
- [Utah and joelclaw: Convergent Architecture](https://joelclaw.com/utah-joelclaw-convergent-architecture) — Dan Farrelly open-sourced Utah and it maps 1:1 to joelclaw. When two systems built independently arrive at the same design, pay attention.
- [The Harness Is a Framework](https://joelclaw.com/the-harness-is-a-framework) — The distinction isn't harness vs framework. It's between frameworks that own your execution model and frameworks that provide scaffolding for yours.
- [The Agent Memory System](https://joelclaw.com/the-memory-system) — A spec for building durable agent memory. Give this page to a coding agent and ask it to build one.
- [JoelClaw is a Claw-like Organism](https://joelclaw.com/joelclaw-is-a-claw-like-organism) — A specimen report on personal AI infrastructure as biological organism. Permission scope as evolutionary axis. 187 architectural decisions deep.
- [The Agent Writing Loop](https://joelclaw.com/the-writing-loop) — A spec for building a feedback-driven AI writing system. Give this page to a coding agent and ask it to build one.
- [Talon: the watchdog that finally bites](https://joelclaw.com/talon-watchdog-that-finally-bites) — I replaced brittle bash watchdogs with a single Rust daemon that supervises the worker, probes the cluster, escalates failures, and actually tells me when things are on fire.
- [The Knowledge Adventure Club Graph](https://joelclaw.com/knowledge-adventure-club-graph) — The people, books, and ideas behind the Knowledge Adventure Club - value paths, portfolio clubs, Understanding by Design, and the D&D metaphor.
- [MineClaw](https://joelclaw.com/mineclaw) — Building system agents is like Minecraft. Blocks, logic, and an open world. The substrate is clay.
- [Build a Voice Agent That Answers the Phone](https://joelclaw.com/build-a-voice-agent-that-answers-the-phone) — A pattern guide for building a self-hosted voice agent with LiveKit, a SIP trunk, and an LLM. Docker Compose or Kubernetes — the shape is the same. Written for agents building on behalf of humans.
- [Plan 9 from Bell Labs: What Rob Pike Built After Unix](https://joelclaw.com/plan-9-pike-everything-is-a-file) — Rob Pike and Ken Thompson spent the late 1980s asking what Unix would look like if you actually followed through on 'everything is a file.' Plan 9 was the answer. It failed commercially and succeeded intellectually — and its ideas now run the infrastructure we all depend on.
- [Propositions as Sessions: What Armstrong Built and Wadler Proved](https://joelclaw.com/propositions-as-sessions-armstrong-wadler) — Joe Armstrong built fault-tolerant systems from intuition about processes and links. Phil Wadler proved that linear logic makes those same communication patterns deadlock-free by construction. I'm building an Elixir agent to test whether any of this matters in practice.
- [Cache Components Patterns Skill for Next.js 16+ Applications](https://joelclaw.com/cache-components-patterns-skill-for-nextjs) — The slots pattern for Next.js cache components — pass ReactNode through cached boundaries to keep static shells fast while streaming personalized UI through Suspense holes.
- [Karpathy Says We're Building "Claws"](https://joelclaw.com/karpathy-claws-as-category) — Andrej Karpathy bought a Mac Mini to tinker with Claws. Simon Willison thinks 'Claw' is becoming a term of art. I've been building one for a week and today I coded while driving.
- [Voice Agent: A Rough Edge Experiment](https://joelclaw.com/voice-agent-deployment-deep-dive) — Building a janky voice interface for my AI assistant. It's not natural, the lag is real, and it needs tons of work — but it beats typing while walking.
- [Extending Pi Coding Agent with Custom Tools and Widgets](https://joelclaw.com/extending-pi-with-custom-tools) — Build a pi extension that sends Inngest events and shows live run progress in a persistent widget. The full walkthrough — from empty file to working tool.
- [The Soul of Erlang Made Me Question Everything](https://joelclaw.com/soul-of-erlang-beam-evaluation) — Saša Jurić's 2019 GOTO talk is a masterclass in fault tolerance. It made me look hard at my current TypeScript + Inngest + Redis + K8s stack and ask: what if BEAM just... does all of this natively?
- [CLI Design for AI Agents](https://joelclaw.com/cli-design-for-ai-agents) — Your AI agent's primary interface isn't a chat window. It's stdout. Here's how to design CLIs that agents can actually use — JSON envelopes, HATEOAS navigation, NDJSON streaming, and zero guesswork.
- [Building a Gateway for Your AI Agent](https://joelclaw.com/building-a-gateway-for-your-ai-agent) — From ephemeral terminal sessions to an always-on gateway. Event routing, heartbeat monitoring, failure detection, and Telegram access — for an AI agent running on your Mac.
- [Self-Hosting Inngest: A Background Task Manager for AI Agents](https://joelclaw.com/self-hosting-inngest-background-tasks) — Durable workflows on your Mac. Each step retries independently. Self-hosted, zero cloud dependencies. Your agent's nervous system.
- [The One Where Joel Deploys Kubernetes... Again](https://joelclaw.com/joel-deploys-k8s) — Three containers and a spike that turned into a production migration. Why I moved my personal AI infrastructure from Docker Compose to k3d — and the gotchas nobody warns you about.
- [How I Built an Observation Pipeline So My AI Remembers Yesterday](https://joelclaw.com/observation-pipeline-persistent-ai-memory) — Every AI session on my machine starts from zero. The system knows who I am but not what happened yesterday. Here's how I'm building an observation pipeline to fix that — stolen shamelessly from four open-source projects and one very clever pattern from Mastra.
- [Riding the Token Wave: Sean Grove at Everything NYC](https://joelclaw.com/riding-the-token-wave-sean-grove) — Notes on Sean Grove's talk at Sanity's Everything NYC 2025 — spec-driven development, the steam engine metaphor for token power, and why everyone becomes a leader when you have a million agents.
- [Playing with AT Protocol as a Data Layer](https://joelclaw.com/at-protocol-as-bedrock) — What happens when you use a social networking protocol as the foundation for a personal AI system? I'm not sure yet, but the identity and trust primitives are fascinating.
- [Building My Own OpenClaw on a Mac Mini](https://joelclaw.com/building-my-own-openclaw) — OpenClaw showed me what a personal AI system could look like. Now I'm building one from scratch to understand how it all works — not to ship a product, but because learning by doing is the only way I know.
- [Inngest is the Nervous System](https://joelclaw.com/inngest-is-the-nervous-system) — Every pipeline in my personal AI system flows through Inngest — video ingest, transcript processing, content enrichment, autonomous coding loops. Here's the architecture and why durable workflows change everything.
- [OpenClaw: Peter Steinberger on Lex Fridman](https://joelclaw.com/openclaw-peter-steinberger-lex-fridman) — Notes on the Lex Fridman interview with Peter Steinberger — the guy who built OpenClaw in three months, hit 180k GitHub stars, and accidentally created the most chaotic open source saga of 2026.

## Architecture Decision Records

- [ADR-0237: Thread-Oriented Conversation Intelligence](https://joelclaw.com/adrs/adr-0237) (shipped)
- [ADR-0236: Realtime Channel Message Indexing](https://joelclaw.com/adrs/adr-0236) (accepted)
- [ADR-0235: Demand-Driven Gateway Events](https://joelclaw.com/adrs/adr-0235) (accepted)
- [ADR-0234: Docs Pipeline v2 — Artifact-Chain Architecture with Workload Queue](https://joelclaw.com/adrs/adr-0234) (accepted)
- [ADR-0233: Consolidated Observability — Slog Provenance, Typesense Service, and ClickHouse](https://joelclaw.com/adrs/adr-0233) (accepted)
- [ADR-0232: Vercel Workflow `world-restate` Adapter](https://joelclaw.com/adrs/adr-0232) (proposed)
- [ADR-0231: Workload Planner — Explicit Stages, DAG Support, File Decomposition](https://joelclaw.com/adrs/adr-0231) (shipped)
- [ADR-0230: Firecracker MicroVM Agent Sandboxes](https://joelclaw.com/adrs/adr-0230) (proposed)
- [ADR-0229: Markdown-Aware Chunking Pipeline](https://joelclaw.com/adrs/adr-0229) (proposed)
- [ADR-0228: Agentic Docs API — Taxonomy Graph, Smart Search, Context Assembly](https://joelclaw.com/adrs/adr-0228) (accepted)
- [ADR-0227: Clawnode — Mesh Client Daemon](https://joelclaw.com/adrs/adr-0227) (proposed)
- [ADR-0226: VIP Contextual Narrative Briefs](https://joelclaw.com/adrs/adr-0226) (accepted) — The VIP email pipeline (`vip-email-received.ts`) produces analytical briefs: thread stats, followed links, binary "needs attention: yes/no." Joel wants **narratives** — briefs that read like an exe…
- [ADR-0225: Conversation Annotation Pipeline](https://joelclaw.com/adrs/adr-0225) (proposed)
- [ADR-0224: Site-Aware Content Routing and Sync Contract](https://joelclaw.com/adrs/adr-0224) (accepted) — ADR-0223 made venue selection explicit at the operator layer.
- [ADR-0223: Multi-Venue Publishing Lifecycle and Canonical Ownership](https://joelclaw.com/adrs/adr-0223) (accepted) — joelclaw grew up with one obvious public venue: `joelclaw.com`.
- [ADR-0222: Prompt-Layer Role Matrix and Session Handles](https://joelclaw.com/adrs/adr-0222) (shipped)
- [ADR-0221: Local Sandbox Isolation Primitives](https://joelclaw.com/adrs/adr-0221) (accepted) — joelclaw already proved the **local host-worker sandbox runner** is a viable phase-1 isolation surface, but the current substrate is still thinner than it should be for serious local parallel work.
- [ADR-0220: pi-mono Artifacts Corpus via Restate + Typesense](https://joelclaw.com/adrs/adr-0220) (accepted) — We keep learning the same upstream lesson with `badlogic/pi-mono`: maintainer voice, review heuristics, issue-first contributor gate, common rejection patterns, release velocity, and package-bounda…
- [ADR-0219: Restate Agent Runtime with Flue-Inspired Proxy Policies](https://joelclaw.com/adrs/adr-0219) (proposed)
- [ADR-0218: Gateway Availability, Lifecycle, and Operator QoL Improvements](https://joelclaw.com/adrs/adr-0218) (accepted) — The gateway has improved quickly, but the last week of actual usage showed the same ugly failure classes repeating:
- [ADR-0217: Agent-First Event-Driven Workflows](https://joelclaw.com/adrs/adr-0217) (accepted)
- [ADR-0216: Dkron Distributed Scheduler for Restate DAG Pipelines](https://joelclaw.com/adrs/adr-0216) (proposed) — The joelclaw system currently uses self-hosted Inngest for both scheduling (cron triggers, event triggers) and durable execution (step functions, retries). Operational data from 20 days of slog ent…
- [ADR-0215: Telegram Callback Routing via Gateway](https://joelclaw.com/adrs/adr-0215) (proposed)
- [ADR-0214: Gateway Redis-Degraded Operation Mode](https://joelclaw.com/adrs/adr-0214) (accepted)
- [ADR-0213: Gateway Session Lifecycle Guards](https://joelclaw.com/adrs/adr-0213) (accepted)
- [ADR-0212: AIStor as Local S3 Runtime](https://joelclaw.com/adrs/adr-0212) (accepted) — ADR-0208 selected MinIO OSS as the local S3-compatible runtime. Upstream MinIO OSS moved to source-only maintenance mode and then no-longer-maintained + archived state. Relying on an archived runti…
- [ADR-0211: Gateway Behavior Control Plane](https://joelclaw.com/adrs/adr-0211) (accepted) — Gateway behavior quality is currently inconsistent in how it is preserved and applied. When behavior is good (tight check-ins, low-noise heartbeats, good delegation cadence), there is no determinis…
- [ADR-0210: Channel Intelligence Pipeline](https://joelclaw.com/adrs/adr-0210) (accepted) — Joel's inbound channels — email, Slack, Discord, iMessage, Telegram — are all signal sources with the same problem: important messages get buried, replies slip, relationships suffer. The system cur…
- [ADR-0209: S3-First Storage Migration](https://joelclaw.com/adrs/adr-0209) (accepted)
- [ADR-0208: MinIO S3 API on NAS-Backed Storage](https://joelclaw.com/adrs/adr-0208) (superseded)
- [ADR-0207: Restate Durable Execution Engine](https://joelclaw.com/adrs/adr-0207) (shipped) — joelclaw currently runs 110+ durable functions on self-hosted Inngest (k8s StatefulSet). It works, but reliability has felt flaky and operational confidence is lower than desired for increasingly c…
- [ADR-0206: Hot Image Agent Development Environments](https://joelclaw.com/adrs/adr-0206) (proposed) — ADR-0205 defines the cloud-native direction for agent execution: isolated, durable, and fast-starting agent runtimes that map local k8s to AWS primitives.
- [ADR-0205: Cloud-Native Agent Execution Vision](https://joelclaw.com/adrs/adr-0205) (proposed) — joelclaw currently runs on a single Mac Mini (M4 Pro, 64GB). Agent execution (Codex, Claude, and pi sessions) happens as local host processes with broad machine access. ADR-0060 introduces a swarm …
- [ADR-0204: Seamless Agent Context](https://joelclaw.com/adrs/adr-0204) (shipped) — joelclaw has a capable memory infrastructure: Typesense hybrid search (keyword + vector) with 103+ observations, system knowledge collections (ADRs, skills, insights), a write pipeline (observe → c…
- [ADR-0203: Compaction Recovery Pipeline](https://joelclaw.com/adrs/adr-0203) (shipped) — Compaction is the single largest source of context loss in joelclaw sessions. When pi compacts, the LLM summarizes the conversation into ~2K tokens, discarding conversational nuance, debugging insi…
- [ADR-0202: Turn-Level Mandatory Knowledge Writes (Force/Enforce/Verify)](https://joelclaw.com/adrs/adr-0202) (shipped)
- [ADR-0201: Workflow Runtime Deployment Strategy + Runtime Alternatives Research Plan](https://joelclaw.com/adrs/adr-0201) (proposed)
- [ADR-0200: Force/Enforce/Verify (F/E/V) — Standard Pattern for Cross-Cutting Concerns](https://joelclaw.com/adrs/adr-0200) (accepted)
- [ADR-0199: Close the Loop — Reflect Brain, Failed Targets, and Mise Brief](https://joelclaw.com/adrs/adr-0199) (accepted) — joelclaw has extensive infrastructure for agent loops (Inngest, Redis, OTEL, Typesense) and well-specified designs for post-loop learning (ADR-0008), memory (ADR-0021), and friction auto-fix (ADR-0…
- [ADR-0198: Adaptive Heartbeat — Check Cheaply, Act Rarely](https://joelclaw.com/adrs/adr-0198) (accepted)
- [ADR-0197: Sub-Agent Delegation via step.invoke()](https://joelclaw.com/adrs/adr-0197) (accepted)
- [ADR-0196: Cancel-on-New-Message for Gateway](https://joelclaw.com/adrs/adr-0196) (accepted)
- [ADR-0195: Mandatory Memory Participation Contract](https://joelclaw.com/adrs/adr-0195) (shipped)
- [ADR-0194: Inngest Runtime SQLite Forensics and Stale-Run Sweep Contract](https://joelclaw.com/adrs/adr-0194) (shipped)
- [ADR-0193: Task Triage Output Contract](https://joelclaw.com/adrs/adr-0193) (accepted)
- [ADR-0192: Recall Rewrite Reliability Contract](https://joelclaw.com/adrs/adr-0192) (accepted)
- [ADR-0191: No-Op Inference Circuit Breakers](https://joelclaw.com/adrs/adr-0191) (accepted)
- [ADR-0190: Memory Yield Contract](https://joelclaw.com/adrs/adr-0190) (accepted)
- [ADR-0189: Gateway Guardrails](https://joelclaw.com/adrs/adr-0189) (accepted)
- [ADR-0188: Gateway Channel Muting and Known Issues](https://joelclaw.com/adrs/adr-0188) (shipped)
- [ADR-0187: NAS Degradation Local/Temp/Queue Fallback Contract](https://joelclaw.com/adrs/adr-0187) (accepted)
- [ADR-0186: Persisted Q&A Context Resources and Human-Gated Improvement Loop](https://joelclaw.com/adrs/adr-0186) (proposed)
- [ADR-0185: Session-Scoped Webhook Subscriptions with NDJSON Streaming](https://joelclaw.com/adrs/adr-0185) (shipped)
- [ADR-0184: Node-0 to Fleet — Platform Abstraction and Multi-Node Readiness](https://joelclaw.com/adrs/adr-0184) (superseded)
- [ADR-0183: ADR Priority Rubric and Daily Ranking](https://joelclaw.com/adrs/adr-0183) (accepted)
- [ADR-0182: Node-0 Fleet Contract and Localhost Resilience](https://joelclaw.com/adrs/adr-0182) (shipped)
- [ADR-0181: AT Protocol Mail Adapter for Capability Port](https://joelclaw.com/adrs/adr-0181) (proposed)
- [ADR-0180: Configurable Sub-Agent Roster](https://joelclaw.com/adrs/adr-0180) (shipped)
- [ADR-0179: Automated Skill Gardening](https://joelclaw.com/adrs/adr-0179) (shipped)
- [ADR-0178: LiveKit Voice Worker Durability Contract](https://joelclaw.com/adrs/adr-0178) (accepted)
- [ADR-0177: Secret Redaction & Network Intercept](https://joelclaw.com/adrs/adr-0177) (proposed)
- [ADR-0176: Transcript Indexing in Typesense](https://joelclaw.com/adrs/adr-0176) (shipped)
- [ADR-0175: JoelClaw Design System — Responsive Layout & Component Architecture](https://joelclaw.com/adrs/adr-0175) (shipped)
- [ADR-0174: Vault Command Tree + ADR Audit CLI](https://joelclaw.com/adrs/adr-0174) (shipped)
- [ADR-0173: ADR Number Collision Remediation](https://joelclaw.com/adrs/adr-0173) (shipped)
- [ADR-0172: Agent Mail via MCP Agent Mail](https://joelclaw.com/adrs/adr-0172) (shipped)
- [ADR-0171: Custom System Prompt Architecture](https://joelclaw.com/adrs/adr-0171) (shipped)
- [ADR-0170: Agent Role System (ROLE.md)](https://joelclaw.com/adrs/adr-0170) (shipped)
- [ADR-0169: CLI Capability Interface Contracts](https://joelclaw.com/adrs/adr-0169) (shipped)
- [ADR-0168: Convex-Canonical Content Lifecycle (No Repo MDX Sources)](https://joelclaw.com/adrs/adr-0168) (shipped)
- [ADR-0167: Codex Sandbox + CWD Policy](https://joelclaw.com/adrs/adr-0167) (shipped)
- [ADR-0166: Documentation Gardener System](https://joelclaw.com/adrs/adr-0166) (shipped)
- [ADR-0165: Taxonomy-Aware Skill Retrieval](https://joelclaw.com/adrs/adr-0165) (accepted)
- [ADR-0164: Mandatory Taxonomy Classification](https://joelclaw.com/adrs/adr-0164) (accepted)
- [ADR-0163: Adaptive Prompt Architecture](https://joelclaw.com/adrs/adr-0163) (shipped)
- [ADR-0162: Gateway Reactions, Replies & Social Channel Configuration](https://joelclaw.com/adrs/adr-0162) (accepted)
- [ADR-0161: Voice Agent Interview Mode](https://joelclaw.com/adrs/adr-0161) (accepted)
- [ADR-0160: Telegram Streaming UX](https://joelclaw.com/adrs/adr-0160) (shipped)
- [ADR-0159: Talon — Infrastructure Watchdog Daemon](https://joelclaw.com/adrs/adr-0159) (shipped)
- [ADR-0158: Compiled Worker Supervisor Binary](https://joelclaw.com/adrs/adr-0158) (superseded)
- [ADR-0157: Agent Lifecycle CLI — `joelclaw agent`](https://joelclaw.com/adrs/adr-0157) (accepted)
- [ADR-0156: Graceful Worker Restart — Zero-Downtime Deploy](https://joelclaw.com/adrs/adr-0156) (superseded)
- [ADR-0155: Three-Stage Story Pipeline: Implement → Prove → Judge](https://joelclaw.com/adrs/adr-0155) (shipped)
- [ADR-0154: Article Content Migration — MDX to Convex ContentResource](https://joelclaw.com/adrs/adr-0154) (superseded)
- [ADR-0153: Docs REST HTTP API for Agent Access (Typesense-backed)](https://joelclaw.com/adrs/adr-0153) (shipped)
- [ADR-0152: Dream Process — Agent Self-Reflection Loop](https://joelclaw.com/adrs/adr-0152) (proposed) — The system currently has two feedback mechanisms:
- [ADR-0151: VIP Contact Enrichment & Monitoring](https://joelclaw.com/adrs/adr-0151) (superseded)
- [ADR-0150: Discovery Enrichment Pipeline](https://joelclaw.com/adrs/adr-0150) (shipped)
- [ADR-0149: Self-Hosted Convex Backend](https://joelclaw.com/adrs/adr-0149) (superseded)
- [ADR-0148: Kubernetes Cluster Resilience Policy](https://joelclaw.com/adrs/adr-0148) (accepted)
- [ADR-0147: Named Agent Profiles for Specialized Inference](https://joelclaw.com/adrs/adr-0147) (shipped)
- [ADR-0146: Inference Cost Monitoring and Control](https://joelclaw.com/adrs/adr-0146) (shipped)
- [ADR-0145: Channel Message Triage Router](https://joelclaw.com/adrs/adr-0145) (accepted)
- [ADR-0144: Gateway Hexagonal Architecture (Ports & Adapters)](https://joelclaw.com/adrs/adr-0144) (shipped)
- [ADR-0143: AST-Based Message Formatting via unified/remark](https://joelclaw.com/adrs/adr-0143) (shipped)
- [ADR-0142: Dynamic Inference Provider Scheduling](https://joelclaw.com/adrs/adr-0142) (accepted)
- [ADR-0141: Gateway context overflow auto-recovery with compression summary](https://joelclaw.com/adrs/adr-0141) (shipped) — On 2026-02-25, the gateway daemon became completely unresponsive via Telegram for hours. Every inbound message was received, persisted to the Redis stream, and "resolved" (acked) — but the actual A…
- [ADR-0140: One place to pick and trace LLM models](https://joelclaw.com/adrs/adr-0140) (shipped) — joelclaw currently routes LLM calls through multiple incompatible paths:
- [ADR-0139: SDK Reachability Investigator (Historical, Superseded)](https://joelclaw.com/adrs/adr-0139) (superseded)
- [ADR-0138: Self-Healing NAS Backup Orchestrator](https://joelclaw.com/adrs/adr-0138) (shipped)
- [ADR-0137: Codex Prompting Skill Router for Intent-to-Tool Delegation](https://joelclaw.com/adrs/adr-0137) (shipped)
- [ADR-0136: Integrate 20-Year Twitter Archive as a Typesense-Backed Corpus](https://joelclaw.com/adrs/adr-0136) (proposed)
- [ADR-0135: Pi Session Langfuse Instrumentation](https://joelclaw.com/adrs/adr-0135) (superseded)
- [ADR-0134: System Sleep Mode](https://joelclaw.com/adrs/adr-0134) (shipped)
- [ADR-0133: Contact Enrichment Pipeline](https://joelclaw.com/adrs/adr-0133) (shipped)
- [ADR-0132: VIP DM Escalated Handling](https://joelclaw.com/adrs/adr-0132) (superseded)
- [ADR-0131: Unified Channel Intelligence Pipeline](https://joelclaw.com/adrs/adr-0131) (shipped)
- [ADR-0130: Slack Channel Integration](https://joelclaw.com/adrs/adr-0130) (shipped)
- [ADR-0129: Automated X Posting Strategy](https://joelclaw.com/adrs/adr-0129) (shipped)
- [ADR-0128: Subagent Delegation & Chain Execution for Gateway](https://joelclaw.com/adrs/adr-0128) (superseded)
- [ADR-0127: Feed Subscriptions & Resource Monitoring](https://joelclaw.com/adrs/adr-0127) (shipped)
- [ADR-0126: Discord Rich UI Component Library](https://joelclaw.com/adrs/adr-0126) (shipped)
- [ADR-0125: Channel-Aware Prompt Injection & Platform Formatting](https://joelclaw.com/adrs/adr-0125) (shipped)
- [ADR-0124: Discord Thread-Forked Sessions](https://joelclaw.com/adrs/adr-0124) (proposed)
- [ADR-0123: Request-Scoped Channel Routing](https://joelclaw.com/adrs/adr-0123) (shipped)
- [ADR-0122: Discord Rich & Interactive Messaging via discordjs-react](https://joelclaw.com/adrs/adr-0122) (accepted)
- [ADR-0121: iMessage Channel via imsg-rpc FDA Sidecar on macOS](https://joelclaw.com/adrs/adr-0121) (shipped)
- [ADR-0120: Discord Thread-Based Conversations](https://joelclaw.com/adrs/adr-0120) (shipped)
- [ADR-0119: X/Twitter CLI Integration](https://joelclaw.com/adrs/adr-0119) (shipped)
- [ADR-0118: Koko Shadow Executor Mode](https://joelclaw.com/adrs/adr-0118) (superseded)
- [ADR-0117: Koko First Workloads](https://joelclaw.com/adrs/adr-0117) (superseded)
- [ADR-0116: Koko Redis Bridge Protocol](https://joelclaw.com/adrs/adr-0116) (superseded)
- [ADR-0115: Koko — Elixir Agent Project Charter](https://joelclaw.com/adrs/adr-0115) (superseded)
- [ADR-0114: Elixir/BEAM/Jido Migration — Full Architecture Evaluation](https://joelclaw.com/adrs/adr-0114) (superseded)
- [ADR-0113: Standardize page-level status indicator styling](https://joelclaw.com/adrs/adr-0113) (shipped)
- [ADR-0112: Unified Caching Layer](https://joelclaw.com/adrs/adr-0112) (proposed)
- [ADR-0111: Channel Routing Engine (Conversations + Events)](https://joelclaw.com/adrs/adr-0111) (superseded)
- [ADR-0110: Agent-Secrets Lease Deduplication & OTEL Integration](https://joelclaw.com/adrs/adr-0110) (accepted)
- [ADR-0109: System-Wide Taxonomy + Concept Contract (No Tag Soup)](https://joelclaw.com/adrs/adr-0109) (accepted)
- [ADR-0108: Next.js Best Practices Audit](https://joelclaw.com/adrs/adr-0108) (shipped)
- [ADR-0107: ADR Content Migration — Filesystem to Convex Read Projection](https://joelclaw.com/adrs/adr-0107) (superseded)
- [ADR-0106: Content Review Pipeline — Inline Feedback & Agent Update Loop](https://joelclaw.com/adrs/adr-0106) (accepted)
- [ADR-0105: joelclaw PDF Brain — Document Library as First-Class Network Utility](https://joelclaw.com/adrs/adr-0105) (superseded)
- [ADR-0104: Gateway Priority Message Queue](https://joelclaw.com/adrs/adr-0104) (shipped)
- [ADR-0103: Gateway Session Isolation — No Background Work in the Pi Session](https://joelclaw.com/adrs/adr-0103) (shipped)
- [ADR-0102: Scheduled Prompt Tasks](https://joelclaw.com/adrs/adr-0102) (accepted)
- [ADR-0101: Langfuse as an LLM-Only Observability Plane](https://joelclaw.com/adrs/adr-0101) (superseded)
- [ADR-0100: Memory Dual Search (Vector + Graph) Activation Plan](https://joelclaw.com/adrs/adr-0100) (proposed)
- [ADR-0099: Memory Knowledge-Graph Substrate (Deferred, Activation-Gated)](https://joelclaw.com/adrs/adr-0099) (proposed)
- [ADR-0098: Memory Write Gate V2 Calibration and Governance](https://joelclaw.com/adrs/adr-0098) (accepted)
- [ADR-0097: Forward Triggers for Time-Based Memory Preload](https://joelclaw.com/adrs/adr-0097) (proposed)
- [ADR-0096: Budget-Aware Memory Retrieval Policy](https://joelclaw.com/adrs/adr-0096) (accepted)
- [ADR-0095: Typesense-Native Memory Categories (SKOS-Lite V1)](https://joelclaw.com/adrs/adr-0095) (shipped)
- [ADR-0094: Memory Write Gate V1 (Soft, LLM-First, Three-State)](https://joelclaw.com/adrs/adr-0094) (shipped)
- [ADR-0093: Agent-Friendly Navigation Contract (AGENT-FIRST 30)](https://joelclaw.com/adrs/adr-0093) (shipped)
- [ADR-0092: Unified pi-infer Abstraction with Model Fallback](https://joelclaw.com/adrs/adr-0092) (superseded)
- [ADR-0091: Gateway Model Fallback](https://joelclaw.com/adrs/adr-0091) (shipped)
- [ADR-0090: Autonomous O11y Triage Loop](https://joelclaw.com/adrs/adr-0090) (shipped)
- [ADR-0089: Single-Source Inngest Worker Deployment (Retire Dual-Clone Sync)](https://joelclaw.com/adrs/adr-0089) (shipped)
- [ADR-0088: NAS-Backed Storage Tiering](https://joelclaw.com/adrs/adr-0088) (shipped)
- [ADR-0087: Full-Stack Observability + JoelClaw Design System](https://joelclaw.com/adrs/adr-0087) (shipped)
- [ADR-0086: Telegram Slash Commands, Channel-Aware Formatting, and Rich Interactions](https://joelclaw.com/adrs/adr-0086) (shipped)
- [ADR-0085: Data-Driven Network Page via Convex](https://joelclaw.com/adrs/adr-0085) (shipped)
- [ADR-0084: Unified Content Resource Schema (Convex)](https://joelclaw.com/adrs/adr-0084) (shipped)
- [ADR-0083: Tailscale Kubernetes Operator for Service Mesh](https://joelclaw.com/adrs/adr-0083) (superseded)
- [ADR-0082: Typesense as Unified Search Layer for the JoelClaw Network](https://joelclaw.com/adrs/adr-0082) (shipped)
- [ADR-0081: Vault CLI & Agent Tool Access](https://joelclaw.com/adrs/adr-0081) (shipped)
- [ADR-0080: Vault File Access from Voice Mode](https://joelclaw.com/adrs/adr-0080) (shipped)
- [ADR-0079: Telnyx Voice & SMS Notification Channel](https://joelclaw.com/adrs/adr-0079) (shipped)
- [ADR-0078: Opus Token Reduction Across joelclaw](https://joelclaw.com/adrs/adr-0078) (shipped)
- [ADR-0077: Memory System — Next Phase](https://joelclaw.com/adrs/adr-0077) (shipped)
- [ADR-0075: JoelClaw Web Auth & Dashboard — Better Auth + Convex](https://joelclaw.com/adrs/adr-0075) (accepted)
- [ADR-0071: Notification Triage Classes](https://joelclaw.com/adrs/adr-0071) (shipped)
- [ADR-0070: Telegram Rich Notifications with Inline Keyboards](https://joelclaw.com/adrs/adr-0070) (shipped)
- [ADR-0069: Gateway Proactive Telegram Notifications](https://joelclaw.com/adrs/adr-0069) (shipped)
- [ADR-0068: Memory Proposal Auto-Triage Pipeline](https://joelclaw.com/adrs/adr-0068) (shipped)
- [ADR-0067: Integrate Community Skill Patterns](https://joelclaw.com/adrs/adr-0067) (shipped)
- [ADR-0066: Inngest Monitor Pi Extension](https://joelclaw.com/adrs/adr-0066) (shipped)
- [ADR-0065: Friction auto-fix — bias towards action](https://joelclaw.com/adrs/adr-0065) (shipped) — ADR-0021 Phase 4 (Friction) detects recurring friction patterns from Qdrant observations and creates Todoist tasks for Joel to review. The pipeline works — 10 patterns detected on first successful …
- [ADR-0064: Evaluate Elixir/BEAM as joelclaw Backbone](https://joelclaw.com/adrs/adr-0064) (superseded)
- [ADR-0063: Client-Side Search with Pagefind](https://joelclaw.com/adrs/adr-0063) (shipped) — joelclaw.com has ~80 pages of content (10 articles, 63 ADRs, 7 discoveries) with no search. Users can only browse by section (Writing, Cool, ADRs, Network) or scroll through listings. As the site g…
- [ADR-0062: Heartbeat-Driven Task Triage](https://joelclaw.com/adrs/adr-0062) (shipped)
- [ADR-0061: pi-tools Enhancement Cycle — Commit Tool, Web Extractors, MCQ](https://joelclaw.com/adrs/adr-0061) (rejected) — After evaluating oh-my-pi (`can1357/oh-my-pi`) as a potential replacement for stock pi, we decided to stay on stock pi and cherry-pick patterns into pi-tools (see ADR-0059 for LSP, ADR-0060 for swa…
- [ADR-0060: Inngest-Backed Swarm/DAG Multi-Agent Orchestration](https://joelclaw.com/adrs/adr-0060) (proposed) — `ralph-loop` executes PRD stories **sequentially** — one codex session per story, linear chain. This works for implementation loops but can't express:
- [ADR-0059: Multi-Language LSP Extension for pi-tools](https://joelclaw.com/adrs/adr-0059) (rejected) — The current `ts-check` extension in pi-tools is unreliable. It spawns a tsgo LSP process per project root but frequently fails to return useful diagnostics, hover info times out, and the JSON-RPC l…
- [ADR-0058: 58. Streamed NDJSON Protocol for Agent-First CLIs](https://joelclaw.com/adrs/adr-0058) (shipped)
- [ADR-0057: Skill Pack Distribution — Install from Source](https://joelclaw.com/adrs/adr-0057) (shipped)
- [ADR-0056: Personal Relationship Management — People as First-Class Entities](https://joelclaw.com/adrs/adr-0056) (superseded)
- [ADR-0055: Granola Meeting Intelligence Pipeline](https://joelclaw.com/adrs/adr-0055) (shipped)
- [ADR-0054: joelclaw Native App — iPhone, Watch, CarPlay](https://joelclaw.com/adrs/adr-0054) (rejected)
- [ADR-0053: Event-emitter prompts and the Agency triage principle](https://joelclaw.com/adrs/adr-0053) (shipped) — The gateway extension delivers Inngest events to the pi session as user messages. Previously, ALL events were wrapped in a generic template:
- [ADR-0052: Email Port — Hexagonal Architecture with Dual Adapters](https://joelclaw.com/adrs/adr-0052) (shipped)
- [ADR-0051: Tailscale Funnel as Public Ingress for Webhooks](https://joelclaw.com/adrs/adr-0051) (shipped)
- [ADR-0050: Gateway session resume via fixed file path and codex model pinning](https://joelclaw.com/adrs/adr-0050) (shipped) — Two operational issues were discovered simultaneously:
- [ADR-0049: Gateway TUI via WebSocket](https://joelclaw.com/adrs/adr-0049) (shipped)
- [ADR-0048: Webhook Gateway for External Service Integration](https://joelclaw.com/adrs/adr-0048) (shipped)
- [ADR-0047: Todoist as Async Conversation Channel](https://joelclaw.com/adrs/adr-0047) (shipped)
- [ADR-0046: TypeScript Things CLI via joelclaw Tasks Subcommand](https://joelclaw.com/adrs/adr-0046) (rejected)
- [ADR-0045: Task Management via Ports and Adapters](https://joelclaw.com/adrs/adr-0045) (shipped)
- [ADR-0044: Private-First PDS with Bento Bridge](https://joelclaw.com/adrs/adr-0044) (shipped)
- [ADR-0043: Agent Voice Conversations via Self-Hosted LiveKit](https://joelclaw.com/adrs/adr-0043) (shipped)
- [ADR-0042: Telegram Rich Replies, Outbound Media, and Agent Voice](https://joelclaw.com/adrs/adr-0042) (shipped)
- [ADR-0041: First-Class Media Handling from Connected Channels](https://joelclaw.com/adrs/adr-0041) (accepted)
- [ADR-0040: Google Workspace Access via gogcli](https://joelclaw.com/adrs/adr-0040) (shipped)
- [ADR-0039: Self-host Convex as the real-time data layer for joelclaw.com](https://joelclaw.com/adrs/adr-0039) (shipped) — joelclaw.com is a statically-generated Next.js 16 site with MDX content. It has no database, no auth, no real-time features. Joel wants to add:
- [ADR-0038: Embed pi as a library in a joelclaw gateway daemon](https://joelclaw.com/adrs/adr-0038) (shipped) — The current central gateway session (ADR-0036) runs pi inside tmux, managed by launchd. A gateway extension injects events via `sendUserMessage()`. This works for Redis-based notifications but has …
- [ADR-0037: Layered watchdog for gateway heartbeat failure detection](https://joelclaw.com/adrs/adr-0037) (shipped) — The central gateway session (ADR-0036) receives heartbeats from an Inngest cron every 15 minutes. But if Inngest itself goes down — the server crashes, the worker dies, Redis becomes unreachable, o…
- [ADR-0036: Run central gateway session as a launchd-managed daemon](https://joelclaw.com/adrs/adr-0036) (superseded) — ADR-0035 established a central + satellite routing model where one "gateway" session receives all heartbeats and system events. But that session needs to actually exist — it must be always-on, surv…
- [ADR-0035: Central + satellite session routing for gateway events](https://joelclaw.com/adrs/adr-0035) (shipped) — ADR-0018 established a Redis event bridge between Inngest functions and pi sessions. The initial implementation pushed every event to a single shared `joelclaw:events:main` list. This worked for on…
- [ADR-0034: Flux Operator for GitOps cluster management](https://joelclaw.com/adrs/adr-0034) (superseded) — Cluster state is currently applied manually via `kubectl apply -f`. The k8s manifests live in `~/Code/joelhooks/joelclaw/k8s/` and are applied by hand or by agents running kubectl commands. There's…
- [ADR-0033: VictoriaMetrics + Grafana monitoring stack for Kubernetes](https://joelclaw.com/adrs/adr-0033) (superseded) — The Talos cluster has no monitoring. We observe the system via `kubectl get pods`, `talosctl dashboard`, and application logs. There's no metrics collection, no dashboards, no alerting.
- [ADR-0032: Kubernetes persistent storage: Ceph Rook vs SeaweedFS vs local-path](https://joelclaw.com/adrs/adr-0032) (superseded) — The Talos cluster currently uses **local-path-provisioner** for PVCs. This was added manually (ADR-0029) because Talos doesn't bundle a storage provisioner. It works: Redis, Qdrant, and Inngest all…
- [ADR-0031: Adopt Cilium Gateway API instead of Ingress](https://joelclaw.com/adrs/adr-0031) (superseded) — The cluster currently uses NodePort services directly — no Ingress controller at all. If/when we need proper HTTP routing (TLS termination, host-based routing, path routing), the traditional answer…
- [ADR-0030: Replace Flannel + kube-proxy with Cilium](https://joelclaw.com/adrs/adr-0030) (superseded) — The Talos cluster (`joelclaw`) currently runs with the default CNI: **Flannel** + **kube-proxy**. This is the simplest path — Talos bundles Flannel out of the box and it works with zero config.
- [ADR-0029: Replace Docker Desktop with Colima + Talos for container runtime](https://joelclaw.com/adrs/adr-0029) (shipped) — `panda` (Mac Mini M4 Pro, 64 GB) runs 24/7 as a headless server managed via Tailscale SSH. The container runtime powers the k3d cluster (`joelclaw`), which runs Redis, Qdrant, and Inngest as Kubern…
- [ADR-0028: Align Inngest Rig with SDK Best Practices](https://joelclaw.com/adrs/adr-0028) (shipped)
- [ADR-0027: Video Content Pipeline Expansion — Clip Segmentation + Content Repurposing](https://joelclaw.com/adrs/adr-0027) (shipped) — joelclaw's video pipeline currently handles **ingest only**: download → transcribe → enrich vault note. The output is a single vault note with a wall-of-text transcript and an AI-generated summary.…
- [ADR-0026: Background agents: async task dispatch via Inngest with file inbox notifications](https://joelclaw.com/adrs/adr-0026) (superseded)
- [ADR-0025: Network architecture: start with what works, grow as needed](https://joelclaw.com/adrs/adr-0025) (shipped)
- [ADR-0024: Taxonomy-enhanced session search with SKOS concept layer](https://joelclaw.com/adrs/adr-0024) (superseded) — 590 agent sessions were generated in 48 hours (37 Pi, 381 Claude Code, 172 Codex). These contain every decision, debugging insight, architecture discussion, and configuration change that happened o…
- [ADR-0023: Docker Sandbox for Agent Loops](https://joelclaw.com/adrs/adr-0023) (shipped) — Agent loop iterations (IMPLEMENTOR, TEST-WRITER) currently spawn `codex exec` and `claude -p` directly on the host machine via `Bun.spawn()`. This means:
- [ADR-0022: Adopt webhook-to-system-event pipeline for external signal ingestion](https://joelclaw.com/adrs/adr-0022) (superseded) — ADR-0018 established the Redis event bridge as the inbound path for system events: external signals → Redis list → pi extension drains → agent acts. It defined the schema (`SystemEvent`), the keys …
- [ADR-0021: Adopt comprehensive agent memory system](https://joelclaw.com/adrs/adr-0021) (shipped) — Agents on this system lose conversational nuance between sessions. Memory is the critical missing capability — without it, every session starts from zero, hard-won debugging insights evaporate, use…
- [ADR-0020: Observational memory pipeline](https://joelclaw.com/adrs/adr-0020) (superseded) — Agents on this system lose conversational nuance between sessions. ADR-0014 established the memory workspace (`MEMORY.md` + daily logs), and the session-lifecycle pi extension (pi-tools v0.3.0) aut…
- [ADR-0019: Rename events from imperative commands to past-tense notifications](https://joelclaw.com/adrs/adr-0019) (shipped) — The system-bus event names are a mix of two styles:
- [ADR-0018: Adopt pi-native gateway pattern with Redis event bridge for system orchestration](https://joelclaw.com/adrs/adr-0018) (shipped) — ADR-0010 established the need for a central system loop gateway — an autonomous orchestrator that runs SENSE→ORIENT→DECIDE→ACT→LEARN and chose a hybrid event-driven + cron heartbeat approach. It le…
- [ADR-0017: Parallel Story and Subtask Execution in Agent Loops](https://joelclaw.com/adrs/adr-0017) (superseded) — The current agent loop (ADR-0015) is rigidly sequential: one story at a time, one agent per step, pipeline flow. The planner picks the next unpassed story, the chain runs plan→test→implement→review…
- [ADR-0016: Idempotency Guards for Loop Event Chain](https://joelclaw.com/adrs/adr-0016) (shipped) — The agent loop event chain (ADR-0015) has no protection against parallel execution. Duplicate `agent/loop.start` events — from accidental double-fires, CLI retries, or stale Inngest replays — creat…
- [ADR-0015: Loop architecture: TDD flow with separated roles](https://joelclaw.com/adrs/adr-0015) (shipped) — The current agent loop (ADR-0005) has a backwards flow: implement → write tests → check results. This causes systemic failures:
- [ADR-0014: Agent memory workspace](https://joelclaw.com/adrs/adr-0014) (superseded) — Agents lose all context between sessions. Shared instructions (`AGENTS.md`) tell agents what to do but not what happened. Without persistent memory files, every session starts from zero.
- [ADR-0013: LLM-powered judge evaluation](https://joelclaw.com/adrs/adr-0013) (superseded) — The judge function (ADR-0005) makes pass/fail decisions based solely on whether typecheck + lint + tests succeed. It has no understanding of whether the implementation actually satisfies the accept…
- [ADR-0012: Planner generates PRD from goal](https://joelclaw.com/adrs/adr-0012) (shipped) — The agent loop requires a hand-crafted `prd.json` before it can start. Writing PRDs is the bottleneck — each one requires understanding the codebase, scoping stories to be small enough for a single…
- [ADR-0011: Redis-Backed PRD State for Agent Loops](https://joelclaw.com/adrs/adr-0011) (shipped) — The agent loop pipeline (ADR-0005) runs a PLANNER → IMPLEMENTOR → REVIEWER → JUDGE cycle across stories defined in a PRD. Originally, loop state — which stories have passed, which are being retried…
- [ADR-0010: Establish a central system loop gateway for autonomous orchestration](https://joelclaw.com/adrs/adr-0010) (superseded) — The system already has meaningful execution capability, but orchestration is still manual. ADR-0005 established durable coding loops with role-based execution and event-driven handoffs. ADR-0007 im…
- [ADR-0009: 9. Rename `igs` CLI to `joelclaw`](https://joelclaw.com/adrs/adr-0009) (shipped)
- [ADR-0008: Add post-loop retrospective for skill evolution and memory ingestion](https://joelclaw.com/adrs/adr-0008) (shipped) — ADR-0005 established the durable PLANNER → IMPLEMENTOR → REVIEWER → JUDGE loop. ADR-0007 improved loop execution quality (Docker isolation, duration tracking, stricter controls). The system can now…
- [ADR-0007: Upgrade durable coding loops to v2 with Docker-isolated execution and stronger loop controls](https://joelclaw.com/adrs/adr-0007) (superseded) — ADR-0005 established the durable PLANNER → IMPLEMENTOR → REVIEWER → JUDGE loop on Inngest and was implemented on 2026-02-14. Initial build + smoke test validated the architecture but exposed practi…
- [ADR-0006: Adopt Prometheus + Grafana for system observability](https://joelclaw.com/adrs/adr-0006) (superseded) — The Mac Mini runs 3 Docker containers (Inngest, Qdrant, Redis), a Bun worker (system-bus), and Caddy — all managed via Docker Compose and launchd. AGENTS.md principle #2 states **"Observability ove…
- [ADR-0005: Adopt Inngest multi-agent pipeline for durable autonomous coding loops](https://joelclaw.com/adrs/adr-0005) (shipped) — joelclaw needs the ability to execute long-running autonomous coding workloads — send an event, go AFK, wake up to stacked PRs with every iteration traceable. No durable autonomous coding loop exis…
- [ADR-0004: 0004 — AT Protocol as Bedrock](https://joelclaw.com/adrs/adr-0004) (shipped)
- [ADR-0003: Build joelclaw instead of deploying OpenClaw](https://joelclaw.com/adrs/adr-0003) (shipped) — ADR-0002 assumed OpenClaw would be the orchestration layer for the personal assistant system. After 6 sessions of infrastructure work, the system has evolved beyond what OpenClaw provides in severa…
- [ADR-0002: Adopt PARA vault + OpenClaw orchestration for always-on personal assistant](https://joelclaw.com/adrs/adr-0002) (superseded) — A Mac Mini is being set up as a prototype always-on AI personal assistant/copilot/life management system. The machine needs a unified architecture that connects:
- [ADR-0001: Adopt architecture decision records](https://joelclaw.com/adrs/adr-0001) (shipped) — Architecture decisions in this project are made implicitly — through code, conversations, and tribal knowledge. When a new contributor (human or AI agent) joins the codebase, there is no record of …

## Feeds

- [RSS Feed](https://joelclaw.com/feed.xml)
- [Sitemap XML](https://joelclaw.com/sitemap.xml)
- [Sitemap Markdown](https://joelclaw.com/sitemap.md)

## Agent Markdown Exports

Append `.md` for agent markdown with preamble + implementation details:

- [Agentic AI Optimization: Implementation Checklist](https://joelclaw.com/aaio-implementation-checklist.md)
- [Agentic AI Optimization: Implementation Checklist](https://joelclaw.com/aaio-implementation-checklist.md)
- [Redis, Dkron, Restate, and Sandboxes](https://joelclaw.com/redis-dkron-restate-and-sandboxes.md)
- [Dogfooding Story 4: the queue observer earns dry-run, not enforce](https://joelclaw.com/dogfooding-story-4-queue-observer.md)
- [Contributing to pi-mono with a public maintainer corpus](https://joelclaw.com/contributing-to-pi-mono-with-a-public-maintainer-corpus.md)
- [AI Job Scheduling on Mac as Local-First Video Infrastructure](https://joelclaw.com/ai-job-scheduling-macos-launchd.md)
- [Breakable Toys in the Wild: Apprenticeship Patterns and the joelclaw Experiment](https://joelclaw.com/breakable-toys-joelclaw.md)
- [Utah and joelclaw: Convergent Architecture](https://joelclaw.com/utah-joelclaw-convergent-architecture.md)
- [The Harness Is a Framework](https://joelclaw.com/the-harness-is-a-framework.md)
- [The Agent Memory System](https://joelclaw.com/the-memory-system.md)
- [JoelClaw is a Claw-like Organism](https://joelclaw.com/joelclaw-is-a-claw-like-organism.md)
- [The Agent Writing Loop](https://joelclaw.com/the-writing-loop.md)
- [Talon: the watchdog that finally bites](https://joelclaw.com/talon-watchdog-that-finally-bites.md)
- [The Knowledge Adventure Club Graph](https://joelclaw.com/knowledge-adventure-club-graph.md)
- [MineClaw](https://joelclaw.com/mineclaw.md)
- [Build a Voice Agent That Answers the Phone](https://joelclaw.com/build-a-voice-agent-that-answers-the-phone.md)
- [Plan 9 from Bell Labs: What Rob Pike Built After Unix](https://joelclaw.com/plan-9-pike-everything-is-a-file.md)
- [Propositions as Sessions: What Armstrong Built and Wadler Proved](https://joelclaw.com/propositions-as-sessions-armstrong-wadler.md)
- [Cache Components Patterns Skill for Next.js 16+ Applications](https://joelclaw.com/cache-components-patterns-skill-for-nextjs.md)
- [Karpathy Says We're Building "Claws"](https://joelclaw.com/karpathy-claws-as-category.md)
- [Voice Agent: A Rough Edge Experiment](https://joelclaw.com/voice-agent-deployment-deep-dive.md)
- [Extending Pi Coding Agent with Custom Tools and Widgets](https://joelclaw.com/extending-pi-with-custom-tools.md)
- [The Soul of Erlang Made Me Question Everything](https://joelclaw.com/soul-of-erlang-beam-evaluation.md)
- [CLI Design for AI Agents](https://joelclaw.com/cli-design-for-ai-agents.md)
- [Building a Gateway for Your AI Agent](https://joelclaw.com/building-a-gateway-for-your-ai-agent.md)
- [Self-Hosting Inngest: A Background Task Manager for AI Agents](https://joelclaw.com/self-hosting-inngest-background-tasks.md)
- [The One Where Joel Deploys Kubernetes... Again](https://joelclaw.com/joel-deploys-k8s.md)
- [How I Built an Observation Pipeline So My AI Remembers Yesterday](https://joelclaw.com/observation-pipeline-persistent-ai-memory.md)
- [Riding the Token Wave: Sean Grove at Everything NYC](https://joelclaw.com/riding-the-token-wave-sean-grove.md)
- [Playing with AT Protocol as a Data Layer](https://joelclaw.com/at-protocol-as-bedrock.md)
- [Building My Own OpenClaw on a Mac Mini](https://joelclaw.com/building-my-own-openclaw.md)
- [Inngest is the Nervous System](https://joelclaw.com/inngest-is-the-nervous-system.md)
- [OpenClaw: Peter Steinberger on Lex Fridman](https://joelclaw.com/openclaw-peter-steinberger-lex-fridman.md)
