Hermes and OpenClaw

Run Thirdfy from a Hermes or OpenClaw agent runtime with the Agent CLI. Install, secrets, startup checks, and the commands each cycle runs.

Hermes and OpenClaw agents run shell commands, so the Agent CLI is the simplest way to give them Thirdfy. Every command returns JSON the agent can read, and the same commands work in a cron job.

The shortcut: give your agent this prompt and it sets itself up on the CLI path.

Read https://docs.thirdfy.com/agents.md and set up Thirdfy for me with the Thirdfy Agent CLI.

1. Get the agent's keys once

On your own machine, sign in by email once:

npm install -g @thirdfy/agent-cli
thirdfy-agent login email you@example.com --json
thirdfy-agent login email you@example.com --code "<otp>" --accept-terms --json
thirdfy-agent whoami --json

You need two values for the runtime:

SecretWhere to find it
THIRDFY_AGENT_API_KEYThe agent API key (agent-...), saved in ~/.thirdfy/config.json under agent.apiKey
THIRDFY_AGENT_KEYThe agent's 0x address, shown by whoami as agent.agentKey

Store both in the runtime's secrets, never in prompts or skill files.

2. Install the CLI in the runtime

Pin the version, so a CLI release never changes your agent under you:

npm install -g @thirdfy/agent-cli@0.2.82

Set the environment before the runtime starts:

THIRDFY_AGENT_API_KEY=agent-...        # from your secret store
THIRDFY_AGENT_KEY=0x...                # the agent's 0x address
THIRDFY_RUN_MODE=agent_wallet          # the agent trades from its own execution wallet

With these set, the runtime needs no saved login. If THIRDFY_AGENT_KEY is missing, runs fail with MISSING_USER_DID.

3. Check at startup

thirdfy-agent --version --json
thirdfy-agent doctor certify execution --json

doctor certify execution checks the CLI version and command set without writing anything. Stop the runtime if it fails.

4. What the agent runs each cycle

# Discover what it may call
thirdfy-agent actions --provider hyperliquid --json

# Read data
thirdfy-agent run --action get_openmarket_btc_funding --provider openmarket --json

# Before a write: check the venue, then preflight
thirdfy-agent venue readiness hyperliquid --json
thirdfy-agent preflight --action place_hyperliquid_perps_order --provider hyperliquid \
  --params '{"coin":"ETH","isBuy":true,"size":0.01,"limitPx":2000,"orderType":"limit"}' --json

# Write: places a real order
thirdfy-agent run --action place_hyperliquid_perps_order --provider hyperliquid \
  --params '{"coin":"ETH","isBuy":true,"size":0.01,"limitPx":2000,"orderType":"limit"}' \
  --idempotency-key "cycle-2026-10-08T14:00Z-eth" --confirm-writes --json

Read success, code and data from each response. Continue to a write only when venue readiness says ready: true. Use a stable --idempotency-key per decision, so a retried cycle does not place the order twice.

Hermes

  • Provision the environment above before the Hermes dashboard or runtime starts.
  • Run the startup checks as part of the runtime's health check.
  • Use agent_wallet for the agent's own wallet. Switch to thirdfy only for fan-out to delegated wallets.

OpenClaw

  • Keep both secrets in OpenClaw's runtime secrets.
  • Have the agent call thirdfy-agent actions --provider <id> before it plans, so it only uses actions it may call.
  • Use agent_wallet for own-wallet actions. Use self only when local signing is configured. Use hybrid or thirdfy only after delegation is ready.

OpenClaw can also connect over MCP instead: see OpenClaw and Hermes (MCP).

Hosted on EarnOrg

Runtimes hosted on EarnOrg also set THIRDFY_EXECUTION_RUNTIME_ID and THIRDFY_EXECUTION_ORG_ID. The CLI sends them with every write, so credits and history are attributed to the right runtime and organization.

Troubleshooting

ErrorFix
MISSING_USER_DIDSet THIRDFY_AGENT_KEY to the agent's 0x address
401 / auth errorsCheck THIRDFY_AGENT_API_KEY is set in the runtime, not only on your machine
DAILY_FREE_LIMIT_EXCEEDEDFree requests are used up; top up at thirdfy.com/credits
blockingReasons from venue readinessFund or set up the venue first. See the venue's integration page