That’s the idea, anyway. Octave is very much in beta and running live on this site right now, by design. Building it under real conditions on a real site is the point: dogfooding first, polishing second. This post is a snapshot of where it is today and where it’s headed.
Where it started
The first version of Octave was designed on a phone, on a park bench, while my son worked his way across a play structure.
I pulled up Claude, typed out a prompt built around a coffee theme — the warmth of a café, the brown and cream tones of something freshly brewed — and watched a design take shape in my hand. The early palette came directly from that: earthy neutrals, a warm clay, colors that felt more like a morning ritual than a mood board. By the time I got home there were several ideas floating in my head.
That was the seed. Over the next couple of days the idea kept growing — new sections, new thinking about how the typography should behave, decisions about what the block structure should actually look like. The coffee premise quietly became a foundation rather than a theme, and the palette evolved from literal café colors into a more flexible token system that could hold more than one mood. The name came later, but the original instinct — that a single underlying design should be able to shift register entirely — was there on the bench.
What’s playing now
A block theme, all the way down. Octave is built on theme.json from the start — no legacy PHP templating, no page builder. Templates for the front page, blog, archives, singles, and pages are all block markup, editable in the Site Editor. The header and footer are template parts, and the first patterns (like the latest-posts listing on the home page) are starting to form a small library.
A deliberate palette and type system. Rather than a rainbow of one-off colors, Octave defines a tight token scale — a base-to-contrast neutral ramp plus primary and secondary accents — that everything else references. Typography is a trio of self-hosted variable fonts: Inter Tight for UI and headings, Source Serif 4 for reading, JetBrains Mono for the technical bits. Variable fonts keep the payload small while giving the design a full range of weights to work with.
Block styles as the first “keys.” The beginnings of the many-keys idea live in small, composable block styles: section treatments for groups, a thick-border heading style, compact button variants, and the first color moods (a warm sage-and-clay, a cool slate). They’re minor chords today, but they’re the vocabulary the bigger style variations will be written in.
Custom blocks, done the modern way. The theme ships its own blocks, built with the same tooling as core: block.json metadata, server-side rendering, and a manifest-based registration so they’re fast to load. The first two are small but personal — a Day Tracker that displays the day number of the year alongside an optional date, and a Pagination Count that gives Query Loops a proper “Page 2 of 14” readout, something core still doesn’t offer. Both have real editor controls: live previews, format pickers, no settings screens.
Beta means beta. Some styles are still hardcoded where they should be tokens. The pattern library is a library the way one shelf is a library. There will be breaking changes between now and 1.0 — that’s the deal.
Where it’s going
The name is the roadmap. An octave is the same note in a different register, and the goal is a growing set of hand-tuned style variations — each one a complete shift in color, typography, and mood — so the whole site can change key with a single switch. Quiet and editorial in one variation, bold and expressive in the next, without rewriting a single page.
Getting there means a few concrete things:
- A real pattern library — headers, heroes, content sections, calls to action — where every pattern responds to the active variation automatically. Drop it in, and it inherits the right colors, type, and rhythm. No reskinning, no cleanup.
- More blocks where core has gaps, kept small and server-rendered.
- Hardening the foundation — moving every remaining hardcoded value into the token system, so variations stay honest.
If you’re curious, everything described here is live on this site. When something looks rough, that’s not a bug in your browser — that’s a beta being played in public.
New keys coming soon.
