Etc. · Technology

Building on Odin

I wrote about Odin a couple weeks ago, right after I got the core of it working: a voice assistant in my basement, talking to a local model instead of one of the big AI companies, doing real things around the house instead of just answering questions. Since then I haven't really stopped adding to it. Three things are worth writing down.

Writing this from my phone

This post is actually an example of the first one. Odin now has a screen called Studio where I type notes, drop photos, and an AI agent drafts the post from them. It's not writing whatever it wants, though. It's working against rules I wrote once, about how things are supposed to sound and where images go and how the site is put together, and it doesn't touch the live site while it does it.

Every draft lands on its own branch with a flag on it that keeps it out of the sitemap, the feed and every listing page, so it 404s at its own URL until I say otherwise. When I want to read one, it gets rendered in a throwaway container running the same PHP version as the real server, so what I'm looking at is exactly what a visitor would see. I read it, ask for changes if something's off or doesn't sound like me, and only then does a button called Publish actually ship it. Typed this whole thing from my phone on the couch.

Phone screenshot of Studio, the site's browser-based post editor: a running conversation, two staged photos with alt text and caption fields under them, and a note box below to keep writing
Studio itself, mid-post. This is the actual screen this post was written from.

Watching how the site shows up

The site also checks on itself now. Once a month something pulls numbers from Google Search Console, Bing Webmaster Tools, Cloudflare's traffic stats and the raw server logs, and looks at how the site is actually doing in search: what people are finding, what's getting crawled, what's quietly 404ing. All free tools, nothing subscribed to, which fits with the whole reason I built Odin in the first place.

It already caught a real mistake. This entire folder of SEO notes and logs was being served on the public site, because nothing had ever told the server not to. Now it's blocked in two separate places instead of relying on one. It's also cleaned up a batch of dead links left over from the old photography domain and gone through every photo's alt text so the images are actually findable.

The line I drew is that it can only touch things nobody reads: filenames, alt text, structured data, the sitemap, that kind of thing. Anything an actual person reads on this site is still written by me, or drafted with me through Studio and read before it goes anywhere. It can fix a broken link. It can't publish a sentence.

The training page writes itself

The last one is smaller but I use it the most. There's a training page on the site now that pulls straight from my Garmin: resting heart rate, VO2 max, sleep score, weight, every ride and run, with a little pencil-drawn route map for each one. I don't type any of it in. Odin syncs the watch data and rebuilds the page on its own, so by the time I'm back inside after a ride it's already up to date.

Phone screenshot of the /fitness/ training page on johnrothfusz.com: this week's session count, totals since July, and trend numbers for resting heart rate and VO2 max
The whole page, rebuilt every time the watch syncs.
Phone screenshot of a single ride page on johnrothfusz.com: a pencil-drawn route outline above a wavy elevation and heart rate line, with distance, speed, climbing and calorie stats below
One ride, pulled straight off the watch. Nothing here was typed in by hand.

Small thing, but it's the difference between a page I have to remember to update and one that just tells the truth automatically.

Still adding to this thing more than I expected to. Who knows where it ends up.

← More Technology