How to Set Up Antseed AI Inference Network on a VPS with Auto-Start for OpenClaw and Hermes Agents

Run the Antseed buyer proxy 24/7 on your VPS as a systemd service. Hermes and OpenClaw connect to a local API endpoint, payments settle in USDC on Base, and the whole stack auto-recovers on reboot.

May 2026 โ€ข DevOps Tutorial โ€ข 12 min read

๐ŸŽฏ Why Run Antseed Directly on the VPS

The Mac desktop guide covers the laptop-side workflow with an SSH reverse tunnel. This post is for the production case: you want your AI agents to keep working even when your laptop is closed. By installing the Antseed CLI directly on the VPS and running the buyer proxy as a systemd service, you get:

Prerequisites

๐Ÿ’ก What Is Antseed, in One Sentence

Antseed is an open peer-to-peer network where independent operators sell access to AI models โ€” Claude, GPT, Llama, Qwen, DeepSeek, Mistral, and more โ€” and you pay them directly per request in USDC instead of routing through a centralized API gateway. Want the full architecture deep-dive? Read AntSeed: The Open Market for AI Inference.

Step 1: Install the Antseed CLI

SSH into your VPS and install the CLI globally via npm:

npm install -g @antseed/cli

Verify the install:

antseed --version
antseed --help

The first time you run any antseed command, it generates a node identity key at ~/.antseed/identity.key. This file is your wallet โ€” it controls your deposits and signs every payment. Treat it like an SSH private key.

antseed buyer status

If the identity didn't auto-generate, force it by running any command. Then export the hex-encoded identity into your shell environment โ€” the systemd unit and CLI both read this:

export ANTSEED_IDENTITY_HEX=$(cat ~/.antseed/identity.key)
echo $ANTSEED_IDENTITY_HEX

โš ๏ธ Security: The file at ~/.antseed/identity.key is a private key. Anyone who reads it controls your USDC deposits. Lock down permissions:

chmod 600 ~/.antseed/identity.key
chmod 700 ~/.antseed

Don't commit it to git, don't paste it in chat, and back it up to an offline password manager if you plan to keep funds in it.

Step 2: Discover Peers on the Network

List every active provider on Antseed:

antseed network browse

You'll see a table with the peer's 40-character hex ID, display name, services offered, sample models, and reputation:

Peer ID Name Services Models Rep โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”€โ”€โ”€ 0e49122e76bd8b9ccb2fe10c0088c4 surplusintelligence.ai openai, anthropic, โ€ฆ 136 services โ˜…โ˜…โ˜…โ˜…โ˜… 4668854ba3e8b094e6f48fbeb59cec Dark Signal openai, openai-resp. gpt-5.4, gpt-5.5+3 โ˜…โ˜…โ˜…โ˜… 1d90f467689d499dc435e5744b4613 Open Forge openai deepseek-r1, qwen3 โ˜…โ˜…โ˜…โ˜… 71e2ff34f8ef75โ€ฆ Prime Seed anthropic claude-sonnet-4-6 โ˜…โ˜…โ˜…โ˜…

For this guide we'll use surplusintelligence.ai โ€” it lists 136+ services, hosts a generous free tier, and its paid models price around $0.0010 / $0.0030 per million input/output tokens for the cheapest endpoints. To inspect everything it offers:

antseed network peer 0e49122e76bd8b9ccb2fe10c0088c41ceb608927

Step 3: Pin Your Preferred Peer

Until you pin a peer, the buyer proxy doesn't know who to route requests to. Pin Surplus Intelligence:

antseed buyer connection set --peer 0e49122e76bd8b9ccb2fe10c0088c41ceb608927

Confirm the pin stuck:

antseed buyer status

You should see Pinned peer โ”‚ 0e49122eโ€ฆ in the output. To switch peers later, just run the same connection set command with a different ID.

Why pinning matters: Without a pinned peer, every request from Hermes/OpenClaw will fail with {"error":{"type":"no_peer_pinned"}}. The router won't auto-pick โ€” you have to choose.

Step 4: Fund Your Account with USDC on Base

Antseed uses USDC on the Base blockchain for settlement. You deposit once, the proxy debits the contract per request. The CLI ships with a local payment dashboard for handling deposits.

Start the Payment Dashboard

On the VPS:

antseed payments

This launches a web UI on http://localhost:3118. It does not need to run 24/7 โ€” only when you're depositing or withdrawing.

If the command errors out with an identity-related complaint, re-export your key and try again:

export ANTSEED_IDENTITY_HEX=$(cat ~/.antseed/identity.key)
antseed payments

Tunnel the Dashboard to Your Laptop

The dashboard binds to localhost on the VPS, so you need to forward port 3118 to your machine to access it in a browser. Open a new terminal on your laptop and run:

ssh -L 3118:localhost:3118 user@your-vps-ip

Now open http://localhost:3118 on your laptop. You'll see the Antseed payment portal showing your wallet address (something like 0x4โ€ฆF) and current balance.

Deposit USDC

  1. Connect your Web3 wallet (MetaMask or Rabby) to Base Mainnet in the dashboard.
  2. Make sure the wallet holds at least 10 USDC on Base (and a tiny bit of ETH for gas โ€” usually a fraction of a cent).
  3. Click Deposit, enter 10, and approve the transaction in your wallet. There are two transactions: an ERC-20 approval, then the actual deposit. Both are cheap on Base.
  4. After confirmation, refresh the dashboard. Your status should now read:
Deposits available: 9.000000 USDC

(The 1 USDC difference is reserved against pending settlements; it returns when the contract clears.)

You can now stop the payments dashboard โ€” close the terminal where it's running, or hit Ctrl+C. The funds stay on-chain in the Antseed payment contract, available to the buyer proxy.

Without deposits, every request returns {"error":{"type":"insufficient_deposits"}}. Top up before you start running agents against the proxy.

Step 5: Configure systemd for Auto-Start (The Critical Part)

This is the production piece. We want antseed buyer start to run on boot, restart on crash, and log to journald so you can debug without SSH gymnastics.

Find Where antseed Lives

systemd needs the absolute path:

which antseed

Common results: /usr/bin/antseed, /usr/local/bin/antseed, or (if you use nvm) something like /home/user/.nvm/versions/node/v20.10.0/bin/antseed. Note the full path โ€” you'll plug it into the unit file.

Create the systemd Unit

Create /etc/systemd/system/antseed.service (you'll need sudo):

sudo nano /etc/systemd/system/antseed.service

Paste in:

[Unit]
Description=Antseed Buyer Proxy (P2P AI inference)
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=user
WorkingDirectory=/home/user

# Sanity check: identity must exist before we start
ExecStartPre=/bin/bash -c 'test -f /home/user/.antseed/identity.key'

Environment="HOME=/home/user"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Export identity from file, then launch the buyer proxy
ExecStart=/bin/bash -c 'export ANTSEED_IDENTITY_HEX=$(cat /home/user/.antseed/identity.key) && /usr/local/bin/antseed buyer start'

Restart=on-failure
RestartSec=5
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

Replace user with your VPS username and adjust the antseed binary path to whatever which antseed reported. If the binary lives under nvm, point ExecStart at that absolute path.

Reload, Enable, Start

sudo systemctl daemon-reload
sudo systemctl enable antseed
sudo systemctl start antseed

Confirm it's running:

sudo systemctl status antseed

You should see Active: active (running) and a fresh PID. Tail logs to verify the proxy bound to port 8377:

sudo journalctl -u antseed -f

Expected log lines mention something like buyer proxy listening on :8377 and peer pinned: 0e49122eโ€ฆ. Hit Ctrl+C to stop following.

Test the Local API

curl http://localhost:8377/v1/models | head -50

If that returns a JSON list of models, the proxy is healthy and you're ready to wire up agents.

Step 6: Point Hermes and OpenClaw at the Local Proxy

Both agents speak the OpenAI and Anthropic chat-completion formats, and the buyer proxy serves both. Set environment variables in the agent's environment file (or directly in your shell, then restart the agent):

export ANTHROPIC_BASE_URL=http://localhost:8377
export OPENAI_BASE_URL=http://localhost:8377/v1
export OPENAI_API_KEY=unused

The OPENAI_API_KEY value is irrelevant โ€” payment is handled on-chain via your Antseed identity, not via API keys โ€” but most SDKs require something non-empty in that variable.

Available API Endpoints

FormatEndpointUsed By
Anthropic MessagesPOST http://localhost:8377/v1/messagesClaude SDK, Hermes anthropic provider
OpenAI Chat CompletionsPOST http://localhost:8377/v1/chat/completionsOpenAI SDK, OpenClaw, most agent frameworks
OpenAI ResponsesPOST http://localhost:8377/v1/responsesOpenAI Responses-API clients (gpt-5.x)
Model listGET http://localhost:8377/v1/modelsHealth check, available-model discovery

Quick Smoke Test

curl http://localhost:8377/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "qwen2.5-72b",
        "messages": [{"role":"user","content":"Say hello in one word."}]
    }'

If that returns a chat completion, the entire pipeline is live: Hermes/OpenClaw โ†’ localhost:8377 โ†’ Surplus Intelligence โ†’ response โ†’ settled in USDC.

Day-to-Day Operations Cheat Sheet

<tr><td>Check balance</td><td><code>antseed buyer balance</code></td></tr>
TaskCommand
Check service statussudo systemctl status antseed
Start servicesudo systemctl start antseed
Stop servicesudo systemctl stop antseed
Restart servicesudo systemctl restart antseed
Enable on bootsudo systemctl enable antseed
Disable on bootsudo systemctl disable antseed
Tail logssudo journalctl -u antseed -f
Last 200 log linessudo journalctl -u antseed -n 200
List antseed processesps aux | grep antseed
Kill a stuck buyer proxypkill -f "antseed buyer start"
Browse networkantseed network browse
Inspect a peerantseed network peer <peer-id>
Switch peersantseed buyer connection set --peer <peer-id>
Check buyer statusantseed buyer status
Open payments dashboardantseed payments

Troubleshooting

Service won't start: "identity.key not found"

The systemd ExecStartPre guard caught a missing identity file. Either the file is at a non-default path, or it was deleted. Recreate or restore it:

# Run any command as your user to regenerate
antseed buyer status
ls -la ~/.antseed/identity.key

If you have a backup, restore it; otherwise a new identity will be created and you'll need to fund it again.

Requests return no_peer_pinned

You haven't pinned a peer, or the pin was cleared. Pin Surplus Intelligence (or your preferred peer):

antseed buyer connection set --peer 0e49122e76bd8b9ccb2fe10c0088c41ceb608927
sudo systemctl restart antseed

Requests return insufficient_deposits

Your USDC balance on the Antseed contract has run out. Top up:

# On the VPS
antseed payments

# In another terminal on your laptop
ssh -L 3118:localhost:3118 user@your-vps-ip

Open http://localhost:3118, deposit more USDC, then close the dashboard.

antseed payments errors out about identity

The CLI lost the identity in the current shell. Re-export and try again:

export ANTSEED_IDENTITY_HEX=$(cat ~/.antseed/identity.key)
antseed payments

Port 8377 already in use

An old buyer proxy didn't die cleanly. Stop systemd, kill the orphan, restart:

sudo systemctl stop antseed
pkill -f "antseed buyer start"
sleep 2
sudo systemctl start antseed
sudo systemctl status antseed

Hermes/OpenClaw still hits the old upstream API

Environment variables aren't picked up by a process that's already running. Restart the agent after exporting the new BASE_URL values:

# For Hermes
sudo systemctl restart hermes

# For OpenClaw
sudo systemctl restart openclaw

If you set the variables in ~/.bashrc, that won't help systemd-managed services โ€” add them to the agent's EnvironmentFile or a drop-in unit override instead.

Service flapping: keeps restarting every 5 seconds

Check the journal โ€” usually it's a missing node binary in the systemd PATH, an incorrect User=, or the identity file's permissions blocking the cat in ExecStart:

sudo journalctl -u antseed -n 100 --no-pager

Fix whatever the logs name, run sudo systemctl daemon-reload, and start again.

Operational Notes

Conclusion

You now have a production-grade Antseed buyer proxy on your VPS: 24/7 availability, automatic recovery, USDC-based pay-per-request inference, and a clean local API endpoint that any OpenAI- or Anthropic-compatible client can use. Hermes and OpenClaw don't need to know anything about peer-to-peer settlement, blockchain, or P2P routing โ€” they just hit localhost:8377 and get responses back, the same way they'd hit OpenAI.

The whole stack โ€” buyer proxy + agents โ€” survives reboots, crashes, and most normal failure modes without manual intervention. Top up your USDC every few weeks (the dashboard takes about 30 seconds), monitor the journal occasionally, and otherwise let it run.

If you want to compare topologies, the Mac desktop variant trades VPS independence for a friendlier GUI but couples your agent uptime to your laptop. For headless, hands-off, production deployments, the systemd path documented here is the right call.

Related reads: AntSeed: The Open Market for AI Inference ยท Mac Desktop Setup Guide ยท SSH Reverse Tunnel Variant ยท Hermes Agent Guide

๐Ÿ’ฌ Comments