It replaces the print-rebuild-redeploy loop with a question: the agent finds the line, plants an observation point, and reads the values back live — which is what makes an intermittent bug in a container investigable at all.
A daemon that sits between your agent and a live process and sets logpoints — breakpoints that evaluate an expression and log the result instead of stopping execution. Underneath it drives the Debug Adapter Protocol, or eBPF uprobes on Linux for Go and Rust binaries. Your application keeps running at full speed while values are captured and stored.
- 29 MCP tools for observing a line, querying what was captured, enabling and disabling observation groups, and cleaning up afterwards
- `add_metric` to start watching, and `find_variable` to locate the variable in the running process when you cannot give a line number
- Capture modes that keep the volume down: stream, sample, throttle, first-hit, and periodic sampling every N seconds
- Multiple variables per observation point, plus stack traces, memory snapshots and expression evaluation
- Events stored in SQLite on the daemon host, so you can leave it running overnight and ask in the morning what happened
- Python through debugpy, Go through delve, Rust through lldb-dap, with Go on Linux using eBPF automatically
Install with Homebrew, the shell installer, or PowerShell on Windows; the daemon runs locally or alongside your service in a container, and `detrix mcp` is the stdio bridge your client launches. Nothing needs to change in your code to start, though embedding `detrix.init()` once — the clients are on PyPI, Go modules and crates.io — means you never restart again; otherwise one restart attaches the debugger. For cloud and container work set `DETRIX_ADVERTISE_URL` so the bridge knows where the daemon is, and `DETRIX_TOKEN` on both daemon and client for multi-tenant deployments. Variables whose names look sensitive — `password`, `api_key`, `token`, `secret`, `private_key` — are blocked before capture, with the blacklist and whitelist configurable in `detrix.toml`, and a per-connection safe mode restricts a session to variable watching only. Building from source needs Rust 1.80+.
One command — brew install flashus/tap/detrix
