Release Notes
New Features
detrix agent — Standalone Agent Subcommand
A lightweight binary deployed on each observed machine that runs the eBPF stack
locally and streams data to a centralized detrix server over gRPC.
- Server-side:
AgentConnectionManagermanages agent connections with
lock-split registration, SQLite batch upserts, andconnection_requests
tracking for in-flight request cancellation. - RemoteAdapter: Proxies
DapAdaptertrait calls to agents transparently.
Includes circuit breaker (3 timeouts in 60s → open, 30s cooldown → half-open)
and 30slast_confirmed_atPing cooldown. - Agent binary:
/procscanner with PID-reuse detection (inode tracking),
5-minute re-registration cooldown, event backpressure (bounded channel with
DropCountUpdate), and Prometheus/metrics+/healthendpoint. - CLI:
detrix agent start/scan/statussubcommands. - Auth: Bearer token authentication via
SHA-256(token)comparison. Separate
from JWT/static user auth. - Zero proto leakage:
AgentConnectionManageruses only domain types; proto
conversion happens at the gRPC boundary. - Connection ID determinism:
SHA256(name|language|workspace_root|hostname)
means metrics auto-migrate when agents restart with newagent_id. - Multi-tenant: Agent connections are
user_id = None(visible to all users).
Configuration
New [agent] section in detrix.toml:
# Server-side (agent auth)
[agent]
agent_tokens = ["<sha256-of-token>"]
# Set this to the oldest agent version you intend to support.
min_compatible_agent_version = "1.3.0"File sources
New AgentFileSource — highest-priority file source for agent connections,
fetches file content via ReadFile command over the gRPC stream.
SourceKind enum
New SourceKind::Agent variant for VFS source priority configuration.
Go and Rust eBPF capture
- Profile-driven eBPF capture now supports both Go and Rust agent connections
on Linux. - Rust observation supports bounded scalar, pointer/reference, string, slice,
vector, fixed-array, enum, and inline aggregate captures when usable DWARF
locations are available. - Rust composite values use a bounded wire representation and fail closed for
unsupported or optimized-out layouts instead of guessing from type names or
raw byte sizes. - Rust eBPF remains an explicit backend choice; Rust
autoselection is kept
behind its release gate while DAP remains the safe fallback.
Reliability and release validation
- Added native Linux eBPF release-gate coverage for Go and Rust agent flows,
including reconnect, sustained event accounting, composite values, and
unavailable/optimized-out variables. - Debugger event subscriptions now recover across an automatic DAP session
restart without prematurely removing the logical connection.
Testing
- 14 agent integration tests (connection ID determinism, circuit breaker,
proto conversions, scanner, event messages). - Privileged Linux coverage for Go and Rust eBPF capture, including nested and
composite values, reconnects, sustained accounting, and fail-closed paths. - Docker deployment files:
Dockerfile.agent,docker-compose.agent.yml,
detrix.agent.toml.
Install detrix 1.3.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/flashus/detrix/releases/download/v1.3.0/detrix-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/flashus/detrix/releases/download/v1.3.0/detrix-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install flashus/tap/detrixDownload detrix 1.3.0
| File | Platform | Checksum |
|---|---|---|
| detrix-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| detrix-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| detrix-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| detrix-x86_64-pc-windows-msvc.msi | x64 Windows | checksum |
| detrix-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| detrix-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |