notes, projects, and tools from the lab. everything runs on free tiers.
start learning freemulti-agent orchestration built entirely on free LLM providers. two-ceo model: human decides what and why, LLM decides how. sub-agents never spawn sub-agents.
view on githubapple m4 mac mini provisioned as a 24/7 ollama inference host. cloudflare tunnel for public access, tailscale for private ssh, zero inbound ports. serves llama3.1:8b, mistral:7b, nomic-embed behind cloudflare access auth.
view bootstrap →always-on ARM box running Postgres, Uptime Kuma, and cloudflared. docker-everything, zero inbound ports, Tailscale SSH, nightly backups to B2. $0/mo on Oracle free tier.
view project →free self-learning ai workspace — open-source claude.ai alternative with cross-session memory, running on free llm providers and low-cost infra. operated from a phone.
view project →a tracing game where toddlers trace letters A–Z with colorful brushes. includes sound, confetti, and progress tracking.
Play now →trace numbers 0–9 with colorful brushes, confetti, and speech feedback. great for toddlers learning to count.
Play now →a toddler quiz game: feed the right food to lions, koalas, tigers, and giraffes. real animal photos, speech, confetti.
Play now →what does the cow say? tap the right sound — moo, oink, roar, and more! 10 animals.
play now →count the animals on screen and tap the right number. counts 1 through 8.
play now →what color is the flamingo? tap the right color swatch — 8 animals, 8 colors.
play now →unified AI tool that combines your free API keys (Groq, DeepSeek, Gemini, OpenRouter) into one OpenAI-compatible endpoint with a ChatGPT-like interface. zero cloud, zero setup.
learn more →help the pigs outsmart the big bad wolf. tap, choose, and listen along — 12 interactive pages with three character voices.
read now →three brave goats trick a grumpy troll to cross the bridge. tap to make the trip-trap sounds!
read now →can the slow tortoise beat the speedy hare? slow and steady wins the race!
read now →may 2026
the layer you're in determines the tool. most people skip straight to writing code. but every problem sits in one of four layers: configuration (wire up what already exists), instruction (write behavior, not code), integration (build on open source primitives), or custom code (only here when nothing else works). start at layer one. only move down when you have to.
behavioral guardrails can outperform technical ones. claude code's permission system has two layers — an allowlist that hard-blocks tool calls, and CLAUDE.md instructions that change how the ai reasons before it acts. a CLAUDE.md instruction fires before a plan executes. a permission prompt fires mid-stream, one tool call at a time. the instruction layer is stronger for complex operations and has zero maintenance cost.
never write infrastructure. always own your logic. ntfy and tailscale are infrastructure — battle-tested, maintained by others, not your problem. the hook that connects them to your workflow is logic — 30 lines, yours to control. the open source question is always: is this infrastructure or is this logic?
optimistic execution beats blocking approval for autonomous ai. freezing a session until a human approves is the wrong default for ai agents. the better pattern: proceed unless vetoed. send a notification, give a 15-second deny window, auto-approve if no response. sessions never freeze. you stay in control.
ship the pragmatic fix, backlog the right solution. the right answer was tailscale + self-hosted ntfy. the pragmatic fix was an expanded allowlist and a CLAUDE.md guardrail. both are correct — for different stages. knowing when to ship the fast version and when to build the proper one is the skill.