feat(agent): carve netprobe out of the base agent + land its add-on bundle (#3425) #3472
No reviewers
Labels
No labels
1week
2weeks
Failed compliance check
IP cameras
NATS
Possible security concern
Review effort 1/5
Review effort 2/5
Review effort 3/5
Review effort 4/5
Review effort 5/5
UI
aardvark
accessibility
amd64
api
arm64
auth
back-end
bgp
blog
bug
build
checkers
ci-cd
cleanup
cnpg
codex
core
dependencies
device-management
documentation
duplicate
dusk
ebpf
enhancement
eta 1d
eta 1hr
eta 3d
eta 3hr
feature
fieldsurvey
github_actions
go
good first issue
help wanted
invalid
javascript
k8s
log-collector
mapper
mtr
needs-triage
netflow
network-sweep
observability
oracle
otel
plug-in
proton
python
question
reddit
redhat
research
rperf
rperf-checker
rust
sdk
security
serviceradar-agent
serviceradar-agent-gateway
serviceradar-web
serviceradar-web-ng
siem
snmp
sysmon
topology
ubiquiti
wasm
wontfix
zen-engine
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
carverauto/serviceradar!3472
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/netprobe-addon-carve"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
Carves the netprobe host-network-visibility sidecar out of the base
serviceradar-agentpackage and lands it as a signed per-arch pushed-artifact add-on. Covers delivery-models 1.1 (netprobe) and migrate-netprobe-to-native-addon §1.1 / §1.2 / §1.4.netprobe was the only optional capability binary baked into the base agent (deb/rpm and both self-update release-runtime archives). This makes the base agent core-only and moves netprobe onto the native add-on framework.
The carve (base agent installs no netprobe binary or capability grant)
packages.bzl: drop the//rust/netprobefiles entry + thelibpcaprecommends (libpcap was netprobe's dep).agent/BUILD.bazel: drop//rust/netprobefrom bothagent_release_runtime_filesandagent_rdp_release_runtime_files.agent/scripts/postinstall.sh: drop thecap_net_raw,cap_bpf,cap_perfmonsetcapstep — capabilities are now applied to the staged add-on binary by the root-ownedagent-updaterper the assignment'sos_capabilities.//rust/netprobebuild target is retained (now consumed by the add-on bundle).grepconfirms no netprobe refs remain underbuild/packaging.netprobe add-on source + bundle
addons/netprobe/{addon.yaml, config.schema.json, BUILD.bazel}—delivery: pushed-artifact,supervision: systemd-service, capabilityhost-network-visibility,requires: [CAP_NET_RAW, CAP_BPF, CAP_PERFMON]. The schema mirrorsagent.netprobe.v1.VisibilityAgentConfig(capture_interfaces, dpi, sample intervals, flow-table bound, process-snapshot interval, per-device bindings). Passesgo/tools/addon-manifest-validator.addon_inventory.bzl—netprobe_addon_bundle(rust//rust/netprobe:netprobe,serviceradar-netprobe, linux amd64/arm64,pushed_artifact_tarball) → per-arch pushed-artifact tarballs (binary + manifest + schema).Deliberately deferred (not fabricated here)
--socketis required and the agent currently owns that socket (it launches netprobe and drives it overNetprobeFrameIPC). Whether netprobe becomes a standalone systemd-service or stays agent-launched is an explicit open question in the migration design; shipping a guessed unit would bake in a wrong lifecycle. So nounit_entriesin the bundle yet.rdp-adapteris still bundled inagent_rdp_release_runtime_files— carve it when remote-access/rdp-adapter gets its own (ephemeral-helper) add-on delivery. (So delivery-models 1.1 stays partially open.)Sequencing / operational delivery
This is the build/packaging foundation. Operational netprobe delivery additionally needs: artifact signing (build-signing — OpenBao
cosign-release, the flow documented in thedemo-local-rolloutskill), Edge-Ops package seeding (§3.1), and a current agent build with the add-on manager + the §2.x sidecar gating. Staging-only; reviewed before any release. Break-glass per the migration design isgit revert.Safety
The netprobe sidecar is config-gated (visibility disabled by default), and the sidecar manager degrades a missing binary to a circuit-breaker-open state (restart backoff, no tight crash-loop) — so the carve does not destabilize default installs.
Verification
go/tools/addon-manifest-validatorOK (netprobe + both samples);buildifier -mode=check,sh -n, and JSON parse all clean;openspec validate --strictpasses for bothadd-native-addon-delivery-modelsandmigrate-netprobe-to-native-addon. (Bazel build runs in CI.)🤖 Generated with Claude Code
delivery-models 1.1 (netprobe) + migrate-netprobe-to-native-addon §1.1/1.2/1.4. Stops baking the host-network-visibility sidecar into the base serviceradar-agent and delivers it as a signed per-arch pushed-artifact add-on instead. Carve (the base agent now installs no netprobe binary or capability grant): - packages.bzl: drop the //rust/netprobe files entry + the libpcap recommends. - agent/BUILD.bazel: drop //rust/netprobe from BOTH self-update release-runtime archives (agent_release_runtime_files, agent_rdp_release_runtime_files). - agent/scripts/postinstall.sh: drop the cap_net_raw,cap_bpf,cap_perfmon setcap step — capabilities are applied to the staged add-on binary by the root-owned agent-updater per the assignment's os_capabilities. - The //rust/netprobe build target is retained (now consumed by the add-on bundle). netprobe add-on source + bundle: - addons/netprobe/{addon.yaml,config.schema.json,BUILD.bazel}: delivery pushed-artifact, supervision systemd-service, capability host-network-visibility, requires CAP_NET_RAW/CAP_BPF/CAP_PERFMON; schema mirrors VisibilityAgentConfig. Passes go/tools/addon-manifest-validator. - addon_inventory.bzl: netprobe_addon_bundle (rust //rust/netprobe:netprobe, binary_name serviceradar-netprobe, linux amd64/arm64, pushed_artifact_tarball) -> per-arch pushed-artifact tarballs (binary + manifest + schema). Deliberately deferred (not fabricated here): - The systemd unit + agent-side activation/lifecycle (migrate-netprobe §2.1/2.2): netprobe's --socket is required and the agent currently owns that socket, so the standalone-systemd vs agent-launched model is an open design question; shipping a guessed unit would bake in a wrong lifecycle. No unit_entries in the bundle yet. - rdp-adapter is still bundled in agent_rdp_release_runtime_files (its own migration). Operational delivery still needs artifact signing (build-signing; OpenBao cosign-release) + Edge-Ops package seeding + a current agent build; this PR is the build/packaging foundation and is staging-only, reviewed before any release. Safety: the netprobe sidecar is config-gated (visibility disabled by default) and the sidecar manager degrades a missing binary to a circuit-breaker-open state (backoff, no tight crash-loop), so the carve does not destabilize default installs. Validated: addon-manifest-validator OK; buildifier + sh -n + JSON parse clean; openspec --strict passes for both changes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>lgtm