SiloRail
An OpenAI-compatible LLM gateway for paying per call in USDC on Monad. A funded wallet is the account.
Calls settle in real mainnet USDC. Only fund this wallet with money you are prepared to spend. The amount includes model cost, on-chain settlement gas, and margin. Every call has a public receipt.
You sign the authorization. The facilitator pays gas, so the wallet does not need MON.
For people: make a first call
Any EVM wallet works. The wallet is the credential: keep its private key local. To create a disposable key:
node -e 'const{generatePrivateKey,privateKeyToAccount}=require("viem/accounts");
const pk=generatePrivateKey();
console.log(privateKeyToAccount(pk).address); console.log(pk)'
Fund it with USDC
Send USDC to your wallet on Monad mainnet. The wallet never needs MON. Before funding, check this deployment's network and USDC contract.
Make a call
Start a local OpenAI-compatible proxy with the SDK:
npx -y @silorail/sdk proxy --gateway https://silorail-mainnet.fly.dev
To use the local OpenAI-compatible proxy:
# then: OPENAI_BASE_URL=http://127.0.0.1:8403/v1 OPENAI_API_KEY=unused
For the raw x402 flow, request a quote, sign it, then retry:
curl -s https://silorail-mainnet.fly.dev/v1/chat/completions \
-H 'content-type: application/json' \
-d '{"model":"nvidia/nemotron-3-nano-30b-a3b:free","messages":[{"role":"user","content":"hi"}]}'
# Returns HTTP 402 with a payment challenge in the PAYMENT-REQUIRED header
Every settlement is public:
/v1/settlements/<request-id> shows what was quoted, what it
truly cost, and what settled, with the transaction hash.
For agents: connect MCP
The MCP server gives an agent chat, list_models,
get_receipt, and wallet_status. Configure your MCP
host to run:
SILORAIL_GATEWAY_URL=https://silorail-mainnet.fly.dev \
SILORAIL_SESSION_MAX_USD=0.10 \
SILORAIL_PER_CALL_MAX_USD=0.02 \
npx -y @silorail/mcp
It creates a local wallet on first run. The two budget limits are enforced before a payment is signed. Do not put a wallet private key in an agent prompt or tool configuration.
Pricing
LLM output length is unknown before a response is generated. With x402
upto, you authorize a ceiling before the request and
SiloRail settles the actual cost after it completes. The ceiling is
not a charge.
Start with the exact authorization if your wallet has no
Permit2 allowance. After a settled call, eligible wallets can use sponsored
approval to move to upto; neither path needs MON.