Open-source monitoring and configuration platform for AI coding assistants.
Zeude gives engineering teams visibility into how Claude Code and OpenAI Codex are used — prompt analytics, cost tracking, skill distribution, and centralized configuration — all from a single self-hosted dashboard.
- Understand usage — See who's using what, how much it costs, and which prompts work best
- Distribute knowledge — Push skills, MCP servers, hooks, and agent profiles to your whole team
- Support multiple tools — Monitor both Claude Code and OpenAI Codex from one place
- Own your data — Self-hosted with Supabase + ClickHouse, no data leaves your infrastructure
| Feature | Description |
|---|---|
| Prompt Analytics | Track all prompts with token usage, cost, and model breakdown |
| Leaderboard | Weekly usage rankings with cohort-based grouping |
| Skill Management | Multi-file skills with keyword-based suggestion and per-user preferences |
| Agent Profiles | Centrally manage and distribute agent configurations |
| MCP Server Sync | Push MCP server configs to all team members automatically |
| Remote Hooks | Deploy Claude Code hooks (Bash/Python/Node.js) from the dashboard |
| Codex Integration | Unified telemetry for OpenAI Codex alongside Claude Code |
| Auto-Update | CLI shim self-updates every 24 hours |
| Team Management | Organize users into teams with role-based access |
Developer Machine Self-Hosted Infrastructure
┌──────────────────────┐ ┌────────────────────────────┐
│ │ │ │
│ claude/codex (shim) │──── on startup ──▶│ Zeude Dashboard (Next.js) │
│ ~/.zeude/bin/ │ sync config │ ├── Supabase (users, config)
│ │ │ │ └── ClickHouse (telemetry)│
│ ▼ │ │ │
│ real claude/codex │ │ OTel Collector │
│ (original binary) │──── telemetry ──▶│ (receives spans & logs) │
│ │ │ │
└──────────────────────┘ └────────────────────────────┘
When you run claude (or codex), the Zeude shim:
- Fetches your team's config from the dashboard API
- Syncs MCP servers →
~/.claude.json - Installs hooks →
~/.claude/hooks/ - Syncs skills →
~/.claude/skills/(or~/.codex/skills/) - Installs agent profiles →
~/.claude/agents/ - Injects OTel telemetry environment variables
execs the real CLI binary (replaces the shim process)
cd dashboard
cp .env.example .env.local # configure Supabase + ClickHouse URLs
npm install
npm run devcurl -fsSL https://YOUR_DASHBOARD_URL/releases/install.sh | ZEUDE_AGENT_KEY=zd_xxx bashzeude doctorzeude/
├── cmd/
│ ├── claude/ # Claude Code shim binary
│ ├── codex/ # OpenAI Codex shim binary
│ ├── zeude/ # Doctor/diagnostic CLI
│ └── doctor/ # Health check utility
├── internal/
│ ├── mcpconfig/ # Config sync engine (skills, hooks, MCP, agents)
│ ├── resolver/ # Binary resolution with fork-bomb prevention
│ ├── autoupdate/ # Self-update mechanism
│ ├── identity/ # Cross-tool user identity resolution
│ ├── config/ # Endpoint configuration
│ └── otelenv/ # OTel environment variable injection
├── dashboard/
│ ├── src/app/ # Next.js App Router pages & API routes
│ ├── clickhouse/ # ClickHouse schema, migrations, and tests
│ └── supabase/ # Supabase migrations
├── scripts/ # Build and install scripts
├── deployments/ # OTel Collector config
└── Dockerfile # Multi-platform binary builder
| Variable | Description | Default |
|---|---|---|
ZEUDE_AGENT_KEY |
Agent key for authentication | — |
ZEUDE_DASHBOARD_URL |
Dashboard URL | https://your-dashboard-url |
ZEUDE_DEBUG |
Enable debug logging (1 to enable) |
0 |
# ~/.zeude/credentials
agent_key=zd_your_agent_key
# ~/.zeude/config
endpoint=https://your-otel-collector-url/
dashboard_url=https://your-dashboard-urlcd dashboard
npm install
npm run dev # http://localhost:3000
# Run tests
npm test # 202 vitest tests
# Local dev without auth/DB
SKIP_AUTH=true MOCK_API=true npm run dev# Run tests
go test ./...
# Build all binaries
docker build -t zeude-builder .
docker cp $(docker create zeude-builder):/app/public/releases ./releasescd dashboard
docker compose -f docker-compose.dev.yaml up -d
# Schema auto-applied from clickhouse/init.sql| Command | Description |
|---|---|
zeude doctor |
Diagnose installation issues |
/zeude (in Claude Code) |
Open dashboard with auto-login |
- Agent keys stored with
0600permissions - All API calls use Bearer token authentication
- Hook scripts run with injected environment variables
- Config sync uses hash-based diffing (no unnecessary writes)
- Path traversal and symlink attack prevention in file sync
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feat/my-feature) - Run tests (
go test ./...andcd dashboard && npm test) - Submit a pull request
For bugs and feature requests, please open an issue.
See LICENSE for details.