Deployment Guide
This guide covers local agent deployment, shared socket deployment, and the important permission and auth choices.
Transport model#
The agent supports local UNIX domain sockets only.
Important defaults:
- rootless socket:
$XDG_RUNTIME_DIR/virtnosis/agent.sock - system socket:
/run/virtnosis/agent.sock - rootless runtime directory mode:
0700 - system-style listen directory mode:
0755
Rootless deployment#
Recommended for a single local operator or CI user:
virtnosis-agent --verbose
This keeps the control plane local to the user account and avoids sudo for vnactl.
Shared local deployment#
Recommended when multiple trusted local users need access:
sudo virtnosis-agent \
--listen /run/virtnosis/agent.sock \
--listen-mode 0660 \
--listen-gid 123
Replace 123 with the gid of the group you want to authorize.
Socket-activated deployment#
Virtnosis also supports a narrow systemd socket-activation path for local UNIX sockets.
Use it when:
- you want
systemdto own socket permissions and lifecycle - you want lazy startup on first client connection
- you are comfortable keeping the deployment to one inherited UNIX listener fd
Important constraints:
.socketunits must useAccept=no- the inherited socket must be filesystem-backed and absolute
--listen-modeand--listen-giddo not reconfigure an inherited socket
Use the example units in deploy/systemd/ and the detailed walkthrough in
Systemd Guide.
For package-style staging of those assets, use:
cd virtnosis
make install-systemd-examples PREFIX=/usr \
SYSTEM_LISTEN_GID=123 \
SYSTEM_SOCKET_GROUP=virtnosis
SYSTEM_LISTEN_GID must be numeric; SYSTEM_SOCKET_GROUP may be a group name or numeric gid.
Remove staged examples again with:
cd virtnosis
make uninstall-systemd-examples PREFIX=/usr
For package metadata, staged install verification, and release-facing build requirements, use Development.
Peer authentication policies#
same-uid#
Use when you want strict same-user local access.
same-uid-or-listen-gid#
Default. Use when:
- the socket mode and gid are controlled
- you want a shared local group model
- you still want local peer credential checks
none#
Use only when you intentionally want filesystem permissions to be the sole gate.
Operational notes#
- the agent creates a missing listen directory when possible
- the socket is bound with restrictive permissions by default
- the agent warns about group- or world-writable listen directories and sockets
- stale socket cleanup is enabled by default when the agent can safely determine the socket is not live
Rootless and shared-agent interaction#
For non-root users, vnactl auto-prefers the rootless socket when --connect is not set. If that socket is absent or stale, it falls back to the system socket target.
This gives a practical split:
- personal workflow: rootless agent
- team or host-level workflow: shared system agent
Timeouts and bounded behavior#
The agent enforces:
- request and response frame caps
- per-client transport timeouts
- scan wall-time budgets
- bounded client concurrency
vnactl --timeout-ms applies to the connect phase as well as request/response I/O.
Deployment direction#
The broader technical design includes:
- systemd service support
- local UNIX socket activation via
systemd - future explicit remote transports with stronger policy gates
Current systemd-facing examples and limitations are documented in Systemd Guide.
For the design target and security boundaries, read Architecture and Repository documents.
Source repository · Edit this page · View Markdown