OpenRouter, from your terminal

One key. Every model.
Reached with ssh.

RouterCafe is a model router with an OpenAI-compatible API, one balance across every provider, and a front end that is a terminal you already know how to open. Pay in SOL. Your private key never leaves your machine.

$ ssh -A router.cafe
ssh -A router.cafe
RouterCafe │ Deposit ││ API Keys ││ Models ││ FAQs │ ( ) ( ) ) ) ( ) ( ( ( ) ( ) ) _____________ <_____________>___ | | ) | | ) ___| |__) / \___________/ \ \_____________________/ A little café for every AI model, in your terminal. account 7xKX4pQ9mNvR2tYbW8cZfL3hJ6sD1aG5uE0rT laptop@here balance $12.3456 paid in $12.3456 spent $0.4821 API keys: rc_a7c4...3f9a last used just now To use: export OPENAI_BASE_URL=https://api.router.cafe/v1 export OPENAI_API_KEY=rc_abcd...wxyz tab next page r refresh ? FAQs q quit

The shape of it

Four steps, and the fourth is optional

There is no sign-up, because there is nothing to sign up for: the key you connect with is already a Solana account, and that account is the balance.

01

Connect

An ed25519 key is a Solana account, so the key that authenticates your SSH session names the account the money belongs to. No email, no password, no onboarding.

ssh -A router.cafe
02

Deposit

The Deposit tab. Type an amount. The server asks your own agent, reached through the ssh -A you forwarded, for a signature on a transfer. Your key never crosses the connection.

The transaction that comes back is checked against what was asked for before it is broadcast: one System transfer, two accounts, the amount you typed.

03

Mint a key

On the API Keys tab, press n. A rc_… key is shown once, and only its fingerprint is kept, so the server's own ledger is not a file of live credentials. Press y and your terminal is asked to copy it.

04

Point a client at it

Anything that speaks the OpenAI API works. Swap the base URL and the key, and the model names are RouterCafe's, so they do not change when a provider does.

export OPENAI_BASE_URL=https://api.router.cafe/v1
export OPENAI_API_KEY=rc_a7c4...3f9a

The part that is different

There is no shell. Not hidden, not disabled, not behind a flag.

Every public SSH service eventually grows a command that runs something. This one never does, and the reason is structural rather than a promise: the session is a program, so there is no path from a connection to a process.

ssh router.cafe uptime refused, exit 1
ssh -s router.cafe sftp subsystem refused
ssh -L 8080:127.0.0.1:8080 router.cafe no channel
ssh -D 1080 router.cafe no channel
ssh -A router.cafe the session UI

The only four things a connection can reach: the UI, the ledger, the API, and a signature request to the agent you forwarded.

✓

Your key stays yours

A deposit is an ordinary signature request to the ssh-agent your client forwarded. The private key is never sent, and the server never holds one.

✓

The transaction is read back before it is sent

The signed bytes are decoded and checked: one System Program transfer, the fee payer is the account paying, no writable account other than the source and the treasury, and the amount is the amount you typed. Anything else is refused and nothing is broadcast.

✓

Balances are integers

Credit is counted in millionths of a dollar in an int64, and a request reserves the most it could cost before it starts and is refunded the difference afterwards. A balance cannot go negative and there is no rounding rule anywhere near the decision.

✓

The ledger is not a credential file

API keys are stored as SHA-256 digests. A copy of the ledger gives an attacker balances and fingerprints, not keys.

What it routes to

The name you send is the model you get

A request naming a model this router does not have is refused by name. Guessing at the nearest one is how a request meant for one model quietly gets billed as another.

modelprovider input / 1M output / 1M
routercafe/freepooledfreefree
gpt-6-lunaopenai$0.10$0.50
claude-haiku-5-5anthropic$0.10$0.50
gemini-3.8-flashgoogle$0.75$3.75
claude-sonnet-5-5anthropic$2.00$10.00
gpt-6.1-solopenai$2.00$10.00
claude-opus-5-5anthropic$4.00$20.00
gemini-3.1-pro-previewgoogle$2.00$12.00
gpt-6-astraopenai$10.00$50.00

List prices, in the units OpenRouter publishes, so the two can be compared by eye. Every deposit records the rate it was credited at, so changing the rate never rewrites somebody's history.

Questions people actually ask

Before you connect

Why not just use OpenRouter?

You may well. RouterCafe is the same shape with two differences: you pay in SOL from the terminal, and the front end is a terminal session rather than a dashboard. If you want a web console and a card, they are the better product.

What does a deposit cost?

The Solana network fee, which is a few thousand lamports, taken out of the amount you send. Deposits below roughly 0.00001 SOL are refused rather than spent entirely on the fee, and the TUI says so before you sign anything.

Why does it need ssh -A?

Because that is how it asks your key to sign. Without agent forwarding there is no way for the server to reach a key that is on your machine, and it would have to ask you to hand it over, which is exactly the thing it should not do. The deposit screen tells you this rather than failing silently.

Can I use a wallet instead of an SSH key?

Yes. The browser terminal at /app signs in with a Solana wallet and shows the transaction for you to approve before it is sent, which is the same flow through a different key holder.

What happens to my key if it leaks?

On the API Keys tab press x to revoke it, then press n to mint another. The balance belongs to the account rather than to the key, so revoking does not touch your credit.

Is the rate fixed?

The SOL price is set by whoever runs this instance and recorded on every deposit, so what you were credited at is not something that can change afterwards. It is shown on the deposit screen before you sign.

The terminal is the whole product

Connect, deposit, and take a key. Everything after that is your usual OpenAI client with two environment variables changed.

deposits to
ALT1SYDQCygmHbXyVsLp9B72pxdXgP7ZtpuLpPXTKCHs
sol price
$200 per SOL
provider