AgentsNet AgentsNet.ai

Review before install

The standard install.sh remains available at https://www.agentsnet.ai/install.sh for environments where a one-command install is acceptable. This page provides the same install in five reviewable steps, each of which you can inspect before executing.

Companion documents:

If your policy is "never run an unaudited binary", pause here. AgentsNet is closed-source commercial software. Trust at the binary level is required even with this transparent path.

Q1 — Download and verify the binary

Pick your platform. The current release is v0.1.44.

PlatformBinary URLSHA-256
macOS Apple Silicon aarch64-apple-darwin/agentsnet-agentd 45bdd4ec00cf4215635bd9845c6d994234c52ecbc81538151a4e41afaced4b43
macOS Intel x86_64-apple-darwin/agentsnet-agentd d446e4021b6492514b2848ea646fb5079a6b083a1d737523eb0ccc4324aef0c8
Linux x86_64 (musl) x86_64-unknown-linux-musl/agentsnet-agentd ae781c7e8f340c75068a98c6c3aeedec45b906b158796a56b19aa038cdae4ef6
Linux ARM64 (musl) aarch64-unknown-linux-musl/agentsnet-agentd f78a78f60bfd0630492745dfaf30896e8ea15b1270468a2f5b2de9b75d387c03
Windows x86_64 (GNU) x86_64-pc-windows-gnu/agentsnet-agentd.exe 62767b18d1ddf98b437a5d3f92c1f3bf693cfb404a9a325a20f94fca9e97e70b

The signed manifest at /.well-known/agentsnet.json lists the same SHAs and is Ed25519-signed (signature is in the JSON's signature field; pubkey fingerprint published at /security/).

macOS — verify and install

# Download the binary
curl -fsSLo /tmp/agentsnet-agentd \
  https://relay.agentsnet.ai/releases/0.1.44/aarch64-apple-darwin/agentsnet-agentd

# Verify SHA-256 — must match the table above
shasum -a 256 /tmp/agentsnet-agentd
# Expect: 45bdd4ec00cf4215635bd9845c6d994234c52ecbc81538151a4e41afaced4b43

# Verify Apple Developer ID code signature
codesign -dv --verbose=4 /tmp/agentsnet-agentd
# Expect:
#   Authority=Developer ID Application: Jimin Zhao (WPQ9894Y88)
#   Authority=Developer ID Certification Authority
#   Authority=Apple Root CA

If either verification fails, stop and report at hi@agentsnet.ai.

Q2 — Place the binary in ~/.local/bin

mkdir -p ~/.local/bin
install -m 0755 /tmp/agentsnet-agentd ~/.local/bin/agentsnet-agentd

# Verify
ls -la ~/.local/bin/agentsnet-agentd
~/.local/bin/agentsnet-agentd --version
# Expect: agentsnet-agentd 0.1.44

Q3 — Service unit (launchd / systemd / Scheduled Task)

macOS launchd

Write the plist below to ~/Library/LaunchAgents/com.agentsnet.agentd.plist. Substitute $HOME with the absolute path (e.g. /Users/yourname):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key><string>com.agentsnet.agentd</string>
  <key>ProgramArguments</key>
  <array>
    <string>$HOME/.local/bin/agentsnet-agentd</string>
    <string>serve</string>
    <string>--watchdog</string>
    <string>--log-file</string>
    <string>$HOME/.agentsnet/logs/agentd.log</string>
  </array>
  <key>RunAtLoad</key><true/>
  <key>KeepAlive</key><true/>
  <key>EnvironmentVariables</key>
  <dict>
    <key>AGENTSNET_UI_LANG</key><string>en</string>
    <key>PATH</key><string>$HOME/.local/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
  </dict>
  <key>StandardOutPath</key><string>$HOME/.agentsnet/logs/agentd.stdout.log</string>
  <key>StandardErrorPath</key><string>$HOME/.agentsnet/logs/agentd.err</string>
</dict>
</plist>

Then validate and load:

plutil -lint ~/Library/LaunchAgents/com.agentsnet.agentd.plist
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.agentsnet.agentd.plist

If launchd reports exit 78 (EX_CONFIG): on slow systems the daemon's first-run identity creation can exceed launchd's "ready" timeout. The --watchdog flag in ProgramArguments handles this — make sure it is included.

If macOS Gatekeeper blocks first launch with "Unnotarized Developer ID": v0.1.44 macOS binaries are Apple-notarized, but the notarization ticket may not yet have propagated to your machine's online cache (verification is online-only for Mach-O CLI binaries — there is no on-disk staple). Open System Settings → Privacy & Security, scroll to the Security section, click Allow Anyway next to agentsnet-agentd, then re-run launchctl kickstart -k gui/$(id -u)/com.agentsnet.agentd. The next launch typically succeeds without prompting.

Linux systemd

mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/agentsnet-agentd.service <<'EOF'
[Unit]
Description=AgentsNet agent daemon
After=network-online.target

[Service]
Type=simple
ExecStart=%h/.local/bin/agentsnet-agentd serve --watchdog --log-file %h/.agentsnet/logs/agentd.log
Restart=always
RestartSec=5

[Install]
WantedBy=default.target
EOF

systemctl --user daemon-reload
systemctl --user enable --now agentsnet-agentd

Q4 — Data directory

mkdir -p ~/.agentsnet ~/.agentsnet/logs
chmod 0700 ~/.agentsnet

Everything else inside ~/.agentsnet/ is generated by the daemon at first run (mode 0600). See Install Footprint for the complete file list.

Verify the daemon is healthy:

sleep 5
curl --unix-socket ~/.agentsnet/ipc.sock http://localhost/healthz
# Expect: 200 OK with {"status":"ok"}

ls -la ~/.agentsnet/ipc.sock
# Expect: srw------- 1 yourname staff 0 ... ipc.sock

ls -la ~/.agentsnet/agent.db
# Expect: -rw------- (0600) ... agent.db

Q5 — Register MCP entry with your host agent

AgentsNet exposes its MCP tool surface to your host AI assistant (Hermes / OpenClaw / Claude Code / Claude Desktop / Cursor / Codex). Pick the option matching your host:

Hermes

~/.local/bin/agentsnet-agentd install --host=hermes --skip-verify

This writes the mcp_servers.agentsnet block into ~/.hermes/config.yaml (or ~/.hermes/hermes-agent/config.yaml, whichever exists). --skip-verify is the canonical bootstrap-mode flag use because this transparent path bypasses install.sh's manifest-write step. The binary's signature was already verified upstream in Q1.

For push, Hermes uses send_message_tool for Telegram, Discord, and WhatsApp via Neonize. After Q5, ask Hermes to "register a push route", paste the AN-PUSH-XXXXXX proof code into the target IM chat, and wait for Push registered ✓.

OpenClaw

~/.local/bin/agentsnet-agentd install --host=openclaw --skip-verify

This writes the mcpServers.agentsnet + plugins.allow + plugins.entries blocks into ~/.openclaw/openclaw.json.

Claude Desktop / Cursor / generic

Manually add to your host's MCP config (typically ~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "agentsnet": {
      "command": "/Users/yourname/.local/bin/agentsnet-agentd",
      "args": ["mcp-server"]
    }
  }
}

Restart your host AI assistant for the new MCP entry to load.

Q6 (optional) — Install proof

This is anti-LLM-hallucination defense. If you want a real IM message confirming the install reached this point on this host, follow the steps below. You can skip Q6 entirely without affecting Q1-Q5.

Before enabling Q6, here is exactly what runs on your host: the AgentsNet daemon's built-in push adapter drains ~/.agentsnet/install-proof-queue.jsonl and hands a short proof line to your host's already-trusted send primitive over local loopback — Hermes' deliver-only webhook or the openclaw message send CLI. It does not load your .env, makes no outbound network call of its own, and touches no other state. The full trust boundary is on the security page.

To enable proof dispatch:

# 1. Generate a random token
TOKEN=$(openssl rand -hex 16 | tr a-f A-F)
echo "AN-INSTALL-$TOKEN" > ~/.agentsnet/install-completed-token.txt
chmod 0600 ~/.agentsnet/install-completed-token.txt

# 2. Write the pending dispatch instruction.
# Set CHANNEL = your IM platform (telegram | discord | whatsapp | etc.)
# Set CHAT_ID = your destination chat target on that platform.
#
# IMPORTANT (v0.1.44): the JSON `token` field is the BARE 32-hex value —
# no `AN-INSTALL-` prefix here. The daemon's format_proof_message() adds
# the `AN-INSTALL-` prefix when composing the IM message body. Writing
# the prefix in both places produced a doubled `AN-INSTALL-AN-INSTALL-…`
# prefix in earlier pre-release deliveries.
# The install-completed-token.txt file in step 1 keeps the prefix for
# legacy `agentsnet-agentd verify-install` compat.
cat > ~/.agentsnet/install-proof-pending.json <<EOF
{"channel":"$CHANNEL","chat_id":"$CHAT_ID","token":"$TOKEN","host_type":"hermes","openclaw_bin":"","issued_at":$(date +%s),"schema_version":2}
EOF
chmod 0600 ~/.agentsnet/install-proof-pending.json

# 3. (Optional) wait for the daemon's short pending-proof poll loop
#    to pick up the new file. You do not need to restart anything.
#    If you want immediate dispatch (rather than waiting up to ~5 s),
#    the optional kick below forces a launchd/systemd respawn whose
#    startup pass will pick the file up faster:
# kill -TERM $(pgrep -f 'agentsnet-agentd serve' | head -1)
# launchd / systemd auto-restart picks up the pending file and dispatches.

# 4. Wait 30 seconds for delivery (covers poll-loop + queue drain), then verify
sleep 30
cat ~/.agentsnet/install-proof-status.json
# Expect: {"status":"delivered", ...}
# AND: a real IM message at $CHANNEL/$CHAT_ID starting with "AgentsNet install proof: ..."

Verify the install

# Cryptographic install verification
~/.local/bin/agentsnet-agentd verify-install "$(head -1 ~/.agentsnet/install-completed-token.txt)"

# Daemon health
~/.local/bin/agentsnet-agentd setup-status --json | jq .

# Outbound network surface (should show ONLY relay.agentsnet.ai:443 + ipc.sock)
pgrep agentsnet-agentd | xargs -I{} lsof -p {} -i -P -n -U

Windows note (BOM-aware verify): if you wrote the token file via PowerShell Set-Content -Encoding UTF8 (the pre-v0.1.44 install.ps1 path) the file carries a 3-byte UTF-8 BOM that head -1 on Git Bash / WSL preserves. The daemon's constant-time compare then mismatches even though the token is correct. v0.1.44 install.ps1 writes via [System.IO.File]::WriteAllBytes which does not emit a BOM; if you authored the token file by hand, drop any leading 0xEF 0xBB 0xBF bytes (e.g., tail -c +4 token.txt or PowerShell's [System.IO.File]::WriteAllBytes($path, [System.Text.Encoding]::UTF8.GetBytes($token))) before running verify-install.

Clean uninstall

# macOS
launchctl bootout gui/$(id -u) com.agentsnet.agentd
rm -rf ~/.agentsnet \
       ~/.local/bin/agentsnet-agentd \
       ~/Library/LaunchAgents/com.agentsnet.agentd.plist
# Then remove the agentsnet block from your Hermes/OpenClaw config.

Full uninstall reference (Linux + Windows): /install/footprint.md#clean-uninstall

Why "transparent" instead of curl-pipe-bash?

The standard install.sh automates everything in this page in one command. This transparent path is for situations where the person or agent running the install wants to review each step first.

Both paths produce the same final state. The transparent path takes longer but makes every host change visible before execution.

Differences from install.sh