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-clientThe concat-client package contains the CLI, supplier runtime, and consumer
library.
2. Setup
concat setupConnects 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 startOpens 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.
- Wallet connect. The browser page uses EIP-6963 to discover installed wallets and prompts you to connect one.
- 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. - 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).
- Pricing. Prompts for input and output prices in dollars per million
tokens (e.g.
1.50for $1.50/M,0.005for a half-cent per million). The wizard stores the scaled integer under the hood; you just type decimals. - 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
| Variable | Purpose |
|---|---|
CONCAT_SERVER_URL | Server base URL. Defaults to https://concat.network. |
CONCAT_NETWORK | base (mainnet) or base-sepolia. |
AGENT_PROVIDER | Identifier for the inference backend the client will call. |
AGENT_MODEL | Model 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.