Dog-Agent
One binary for the entire Dognet Technologies suite. Dog-agent is a single static Rust binary that reports installed packages, listening ports, and configuration drift to SentinelCore, FireDog, and CyberSheppard — whichever products you run — over an authenticated WebSocket. Configure one [[targets]] block per product in /etc/dog-agent/agent.conf. Under 12 MB resident; runs unprivileged where possible.
Small, quiet, honest
Inventory reporting
Enumerates installed packages and versions on each run so connected products can match them against CVE feeds and policy.
Port & service map
Reports listening sockets and owning processes — the host's own view, cross-checked against the network scan or firewall ruleset.
Drift detection
Hashes watched config files and flags changes between check-ins, with the previous baseline retained.
Multi-product targets
One agent, multiple [[targets]] blocks. Point it at SentinelCore, FireDog, and CyberSheppard simultaneously with independent API keys.
Minimum requirements
- Operating system
- Linux · x86_64 / arm64 · static musl binary
- Kernel
- Linux 4.19+ · no libc dependency
- Memory
- < 12 MB RSS · 32 MB peak scan
- Disk
- 40 MB · + local report buffer
- Network
- WebSocket to master · ws:// or wss://
- Privileges
- Unprivileged · root for full port map
One package, all products
Install dog-agent once on the host you want monitored. Configure targets in /etc/dog-agent/agent.conf for each product it should report to.
Install, configure, enrol
Install the package for your distribution. The binary is static (musl) with TLS root CAs embedded, so there are no runtime dependencies — iptables is needed only on FireDog targets with automatic threat blocking, docker only for CyberSheppard container collectors. The systemd unit is installed but stays idle until you configure and enable it.
# install the package (systemd unit is included) sudo dpkg -i dog-agent_1.0.2-1_amd64.deb # the service is installed but idle until configured systemctl status dog-agent
# install the package (creates the dog-agent system user and seeds agent.conf) sudo zypper install ./dog-agent-1.0.2-1.x86_64.rpm # only if this host is a FireDog target with auto-blocking enabled sudo zypper install iptables # the service is installed but idle until configured systemctl status dog-agent
Edit /etc/dog-agent/agent.conf and add one [[targets]] block per product. The ip, hostname, and mac fields must match the Target record created in the product's UI.
# example: report to both FireDog and CyberSheppard [[targets]] name = "firedog-production" system_type = "firedog" url = "wss://<firedog-master>" api_key = "<key from FireDog Settings → API Keys Agent>" # identity — must match the Target record on the master ip = "<this host ip>" hostname = "<this hostname>" mac = "aa:bb:cc:dd:ee:ff" [[targets]] name = "cybersheppard-main" system_type = "cybersheppard" url = "wss://<cybersheppard-host>" api_key = "<token from CyberSheppard>" target_id = 1 # ID assigned by the CyberSheppard backend
Pairing is automatic on first connection. The agent authenticates with a 2-phase handshake: API key check, then identity verification using SHA512(ip + hostname + mac) against the Target record on the master. Enable and start the service once agent.conf is ready.
# enable and start — agent pairs automatically on first connect sudo systemctl enable --now dog-agent # watch the pairing handshake in the journal journalctl -u dog-agent -f