Open-source systems engineering
Basaltwater
I designed and maintain Basaltwater, a toolkit for setting up and operating Debian machines, Proxmox guests, web services, and development workstations. It packages repeatable infrastructure work into commands that can be inspected, rerun, diagnosed, and recovered.
- My role
- Project creator and maintainer
- Technical areas
- Linux, Python, Bash, Proxmox, Git, systemd, web deployment
The engineering problem
A server, coding VM, or workstation needs more than an installation script. It needs reproducible configuration, explicit choices about access and services, a way to diagnose drift, and a recovery path when an update fails. Basaltwater brings those operations together without hiding the underlying Linux systems from the operator.
What I built
- Machine setup: compose server and workstation capabilities, configure Debian hosts, and provision Proxmox guests from a control machine.
- Web deployments: describe static sites and services in a repository manifest, build in staging, activate with health checks, and preserve service state across releases.
- Operations: provide diagnostics, maintenance commands, and documented recovery procedures for managed machines and services.
- Coding environments: prepare VMs with Git workspaces, browser testing, credential handling, and privilege boundaries for development work.
Design decisions
Deployment components get dedicated runtime users and writable data directories. Builds are staged before activation; declared health checks can reject a release and restore the previous one. SQLite services can request a consistent backup before replacement. The goal is to make ordinary updates repeatable while keeping failure handling visible and testable.
For coding environments, I treat the agent as one part of an engineering workflow: isolate Git work, give tools only the access they need, inspect diffs, and verify behavior in a browser or on the target system.
Used in practice
I use Basaltwater to manage this website and my internal tools, services, and workstations. This site's deployment manifest is one public example of that setup.
Inspect the work
- Source repository — implementation, tests, and issue history.
- Manifest parser and deployment orchestrator — concrete implementation examples.
- Getting started — setup flow and first checks.
- Deployment safety — staging, health checks, backups, and recovery.
- Coding VM guide — development environments and access boundaries.
This project reflects the work I want to bring to teams: designing reliable interfaces, automating operations, making changes reviewable, and documenting how to recover when systems behave unexpectedly.