Code

Outside of work I build self-hosted tools, personal websites, and whatever else catches my interest. Side projects are where I experiment with new technology and stay sharp since at work I stick to stable, mature frameworks. There is plenty more to see on my GitHub account.

Live

011

Eleven sites, one repo, one desktop at home. Every one of these is answering requests right now.

chat

Go SQLite llama.cpp

A conversation with a small model running on the card in my desktop, with tools for whatever it cannot know and an incognito mode that writes nothing down.

{
  "sha": "ff1b359",
  "message": "Remove the deep_search tool",
  "date": "2026-09-08T23:42:58Z",
  "author": "Isaac Bythewood"
}

llm

Go SQLite llama-swap

One set of weights on one card in front of every service here that wants one, with a key per caller and every prompt and completion written down.

{
  "sha": "f0584ba",
  "message": "Stop logging incognito turns",
  "date": "2026-09-07T17:15:05Z",
  "author": "Isaac Bythewood"
}

search

Go SQLite FTS5

Ask it a question and it searches the web, reads the pages it finds, and writes an answer whose every sentence is checked against the passage it cites.

{
  "sha": "f0584ba",
  "message": "Stop logging incognito turns",
  "date": "2026-09-07T17:15:05Z",
  "author": "Isaac Bythewood"
}

auth

Go SQLite Argon2

The front door to the rest of these. One account, a six digit code pushed to my phone over ntfy, and a session the other sites check against this one.

{
  "sha": "43b8862",
  "message": "Add chat and llm to dash and auth",
  "date": "2026-09-07T02:13:40Z",
  "author": "Isaac Bythewood"
}

dash

Go SSE Vite

One page of markets, news, the weather, and the health of everything else here, all of it pushing itself over server sent events.

{
  "sha": "1b3112f",
  "message": "Fix outlook numbers vanishing on update",
  "date": "2026-09-08T23:02:32Z",
  "author": "Isaac Bythewood"
}

repos

Go Git SQLite

A git remote I push to over HTTPS, with a browser on top: commits, diffs, blobs and atom feeds. It mirrors my GitHub account too.

{
  "sha": "dfb1f27",
  "message": "Add tree and file endpoints to repos API",
  "date": "2026-09-08T23:22:28Z",
  "author": "Isaac Bythewood"
}

logging

Go SQLite Typst

Every site here ships its structured logs to this one, so a request I want to find is in one place instead of eleven docker logs.

{
  "sha": "8037f36",
  "message": "Return the reason an error happened, grouped by kind",
  "date": "2026-09-07T14:02:48Z",
  "author": "Isaac Bythewood"
}

status

Go SQLite Lighthouse

Uptime monitoring and public status pages, with Lighthouse audits and an SEO crawler on a timer and PDF reports out the other end.

{
  "sha": "f64c6c3",
  "message": "Add read only api for chat tools",
  "date": "2026-09-07T02:13:40Z",
  "author": "Isaac Bythewood"
}

analytics

Go SQLite GeoIP

Self-hosted website analytics: a collector, dashboards you can share without a login, a world map, and Typst PDF reports.

{
  "sha": "f64c6c3",
  "message": "Add read only api for chat tools",
  "date": "2026-09-07T02:13:40Z",
  "author": "Isaac Bythewood"
}

blog

Go Typst Vite

Markdown files on disk and no database behind them, with live search, and a PDF and a social card built for every post.

{
  "sha": "dec67b8",
  "message": "Fix redirect loop on the login stubs",
  "date": "2026-09-01T03:05:05Z",
  "author": "Isaac Bythewood"
}

isaacbythewood.com

Go Vite Canvas

The site you are reading. Go and Vite with no third party Go dependencies at all, canvas animations included.

{
  "sha": "ae823ff",
  "message": "Update stale card counts in github.go",
  "date": "2026-09-07T18:21:59Z",
  "author": "Isaac Bythewood"
}

Active

002

orchard

Go Vite SQLite

Every site I run, in one repo, along with the shared Cloudflare Tunnel and Caddy that front them. It all runs from a desktop at home, this site included.

{
  "sha": "ff1b359",
  "message": "Remove the deep_search tool",
  "date": "2026-09-08T23:42:58Z",
  "author": "Isaac Bythewood"
}
GitHub

taproot

Docker Shell

The dotfiles and containers I use to set up a machine for development, one to write code in and one that runs a local coding model.

{
  "sha": "0b3b128",
  "message": "Try the llm gateway before a local model",
  "date": "2026-09-07T02:13:49Z",
  "author": "Isaac Bythewood"
}
GitHub

Archived

021

Read-only snapshots. Some of these still run, rebuilt in a language they did not start in, and some are switched off for good.

isaacbythewood.com-nextjs

Archived Next.js React

The Next.js build of this site: a custom cursor, a page transition loader, and full canvas background animations. Replaced by the Go rebuild you are reading now.

GitHub

blog.bythewood.me-rust

Archived Rust Axum Typst

Single binary markdown blog: no database, live search, Typst PDF export, and great SEO.

GitHub

blog.bythewood.me-flask

Archived Python Flask

The Flask rewrite of my blog: markdown files on disk, no database, and no CMS behind it. Replaced by the Rust build above.

GitHub

blog.bythewood.me-wagtail

Archived Python Django Wagtail

The Django and Wagtail build of my blog, with a real CMS behind it. The last handcoded version, and where the blog spent most of its life.

GitHub

darkfurrow.com-rust

Archived Rust Axum

A living almanac of seasons, soil, and the quiet knowledge that used to be common. Taken offline, and I no longer own the domain.

GitHub

status-django

Archived Python Django SQLite

The Django build of my uptime monitor and status page builder, before it was rewritten in Rust.

GitHub

analytics-django

Archived Python Django SQLite

The Django build of my self-hosted website analytics, before it was rewritten in Rust.

GitHub

status-rust

Archived Rust Axum SQLite

Single binary uptime monitoring and status pages: HTTP probes, Lighthouse audits, an SEO crawler, and PDF reports.

GitHub

analytics-rust

Archived Rust Axum SQLite

Single binary website analytics: a collector API, dashboards, a world map, and PDF reports.

GitHub

timelite-nextjs

Archived Next.js React

Time tracking that never leaves your browser. No accounts, no sync, no server side state.

GitHub

repos-rust

Archived Rust Axum gix

A minimal self-hosted git browser. Bare repos as a website: commits, diffs, syntax highlighted blobs, atom feeds, and clone over HTTPS.

GitHub

finance-rust

Archived Rust Axum SQLite

A self-hosted market watcher for stocks, ETFs, indexes and futures, with live charts, key stats, fundamentals and SEC filings.

GitHub

dockerfiles

Archived Docker

All the Dockerfiles I used for various purposes, each with its usage notes at the top.

GitHub

dotfiles

Archived Shell Neovim

Config files for setting up a new system the way I like it.

GitHub

timestrap-django

Archived Python Django

Time tracking you can host anywhere, with full export in several formats and an extensible core.

GitHub

alpinefiles

Archived Shell Alpine

The files I ran on my Alpine Linux servers: Caddy, Docker, borg backups, and ufw.

GitHub

newtab

Archived JavaScript Chrome

A clean new tab page extension for Chrome, built to be taken and customized.

GitHub

ai-art

Archived Python PyTorch

Art generation with VQGAN and CLIP in docker containers. A simplified, updated and expanded take on the original notebooks.

GitHub

docker-teamspeak

Archived Docker Shell

A nice and easy way to get a TeamSpeak server up and running with Docker.

GitHub

docker-minecraft

Archived Docker Shell

An easy way to get a Minecraft server up and running with Docker.

GitHub

pinry

Archived Python

A tiling image board system. Development moved on to pinry/pinry.

GitHub