Private Beta Closed Access

My life, orchestrated by AI agents.

A personal AI system where specialist agents research, write, generate media, manage your calendar, and coordinate with each other. Built for one user. Not a SaaS.

Iris is a personal project in active development. It is not open to the public and there are no plans to offer signups. This page exists to share the journey of building it.

Multi-Agent Orchestration

Agents delegate to specialists, run tasks in parallel, and return coordinated results with full trace visibility.

Streaming Chat

Real-time conversations with thinking mode, agent switching mid-thread, document reading, and web browsing.

Media Generation

Generate images and videos through AI providers. Queued jobs with progress tracking, delivered in-chat or via Telegram.

Skills and Memory

Persistent memory across sessions. Reusable skills that auto-activate based on context. The assistant learns and remembers.

Telegram Integration

Full two-way Telegram bot. Chat, get reminders, receive generated media, and run commands from your phone.

Automations

Scheduled agent tasks, webhook-triggered actions, calendar sync, and smart home control running in the background.

Iris in action

AI generated demo clips exploring how Iris works and how interacting with my personal AI system could feel. Iris coordinates specialist agents, remembers context, and helps me manage everyday work.

Thinking Partner

A conversation that actually thinks

A visual exploration of Iris as a thinking partner. The system understands context, reasons about problems, and coordinates specialist agents when working through tasks with me.

Ambient Presence

An AI that is always available

A concept visualisation of Iris as a constant presence in my environment. Ready to respond, coordinate tasks, and surface useful information whenever I need it.

Command Interface

A central interface for my agents

A cinematic visualisation of Iris as a central interface where conversations, agents, research, memory, and generated media come together in one place.

Personal AI

Built for my life

Iris is not a product or a service. It is a personal AI system I am building for myself that remembers context, coordinates specialist agents, and helps organise everyday work.

These videos are AI generated visualisations created to explore ideas and interactions around Iris while the real system continues to evolve.

Not a chatbot. One central place that manages my life.

Chatbots answer questions. Iris is something different - an AI system that knows me, manages things for me, and actively works to improve my life. Think less "ChatGPT but self-hosted" and more "a second brain that can actually do things."

The end state looks something like this: I wake up and Iris has already checked my calendar, noticed a conflict, drafted an email to reschedule, and is waiting for my approval before sending it. My fitness agent remembers I skipped legs on Wednesday and adjusts the rest of the week. The research agent has a briefing ready on a topic I asked about yesterday because it took longer than a quick answer. All of this happened proactively, overnight, without me asking.

That is the vision. We are not there yet. But every piece I am building points in that direction.

Read the full story

The approach behind Iris

Not a wrapper around ChatGPT. A full AI runtime built from scratch on Laravel, with provider abstraction, recursive agent orchestration, and queue-driven execution. Built almost entirely with AI coding assistants.

01

AI-Assisted Development

Claude Code and Codex handle implementation. I prompt, review, and oversee - nothing goes in without approval. One developer steering AI agents, production-grade output, weeks instead of months.

02

Provider Strategy Pattern

AI providers are swappable contracts. Chutes AI is the primary (genuinely great service, not affiliated). Ollama for local development. Adding a new provider means implementing one interface.

03

Recursive Agent Delegation

Agents call other agents through tool use. The orchestration context tracks depth, prevents cycles, enforces time budgets, and merges traces. Sub-agents run in isolated conversations but report back to the parent.

04

Laravel AI SDK + Prism

Streaming and multi-step tool execution handled by the SDK. The generator yields text deltas while Prism manages tool call loops internally. We layer orchestration, memory injection, and skill matching on top.

05

Queue-First Architecture

Sub-agent batches, media generation, reminders, and automations all run through Horizon-managed queues. The HTTP stream stays alive while background work dispatches and resolves asynchronously.

06

Inertia v2 + React 19

Full SPA experience without a separate API layer. Server-side routing, shared validation, deferred props. The backend defines the contract and the frontend mirrors it.

07

Single-Server Deployment

One Laravel app, one Redis instance, Horizon for queue topology. Deployed on Forge. No microservices, no Kubernetes. Simple until it needs to not be.

08

Cloud + Local Hybrid

Chutes AI for production, Ollama for local development and privacy-sensitive workflows. Same agents, tools, and orchestration regardless of where the model runs. Develop offline, deploy to cloud.

Roadmap

What's shipped, what's being built, and what's coming next.

Shipped does not mean done. Everything listed here is actively maintained and continuously improved as we learn more about what works in practice.

Shipped (31)

Streaming Chat and Agent System

Multi-provider streaming with tool use, specialist agents with custom prompts and models, thinking mode visibility, agent switching mid-conversation. **Room to grow**: structured output mode for agents returning JSON/tables, conversation branching (fork a thread to explore alternatives), and client-side token usage display per message.

Shipped

Multi-Agent Orchestration

Hierarchical agent orchestration with supervisor pattern. Synchronous sub-agent delegation with cycle detection via visited-set tracking, configurable depth limits, and per-agent time budgets. Fan-out/fan-in parallel execution via Bus batches with automatic sequential fallback when queue infrastructure is unavailable. Orchestration context propagation through the full call tree. **Room to grow**: persistent orchestration plans that survive disconnections, agent capability negotiation (agents declaring what they can and cannot do before accepting a task), and cost-aware routing that factors token spend into delegation decisions.

Shipped

Direct Streaming Delegation

Stream passthrough architecture replacing store-and-forward. Sub-agent output streams directly to the user's browser via SSE, eliminating the parent's second inference pass. TTFT reduced from 15 seconds to 4 seconds. Out-of-band signalling via inline instruction injection tells the parent the content was already delivered. Works for both single delegation and fan-out parallel patterns.

Shipped

Fault-Tolerant Agent Takeover

Circuit breaker with fallback pattern for LLM orchestration. Parent agent takes ownership when specialists fail, implementing graduated degradation: total fallback when all agents error, partial degradation when some succeed. Each failure carries structured metadata (agent name, ID, status: error/timeout/rate_limit/budget_exhausted). Takeover directives use inline instruction injection to override the parent's default behaviour. The leader handles it, no apologies.

Shipped

Inline Sub-Conversation Panels

Full observability for the delegation chain. Correlation ID linking from parent message to sub-agent conversation. Collapsible inline panels with progressive disclosure. Structured trace data including tool calls, tool results, token usage, TTFT, and total duration per agent. Span collection via orchestration context for distributed-tracing-style visibility across the agent call graph.

Shipped

Memory System

Persistent memories with shared and agent-specific scoping. Pinned facts, expiring context, AI tools for reading and writing memories. CRUD interface at /memories. Batch storage for multi-fact intake with deduplication and structured responses. **Room to grow**: automatic memory extraction from conversations (the AI notices important facts and saves them without being asked), fuzzy/semantic deduplication, memory conflict resolution, and semantic search across memories using the embedding pipeline.

Shipped

Agent Builder

Create specialist agents with custom system prompts, model selection, provider choice, per-agent tool allowlists, voice assignment, routing keywords, sort order, default status, guardrails, and handoff rules. Tool allowlists scope each agent to exactly the tools it needs, reducing model reasoning overhead and preventing irrelevant tool selection. Voice and routing keyword fields feed into the voice pipeline and semantic routing layer respectively. Form-based CRUD in agents page. **Room to grow**: agent versioning (roll back to a previous prompt), prompt A/B testing, agent templates and one-click cloning, and a testing sandbox where you can trial an agent before publishing.

Shipped

Skill Registry

Reusable knowledge blocks with trigger-based auto-matching. Skills inject into agent context when the user's prompt matches. CRUD at /skills.

Shipped

Skill Graphs

Connected knowledge maps that give Iris structured, relevant context for every conversation. Nodes represent knowledge (skills, personal claims, workflows, references), edges represent relationships created automatically from wikilinks. Hybrid retrieval (keyword + semantic + type scoring) with graph traversal and budget constraints. Interactive visual editor with force-directed layout, type filtering, and minimap. Full graph and node CRUD. Shadow mode for safe testing. Retrieval logging for analytics. Built with Claude and Codex.

Shipped

Image Generation

AI image generation through Chutes provider. Queued jobs with progress tracking, S3 storage, expiration cleanup, delivered in-chat and via Telegram.

Shipped

Video Generation

Provider-agnostic video pipeline with queued jobs, progress tracking, and S3 delivery. Contract-based architecture for adding new video providers.

Shipped

Video Analysis Pipeline

Multimodal video analysis with hybrid execution: synchronous for small files, queued jobs for large files, and conversation delivery on completion. Telegram-hosted video attachments auto-queue for reliability. Provider agnostic.

Shipped

Reminders

Time-based reminders with recurrence support. Delivered through the app and Telegram. AI tools for creating, listing, and updating reminders.

Shipped

Batch Proposals

Review-before-commit workflow for multi-item operations. When tools detect 3+ items (reminders, memories, tasks), they build a proposal instead of executing immediately. Per-item approve, skip, and edit controls on both web and Telegram. Execution respects individual item choices with item-level error tracking. 24-hour expiry with automatic purge. Inline chat rendering on web, inline keyboards with per-item buttons on Telegram.

Shipped

Telegram Bot

Two-way Telegram integration. Receive messages, send responses, deliver generated media as photos/videos, slash command registration, reminder notifications. Channel-aware output transformation (adapter pattern) strips orchestration markers for clean prose delivery. Heartbeat-pattern typing indicators during delegation windows. Real-time streaming via edit-in-place loop. Per-item batch proposal actions with inline keyboards: approve, skip, confirm, cancel individual items before execution. **Room to grow**: conversation threading in Telegram groups, file uploads forwarded into the agent pipeline.

Shipped

Live Web Research and Data Tools

Expanded from basic page fetch to full research workflow tools: web search, news search, image search, open page, click extracted links, and find exact text patterns in opened pages. Added live market quotes (equity, fund, index, crypto), sports standings/schedules, UTC-offset time lookup, and weather forecast support. Existing website fetch, document reading, and screenshot tools remain in place.

Shipped

Smart Rate-Limit and Fallback Handling

Resilience layer for external tool calls with retry/backoff + jitter, Retry-After handling, provider cooldown windows on 429, and ordered provider fallback chains. Current default web search order is DuckDuckGo first, then Brave, then Serper. Finance now falls back across providers for both traditional and crypto assets.

Shipped

Parallel Tool Batching

Added a parallel tool execution entrypoint that can run multiple read-only tool calls in one step and return grouped results. Uses Laravel concurrency with sync fallback when process parallelism is unavailable.

Shipped

MCP Runtime Tools

Added MCP runtime capabilities to list resources, list resource templates, and read resources from configured MCP servers. Includes transport-level resilience and normalized outputs for agent consumption.

Shipped

Workflow Meta Tools

Added explicit plan update tooling (step/status tracking) and local image-path viewing/analysis. This closes major parity gaps with hosted coding-agent workflows.

Shipped

Automations

Scheduled agent tasks with interval, daily, weekly, and one-time modes. Multi-channel output (app, Telegram). Run history with status tracking.

Shipped

Google Calendar Integration

OAuth-based calendar sync. AI tools for listing upcoming events and creating new ones directly from conversations.

Shipped

Operations Dashboard

System health monitoring. Database, Redis, Horizon queue status. Agent task tracking, orchestration traces, failed job visibility.

Shipped

Voice Input/Output

Speech-to-text via browser Web Speech API and server-side transcription (Chutes, ElevenLabs). Text-to-speech with chunked streaming synthesis, prefetch, and markdown stripping. Self-healing conversation loop with auto-restart on silence, error recovery, and noise filtering. Tap-to-interrupt stops speech and resumes listening. 28 English voices (UK and US) via KokoroVoice enum, fetched from backend API. Configurable providers and voices per provider. **Room to grow**: per-agent voice selection, emotion-aware synthesis (adjust tone based on content), multilingual support, and speaker diarisation for multi-person input.

Shipped

Realtime Voice Mode and Barge-In

Feature-flagged realtime voice mode with always-on listening and hands-free barge-in across web and Apple Watch. Speaking during assistant playback cancels audio and model streaming immediately and returns the session to listening - no tap required. Web barge-in uses WebRTC VAD. Watch barge-in uses RMS level detection on the AVAudioEngine microphone tap with a consecutive-frame threshold to distinguish deliberate speech from speaker bleed. Hardware AEC via `.voiceChat` session mode cleans up most of the echo on watch hardware before the level check runs. Added Groq and Deepgram as fast STT options, Deepgram Aura voices for TTS, and an updated voice selector with realtime/legacy mode toggle. **Room to grow**: adaptive VAD sensitivity per device, session-level voice analytics for turn-taking quality. Voice & LLM Provider Expansion (Groq, Deepgram, Inworld AI) Expanded the AI stack with additional provider gateways and unified provider registration across voice and language services. Added Groq to support both speech-to-text and text-to-speech, while also being available as a high-performance LLM provider. Deepgram continues to provide transcription and synthesis through its Aura voice family, and Inworld AI has been added as an additional TTS provider. Provider capability validation, API configuration payloads, and frontend selectors were updated so supported features (LLM, STT, TTS) are surfaced dynamically in the UI instead of relying on hardcoded assumptions. Room to grow: dynamic provider benchmarking per device/network profile, adaptive fallback routing, and real-time provider health scoring exposed directly in voice and model settings.

Shipped

Chat Markdown Renderer

Rich markdown rendering with rehype-highlight syntax colouring, heuristic block-vs-inline code detection for react-markdown v9 compatibility, and valid DOM nesting (Postel's law approach to streaming partial parse output). Copyable tables with DOM traversal to TSV export. Progressive disclosure via hover-to-reveal controls.

Shipped

Ollama Local Provider

Full Ollama integration for running models locally. Same provider abstraction as cloud - develop offline, test with local models, keep data on your machine. OllamaRoutingStrategy handles all routing transparently.

Shipped

Intelligent Agent Routing

Semantic pre-routing layer that auto-selects the best specialist agent before the LLM runs. Embeds user queries against pre-computed agent capability profiles (Qwen3-Embedding-8B, 4096 dimensions), then blends semantic similarity, historical performance, keyword matching, and recency into a confidence score. Self-learning feedback loop tracks routing outcomes and adjusts agent scores via exponential moving averages. Falls back to the default agent when confidence is low. **Room to grow**: per-user routing preferences, multi-turn context awareness (route based on conversation history rather than just the first message), A/B testing between routing strategies, dynamic threshold adjustment based on the user's override rate, and full agent performance profiling - p50/p95 latency, TTFT distributions, token cost per delegation, failure mode classification, with underperforming agent detection and model swap recommendations feeding back into routing weights.

Shipped

Local Machine Access

When running on a local Mac, Iris can read and write files, search file contents with ripgrep, run shell commands, manage Apple Notes and Apple Reminders (iCloud-synced), list directories, and send native macOS notifications. A lightweight Node.js bridge runs natively on the Mac. Docker containers reach it via `host.docker.internal`. Works in chat and voice mode. Iris reminders auto-sync to Apple Reminders on creation. The bridge has path-safe file access, a command allowlist, and bearer-token auth. **Room to grow**: local coding sessions with Git worktree management, branch creation, and PR opening without GitHub - a fully local coding agent flow.

Shipped

Native Mobile App (Personal)

Shipped as a practical personal mobile build using Capacitor + WebView, running on my phone. This gives me native packaging, push-capable foundations, and mobile access to the full app without waiting for a full App Store product cycle. This is intentionally a personal setup, not a distribution-first mobile strategy. I may publish to the App Store later, but it is not a priority right now because this already covers what I need day to day.

Shipped

Apple Watch Voice App

Native watchOS app for hands-free voice sessions directly from the wrist. Raise wrist, tap start, talk to Iris. No phone required once paired. Hardware acoustic echo cancellation via AVAudioSession `.voiceChat` mode prevents the speaker from bleeding into the microphone. Barge-in works the same way as the web client: speak during assistant playback and the session interrupts immediately. A 400ms grace period after audio ends stops the microphone from reopening into the playback tail. The visual indicator is a compact animated waveform bar strip - 13 bars with phase-offset animation, pattern changing by state. Listening ripples gently. Speaking goes tall and fast. Thinking sweeps. The full orb would eat 40% of the screen; the waveform uses 28 points and leaves room for transcript, status, and controls without anything getting pushed off screen. Transcripts show the active speaker only, switching with a crossfade. Sentence-boundary detection resets the visible chunk at each full stop so text never accumulates beyond the fixed two-line zone. After Iris finishes, her last sentence stays visible until you speak again. Session history persists back to the conversation thread. Switch to iPhone or web afterwards and everything is there. Gesture controls: double tap (watchOS 11+) starts or stops the session from anywhere on screen. Swipe up mutes or unmutes the microphone - requires a clearly vertical stroke so arm movements and accidental swipes do not trigger it. The Digital Crown adjusts playback volume while Iris is speaking, with haptic feedback at both ends of the range. Crown input is ignored in all other states so it does not interfere with navigation.

Shipped
In Progress (4)

Advanced Memory Architecture

Evolving from basic CRUD to a three-layer system: session context (auto-captured), long-term recall (consolidated), and pinned facts (permanent). Automatic memory extraction from conversations is the next step.

In Progress

Realtime Voice Conversations

Provider-backed voice agent sessions across web and Apple Watch. Strict settings-first WebSocket startup, keep-alive handling, tool-call bridging, and voice-to-chat message persistence for continuity when switching between voice and text. URL-safe voice responses, in-chat media continuity (image and video previews persist into text mode after voice turns), and watch session history that syncs back to the conversation thread. Current hardening focus: lower-latency turn transitions, better long-session stability, and tighter audio playback quality across device sample rates.

In Progress

Visual Agent Builder

Moving beyond form-based agent creation to a visual interface. Goal: drag-and-drop tool selection, prompt templates, testing sandbox, and one-click cloning. No code required.

In Progress

MCP and Tooling Hardening

Next hardening pass: migrate MCP server definitions from env JSON to a database-backed registry with per-server metadata, credential management, and enable/disable controls; add provider health metrics and caching for repeated web/data lookups.

In Progress
Planned (12)

Multi-Channel Messaging

Expand beyond Telegram to WhatsApp, Discord, iMessage, and email. Same conversation threads across all channels. Adapter pattern already in place from Telegram - each new channel is a new adapter, not a rewrite.

Planned

Frigate NVR Integration

Home security powered by AI. Frigate handles real-time object detection from cameras (people, cars, animals, packages). Iris adds the intelligence layer: contextual alerts ("delivery driver at front door, Amazon package expected today"), anomaly detection ("unfamiliar car parked outside for 20 minutes"), and time-aware escalation (silent logging during the day, immediate phone alert at 3am). Event clips stored and searchable.

Planned

Raspberry Pi Voice Hub

Dedicated always-listening device with wake word detection. Sits on the desk or in the kitchen. "Hey Iris, what's the weather?" without reaching for a phone. The Star Trek computer, in my house.

Planned

Phone Call Handling

Iris answers calls when I'm busy, takes messages, screens spam, schedules callbacks. Summarises missed calls and voicemails. "He's not available right now, can I take a message?" Voice models are fast enough. Latency is low enough. It's an engineering problem now, not a research one.

Planned

Smart Home Deep Integration

Beyond basic Home Assistant tool calls. Device pairing UI, event-driven automations triggered by sensor data, scene management, and proactive alerts. "Iris, I'm heading to bed" triggers the full chain: lights, thermostat, alarm, morning briefing.

Planned

Telegram Full Sync

Full conversation sync between web and Telegram. Start a chat on web, continue on Telegram. Inline keyboards, rich formatting, file sharing both ways.

Planned

Conversation Intelligence

Export conversations. Search across all threads. Usage analytics, cost tracking per provider, agent performance profiling, and automatic conversation summarisation.

Planned

MCP Server Registry and Governance

Move from static env-configured MCP endpoints to managed server records (per-user or per-workspace), encrypted auth fields, priority/order controls, and audit logs for resource access.

Planned

Web/Data Caching and Cost Controls

Add response caching and deduplication for search/news/finance/sports/weather calls with TTL policies, stale-while-revalidate, and request budget controls to reduce latency and provider spend.

Planned

Email Management

Move beyond send-only email. Gmail inbox display, email threading, draft management, and AI-assisted email composition with context from memories and conversations.

Planned

Autonomous Coding Agent

An agent that writes code, runs tests, opens PRs, reviews its own diffs, and deploys. Routine changes go through autonomously. Complex or risky changes ping me for approval. Merge on approval, deploy to staging, run smoke tests, promote to production. The full pipeline from "fix this bug" to "it's live."

Planned

Automated Shopping and Ordering

Shopper agent that compares prices, finds deals, and places orders on my behalf. "We're low on coffee" triggers a reorder. "Find noise-cancelling headphones under 200" returns ranked options. One tap approval from watch or phone.

Planned

The story so far

Notes on what we built, how we built it, and the decisions along the way.

Pinned Vision Jan 15, 2026

Why I'm Building Iris AI

We're living through something special. The AI and LLM space is moving faster than anything I've seen in my career. Every week there's a new model, a new capability, a new way of thinking about what s...

Read more
Engineering Mar 22, 2026

Iris on the Wrist

The idea is simple. Raise my wrist, talk to Iris, get an answer. No phone, no laptop, no context switch. The kind of thing that should take a day to build and then just work. It did not take a day....

Read more
Engineering Mar 20, 2026

Giving Iris Access to My Mac

The gap that kept bothering me was this: I am talking to an assistant that lives on my Mac, and it cannot see my Mac. It cannot open a file. It cannot check what git branch I am on. It cannot create...

Read more
Engineering Mar 15, 2026

Workflow Routing, Virtual Workers, and Faster Multi-Agent Runs

Iris already had multi-agent orchestration. The problem was that it behaved more like a very capable manager with no operations playbook. The main agent could delegate. It could even fan out to multip...

Read more
Voice Mar 9, 2026

Replacing the Voice Pipeline With a Single WebSocket

Every voice feature I have shipped until now has been three separate things bolted together: STT to turn speech into text, an LLM to think, and TTS to turn the answer back into audio. That architectu...

Read more
Voice Mar 7, 2026

Realtime Voice Barge-In - From Awkward Turns to Natural Conversation

This refactoring was not just about adding providers. It was about removing ambiguity in voice mode. I used to ask a simple question: "Why does voice still feel awkward even after latency work?" Th...

Read more
Engineering Mar 3, 2026

Shipping Video Analysis - What Broke, What Changed, Why

Iris had image analysis. Iris had video generation. What it did not have was video understanding. I kept sending clips and asking "what is happening here?" and the system had no proper pipeline for t...

Read more
Engineering Feb 26, 2026

Batch Proposals - Review Before You Commit

When Iris creates a single reminder, there's no friction. "Remind me to call the dentist tomorrow at 11" - done, one row, instant confirmation. But real usage doesn't look like that. It looks like: "R...

Read more
Integration Feb 26, 2026

Per-Item Proposal Actions on Telegram

Batch proposals shipped with a proper review UI on the web. Inline cards, per-item approve/skip/edit buttons, the full treatment. Telegram got the short end: a numbered list and two buttons - "Confirm...

Read more
Engineering Feb 25, 2026

Giving Each Agent Exactly What It Needs

Agents used to be a name, a system prompt, and a model choice. Everything else was inherited. Every agent got the same number of tools, no voice identity, and no way to hint to the routing layer what...

Read more
Engineering Feb 25, 2026

Teaching Iris to Remember Properly

The memory tool was one of Iris's earliest features. "Remember that I prefer Apple over Orange." One fact, one database row, done. Simple. Too simple. The problem with one-at-a-time Users don't thin...

Read more
Integration Feb 25, 2026

Streaming AI Responses to Telegram in Real Time

The web UI streams token by token. You see words forming as the model thinks. Telegram didn't do any of that. You'd send a message, watch "typing..." for 15 seconds, then get the entire response dumpe...

Read more
Process Feb 23, 2026

Skill Graphs - Reflections on Building a Knowledge Engine With AI

The skill graph system is live. Time to step back and look at the bigger picture. How we built this Let me be upfront: I did not write this. Not a single line. The idea was mine. The architecture d...

Read more
Content Feb 22, 2026

Skill Graphs - Filling the Shelves With Starter Content

An empty graph is not very useful. Today was about creating starter content - pre-built graphs that demonstrate the system's potential and give Iris something meaningful to work with from day one. I...

Read more
Engineering Feb 20, 2026

Skill Graphs - Graph Management and Validation Hardening

The graph visualisation works beautifully, but there was a gap: you could view and edit nodes, but you could not create new graphs, rename them, or delete them from the interface. Wrote up a quick pla...

Read more
Engineering Feb 18, 2026

Skill Graphs - Wiring Up the API and Visual Editor

Backend is solid. Today was about building the API layer and the visual interface - making the skill graph something you can actually see and interact with. Claude handled the API controllers, form r...

Read more
Engineering Feb 17, 2026

Skill Graphs - Building the Foundation

Architecture designed yesterday, building today. Handed the architecture doc to Claude and said "build it." This is where having AI collaborators genuinely shines - the tedious part of translating a d...

Read more
Architecture Feb 16, 2026

Skill Graphs - Designing the Brain Map

Sat down with Claude today and laid out the vision. Described the problem, shared arscontexta's post, and asked it to help me design the technical architecture. The central question: when someone asks...

Read more
Architecture Feb 14, 2026

Skill Graphs - The Spark That Started It All

Came across a fascinating post by @arscontexta today about using knowledge graphs to make AI agents smarter. It hit differently because it described the exact problem I have been wrestling with in Iri...

Read more
Architecture Feb 12, 2026

Intelligent Agent Routing - How Iris Picks the Right Agent in 40ms

When you type "build me a Laravel model with a factory and migration", you mean the Engineer. When you say "research AI trends in healthcare", you want the Researcher. Previously, Iris relied on eithe...

Read more
Philosophy Feb 11, 2026

Why I Built My Own Instead of Using OpenClaw 🦞

Let me start by saying this clearly: OpenClaw is genuinely brilliant. If you've used it and haven't starred the repo, go do that. Peter Steinberger built something in a weekend that went from 9,000 to...

Read more
AI Feb 10, 2026

Prompt Engineering That Actually Works - Part 2, Systems and Testing

This is Part 2. If you haven't read Part 1, go do that first - it covers the five foundational techniques (negative constraints, instruction placement, inline instructions, imperative framing, and few...

Read more
AI Feb 8, 2026

Prompt Engineering That Actually Works - Part 1, The Fundamentals

Iris runs its specialist agents on open-source models - 30B to 235B to 1T parameters, hosted through Chutes AI. These aren't frontier models. They don't have the raw reasoning capacity of Claude Opus...

Read more
UI Feb 6, 2026

Fixing Chat Rendering - Hydration Errors, Broken Tables, and Phantom Code Blocks

Three rendering bugs in the chat markdown component, all interconnected, all caused by the same root issue: react-markdown v9 quietly changed how it passes information to custom components, and our co...

Read more
Integration Feb 5, 2026

Cleaning Up Multi-Agent Output for Telegram

The multi-agent pipeline was built for the web UI first. Telegram was an afterthought, and it showed. When a specialist finished its work and the parent relayed the response, the Telegram message inc...

Read more
UI Feb 4, 2026

Inline Sub-Conversations - Making Delegation Transparent

When the parent agent delegated to a specialist, the work happened in a completely separate conversation record. The user saw the final output but had no visibility into what actually happened. What p...

Read more
Engineering Feb 2, 2026

Parent Takeover - When Specialists Fail, the Leader Steps In

This was the problem that bothered me most. You'd ask Iris to delegate a question to a specialist. The specialist would fail - maybe the AI provider returned a 503 (server overloaded), the model timed...

Read more
Engineering Jan 31, 2026

Stop the Parrot - Teaching the Parent Agent Not to Repeat Everything

After shipping direct streaming, the parent agent developed an annoying habit. The specialist would stream a detailed research analysis directly to the user. Then the parent would write three paragrap...

Read more
Performance Jan 30, 2026

Direct Streaming - Cutting Sub-Agent Response Time from 15 Seconds to 4

When you asked Iris to delegate a question to a specialist agent, you'd wait 15 seconds in silence. The answer was fine when it arrived. The wait was not. What was actually happening Picture a trans...

Read more
Voice Jan 29, 2026

Voice Mode Reliability Overhaul - Making It Actually Work for More Than Two Minutes

Yesterday's post was about latency. Today's is about reliability. The chunked TTS system made voice mode feel fast, but it would silently die after a few minutes. You'd finish speaking, wait, and noth...

Read more
Performance Jan 27, 2026

Fixing Voice Mode Latency - From 30 Second Waits to Conversational Flow

Iris has a voice mode. You tap the orb, speak, and it responds with audio. The problem was it felt like talking to someone on a really bad phone connection - you'd finish speaking, wait half a minute,...

Read more
Architecture Jan 25, 2026

Provider Routing - How Iris Picks the Right AI Model

Iris does not talk to one AI provider. It routes requests across multiple providers, picks the right model for the job, and fails over automatically when things go wrong. The problem Different model...

Read more
Engineering Jan 24, 2026

How AI Tools Work - Turning Language Into Action

Language models are good at understanding and generating text. But text alone cannot set a reminder, fetch a webpage, generate an image, or send an email. That is where tools come in. What is a tool...

Read more
Infrastructure Jan 23, 2026

Why Chutes AI Is My Primary Provider (And Ollama for Local)

Iris is provider-agnostic by design - the routing layer can switch between providers mid-conversation. But every system needs a default, and mine is Chutes AI. Full disclosure: I'm not affiliated wit...

Read more
Process Jan 21, 2026

Building Software With AI - Claude, Codex, and Steering the Ship

Here's something I want to be transparent about: Iris is built with AI coding assistants. Claude Code and OpenAI's Codex do the heavy lifting on implementation. My job is to oversee, prompt, review, a...

Read more
Feature Jan 19, 2026

Teaching Iris New Skills Without Code

One of the core ideas behind Iris is that the assistant should get better over time without deploying new code. That's what the skill registry does. A skill is a chunk of knowledge or instructions wi...

Read more
Architecture Jan 18, 2026

The Stack - Laravel AI, React, and Why Not Next.js

A common question: why Laravel instead of a Node/Python stack for an AI-heavy app? Laravel AI SDK + Prism gives us streaming, tool use, multi-step reasoning, and provider abstraction out of the box....

Read more
Engineering Jan 17, 2026

Building Multi-Agent Orchestration from Scratch

The biggest technical challenge so far: getting AI agents to delegate work to each other. Most AI frameworks treat agents as isolated units. You pick a model, give it tools, and chat. But what happen...

Read more