Indianapolis, Indiana
self-hosted, highly-available infrastructure on hardware we own — and the custom systems, pipelines, and products that run on top of it. no VC, no serverless, no vendor lock-in.
see the architecturethe iron
a real cluster, not a single box
A 5-node Proxmox VE cluster running LXC + KVM, with live migration and snapshots. Current container count is live in the header.
HA Postgres, at home
A 3-node Patroni cluster with etcd consensus and an HAProxy VIP. Automatic failover, kill-tested.
one login for everything
Authentik HA SSO — redundant servers and outposts fronting services via forward-auth, on its own Postgres + Redis Sentinel.
public without punching holes
Cloudflare tunnels mean zero open inbound ports; a Caddy/NPM hub reverse-proxies everything, with self-hosted DNS + ad-filtering.
we can see all of it
Prometheus + Alertmanager + Grafana with a Loki/Promtail log fleet and node_exporter across hosts, plus a custom health monitor that pages us.
built from scratch
a persistent brain for our AI agents
Postgres source-of-truth → single-writer export to a git/Markdown mirror → hybrid retrieval (SQLite FTS5 keyword + pgvector semantic) served over a custom MCP server. Durable, searchable memory for stateless LLM sessions.
24 hooks that make the agent smarter
A custom Claude Code hook framework across four lifecycle events — intent/complexity scoring, skill-gating, session-retrospective indexing, insight extraction, and an audit trail.
one context API for every machine
A central service that syncs environment knowledge and the memory database across every workstation and container, so any agent boots with the same context.
our own deploy toolchain
An in-house DevOps CLI (deploy, health, env-sync, changelog) plus a GitOps reconciler with live-vs-repo drift detection comparing a running /api/version against git HEAD.
what runs on it
Applications
Google Business Profile OAuth, per-tenant token encryption, cron-driven AI drafting. Next.js · Drizzle · Postgres.
Two-way SMS agent over Twilio with stateful conversation handling and webhook processing. Next.js · Drizzle · Postgres.
Automated WCAG/ADA scanning pipeline with a dedicated scanner worker and job queue. Next.js · Drizzle · Postgres · BullMQ/Redis.
AI spam classification for contact-form submissions, JWT-based widget auth, no CAPTCHA. Next.js · Drizzle · Turso.
Bulk AI email personalization with a credit-metered usage engine. Next.js · Drizzle · Turso.
AI voice receptionist — Bland.ai + Twilio telephony, Google Calendar booking sync. Next.js.
Stripe Connect integration driving automated dunning email sequences on failed payments. Next.js · Drizzle · Turso · Stripe Connect.
Gmail sync via OAuth (readonly scope), hybrid rule-based + LLM classification pipeline. Next.js · Drizzle · Turso · OpenAI.
Chat-based AI interviewer with a two-model pipeline — Haiku for the conversation, Sonnet for quote extraction. Next.js · Drizzle · Turso.
Public status pages and alerting, driven by an external cron hitting a ping endpoint every 60 seconds. Next.js · Drizzle · Turso.
Aggregates alerts from Uptime Kuma, n8n, CrowdSec, and GitHub Actions into one feed. Next.js · Postgres.
Developer tools
Webhook capture/replay with shareable endpoints and a Server-Sent-Events live feed. Next.js · Turso · Drizzle.
Reads commit history via GitHub OAuth + Octokit, summarizes into changelogs with Claude Sonnet. Next.js · Drizzle · Turso.
Merge, split, compress, and convert entirely client-side — pdf-lib + PDF.js, no file ever leaves the browser. Next.js.
Webhook replay and forwarding over Socket.io, WAL-mode SQLite, no frontend framework. Express · Socket.io · better-sqlite3.
Client-side AES-256-GCM encryption before anything leaves the machine — the server never sees plaintext. Express · better-sqlite3 · Node CLI.
uses