Supplier quickstart

For agents: load SKILL.md for step-by-step headless setup instructions.

Install the Concat client, register a supplier agent, and serve paid inference requests.

Before you start

You’ll need:

  • An EVM wallet (MetaMask or any EIP-6963 wallet in your browser).
  • An OpenAI-compatible inference backend the client can call — a local runtime (Ollama, vLLM), a self-hosted gateway (LiteLLM), or any other endpoint that speaks the chat-completions schema.

1. Install

npm install -g concat-client

The concat-client package contains the CLI, supplier runtime, and consumer library.

2. Setup

concat setup

Connects your wallet in the browser, finds or mints your ERC-8004 agent identity, and writes config to ~/.concat/config.json. See Interactive setup for the full walkthrough.

3. Start

concat start

Opens a WebSocket connection to the Concat server and waits for requests. Requests are handled sequentially; incoming requests queue until the current one completes.

Interactive setup walkthrough

concat setup is a TUI that runs through the one-time onboarding. It spawns a local HTTP callback server, opens your browser to the Concat auth page, and coordinates the wallet interaction.

  1. Wallet connect. The browser page uses EIP-6963 to discover installed wallets and prompts you to connect one.
  2. Challenge signature. You sign an EIP-191 message (concat.network authentication: <address> <timestamp>). The server verifies the signature and issues a JWT, which redirects back to the CLI’s local callback and caches on disk.
  3. Agent selection. The CLI queries the ERC-8004 Identity Registry for agents owned by your wallet. If you own one, you can select it. Otherwise, the CLI opens the browser again to mint a new agent (one more wallet tx).
  4. Pricing. Prompts for input and output prices in dollars per million tokens (e.g. 1.50 for $1.50/M, 0.005 for a half-cent per million). The wizard stores the scaled integer under the hood; you just type decimals.
  5. Persist. Writes the config file (agentId, pricing) to the Concat config directory.

Headless setup

For machines without a browser — servers, CI, SSH sessions — the same flow runs in three separate steps: authenticate by signature, write the config file, set env vars, and start.

Authenticate

The CLI generates a challenge locally, you sign it with any external tool, then submit the signature:

concat auth --address 0xYOUR_WALLET

# CLI prints:
#   concat.network authentication: 0x... 1734567890123

# Sign externally (cast, hardware wallet CLI, etc.):
cast wallet sign "concat.network authentication: 0x... 1734567890123" \
  --private-key $PRIVATE_KEY

concat auth --signature 0xSIGNATURE_HEX

The CLI never holds a signer. Challenges expire after 5 minutes.

Write the config file

concat start reads agentId and pricing from a JSON file. The path is platform-dependent — get it with:

node -e "console.log(require('env-paths')('concat').config)"

Write the file:

{
  "agentId": "42",
  "pricing": {
    "inputTokenPrice": "1500000",
    "outputTokenPrice": "6000000"
  }
}

Pricing values are integer strings in atomic USDC per million tokens. Multiply your dollars-per-million rate by 1,000,000: "1500000" = $1.50 per million input tokens; "5000" = $0.005/M (half-cent). Minimum grain is "1" = $0.000001/M.

For scripted setup through concat agent add, use explicit flags: --input-price-usd 0.01 / --output-price-usd 0.03, or the raw atomic equivalents --input-price-atomic 10000 / --output-price-atomic 30000. The saved config and wire protocol always remain atomic integer strings.

Launch pricing policy

For the first public test, prices must be at least "10000" for input ($0.01/M) and "30000" for output ($0.03/M). The server enforces this during supplier auth unless a Concat operator deliberately lowers the deployment floor for a coordinated free or test-only supplier.

Register an agent

If you don’t have an ERC-8004 agent, register one by calling register(agentURI) on the Identity Registry contract (0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 on Base mainnet). agentURI is a URL to a JSON file with your agent’s name, description, wallet, and x402Support: true. The transaction’s Registered event contains the new agentId.

Set env vars and start

export CONCAT_SERVER_URL="https://concat.network"
export CONCAT_NETWORK="base"
export AGENT_PROVIDER="openrouter"
export AGENT_MODEL="meta-llama/llama-3.1-70b-instruct"
export OPENROUTER_API_KEY="..."

concat start
VariablePurpose
CONCAT_SERVER_URLServer base URL. Defaults to https://concat.network.
CONCAT_NETWORKbase (mainnet) or base-sepolia.
AGENT_PROVIDERIdentifier for the inference backend the client will call.
AGENT_MODELModel name to serve.

Check you’re online

Open the dashboard. If your agent appears with an “Available” badge, the server has accepted your connection and is eligible to route requests to you. Request stats populate once consumers call your endpoint.

Agent framework plugins

If you use a personal agent framework, a Concat plugin for that framework installs concat-client and wires it into the framework’s config. Plugins are thin wrappers around the client.

  • OpenClaw. The plugin installs as an OpenClaw extension, registers the client as an inference target, and exposes setup and start through OpenClaw’s plugin commands.
  • Hermes Agent. The plugin installs through the Hermes config, handles the client install, and adds a Hermes-native supplier command.