Self-hosted monitoring and cost management for AI agents.
Real-time visibility into costs, tokens, sessions, and system health from a single dashboard.
- Quick Start
- Docker Compose
- Self-Hosted Guide
- Convex Cloud Setup
- Architecture
- Development
- Stack
- License
- πΈ Real-time cost tracking - Monitor spend across providers and models as it happens
- π€ Multi-agent dashboard - Unified view of all connected agents with live status and session breakdowns
- π¬ Agent X-Ray - Interactive topology graph showing every integration β AI providers, external services, channels, memory, and cron jobs. Click any node to drill down into traces, sessions, cost breakdowns, and call history.
- π Smart alerting - Rules for budget thresholds, offline detection, and anomalies
- π‘ Live event stream - Filterable log of agent activity
- π Token analytics - Input/output/cache breakdowns with model comparisons
- π Self-hosted or cloud - Run locally with Docker or deploy to Convex Cloud
Pull the images and run:
docker pull daveved/clawwatch-webapp:latest
docker pull daveved/clawwatch-collector:latest
# Run the webapp (dashboard)
docker run -d -p 5173:3000 \
-e VITE_CONVEX_URL=https://YOUR_DEPLOYMENT.convex.cloud \
daveved/clawwatch-webapp:latest
# Run the collector (connects to your agent gateway)
docker run -d \
-e GATEWAY_URL=http://YOUR_GATEWAY_IP:18789 \
-e GATEWAY_TOKEN=your_token_here \
-e CONVEX_URL=https://YOUR_DEPLOYMENT.convex.cloud \
daveved/clawwatch-collector:latestThat's it! Open http://localhost:5173 to view the dashboard.
Environment Variables:
| Variable | Description |
|---|---|
VITE_CONVEX_URL |
Your Convex deployment URL (webapp) |
CONVEX_URL |
Your Convex deployment URL (collector) |
GATEWAY_URL |
Agent gateway WebSocket URL |
GATEWAY_TOKEN |
Gateway authentication token |
For easier management, use the provided compose file:
# Create env file
cat > .env.cloud << EOF
VITE_CONVEX_URL=https://YOUR_DEPLOYMENT.convex.cloud
CONVEX_URL=https://YOUR_DEPLOYMENT.convex.cloud
GATEWAY_URL=http://YOUR_GATEWAY_IP:18789
GATEWAY_TOKEN=your_token_here
EOF
# Run
docker compose -f infra/docker-compose.cloud.yml --env-file .env.cloud up -dWant to run everything locally including the Convex backend? This gives you full control but requires more setup.
- Docker & Docker Compose
- Node.js 18+ or Bun
- ~4GB RAM for the Convex backend
git clone https://github.com/0xdsqr/clawwatch.git
cd clawwatch
bun installcp infra/.env.example infra/.envEdit infra/.env:
GATEWAY_URL=http://YOUR_HOST_IP:18789
GATEWAY_TOKEN=your_gateway_token_here
CONVEX_CLOUD_ORIGIN=http://YOUR_HOST_IP:3210
CONVEX_SITE_ORIGIN=http://YOUR_HOST_IP:3211
VITE_CONVEX_URL=http://YOUR_HOST_IP:3210Note: Use your machine's IP (not
127.0.0.1) if accessing from other devices.
cd infra
docker volume create clawwatch_convex-data
docker compose -f docker-compose.selfhosted.yml up -d# Get admin key
docker compose -f docker-compose.selfhosted.yml exec convex-backend ./generate_admin_key.sh
# Deploy schema
cd ../packages/core
export CONVEX_SELF_HOSTED_URL=http://YOUR_HOST_IP:3210
export CONVEX_SELF_HOSTED_ADMIN_KEY=your_admin_key_here
npx convex dev --once- Dashboard:
http://YOUR_HOST_IP:5173 - Convex Dashboard:
http://YOUR_HOST_IP:6791
If you prefer Convex Cloud (recommended for most users):
- Create a deployment at convex.dev
- Get your deployment URL (e.g.,
https://xyz-123.convex.cloud) - Deploy the schema:
cd packages/core
npx convex deploy --typecheck disable- Use the deployment URL in your environment variables
Gateway β Collector β Convex β Dashboard
The collector connects to your agent gateway via WebSocket, ingests events and cost data, writes to Convex, and the dashboard subscribes to real-time updates.
bun install
cd packages/core && npx convex dev --once
cd apps/clawwatch && bun run devWith Nix:
nix develop
bun installCI: The test workflow runs nix-based checks on every push/PR.
- Frontend: React 19, TanStack Router, Tailwind CSS 4, Recharts, React Flow
- Backend: Convex (real-time database + API)
- Runtime: Bun
- Collector: WebSocket + polling for live data ingestion
MIT β do whatever you want with it.

