← All articles

Ophiuchi

A deep dive into Ophiuchi — what it is, how it works, and why it matters.

Ophiuchi is a project that started as a solution to a personal frustration: managing YAML-based server configurations was slow, error-prone, and lacked visibility.

The name comes from the constellation Ophiuchus — the serpent bearer. Given that YAML has its own relationship with snakes (Python being the dominant language in that space), it felt fitting.

What it is

Ophiuchi is a local server that watches your YAML template files and generates nginx and HAProxy configurations on the fly. It gives you a real-time view of your routing rules, SSL termination settings, and upstream definitions — without having to manually edit config files and restart services.

The problem it solves

If you've ever managed nginx configs by hand on a self-hosted server, you know the pain. A missing semicolon breaks everything. Testing a config change requires reloading the service. Tracking multiple virtual hosts across environments creates sprawling, hard-to-read files.

Ophiuchi abstracts that complexity behind structured YAML and a local UI that shows you exactly what's configured and lets you push changes without touching config files directly.

Technical decisions

The project is built with Go for the core server — it needs to be fast, reliable, and deployable as a single binary. The UI is a lightweight React frontend that communicates over a local API. Template rendering uses Go's built-in templating engine, which maps cleanly to nginx's configuration structure.

One of the more interesting challenges was handling the diff between desired and current state — making sure a config update was atomic and that a failed template render didn't corrupt an existing working configuration.

What I learned

Building a tool that modifies system configurations taught me a lot about defensive programming. You need to validate before you write, keep backups of previous working states, and be very explicit about failure modes.

It also reinforced how much value there is in building things for yourself — the constraints of real use shape the API far better than speculative design.

Continue reading

Mar 15, 2025

Becoming an AWS Cloud Practitioner

My journey studying for and passing the AWS Cloud Practitioner certification.

Read more →

Mar 10, 2025

How to Work With Me

A personal guide to working style, communication preferences, and collaboration approach.

Read more →

Feb 20, 2025

Write Robust Code

Principles and practices for writing code that is reliable, maintainable, and resilient.

Read more →