Quick Start
Get the Clutch Protocol stack running in minutes.
Prerequisites
- Docker and Docker Compose
- Node.js 20+ (only if running demo app outside Docker)
- (Optional) GHCR login:
docker login ghcr.io— see Docker images for package links
1. Clone and start full stack
git clone https://github.com/clutchprotocol/clutch-deploy.git
cd clutch-deploy
cp .env.example .env
.env.example ships a placeholder JWT_SECRET, and the Hub API refuses to start on an empty, placeholder, or shorter-than-32-character secret — so generate a real one:
# PowerShell
$bytes = New-Object byte[] 32
[System.Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($bytes)
($bytes | ForEach-Object { $_.ToString('x2') }) -join ''
# bash
openssl rand -hex 32
Replace the JWT_SECRET=your-super-secret-jwt-key-here line in .env with the generated value:
JWT_SECRET=<paste the 64-character value here>
The remaining values in .env.example start the stack as shipped. Now bring it up:
docker compose up -d
This starts nodes, Hub API, demo app, explorer, Prometheus, Grafana, and Seq.
2. Verify services
| Service | URL |
|---|---|
| API health | http://localhost:3000/health |
| GraphQL | http://localhost:3000/graphql |
| Demo app | http://localhost:5173 |
| Explorer | http://localhost:5174 |
| Grafana | http://localhost:3030 (admin / GRAFANA_ADMIN_PASSWORD from .env) |
| Seq logs | http://localhost:5341 (SEQ_ADMIN_USERNAME / SEQ_ADMIN_PASSWORD from .env) |
3. Try the demo app
Open http://localhost:5173:
- Choose Passenger or Driver
- Generate or import a wallet
- Click Request CLT to fund via faucet
- As passenger: pick locations on the map and request a ride
- As driver: view requests and submit an offer
Or run the demo standalone:
git clone https://github.com/clutchprotocol/clutch-hub-demo-app.git
cd clutch-hub-demo-app
npm install
VITE_API_URL=http://localhost:3000 npm run dev
4. Build with the SDK
npm install clutch-hub-sdk-js
import { ClutchHubSdk } from 'clutch-hub-sdk-js';
const sdk = new ClutchHubSdk('http://localhost:3000', publicKey);
await sdk.requestFaucet(publicKey);
See Ride Lifecycle for the full flow.
Next steps
- Environments — Local vs stage URLs
- Architecture — System design
- Clutch Hub API — GraphQL reference
- SDK — Build your own app
- Explorer — Browse on-chain data