Open source

Tools I wrote because something was missing

Some of these filled a gap in a client platform. Others are things I wanted on my own machine. All of them are public and still in use.

Maintained

Projects I maintain

Nineteen repositories, newest first.

  • midea-mcp-control — A local-first CLI and MCP server for Midea Wi-Fi air conditioners, written in Go and speaking the units’ own protocol.
  • google-find-my-tools-go — A Go reimplementation of the cryptographic and API client parts of Google’s Find My Device network.
  • typesafeai-systemone-jev-go — A typed Go client for the TypeSafe System One API: structured questions and answers a program can act on.
  • talk-to-your-github-stars — A Go TUI that pulls your starred repositories into SQLite, embeds them, and answers questions about them locally.
  • rethymno-emergency-pharmacy — A local, CPU-only OCR pipeline that turns the weekly Rethymno pharmacy duty rota, published as a JPEG, into validated JSON.
  • deddie-outages — Planned power outages from the Greek grid operator on the command line, with human, JSON and raw output.
  • shelly — Reads live power and energy values from a Shelly Pro 3EM meter.
  • pulumi-provider-coolify — A Pulumi provider for Coolify, so deployments are described like the rest of the infrastructure.
  • scep-external-issuer — A cert-manager external issuer for SCEP, which is how a corporate PKI issues certificates to cluster workloads.
  • imagesumdb — A container image database for vulnerability scanning and version pinning. It catalogues every image a platform deploys, checks it with Trivy, and stores the hashes as a bill of materials next to the code.
  • pod-spec-mutator — Adjusts a pod specification before the pod is created, which is how security settings such as runAsNonRoot and a restrictive security profile reach workloads whose operators do not expose them.
  • inline-age — Encrypts and decrypts specific paths inside JSON files using age and the public SSH keys of the people who need access, so secrets can live encrypted in git without a separate vault.
  • k8s-secret-ui — A Vue interface for editing config maps and secrets in a cluster, built so operators without Kubernetes depth could configure a platform component safely.
  • opa-mcp — Exposes the OPA Rego language server over the Model Context Protocol, so an agent can ask about policy semantics instead of guessing at them.
  • opa-replay — A CLI that replays recorded OPA decisions.
  • raygun2x — Converts Raygun test suites for OPA black-box testing into an OpenAPI specification or a Postman collection, so the same tests can drive other tooling.
  • k3i — A Kubernetes installer for Ignite and Firecracker instances, inspired by k3d. It exists because load-balancer proofs needed clusters on virtual machines rather than containers.
  • vscopa — VS Code in the browser with OPA tooling, for environments where installing an editor is not an option.
  • cal-anon-proxy — A CalDAV proxy that answers read requests from a real server while removing personal data from events, so calendar availability can be shared without the details.

Upstream

Projects I contribute to

Thirty-four merged pull requests in total, plus one still open. Most of them were small fixes found while operating the thing.

Start the conversation

Working on a platform with the same gaps?

Most of these tools came out of a specific delivery problem. If one of them looks like yours, that is usually a good place to start a conversation.