← projects
This site · shipping · codeciech.com

codeciech.com — Obsidian-to-Web Pipeline

A Pi under my desk, an AI agent named Hermes, and Lovable on top

Raspberry Pi 5GoHermes (AI agent)Obsidian vaultSupabase PostgresTanStack StartLovable
// 01 — problem

The website isn't the project. The architecture is. I could ship a personal site on Vercel + a hosted CMS in a weekend — but that says nothing about the systems work I actually do. I wanted the site itself to be a working artifact of edge-to-cloud thinking: content I own on disk, processing I run on my own hardware, a database where cloud actually earns its keep, and a frontend where visual iteration is fastest.

// 02 — approach
  • 01Content lives in a local Obsidian vault — blog posts and the /now page are plain markdown on my filesystem. Zero SaaS lock-in, full version history, edits in the tool I already write in.
  • 02Hermes — an AI agent running on my Raspberry Pi 5 — maintains those notes (daily career lessons, AI briefing, /now updates) and decides when there's something new worth publishing.
  • 03When Hermes decides it's time, it triggers the Go sync backend (same Pi as the tanda worker). The Go binary parses the vault's frontmatter + markdown and upserts posts and pages into Supabase Postgres.
  • 04Supabase is the only cloud-hosted layer — pragmatic, not purist. The frontend reads from it directly; no custom API in the middle.
  • 05Frontend is TanStack Start, built and iterated on in Lovable. Visual editing speed where it counts, real code where it matters.
// 03 — result

The Pi runs continuously, Hermes runs on its own cadence, and the site updates itself when there's actually something to say. Every layer of the stack does exactly one job, in the place where that job is cheapest to change — and the whole pipeline is a more honest CV than any bullet list of technologies.

// 04 — key decisions
Why a Raspberry Pi instead of Cloudflare Workers

Workers would be cheaper and easier — and that's the point of not using them. Running Go + Hermes + cron jobs on a Pi 5 isn't a constraint, it's a deliberate demonstration of the exact skills the site talks about: edge compute, container-less deployment, small distributed systems you can actually reason about.

Why hybrid instead of all-serverless or all-self-hosted

Each layer lives where it's strongest: content on local disk (Obsidian), processing on self-hosted hardware (Pi + Go + Hermes), database in the cloud (Supabase), frontend in Lovable. Picking the best tool per layer beats cargo-culting one ideology across the whole stack.

Why an AI agent in the loop at all

Hermes isn't a gimmick — it's the scheduler that decides when content is worth syncing, instead of a dumb cron firing whether or not anything changed. It also keeps the notes themselves alive (daily lessons, briefings) so the vault is a living input, not a static folder.