tri-coach
Personal AI triathlon coach. Pulls every workout from Intervals.icu, scores it against the week's plan with Claude, texts feedback on Telegram. Plans the next week every Sunday.
A curated list of things I've built — mostly personal infra. The feed has the chronological version; this page is the highlight reel.
Personal AI triathlon coach. Pulls every workout from Intervals.icu, scores it against the week's plan with Claude, texts feedback on Telegram. Plans the next week every Sunday.
Tiny self-hosted SQLite REST API behind tri-coach. Replaced an Airtable base after the upstream account got blocked. ~250 lines of Express, single Docker container, zero recurring cost.
System-wide hotkey: select text in any app, hit a key, get a polished rewrite pasted in place. Tray-icon controls for language and tone. V3 added push-to-talk dictation via local Whisper.
Telegram bot that summarises YouTube links, articles or long text. Personal antidote to the never-watched "watch later" pile.
My second brain. Personal LLM-friendly knowledge base — Obsidian for reading, Claude for writing, QMD for full-text search, Syncthing keeping my Mac and VPS in lockstep with no cloud middleman. Karpathy-style topic-led wiki, with sources, entities and concepts as separate page types. Hermes, XBookmarks and Voice Notes all feed into it.
VPS-side agent with two personalities. 'Vault-aware' answers questions over my knowledge base in read-only mode; 'vault-writer' drafts new pages into a sandboxed inbox. Talks to me on Telegram. Routes most queries to Grok 4.1 Fast — Sonnet only when needed.
Telegram bot that turns saved tweets, articles and YouTube links into structured markdown notes in my vault. Same pattern as Voice Notes — collect everywhere, store in one place.
Telegram voice memo → Whisper transcription → Claude categorisation (idea / todo / other) → markdown file in my vault, with an undo button. One n8n workflow.
Webhook command runner so phone-side Claude (or me, on a train) can restart a container, tail logs, redeploy or run an allow-listed script on my VPS.