indifferentketchup GitHub

System + network admin

I keep the servers up.
Usually.

Nearly ten years in IT, two at indifferent broccoli. Python, TypeScript, Go, and a homelab that does considerably too much.

The indifferent ketchup bottle mark: a red ketchup bottle with a flat, unimpressed face on its label.

Work

Public repos, mostly tools I wanted and couldn't find. Most of it runs in my own rack first.

The sortof web app: a dark interface with a workshop ID field on the left and the generated server .ini lines on the right.

sortof

Python + vanilla JS · sortof.indifferentketchup.com

Mod load-order sorter for Project Zomboid dedicated servers. Paste a pile of workshop IDs or a collection URL, get the three lines that go straight into the server .ini, with warnings for mods tagged to a build you aren't running.

The Palworld Host Save Fixer: a dark page with a drag-and-drop area for a save folder and buttons to choose a folder, files or a zip.

Palworld host save fixer

Python · palworld.indifferentketchup.com

Fixes the "create a new character" bug when a Palworld save moves between co-op and a dedicated server, by transplanting the player GUID. Drop the save folder in, get a patched one back.

The mulch log analyzer: a dark panel reading paste or drop a log, with paste and browse buttons.

mulch

Next.js · PHP · MongoDB

Paste a game-server log, get the problems ranked by severity, attributed to the mod that caused them, with the stack trace attached. Minecraft, Project Zomboid and Hytale.

AI and retrieval

  • boolab

    Self-hosted AI chat platform with scoped workspaces, personas, optional RAG, memory facts and a shared skills library.

    FastAPI · React · pgvector

  • boocontext

    MCP server that answers questions about a codebase: routes, schema, call graphs, health grades, type recovery. AST-based, zero dependencies.

    TypeScript

  • boss-search

    Hybrid search over Discord support transcripts. Reciprocal rank fusion across pgvector ANN and BM25, behind a FastAPI service.

    Python · Postgres

  • homelabhealth

    RAG chat over your own medical records, grounded in the documents you upload. Inference and vision models bundled in the stack.

    Python · llama.cpp

Self-hosted and ops

  • stackctl

    Control plane for a remote Ollama box: models, agents, RAG sources and GPU config from one dashboard, with persona sync.

    React · FastAPI

  • DubDrive

    Personal cloud drive with disk-usage stats, thumbnails, public sharing and Git repo hosting built into the same backend.

    Go · JavaScript

  • Dashgaard

    Homelab service dashboard. Express backend with uploads and a configurable frontend for keeping track of what is running where.

    Node · HTML

  • Fathom

    Meta-search frontend for a shared SearXNG backend. One file of vanilla HTML, CSS and JS. No AI summaries, no trackers. No build step either.

    HTML · nginx

Everything else on GitHub

Stack

What I actually reach for, roughly in order of how often I reach for it.

Languages

  • Python
  • TypeScript
  • JavaScript
  • Go
  • PHP
  • Bash
  • SQL

Application

  • FastAPI
  • React
  • Next.js
  • Express
  • Vite
  • Node

Data

  • PostgreSQL
  • pgvector
  • PL/pgSQL
  • MongoDB

Infrastructure

  • Linux
  • Windows Server
  • Docker
  • Compose
  • nginx
  • GitHub Actions

Models and retrieval

  • Ollama
  • llama.cpp
  • MCP
  • Embeddings
  • Rerankers
  • BM25 + RRF

Background

Nearly ten years in IT. The last two at indifferent broccoli, where the network and every game server sitting on it are my problem.

Day to day that's systems and networking. Servers, switches, DNS, VPN, monitoring, and the unglamorous half of the job, which is making sure the thing that fell over at 3am doesn't fall over the same way twice. Mostly it doesn't.

The code comes out of that. Almost everything on my GitHub started as a gap in a workflow I was already standing in, a log that took too long to read or a search that just didn't exist yet. I build the tool, run it in my own rack until it stops annoying me, then leave it public in case it saves somebody else an afternoon.

Now
System and network admin at indifferent broccoli, going on two years.
Before that
Nearly a decade across support, systems and networking, in shops where I was usually the person who owned the whole stack.
At home
A homelab running most of the projects above, which is also how they get tested.
Sam behind a Pioneer DJ setup on a smoke-filled stage lit green and amber.

Off the clock

Music production and DJing

I produce, and I play out. Enough gear has failed on me mid-set that I ended up doing tech support for other producers and DJs at produceit.dev.

Games

Survival and sim, mostly, which is where a suspicious amount of the tooling above comes from. Project Zomboid, Valheim, Palworld, 7 Days to Die.

Running models locally

Agent orchestration, retrieval, and the ongoing hobby of finding out exactly where the current generation of tooling falls over.

Say hello.

Email is fastest. Happy to talk infrastructure, self-hosting, retrieval, or why your DAW hates your interface.