SOUNDTRACK // IRON UNDER PRESSURE
JEZWEB // GRID OSv2026
JEZWEB

> product // kindling // the making of

Kindling
how it was made.

Kindling started life as a fork of vite-flare-starter on 29 November 2025 and spent its first few months becoming a serious AI application platform, admin roles, file storage, multi-provider AI, Google Workspace integration. The rebrand to Kindling happened on 15 April 2026, the day a hopper module and writing-session flow landed and the repo finally knew what it was for. The remaining two weeks were a deliberate, unhurried investigation into what an AI content companion for small businesses should actually feel like. No paying client yet, and the page says so honestly.

387
commits
131
overnight agent bail entries
51+
agent tools at peak
5.5 months
Nov 2025 – May 2026

The short version

The repo opened on 29 November 2025 as a cleaned-up vite-flare-starter, auth, database, deploy button, AI infrastructure. A focused December build pushed it to v0.12.0: admin roles, activity logging, email, Sentry, and a files module. Then three months of quiet.

April 2026 was different. A week of concentrated platform work, AI SDK v6, 51 agent tools, a skills system, Google Workspace, RAG, MCP connectors, brought the underlying stack to maturity. On 15 April, the repo was rebranded from starter to Kindling: a hopper module for capturing ideas, a context schema, locale-aware writing guides, and writing sessions that default to Opus. For the next ten days, with an overnight autonomous agent running check-ins while the humans slept, the build explored what an AI writing companion genuinely needs: voice input, artifact rendering, content lanes, a buddy voice feature that pivoted mid-flight from Cloudflare's voice SDK to OpenAI Realtime. The polish is the research.

● Nov – Dec 2025: the foundation

A starter that actually ships

The initial commit on 29 November 2025 cleaned up a CRM scaffold and dropped it as vite-flare-starter v0.1.0. Three weeks of focused work followed: a custom theme system with feature flags, then, in a single day, 29 December, admin roles, an activity log, AI infrastructure with Workers AI, an AI chat interface, enterprise feature flags, email verification, Sentry error tracking, and UX polish. The repo hit v0.8.0 before the new year.

● Jan 2026: AI depth

Multi-provider AI and the forking guide

January added AI Gateway with multi-provider support, native Workers AI routing, OpenRouter integration, a files module on R2, multi-provider email abstraction, and a FORKING.md guide written explicitly for AI agents picking up the repo cold. A deliberate call to default to OAuth-only auth and pages-over-modals landed here. The repo reached v0.12.0 and then went quiet for three months.

● Apr 2026 weeks 1–2: the platform arrives

From starter to AI platform in five days

The dormancy ended on 12 April with a major dependency update and AI SDK v6 adoption. What followed in rapid succession: a command palette, skeleton components, artifact rendering inline, a skills system compatible with the Claude Agent Skills spec, audio STT and TTS, PDF attachments, MCP client integration, 40+ agent tools with a cron handler, vision support, document generation to DOCX and CSV, and a unified ToolDefinition contract across 51 tools. The 59 shadcn/ui components shipped. Main bundle dropped from 3.9 MB to 2.2 MB. Version moved from v0.13 to v2.0.0 across five days.

● 15 Apr 2026: the rebrand

The day it became Kindling

On 15 April a single commit rebranded the repo and planted a hopper module, a context schema, and a writing-session flow. The same day: locale-specific writing guides with selectable style options, anti-AI-slop writing guidance, AudioRecorder wired into the chat toolbar, an onboarding flow, and writing sessions that default to Claude Opus. The starter finally knew what it was for.

● Apr 2026 weeks 3–4: overnight research

What an AI content companion actually needs

With an overnight autonomous agent running check-ins, 131 bail entries logged when no tasks remained or a 2am Sydney curfew triggered, the build explored rapidly: a claude.ai-style chat overhaul, Projects with system-prompt inheritance, conversation summaries, artifact sidebars, places search with an inline Leaflet map, per-user MCP connections with OAuth, Google Workspace tools (Gmail, Calendar, Docs, Sheets, Drive, Tasks, 21 new agent tools in three days), RAG file ingestion, semantic search, a content module turning writing sessions into first-class drafts, voice input on the hopper, and a visual theme editor with shareable URLs. Each day was a genuine question: does this belong in a content companion?

● May 2026: a voice pivot and a steady close

OpenAI Realtime replaces the Cloudflare SDK

The buddy voice feature shipped initially on Cloudflare's voice SDK, then on 8 May pivoted to OpenAI Realtime with explicit cost controls: a two-line commit message that says more than most pull request descriptions. An auth allowlist was added, found to lock Jez out, and the hook was disabled a week later. On 12 May, Anthropic model IDs were migrated ahead of a retirement deadline. Then quiet.

git log: “feat: scaffold Kindling, hopper module, context schema, rebranded from starter”

The commit that named the product, five months and 150 commits into the repo's life.

Tried, measured, set aside: the judgement lives here as much as in what shipped.

● pivoted

Voice buddy: Cloudflare SDK → OpenAI Realtime

The buddy voice feature was built on @cloudflare/voice and the Cloudflare agents SDK, then replaced wholesale on 8 May with OpenAI Realtime plus explicit cost controls. The log doesn't say why the SDK fell short, only that it did.

● rebuilt

provider registry reverted same day it shipped

A provider registry was committed on 14 April and reverted within hours: 'workers-ai-provider doesn't expose .languageModel()'. The model selector was rebuilt with a simpler per-provider grouping and without the capability badges.

● gated

Auth allowlist locked the owner out

A defence-in-depth user-creation allowlist shipped on 29 April and was disabled on 5 May after it blocked Jez from signing in. The fix committed as 'disable allowlist hook (Jez can't log in)', exactly the kind of honest entry that belongs in a build log.

Want something built like this?

This is how we work: in the open, measured, honest about the dead ends.