Encrypted in your browser
Your prompt is sealed before it leaves your device for the gateway.
Sideroom documentation
Uncensored models, an encrypted connection you can check, and credits you use as you go. Here’s how it all fits together.
The mainnet app lives at app.sideroom.sh and is being prepared for launch. The separate testnet uses test tokens and its own accounts.
Your prompt is sealed before it leaves your device for the gateway.
Each exchange starts with a fresh check of the running gateway.
One credit balance for the chat app and API. No per-message flat fee.
02 / Privacy layer
Sideroom encrypts messages in your browser and opens them inside its verified AWS Nitro gateway. The gateway connects to your selected model over HTTPS. Replies return through the encrypted channel, with each streamed chunk authenticated before display.
Browser ↔ gateway: OHTTP encryption. Gateway ↔ model: a separate HTTPS connection. Answers follow the same route back.
The gateway proof covers the encrypted browser connection and the approved gateway release measurements. The external model provider processes the prompt to generate the answer.
The gateway creates its encryption key at startup. A hardware-signed attestation binds that key to the exact running gateway. Your browser checks it against the approved release before sending your prompt.
Your browser sends a new random challenge and checks the signed answer. It also verifies the release measurements and timestamp. A failed check stops the request before your message is sent.
Saved conversations are encrypted in your browser with AES-256-GCM before upload. The history service stores encrypted records; the key used to open them stays in your browser. Each save uses a fresh IV and authenticates the account, conversation and revision alongside the content.
You can delete saved chats or export a recovery file in Settings. Keep that file private: it includes the credentials and key needed to restore your history.
Your browser and the code running in it are part of the trusted environment. The model provider processes plaintext inside its own service; the gateway’s attestation describes the Sideroom gateway.
Further reading: OHTTP specification and AWS Nitro attestation verification.
03 / Verification
The connection proof is a check of real hardware-signed evidence. Open it in the app to inspect the encrypted connection, or use the client tools to check a record yourself.
A random challenge makes the gateway return evidence for this exchange, rather than reuse an old signed document.
The attestation includes the gateway’s image measurements and encryption key. The client checks the AWS signature, certificate chain, timestamp and challenge.
The client compares PCR0, PCR1 and PCR2 with the approved release policy. Only then does it encrypt your message for that gateway.
Download the client tools, the gateway policy and the client-kit manifest. A policy expresses which release you trust: review its measurements separately from the live server you are checking. Each new gateway build needs an updated policy.
node scripts/verify-gateway.mjs connection-proof.json \
--policy gateway-policy-2026-09-20.json
Run this from the extracted client directory after npm ci --ignore-scripts. Export the JSON from connection proof in the app and check it within five minutes. The verifier recomputes the checks; a saved record describes the recorded connection.
04 / API
Use Sideroom from your terminal or your own application. API calls go through the same gateway verification and encryption as chat, and spend the same credit balance.
These instructions cover the testnet client. Mainnet API access opens with the mainnet app; API keys and credits are separate for each environment.
Open Settings → API keys in the app. Give the key a name and copy it when it appears. The full key is shown once. Keys can send inference requests; they cannot read saved conversations, change your account or manage other keys. Revoke a key from Settings at any time.
Use Node.js 24. Download and extract the Sideroom client kit, then run the following inside its sideroom-client folder.
npm ci --ignore-scripts
umask 077
touch .env.api
chmod 600 .env.api
Open .env.api in your editor and add your key. The testnet preview password, if required, is separate from your API key.
SIDEROOM_API_KEY=your_sideroom_api_key
# For password-protected testnet access:
# SIDEROOM_PREVIEW_PASSWORD=your_preview_password
Use the approved gateway policy included with the release. The prompt is read from standard input; the reply goes to standard output.
node --env-file=.env.api scripts/account-chat.mjs \
--policy gateway-policy-2026-09-20.json \
--url https://testnet.sideroom.sh \
--model phala/gemma-4-26b-a4b-uncensored <<'PROMPT'
Explain public-key encryption in three short sentences.
PROMPT
The CLI prints the completed answer; verification and usage details go to standard error. For Qwen, use phala/qwen3.8-27b-uncensored. The chat app streams responses as they arrive.
GET /api/lab/connection?nonce=<64 hex characters> returns fresh attestation bound to the client’s challenge and gateway encryption key.
POST /api/lab/secure carries the OHTTP-encrypted binary request and encrypted response. Use the client to construct and verify these messages; this is not an OpenAI-compatible JSON endpoint.
The client supplies the API key in X-Sideroom-Account. The selected model and input byte count are sent separately for billing. Prompt and response content travel in the encrypted body.
05 / Models & credits
Buy credits, choose a model, and pay for the text it processes. A model token is a unit of text. Usage credits are your service balance. Both are separate from the planned $ROOM token.
| Model | Input / 1M tokens | Output / 1M tokens |
|---|---|---|
| Gemma 4 26B A4B Uncensored | $0.1875 | $0.875 |
| Qwen 3.8 27B Uncensored | $0.375 | $1.875 |
USD per 1 million model tokens. The same rates apply to chat and API calls.
Input includes the conversation context sent with your message. Before a request starts, Sideroom reserves a usage allowance. When the request completes with measured usage, it settles the actual charge and releases the unused allowance back to your balance.
Mainnet checkout is being prepared. At launch, open Wallet to buy credits with USDG on Robinhood Chain. Approve USDG if needed, then confirm the payment. Funds go directly to the configured treasury; credits appear after 40 L2 block confirmations. You need a little ETH for gas.
STARTER
5 USDGReceive $5 credits
PLUS
20 USDGReceive $21 credits
+5% bonus creditsMAX
50 USDGReceive $55 credits
+10% bonus creditsMainnet chain ID: 4663. Usage credits are recorded in your account; they are not transferable tokens. Try the separate testnet app with freely minted tUSDG, which has no cash value. Testnet credits and accounts stay separate from the main app.
06 / The Sideroom token
$ROOM is the planned Sideroom token, with a launch on Pons on Robinhood Chain. Its role is to connect the people using Sideroom with the protocol’s growth.
The token launch comes first. Staking, protocol revenue sharing and holder discounts are planned to follow as separate releases.
The planned staking contract will let holders deposit $ROOM to participate in the protocol’s staking programme. Deposit, withdrawal and eligibility rules will be published with the release.
We plan to allocate a portion of protocol revenue to eligible stakers. Any distributions will depend on actual revenue and the published programme rules, rather than a promised fixed return.
Planned holder benefits include discounts on usage credits. Holding requirements, discount tiers and how benefits are applied will be announced when the feature is ready.
You can use Sideroom without holding $ROOM. The token is separate from your usage-credit balance and the tUSDG used to test payments. The official contract address and launch details will be published here when confirmed.