devctl
Purpose
devctl is a terminal UI (built with Bubble Tea) for local development.
It starts, stops, and monitors every Eon Insights service from one
screen — tlslab, insights, capture, hostsync, tlsscand,
nmapscand, scascand, pcapworker, notifyd, fingerprintd, and the
dashboard’s Vite dev server — using the binaries in bin/<os>/<arch>/.
It is a development convenience, not something you’d run in production.
Usage
devctldevctl takes no flags. It must be run from the project root (it checks
for a configs/ directory on startup) and opens a full-screen TUI.
Key bindings
| Key | Action |
|---|---|
↑/k, ↓/j | Move selection |
enter / space | Start or stop the selected service |
l | View the selected service’s log tail |
r | Refresh status of all services |
S | Start all services |
X | Stop all services |
t | Run the integration test suite (scripts/integration-test.sh) |
c | Clean test data (scripts/clean-testdata.sh --all -y) |
g | Toggle synthetic TLS traffic generation against tlslab |
s | Queue a TLS and an nmap scan against tlslab (via the insights API) |
d | Open the datagen form (generate test data with custom parameters) |
q / ctrl+c | Quit (stops all running services first) |
capture is marked as requiring sudo; devctl prompts for a password
(cached via sudo -n for the rest of the session) before starting it.
The dashboard’s dev server (npm run dev in web/dashboard) has its
actual listening port auto-detected from Vite’s stdout, since Vite may
pick a different port if 5173 is taken.
Example
# From the project root
go run cmd/devctl/devctl.go
# Or, once built
./bin/darwin/arm64/devctl