Skip to content
Back to projects

Case study 18 / 18 · Tools

AI OPS

My project: Redesigned and rebuilt from a forked quota display

Status: In daily use on a wall screen; 15 desktop releases, v0.3.0 to v0.12.1

A retro, pixel-art operations dashboard for developers who run AI tools and their own servers. One always-on screen shows AI subscription quotas, API spend, local models, servers, containers, deploys, CI and DNS, as a web app and a self-updating desktop app for macOS and Linux.

Case study

AI OPS is my retro, pixel-art operations dashboard for AI tools and self-hosted infrastructure. It runs as a local web app and as a self-updating Electron desktop app for macOS and Linux. It began as a fork of a small Codex and Claude quota display; I kept that core and redesigned and rebuilt everything around it.

The problem

A developer who uses AI tools and runs their own servers ends up watching a dozen dashboards: subscription limits that reset on their own schedules, API spend, local models, servers and containers, deploys, CI and DNS. AI OPS answers “is everything OK, and how much AI do I have left?” on one screen that is pleasant to look at all day.

What was built

  • A wall-screen dashboard with 42 contrast-checked themes, 41 bundled fonts plus the Nerd Fonts catalog, movable S–XL widgets, night dimming, a burn-in guard and kiosk mode.
  • Monitoring for multi-account Codex and Claude quotas, ten AI API providers, five local-model servers and agent token stats, alongside five VPS providers, health checks, Vercel, GitHub and Cloudflare.
  • A single-file, dependency-free, read-only VPS agent that reports disks, memory, processes, pending updates and every Compose stack, container, PM2 app and systemd service.
  • Alerts to Telegram, Discord, ntfy, signed webhooks and native notifications, with quiet hours and recovery messages.
  • Settings where every connection has a Test button and secrets are write-only.
  • An Electron app that updates itself in place from GitHub Releases, verifying the version and signature before swapping bundles, with rollback.
  • Bit’s Arcade: a platformer with 6 worlds and 18 stages, and Bug Defense, a typing game covering about 2,300 developer commands and terms, tied to XP and 22 achievements.

Key decisions

  • The server uses only node: built-ins, because the desktop build does not bundle node_modules with the collector; a packaging test enforces it.
  • One collector runs from source, as a systemd service or inside the desktop app, and the app attaches to one already running instead of starting a second.
  • The original split between a read-only board and a local admin listener stayed in place, and every new connection had to fit it.
  • Display preferences are stored per screen, so one server can drive a wall display, a laptop and a phone differently.
  • Nerd Fonts are fetched one face at a time with HTTP byte ranges and verified before caching.

Outcomes

  • 15 desktop releases for macOS (Apple Silicon, Intel and universal) and Linux, v0.3.0 to v0.12.1.
  • 158 unit tests and 21 browser tests.

Where it stands

In daily use on an always-on wall screen. The repository is private, and the Mac build is ad-hoc signed rather than notarized.

How it was built

Frontend

  • React 19 — The dashboard, Settings and Bit’s Arcade
  • Vite
  • TypeScript
  • Progressive web app — Installable board, plus an ES5 legacy view for old screens

Backend

  • Node.js 24 — The collector, run as TypeScript with node: built-ins only and no framework

Data

  • SQLite — Usage, history and game progress

AI

  • Codex and Claude subscriptions — Multi-account quotas, reset countdowns and run-out forecasts
  • Ollama, LM Studio, vLLM, LocalAI and llama.cpp — Local-model health

Integrations

  • Hostinger, DigitalOcean, Hetzner, Linode and Vultr — VPS metrics, with several accounts per provider
  • Vercel — Deployments and live domain checks
  • GitHub — CI, pull requests and releases
  • Cloudflare — Zones, DNS, SSL, Workers and Pages
  • Telegram, Discord, ntfy and signed webhooks — Alerts

Infrastructure

  • Electron — macOS and Linux desktop app with in-place updates from GitHub Releases
  • Docker and systemd — Run the read-only VPS agent

Testing

  • node:test — 158 unit tests
  • Playwright — 21 browser tests