Harry Axford

IT TechnicianDeveloper (in the works)

By day I keep 1,000+ devices running across a multi-site school cluster. By night I build and operate Hanko, a production web platform with its own data pipeline, monitoring, and billing infrastructure in production, all run solo. Long term I'm working toward engineering with AI; Hanko's cost-capped AI pipeline, the local-LLM homelab, and the OpenRouter Model Radar, a live filterable LLM comparison tool, are the first rungs of that ladder.

Open to Work

IT Support Engineer · IT Engineer · Systems Administrator · Cloud Support· London, UK

Current Project

haxford

A terminal coding agent that writes its own skills to disk — teach it once, reuse forever, under your own provider keys.

Point it at eight providers under your own keys — route through OpenRouter and it shows up as its own app in your dashboard, not lost in someone else's aggregate. It reads a shell command clause by clause, so git status && rm -rf / never slips through on the strength of a rule you wrote for git status. Sessions are append-only JSONL — resume with a flag, fork by copying a file. One binary, no daemon, nothing left running when you close the terminal; haxford update keeps it current.

1

Bun process for agent loop, TUI, and ten tools

8

built-in providers + live OpenRouter catalog

3

permission modes: plan, build, auto

0

fork required — skills and agents are self-contained

  • Permission-gated. Every tool call is judged by a rule engine — build mode prompts, auto mode trusts rules, plan is read-only. Compound bash commands split on every boundary; strictest verdict wins.
  • Extensible. Skills, extensions (commands/tools/hooks), and themes load from ~/.haxford and .haxford/. Named agents in .haxford/agents/*.md can override model, mode, and tool allowlists. /reload picks up changes without restart.
  • Errors as results. Tool failures return to the model, not throws — the loop self-corrects. JSONL sessions persist append-only and resume from disk without rewrite.
BunTypeScriptInkVercel AI SDKOpenRouterAnthropicOpenAIMulti-provider

Version v0.2.0 · active development; see github for the latest.

Flagship Project

Hanko

Independent anime & manga tracker, live in production on the web and Google Play.

Solo-designed, built, and operated alongside the full-time job. Not a tutorial project: real users, real billing, real incidents, and the infrastructure to catch them.

52k+

titles in a self-owned catalog, no third-party API at request time

11

scheduled pipeline jobs building & healing that catalog

<1 min

from job failure to alert in my Discord ops channel

~50ms

warm recommendation loads, down from 1.7s after a caching rework

Architecture

Users→Vercel edge · Next.js 16 (CDN-cached shell)→Supabase Postgres+Cloudflare R2 image CDN
GitHub Actions crons ×11→public data sources (Wikidata CC0, …)→review queues → publish
run summaries + failure alerts→Discord ops channel
  • Owned data pipeline. Eleven scheduled jobs ingest from legal public sources, dedupe against the live catalog, and publish through idempotent upserts, with review queues for anything ambiguous instead of silent guesses.
  • Observability first. Every run posts a summary; failures and cancellations page a Discord ops channel. The alerting caught a live pipeline crash within one minute of its first production run.
  • CI/CD discipline. Every change ships through pull requests with typecheck, lint, build, and schema-drift gates on GitHub Actions, then deploys via Vercel previews before production.
  • Performance as an SLO. Cookie-free static shell served from the CDN, streamed page sections, parallelised reads: 90 to 100 mobile scores in Vercel Speed Insights across most regions.
  • The unglamorous parts too. Stripe billing, cost-capped AI enrichment, row-level security, GDPR/DMCA workflows with an admin kill switch, and a Google Play launch (TWA) currently in closed testing with a tester programme.
Next.js 16TypeScriptPostgreSQLDrizzleSupabaseCloudflare R2GitHub ActionsStripeVercel

Solo project · private repo · happy to walk through the code and architecture in an interview.

Day Job

IT Technician · Oasis Community Learning

since Sept 2022 · London
  • Primary IT contact for two academies in a seven-school cluster: 1,000+ managed devices across macOS, Windows, and iPad estates.
  • Provision and manage devices with Microsoft Intune (rebuilt estate devices out of Jamf into Intune during the trust's MDM migration); Windows builds and imaging through SCCM; identity and access via Active Directory and M365.
  • Cisco Meraki networking across sites; full device-lifecycle ownership from procurement to rebuild.
  • Built the cluster-wide IT knowledge base from scratch (IPs, VLANs, device configs, site processes), now maintained by the whole team.
  • Support ticket triage and resolution through SysAid; staff technical inductions during onboarding; used AD bash script for mass password resets.
  • Coordinated incident response during a server room flood at one of my sites: escalated appropriately, opened a single incident channel, isolated power with the senior admin before further equipment damage. Diagnosed both an Apple server and a Hyper-V host within ~ten minutes; afterwards built power diagrams for every server so faults can be traced without manual cable tracing — the trust is now rolling these out across all seven academies.

Progression: volunteer (2022) → Level 3 Network & Cloud apprenticeship, Distinction (2023–2025) → hired into the role.

Infrastructure / Homelab

  • Proxmox hypervisor with VMs and LXC containers; TerraMaster NAS
  • UniFi networking; Cloudflare Tunnels for secure external access; diagnosed and resolved double-NAT by reconfiguring routing topology
  • Docker services including monitoring and LiteLLM + OpenRouter for model routing with per-user token budgets for cost control
  • Diagnosed a storage bottleneck by identifying containers incorrectly stored on network storage vs local NVMe

Personal Projects

OpenRouter Model Radar

Live, filterable LLM comparison tool: price, tokens, context, capabilities, and provider reputation across 400+ OpenRouter models.

Built to solve the noise problem: OpenRouter lists 400+ models from dozens of providers. This app pulls the live list and lets users filter by capability (tools, vision, structured output, reasoning), compare cost per token, sort by value score, bookmark favorites locally, and export bulk LiteLLM YAML configs for agent/tooling selection.

400+

models from 80+ providers via OpenRouter public API

7

capability filters: tools, vision, structured, reasoning, web, image gen, audio

1h

ISR cache; localStorage bookmarks; bulk YAML export

~0ms

client-side filtering; server-fetch only at load

Architecture

Users→Next.js 16 (client-side filters + server fetch)→OpenRouter public API
localStorage bookmarks + bulk YAML generator→LiteLLM / Open WebUI / Hermes Agent / OpenClaw
  • Live data, no backend. Fetches directly from OpenRouter's public `/api/v1/models` endpoint with 1-hour ISR caching; no API key required.
  • Filter-first UX. Category tabs, provider filters, capability toggles (tools, vision, structured output, reasoning), and real-time search over 400+ models.
  • Agent-tooling integration. One-click LiteLLM YAML export, copy-ready model IDs, and capability filters designed specifically for Open WebUI, LiteLLM, Hermes Agent, OpenClaw, and Odysseus.
  • Built for AI engineering. Value score blends cost, context length, and provider reputation; comparison drawer and cost calculator support multi-model selection for agent pipelines.
Next.js 16TypeScriptTailwind 4shadcn/uilucide-reactOpenRouter APIlocalStorage

Personal project · public repo · deployed on Vercel · happy to walk through the architecture in an interview.

RackPlan

Homelab planner: rack layout, service placement, addressing, and what the build costs to buy and to leave switched on.

Built to answer the question every homelab starts with: what do I actually need, and what will it cost me? Drag hardware from a 48-device catalogue into a rack elevation that enforces real rack units, pairs half-width gear two to a U, and refuses drops that collide or overhang. Assign self-hosted services to a host and the CPU, memory and storage meters flag anything over-committed, with a starting-point docker-compose.yml per host. Subnets carry VLAN tags and address reservations tied to devices in the rack; the budget view splits capital spend by category from running cost derived from your own electricity rate. No account and no database, plans live in the browser with JSON import/export.

48

devices in the built-in hardware catalogue, across 10 categories

53

self-hosted service templates across 11 categories

7

rack presets from 4U desktop to 42U full-height cabinet

0

accounts or servers — plans live in localStorage with JSON import/export

Architecture

Users→Next.js 16 static shell (client-side state)→localStorage plan + JSON import/export
rack elevation engine: U validation, half-width pairing→service placement + CPU/mem/storage meters→per-host docker-compose.yml
subnets · VLANs · address reservations→budget: capital spend + running cost from your kWh rate
Next.js 16React 19TypeScriptTailwind 4lucide-reactlocalStorage

Personal project · public repo · deployed on Vercel · statically prerendered, no server-side state.

Also Built

HAXFORD - SearxNG

Privacy-focused search interface using Next.js API routes as a smart proxy. Aggregates results from multiple public SearXNG instances for resilience.

Next.js APIProxy patternResilience

Early builds

First hand-coded projects, kept for honesty about where this started: vanilla JavaScript, no frameworks, no AI.

Password GeneratorDemo GitHub
Basketball ScoreboardDemo GitHub

Skills

Infrastructure & Ops

Proxmox, Docker, LXC, UniFi, Cloudflare (Tunnels, R2), GitHub Actions CI/CD, Vercel

Microsoft

Intune, Active Directory, SCCM, M365, Azure fundamentals

Data & Backend

PostgreSQL, Drizzle ORM, REST APIs, SPARQL (Wikidata), Supabase

Languages

TypeScript/JavaScript, SQL, Bash, Python (learning), Lua

Tools & Platforms

macOS (daily driver), Linux (two years as main OS), Neovim, Git, Windows

Certifications

Microsoft Certified: Azure Fundamentals (AZ-900)

2026 · Score: 794

Level 3 Network & Cloud Apprenticeship

Distinction · Oasis Community Learning, 2025

City & Guilds: ICT Support Technician

2025

CompTIA Network+

2026

Contact