Projects
The Whole Estate
Selected Work up front is the highlight reel — five flagship builds. This is everything: roughly two dozen public repos across live products, infrastructure, CLI tools, Ansible roles, and a couple of games, organized and status-flagged so nothing here overpromises.
Live Products
Helm
LiveA local-first consulting ERP — proposal through tax set-aside, in one connected model.
- React 19
- TypeScript
- Dexie
- PWA
Day One
LiveA phone-first reentry simulation — 70 life events, 161 tests, live in production.
- React 19
- TypeScript
- Vite
- Dexie
RC Journey
LiveA WordPress publishing site rebuilt as a fast, self-owned Astro site — 22 articles migrated.
- Astro 5
- Tailwind CSS v4
- Pagefind
IaC Deployment Stacks
Terraform + Ansible, provisioned and configured entirely as code.
Vor
LiveSelf-hosted, cookieless analytics — a Plausible instance on a Tailscale-secured droplet.
Actually powers the analytics on this site right now — no third party, no cookies, no consent banner.
- Terraform
- Ansible
- Docker Compose
- Tailscale
- Plausible
Heimdall
In ProgressA complete observability stack — Prometheus, Grafana, Loki, and Alertmanager, deployed as code.
Built and proven in real production once; now a generalized, open-source drop-in template.
- Terraform
- Ansible
- Prometheus
- Grafana
- Loki
- Tailscale
Tyr
Early ProjectDeploy a React app to a DigitalOcean droplet — Terraform provisions, Ansible configures, Nginx serves.
An early, compact example of the provision → configure → deploy pipeline.
- Terraform
- Ansible
- DigitalOcean
- Nginx
CLI Tools
CLI CheatsheetsThe Estate Pack
Five small Bash CLIs, named for Odin's ravens and wolves, that run this whole GitHub estate. Read the origin story →
Grimnir
StableThe command center — one command surveys the whole estate and orchestrates the other four.
- Bash
- gh CLI
- jq
Huginn
In ProgressThe dashboard, scaffolder, and conventions auditor the rest of the pack falls back to.
- Bash
- gh CLI
- jq
Muninn
In ProgressRead-only memory for the estate — what shipped, and when, straight from git history.
- Bash
- gh CLI
- jq
Geri
StableThe hunter — outdated dependencies, security advisories, and drift, run down in one sweep.
Read-only by design: it hunts and reports, it doesn't touch anything.
- Bash
- gh CLI
- jq
Freki
StableThe reaper — clears stale branches, dead PRs, and old artifacts across the whole estate.
The only tool in the pack that deletes anything, so it's dry-run by default, every time.
- Bash
- gh CLI
- jq
Personal Utilities
A different flavor: one works on any repo, even ones I don't own; the other two are personal, offline, and have nothing to do with GitHub.
Vegtam
StableA pocket CLI for whatever repo you're standing in — even ones you don't own.
The most-distributed tool here: installable via Homebrew, npm, or a curl one-liner.
- Bash
Edda
In ProgressA pocket CLI for a personal vault of markdown notes — fully offline, zero network calls.
- Bash
Skuld
StableA pocket CLI task tracker — edda's sibling, built around crash-safe atomic writes.
- Bash
Ansible Roles
Published to Ansible Galaxy — the small, reusable building blocks the IaC stacks above are made of.
Five roles, each doing one job well.
Stable- Galaxy
ansible-role-baseline
Hardens a fresh Debian host: disables root SSH, sets up UFW + fail2ban, installs Docker and Tailscale.
- Galaxy
ansible-role-secure_user
Creates a sudo user with SSH key auth and disables password auth — the role the others build on.
- Galaxy
ansible-role-do_network_routing
Configures routing on a DigitalOcean droplet, including the metadata-endpoint route.
- Galaxy
ansible-role-ip_forwarding
Enables IP forwarding and NAT for VPC gateway scenarios.
- Galaxy
ansible-role-net_tools
Installs the standard networking diagnostic toolkit — net-tools, traceroute, nmap.
AI-Assisted Dev Tools
AgentGate
StableA CI guardrail for AI-agent pull requests — six deterministic rules plus an opt-in AI intent check.
Published to npm and the GitHub Marketplace; dogfoods itself on its own PRs.
- TypeScript
- GitHub Actions
- Claude API
Claude Ticket Gen
StableA CLI that turns roadmap docs into structured GitHub issues, using Claude to do the parsing.
- TypeScript
- Claude API
- gh CLI
Games & Experiments
Sudoku Solver
Early ProjectA vanilla-JS Sudoku solver with 100 built-in puzzles and offline PWA support.
An early learning project, since cleaned up with a more reliable solver.
- JavaScript
- PWA
Go
StableA fully playable version of the board game Go — real rules engine, two AI opponents.
The harder AI is a genuine Monte Carlo Tree Search bot, not a lookup table.
- JavaScript
- jQuery