Inference gateway

Models, paid per request.

Every request is paid in USDG from a private session. No account, no API key, and nothing ties one request to the next, or to you. Only providers that don't store or train on prompts are used.

Models
–
Margin
10%
Logs
0

Loading the gateway's models

Prices include the 10% margin. Each request is quoted up front assuming every output token is used, at a ceiling over the model's cheapest providers; what the provider actually charges less than that comes back as credit on the session's next request. Testnet USDG for now. From launch, a share of the margin buys $SODI and burns it.

An API key, if you’d rather.

testnet USDG

A prepaid key works with any OpenAI or Anthropic SDK: change the base URL, nothing else. It’s made in your browser and the gateway stores only its fingerprint. The trade-off: the gateway can tell requests made with one key come from the same customer. Without a key, every request stays unlinkable.

or

Call one.

With a key, any OpenAI or Anthropic SDK. Without one, three private ways in: the ask_model tool in any MCP agent, one fetch from the rx402 SDK, or Claude Code pointed at a local proxy with no Anthropic key.

with a key: OpenAI SDK
import OpenAI from "openai";const client = new OpenAI({ baseURL: "https://inference.sodi.network/v1", apiKey: process.env.SODI_KEY });const res = await client.chat.completions.create({  model: "deepseek/deepseek-v4.1-flash",  messages: [{ role: "user", content: "Hi" }],});
any MCP agent
Use ask_model with deepseek/deepseek-v4.1-flash to review this diff.
rx402
const { response } = await rx402.fetch("https://inference.sodi.network/v1/chat/completions", {  method: "POST",  headers: { "content-type": "application/json" },  body: JSON.stringify({ model: "deepseek/deepseek-v4.1-flash", messages, max_tokens: 500 }),});
Claude Code
RX402_MNEMONIC="…" node packages/mcp/dist/proxy.jsANTHROPIC_BASE_URL=http://127.0.0.1:8411 ANTHROPIC_API_KEY=unused \ANTHROPIC_MODEL=deepseek/deepseek-v4.1-flash claude