Skip to main content

Environments

Clutch Protocol can run locally via Docker, on the public stage deployment (a testnet), or on the mainnet pilot.

Local development​

Start the full stack with clutch-deploy:

git clone https://github.com/clutchprotocol/clutch-deploy.git
cd clutch-deploy
cp .env.example .env
docker compose up -d

Replace the placeholder JWT_SECRET in .env first — the Hub API refuses to start on it. See Quick Start for the generation command.

ServiceURL
Hub APIhttp://localhost:3000
API healthhttp://localhost:3000/health
GraphQLhttp://localhost:3000/graphql
Demo apphttp://localhost:5173
Explorer UIhttp://localhost:5174
Explorer APIhttp://localhost:8088
Node 1 WSws://localhost:8081/ws
Grafanahttp://localhost:3030
Seq logshttp://localhost:5341

SDK connection:

const sdk = new ClutchHubSdk('http://localhost:3000', publicKey);

Demo app, from the clutch-hub repo:

git clone https://github.com/clutchprotocol/clutch-hub.git
cd clutch-hub
npm install
VITE_API_URL=http://localhost:3000 npm run dev

Stage (public testnet)​

The stage deployment uses Cloudflare and nginx in front of the stack:

ServiceURL
Demo apphttps://app-stage.clutchprotocol.io
Hub APIhttps://api-stage.clutchprotocol.io
Block explorerhttps://explorer-stage.clutchprotocol.io
Node 1wss://node1-stage.clutchprotocol.io/ws
Node 2wss://node2-stage.clutchprotocol.io/ws
Node 3wss://node3-stage.clutchprotocol.io/ws

SDK connection:

const sdk = new ClutchHubSdk('https://api-stage.clutchprotocol.io', publicKey);

The demo app auto-detects stage URLs: when served from app-stage.clutchprotocol.io, it uses api-stage.clutchprotocol.io automatically.

Mainnet (capped pilot)​

The mainnet runs chain id 1000. It has been open to every account since 2026-10-05 as a capped pilot: alpha software, real USDT, small limits. It is a different chain from the testnet, and nothing carries over between the two.

ServiceURL
Demo apphttps://app.clutchprotocol.io
Hub APIhttps://api.clutchprotocol.io
Block explorerhttps://explorer.clutchprotocol.io

There are no public node WebSocket addresses for the mainnet yet. The Hub API is the way in, and the block explorer shows what is on the chain.

SDK connection. Pass the chain id, so that the SDK pins it for signing:

// A script or a server with its own key. In a browser app pass the user's wallet signer instead.
const sdk = new ClutchHubSdk('https://api.clutchprotocol.io', publicKey, privateKey, 1000);

The demo app auto-detects the chain: when served from app.clutchprotocol.io, it uses chain 1000 and api.clutchprotocol.io.

To get CLT, connect your wallet (MetaMask, Trust Wallet or TronLink; on a phone, open the app inside the wallet app), open the menu, choose Wallet, then the Top up tab, and send USDT (TRC-20, on the Tron mainnet) to the address it shows. There is no faucet. The treasury mints CLT to your wallet for the amount you sent, minus the network fee below.

The pilot's limits:

WhatLimit
One top-up$100 of CLT. A top-up that would credit more is not credited by itself: it waits for a manual review, and your USDT stays safe at your address in the meantime
Top-ups per day$200 of CLT in any rolling 24 hours. A top-up that would pass it waits, and is credited when older ones leave the window
Smallest top-up$5 after the network fee. A smaller one credits nothing and waits for a manual decision
Network fee$4.00 is taken from your first top-up and $2.00 from each later one, to pay the relay that moves the USDT out of your address. The relay charges less today ($3.00 and $1.50) and its price can change. The difference is not refunded: it stays in the reserve as extra backing. The app shows the fee before you pay
WithdrawalOpen since 2026-10-16. $25 to $50 per withdrawal, a $2.00 fee, and a rolling 24-hour ceiling of $200 for everyone together. See Redemptions
Real money, alpha software

Use only what you can afford to lose. The pilot is not audited. Its three validators run on one host, and the treasury's mint and payout keys are plain keys on the server: see Mainnet Readiness. The demo app holds no key of yours: you connect your own wallet (MetaMask, Trust Wallet or TronLink), which keeps the key and asks you before each action. Keep the wallet's recovery phrase safe: it is the only way back to your account and your CLT, and nobody can recover it for you.

Website and documentation​

ServiceURL
Marketing sitehttps://clutchprotocol.io
Documentationhttps://docs.clutchprotocol.io
Alpha

The stage environment is for testing, and the mainnet is a capped pilot. APIs and endpoints may change.

Environment variables​

Hub API​

Loaded from config/{env}.toml with APP_ prefix overrides. Key settings:

SettingDefault (local)Description
ws_addr0.0.0.0:3000HTTP bind address
clutch_node_ws_urlws://127.0.0.1:8081/wsNode WebSocket
jwt_secret—JWT signing secret

See API Configuration.

Demo app​

VariableDescription
VITE_API_URLHub API base URL
VITE_CHAIN_IDChain id pinned client-side for auth/signing (default 2077)
VITE_ORCHESTRATOR_URLpayment-orchestrator base URL for the deposit panel (default /payment, a proxied same-origin path — see the note below)
VITE_CARTO_API_KEYCARTO basemap API key; unset falls back to OpenStreetMap tiles

VITE_ORCHESTRATOR_URL's default assumes nginx is proxying /payment/ to the orchestrator, which is true for the full compose stack but not for a standalone npm run dev — see Demo App Getting Started for the local workaround.

Explorer​

VariableDescription
VITE_EXPLORER_API_URLExplorer backend URL; /api is appended (default http://localhost:8088 on localhost, otherwise the relative /api)
VITE_NETWORK_LABELThe network chip in the header; read from the hostname when unset

Funding a wallet​

Every environment funds a wallet the same way: deposit USDT. Each wallet gets one permanent Tron address from payment-orchestrator, and USDT (TRC-20) sent to it is minted as CLT to that wallet — there is no environment where CLT is handed out for free. See Deposits.

Choosing an environment​

Use caseEnvironment
Local developmentDocker compose on localhost
Integration testingStage URLs
Learning / demoStage demo app or local stack
Real USDT, small amounts, alpha riskMainnet pilot
Block explorerhttps://explorer.clutchprotocol.io for the mainnet pilot, https://explorer-stage.clutchprotocol.io for the testnet, or local :5174