docs(openspec): migrate netprobe sidecar to a native add-on (#3439/#3425) #3461

Merged
mfreeman451 merged 1 commit from feat/migrate-netprobe-native-addon into staging 2026-05-31 05:03:34 +00:00
Owner

What

Drafts the migrate-netprobe-to-native-addon OpenSpec change: deliver/sign/version/target/drift-observe netprobe as a native add-on instead of baking it into the base serviceradar-agent package, while keeping its capability-granted runtime and existing NetprobeFrame IPC.

Docs onlyproposal.md, design.md, tasks.md, and an agent-configuration spec delta. No implementation code.

Why it's its own proposal (sibling of migrate-bumblebee-to-native-addon)

netprobe's privilege model differs from Bumblebee's:

Bumblebee netprobe
Privilege root (reads every $HOME) serviceradar user + file caps cap_net_raw,cap_bpf,cap_perfmon (eBPF/AF_XDP)
Supervision systemd-timer systemd-service (capability-granted long-running daemon)
Transport sanitized spool keeps bespoke NetprobeFrame IPC (not the addon gRPC contract)
Breaking retire standalone deb carve serviceradar-netprobe + its setcap out of the base agent package

The proposal records why agent-sidecar/go-plugin is rejected (IPC mismatch + caps must be applied at install time) and keeps rewriting netprobe to the addon gRPC contract as a non-goal.

Status / blockers

  • openspec validate migrate-netprobe-to-native-addon --strict passes.
  • Blocked on add-native-addon-delivery-models implementing systemd-service supervision (task 6.6) and pushed-artifact file-capability application via the root-owned agent-updater (task 6.5) — both unstarted. This PR captures the plan; implementation follows once those land.
  • Builds on add-host-network-visibility-sidecar (#3439, netprobe runtime) and the add-agent-feature-sets framework (#3425).

🤖 Generated with Claude Code

## What Drafts the `migrate-netprobe-to-native-addon` OpenSpec change: deliver/sign/version/target/drift-observe netprobe as a native add-on instead of baking it into the base `serviceradar-agent` package, while keeping its capability-granted runtime and existing `NetprobeFrame` IPC. **Docs only** — `proposal.md`, `design.md`, `tasks.md`, and an `agent-configuration` spec delta. No implementation code. ## Why it's its own proposal (sibling of `migrate-bumblebee-to-native-addon`) netprobe's privilege model differs from Bumblebee's: | | Bumblebee | netprobe | | --- | --- | --- | | Privilege | root (reads every `$HOME`) | `serviceradar` user + file caps `cap_net_raw,cap_bpf,cap_perfmon` (eBPF/AF_XDP) | | Supervision | `systemd-timer` | **`systemd-service`** (capability-granted long-running daemon) | | Transport | sanitized spool | keeps bespoke `NetprobeFrame` IPC (not the addon gRPC contract) | | Breaking | retire standalone deb | carve `serviceradar-netprobe` + its `setcap` out of the base agent package | The proposal records why `agent-sidecar`/go-plugin is rejected (IPC mismatch + caps must be applied at install time) and keeps rewriting netprobe to the addon gRPC contract as a non-goal. ## Status / blockers - `openspec validate migrate-netprobe-to-native-addon --strict` passes. - **Blocked on** `add-native-addon-delivery-models` implementing `systemd-service` supervision (task 6.6) and pushed-artifact file-capability application via the root-owned agent-updater (task 6.5) — both unstarted. This PR captures the plan; implementation follows once those land. - Builds on `add-host-network-visibility-sidecar` (#3439, netprobe runtime) and the `add-agent-feature-sets` framework (#3425). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
docs(openspec): migrate netprobe host-network-visibility sidecar to a native add-on (#3439/#3425)
Some checks failed
CI / build (push) Has been cancelled
Secret Scan / gitleaks (push) Has been cancelled
Publish OCI Images / publish (push) Has been cancelled
Source Security Scan / source-security (push) Has been cancelled
lint / lint (push) Successful in 1m39s
Golang Tests / test-go (push) Failing after 3m0s
Secret Scan / gitleaks (pull_request) Successful in 23s
lint / lint (pull_request) Successful in 1m33s
CI / build (pull_request) Failing after 2m40s
0c0d20282b
Drafts the migrate-netprobe-to-native-addon OpenSpec change: deliver/sign/version/
target/drift-observe netprobe as a native add-on instead of baking it into the base
serviceradar-agent package, while keeping its capability-granted runtime and existing
NetprobeFrame IPC.

Sibling of migrate-bumblebee-to-native-addon, but netprobe's privilege model differs:
it runs as the serviceradar user with file capabilities (cap_net_raw,cap_bpf,cap_perfmon
for eBPF/AF_XDP) rather than as root, so the migration targets `systemd-service`
supervision (capability-granted long-running unit) — NOT systemd-timer, and NOT the
go-plugin agent-sidecar model (netprobe speaks a bespoke IPC, not the addon gRPC
contract). The root-owned agent-updater performs binary staging, setcap, and unit
install/enable. BREAKING: carve serviceradar-netprobe + its setcap step out of the base
agent package.

Blocked on add-native-addon-delivery-models implementing systemd-service supervision
(task 6.6) and pushed-artifact file-capability application (task 6.5).

proposal.md / design.md / tasks.md / specs/agent-configuration/spec.md;
`openspec validate migrate-netprobe-to-native-addon --strict` passes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
mfreeman451 left a comment

lgtm

lgtm
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
carverauto/serviceradar!3461
No description provided.