Skip to content

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

Live

A local-first consulting ERP — proposal through tax set-aside, in one connected model.

  • React 19
  • TypeScript
  • Dexie
  • PWA

Day One

Live

A phone-first reentry simulation — 70 life events, 161 tests, live in production.

  • React 19
  • TypeScript
  • Vite
  • Dexie

RC Journey

Live

A 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

Live

Self-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 Progress

A 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 Project

Deploy 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 Cheatsheets

The Estate Pack

Five small Bash CLIs, named for Odin's ravens and wolves, that run this whole GitHub estate. Read the origin story →

Grimnir

Stable

The command center — one command surveys the whole estate and orchestrates the other four.

  • Bash
  • gh CLI
  • jq

Huginn

In Progress

The dashboard, scaffolder, and conventions auditor the rest of the pack falls back to.

  • Bash
  • gh CLI
  • jq

Muninn

In Progress

Read-only memory for the estate — what shipped, and when, straight from git history.

  • Bash
  • gh CLI
  • jq

Geri

Stable

The 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

Stable

The 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

Stable

A 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 Progress

A pocket CLI for a personal vault of markdown notes — fully offline, zero network calls.

  • Bash

Skuld

Stable

A 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
  • 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.

    Galaxy

AI-Assisted Dev Tools

AgentGate

Stable

A 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

Stable

A 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 Project

A 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

Stable

A 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