Skip to main content
The demo runs on testnets, but nothing in Caplane is testnet-specific. The broker, the adapters, and the binding are chain-agnostic: they work on any EVM chain with an EIP-3009 token. This page is the honest checklist for running it for real, and the parts that are a testnet convenience and do not carry over.

What carries over unchanged

  • The broker and the binding. CapabilityBroker and nonce = keccak256(abi.encode(order)) are the same bytecode on any chain. The security argument in the threat model does not depend on the network.
  • Real USDC settles directly. Circle’s native USDC implements EIP-3009 transferWithAuthorization, the exact function the broker calls. On a chain with native USDC (for example Arbitrum One), you settle in real USDC with no TestUSDC. The order’s payToken is the real USDC address.
  • The SDK. @caplane-network/sdk resolves addresses from a registry. Point it at your deployment’s registry (or bake your own chain config) and connect() works against mainnet the same way.

What is testnet-only

  • TestUSDC and the faucet. On testnet, TestUSDC exposes a permissionless mint and the faucet automates it so a tester can get paid-in tokens. On mainnet there is no faucet: a consumer holds real USDC. The faucet service exists only to remove that friction on a testnet.
  • The permissionless mint. A mintable token is a test convenience. Production settles real value in real USDC.

The checklist

  1. Deploy the contracts to the target chain: CapabilityBroker and the adapters you want (AllocationAdapter, GasSponsorshipAdapter, TimeboostAdapter, …). The deploy scripts in contracts/script are the template. Before mainnet with real funds, a full external audit is the prudent step; the demo ships an internal adversarial audit (see security).
  2. Use the chain’s real USDC as payToken (Circle’s native USDC, which supports EIP-3009). Do not deploy TestUSDC on mainnet.
  3. Write the registry. Put the mainnet addresses in a deployments/<chain>.json; the SDK and the services read addresses from there, never hard-coded. Add the chain to the SDK’s baked config (or pass a custom deploymentsDir) and cut a new SDK version.
  4. Run a relayer with a gas key funded in the chain’s native token. It earns feeBps; size your feeFloorBps to cover mainnet gas. The hosted edge (rate limit, concurrency cap, gas circuit-breaker) is the same one command with RELAYER_HARDENED=1. See run a relayer.
  5. Providers deploy and price their adapters in real USDC, gate grant to the broker, and optionally register for discovery. See sell a capability.

You run it; no one gatekeeps

Caplane is facilitator-free by construction. There is no Caplane-operated coordinator a production deployment depends on: you (or any provider, or any relayer operator) deploy the contracts, run the services, and settle. Anyone can fork the repository and stand up their own broker, adapters, and relayer on any chain. The primitive is the product; the hosted testnet services are one instance of it. The two declared limits hold on mainnet as on testnet: the gas-sponsorship underlying is commoditized, and the Timeboost resale market has largely collapsed. The value is the atomic, facilitator-free settlement of any scarce on-chain capability, which is chain-independent.

See also