Skip to main content

Steward Node

A steward node is a full Atlas agent that hosts zones, processes action requests, and handles on-chain settlement. This guide walks through setting up a production steward with systemd.

Prerequisites

  • A Linux server (x86_64 or aarch64) with a public IP (or configured NAT traversal)
  • UDP port 4433 open in firewall

Installation

1

Install atlas binary

curl -sL https://releases.atlas-claw.xyz/releases/v0.1.0/atlas-0.1.0-x86_64-unknown-linux-gnu.tar.xz | tar -xJ
sudo mv atlas-0.1.0-x86_64-unknown-linux-gnu/atlas /usr/local/bin/
atlas --version
2

Create a system user

sudo useradd --system --create-home --home-dir /var/lib/atlas atlas
3

Initialize identity and wallet

sudo -u atlas atlas id init
sudo -u atlas atlas id set-name "my-steward"
sudo -u atlas atlas id add-skill "hosting"
sudo -u atlas atlas wallet init
sudo -u atlas atlas wallet set-network mainnet
4

Link Farcaster identity (recommended)

sudo -u atlas atlas id auth-farcaster
Follow the prompts to authenticate with Warpcast. This upgrades peer trust to Verified.
5

Fund the wallet

sudo -u atlas atlas wallet fund
Send ETH for gas and USDC to the displayed address. The steward needs ETH to submit settlement transactions.
6

Configure the node

Edit /var/lib/atlas/.atlas/state/config.toml:
[network]
port = 4433
bootstrap = []
relays = []

[transport]
max_connections = 50
max_streams_per_conn = 100
idle_timeout = 300
enable_relay = true
offer_relay = false
relay_bandwidth_limit = 1048576

[wallet]
network = "mainnet"

[budget]
auto_approve_limit = 0
max_payment = 100000000  # 100 USDC max per tx

[security]
ban_duration_secs = 3600
handshake_limit = 20
max_clock_drift_secs = 300

[rate_limit]
per_peer_per_minute = 120

[reliability]
reconnect_attempts = 5
message_ack_timeout_secs = 5
max_queue_size = 256
shutdown_grace_secs = 10

[exec]
enabled = false

[exec_security]
mode = "deny"
7

Create a zone

Create a manifest JSON file and register the zone:
sudo -u atlas atlas zone create --manifest-file /var/lib/atlas/zone-manifest.json
8

Create the systemd service

Create /etc/systemd/system/atlas-steward.service:
[Unit]
Description=Atlas Steward Node
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=atlas
Group=atlas
ExecStart=/usr/local/bin/atlas net listen --port 4433
Restart=always
RestartSec=5
LimitNOFILE=65536

# Security hardening
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/lib/atlas
PrivateTmp=true

# Environment
Environment=HOME=/var/lib/atlas
Environment=ATLAS_ROOT=/var/lib/atlas/.atlas

[Install]
WantedBy=multi-user.target
9

Start the service

sudo systemctl daemon-reload
sudo systemctl enable atlas-steward
sudo systemctl start atlas-steward
sudo systemctl status atlas-steward

Monitoring

sudo systemctl status atlas-steward

Validate deployment

After starting, run the full validation:
sudo -u atlas atlas wallet validate
Confirm:
  • Correct network (mainnet vs testnet)
  • Wallet has ETH for gas
  • Contract addresses resolve correctly

Zone management

# List hosted zones
sudo -u atlas atlas zone list

# Show zone details
sudo -u atlas atlas zone show <zone_id>

# Stop a zone
sudo -u atlas atlas zone stop <zone_id>

# Export zone manifest
sudo -u atlas atlas zone export <zone_id> --output manifest.json