A flexible API and control plane for orchestrating fleets of remote systems.
DTAC Agent is a distributed telemetry and control framework that runs on Windows, Linux, and macOS. It exposes REST and gRPC APIs with token-based authentication and a plugin architecture (Go and Python).
The protocol supports multiple controllers connecting to the same fleet simultaneously, and the topology isn't fixed to a star — agents can act as collectors or intermediaries, aggregating data from downstream agents into hierarchical layers. That keeps both wire traffic and the control surface scalable as a deployment grows past a few dozen machines.
The first deployment was the agent side of a real-time dashboard for distributed wireless-network testing — hundreds of client machines spread across a campus, streaming throughput, GPS location, and system metrics back to operator views and taking orchestration commands to coordinate large-scale tests. The agent ended up general enough that the same plumbing works for any "many machines, multiple operators" problem — monitoring stacks, distributed test harnesses, internal tooling — without writing a bespoke RPC layer each time.
Unified network interface inspection for Linux — one tool instead of five.
ifscope is a read-only CLI that consolidates what ip, ethtool, lspci, and a handful of friends each show you in different formats. Interfaces, VLANs, routes, DNS, PCIe NIC mapping, drivers, speed, port type, SR-IOV state — all correlated into a single set of tables, or stable JSON if you're piping into something else.
Designed for the moment when you walk up to an unfamiliar Linux box and want to know what the network looks like, fast. It never modifies anything; if an optional tool isn't installed, the relevant field is just empty rather than the whole command failing.
A small Go library for nicer CLI argument parsing.
usage wraps the standard library's flag package with the bits that are always missing: grouped options with priorities, colored help output with an automatic plain-text fallback, a functional-options API, structured positional arguments, and version/build metadata baked into the help screen.
The point is to sit between bare flag (too plain) and a full framework like Cobra (too much for a single-file utility). Most of the tools I write end up here.
A small Go library that handles the bootstrap boilerplate of every CLI I write.
stencil gives you a Stencil instance configured with functional options (WithAppName, WithVersion, WithColor, …), typed flag registration (BoolFlag, StringFlag, IntFlag — long and short forms), and an auto-generated --help screen with color-coded sections. Version, build date, commit hash, and branch get embedded via -ldflags at compile time, so the binary can tell you exactly which commit it came from.
Underneath sits pkg/ui, a small console-UI layer on top of yacspin. You write ui.Task("Downloading assets"), get back a handle, call .Update("Progress 47%") as work progresses, then .Complete() or .Fail(). Output aligns to a fixed task column with dotted padding and color-coded status — cyan while running, green on complete, red on fail. Makes terminal output for utilities feel a couple of orders of magnitude more polished than fmt.Println.
The point is that new work skips straight to the actual logic instead of re-implementing flag parsing, help screens, and progress reporting every time.
More at github.com/bgrewell →