emerson@netdevops:~/netbox-rpc$ diagram netbox-rpc --integrations --cross-plugin
Cross-plugin RPC architecture
How netbox-rpc catalogs audited procedures, dispatches through netbox-rpc-backend, and meets companion plugins on shared NetBox objects — without ad-hoc shell or inter-plugin imports.
netbox-rpc never embeds SSH drivers or OpenBao clients for guest credentials. It owns procedure policy, execution audit, and backend selection inside NetBox. netbox-rpc-backend performs host connectivity; netbox-openbao reveals material when a procedure needs login secrets.
Companion plugins — netbox-proxbox, netbox-packer, netbox-fileserver, netbox-proxy, and netbox-openbao itself — integrate by declaring RPCProcedure seeds and calling the same execution API operators use. They do not import each other's Python modules at runtime.
Every integration lane is visible in NetBox: procedure catalog rows, RPCExecution history, and ObjectChange on configuration entities. If a capability is not listed under procedures and executions, it has not been added to the audited surface.
›overview
design principles
- ├─Policy in NetBox, execution in backend services — netbox-rpc is the contract boundary, not the driver layer.
- ├─Structured params only — caller input maps to fixed argv; nothing passes through eval, shell interpolation, or ad-hoc one-liners.
- ├─Credentials via netbox-openbao reveal at execution time — assignments live on devices, VMs, and services; material never appears on GET.
- ├─Companion plugins queue procedures they need; they never SSH to Proxmox or OpenBao directly when netbox-rpc is installed.
- ├─Destructive and approval-gated procedures require human intent — automation cannot bypass the gate silently.
›dispatch lane
Lane 1 — procedure dispatch — hover any node for details
SSH / CLI driver
›credential lane
Lane 2 — credential resolution — reveal at execution time only
›plugin map
Lane 3 — cross-plugin map — shared NetBox objects, no direct plugin imports
creates target objects · CredentialAssignment · queue RPCExecution · append-only ledger
| Plugin | Integration | Typical procedures |
|---|---|---|
| netbox-proxbox | Endpoint service monitoring, Proxmox SSH reads | systemd status refresh, read-only host probes |
| netbox-openbao | Vault host operations | health, seal status, policy reload via audited RPC |
| netbox-packer | Template bake verification | post-build SSH checks on baked templates |
| netbox-fileserver | Samba share validation | share list and permission probes |
| netbox-proxy | NGINX config deploy | config test and reload through netbox-rpc |
| netbox-openbao-broker | Vault access path | mTLS broker sits between NetBox and OpenBao for reveal and host ops |
›what stays outside netbox-rpc
Inventory sync — proxbox discovery, OpenBao KV writes, Packer image builds — runs in its own lane. RPC executes only after the target object exists in NetBox and a procedure is enabled for that object type.
netbox-rpc-backend is not a second NetBox plugin. It is a separate FastAPI service registered as an RPCBackend row. Rotating backend URLs or credentials is configuration, not a code deploy inside the NetBox venv.
Guest SSH for automation should flow: assign credential in netbox-openbao → queue RPC execution with target VM → backend reveals → SSH. Skipping reveal and embedding passwords in procedure params violates the split boundary.
›typical operator sequence
- Confirm RPCBackend points at netbox-rpc-backend and required RPCProcedure rows are enabled (seed migrations or admin UI).
- Assign SSH credentials on the target device or VM through netbox-openbao when the procedure family needs login material.
- Create an RPCExecution from the UI, nms rpc, or a companion plugin trigger (e.g. proxbox service refresh).
- Approve if the procedure requires it; watch execution events until status is succeeded or failed.
- Inspect stdout/stderr and ObjectChange — the ledger is the audit record for compliance and postmortems.