Assumptions
- Your AI model is configured, started, and reachable from the proxy-router host on a private endpoint (e.g.
http://my-model.example:8080). Use the bundledllama.cpp+tinyllamafor testing — adjustmodels-config.jsonif your local port differs. - You have a funded wallet on BASE (MOR + ETH) and the private key for
.env. - You have your own ETH node URL — Alchemy or Infura private API key for BASE works (
wss://base-mainnet.g.alchemy.com/v2/<key>or HTTPS). The proxy-router has a built-in round-robin of public RPC endpoints as a fallback, but it is rate-limited and unreliable in practice; running a real provider on it leads to silent missed events. SetETH_NODE_ADDRESSexplicitly. - Your proxy-router has a publicly accessible endpoint for the provider (
host:port, no protocol), e.g.mycoolmornode.example:3333.
Install & configure
Get the software
- Release package
- From source
Download the latest release for your OS from Releases. Mainnet builds have no suffix; testnet builds end in
-test.Configure .env
Linux/macOS: rename
env.example to .env. Windows: rename env.example.win to .env. Edit at minimum:WALLET_PRIVATE_KEY=— provider’s private key.ETH_NODE_ADDRESS=— required for any real deployment. The bundled minimal example does not set this; without it the node falls back to a built-in public RPC round-robin that is rate-limited and unreliable. Use your own Alchemy / Infura HTTPS or WSS URL. MatchETH_NODE_USE_SUBSCRIPTIONSaccordingly (truefor WSS,falsefor HTTPS — recommended HTTPS +false).- Choose mainnet (default) or testnet — uncomment the testnet block, comment mainnet, save.
(Optional) external / pass-through providers
To resell or front another LLM, set Full schema: models-config.json. Restart after edits.
MODELS_CONFIG_PATH= in .env and add the entry to models-config.json:(Optional) provider weights & allowlist
Edit Weights must sum to 1. Reference: rating-config.json.
rating-config.json to bias selection or restrict to specific providers:Start
- macOS / Linux
- Windows
Validate
http://localhost:8082/swagger/index.htmlshould render../data/directory contains logs.- The proxy-router log should include:
Next: register on chain
Once running, register your provider, your model (with thetee tag if you’ve TEE-hardened), and your bid. See Register on chain, then run the self-checks in Verify your provider setup before declaring victory.
What can cost you MOR during setup
A few things will quietly draw down your MOR balance during initial configuration. None of them are slashing or forfeiture; they are normal protocol fees and stakes. Knowing them upfront prevents the “I lost ~2 MOR during setup, what happened?” support ticket.| Event | Cost | Refundable? |
|---|---|---|
Register provider (providerRegister) | 0.2 MOR (or 10000 MOR for subnet) | Yes, on providerDeregister (after deregistration cooldown opens) |
Register model (modelRegister) | 0.1 MOR | Yes, on modelDeregister (model must have no active bids) |
Post a bid (postModelBid) | 0.3 MOR non-refundable marketplaceBidFee | No — every bid post charges this fee |
| BASE gas | a few cents in ETH-on-BASE per tx | No (standard gas) |
| Sessions consumed before your node was actually serving | Possibly small — see “Disputed early closes” in Sessions: stake, close, claim | n/a |
0.3 MOR. Six iterations is ~1.8 MOR gone before the node is even serving traffic.
Mitigation: finish your model and models-config.json setup, run verify-setup steps 1-4 before posting your first bid. Repost only when pricing actually needs to change.
For details on bid pricing and how to change a price, see Pricing.
