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