Labsco
MCP SERVER

Detrix

by flashus

Watch a variable at any line of a running program — no code change, no restart, no pause.

Runtime Debugging & Crash Analysis
Summary
Your agent can see inside a process that is still running.

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.

What it is

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.

What you get
  • 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
Requirements

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+.

Setup effort

One command — brew install flashus/tap/detrix