Local-first multi-account AI proxy, capture database, and optional knowledge layer.
Install the desktop app (macOS, Linux, or Windows), sign in your provider accounts, point Claude Code / Codex / other harnesses at the local proxy. Rivet captures every request and response, gives you stats and limits, and lets you export/import capture data (never OAuth, API keys, or proxy secrets).
apps/desktop Tauri 2 control app (tray + installers)
crates/ Rust control plane, store, workers, MCP
vendor/ Forked CLIProxyAPI (Go sidecar)
charts/rivet Helm chart (enterprise)
docs/ Architecture, packaging, ClickHouse, enterprise
Requires Rust 1.99.1 (rust-toolchain.toml pins it), Bun 1.4.4, and Node.js 26 (.prototools).
Commit messages use Conventional Commits with a required project scope (committed.toml). Local gate is hk (fast parallel hooks runner) + committed; CI runs the same check.
brew install hk committed
hk install
# Sidecars (rivetd + rivet-proxy + ClickHouse) into Tauri binaries/
./scripts/build-sidecars.sh
# Or run control plane alone
cargo run -p rivet-runtime
# Desktop UI (tray + auto-starts rivetd)
cd apps/desktop && bun install && bun run tauri dev
# (bun run dev for Vite-only against an already-running rivetd;
# bun run dev:mock for browser UI with mocked IPC)- Prefer
cargo check -p rivet-runtime(or-p rivet-cli) while iterating; fullcargo buildonly when you need binaries. - Dev profile keeps line-tables debug info and strips dep debug info for faster links.
- On Linux,
.cargo/config.tomllinks with mold (sudo apt install clang mold/brew install mold). macOS and Windows keep the platform linker (mold has no Mach-O/PE support).
Scopes: api, charts, ci, cli, core, deps, desktop, docs, export, ingest, mcp, proxy, repo, runtime, scripts, store, worker. Example: feat(desktop): Add tray quit confirmation. Squash merges use the PR title as {title} (#N); CI lints that subject.
Local control app + rivetd control plane on macOS, Linux, and Windows.
Quota charts use live provider windows plus burn/cost from local captures. Captures + embeddings live in ClickHouse (bundled sidecar or
RIVET_CLICKHOUSE_URL); jobs run on NATS JetStream (bundled nats-server or
RIVET_NATS_URL); meta (wiki index, quota history, summaries) is file-backed
under meta/. Close the window to keep Rivet in the tray; Quit from the tray
menu stops rivetd. Default ports: proxy 18317, API/ingest 8741, MCP
8742.
Data directory: macOS ~/Library/Application Support/Rivet, Linux
~/.local/share/Rivet, Windows %APPDATA%\Rivet (override with
RIVET_DATA_DIR).
./scripts/build-sidecars.sh
cd apps/desktop && bun install && bun run tauri dev
# optional: POST http://127.0.0.1:8741/v1/demo/seed → sample captures for UI walkthrough
# release: ./scripts/release.sh # host OS installer
# ./scripts/release-dmg.sh # macOS DMG (+ --notarize)First-run: Start proxy → Sign in (any prox provider) → Write harness → run a capture.
Supported credentials (same catalog as prox / CLIProxyAPI): Claude, Codex (browser OAuth by default; device code optional), Antigravity, Kimi.com, Kimi.ai, xAI, Meta, Devin (OAuth), plus Vertex AI service-account import. Accounts live under Settings → Accounts as a list with Add account.
Workers (on by default, RIVET_WORKER_ROLE=all): vectorize writes lexical
64-d embeddings into ClickHouse for MCP semantic_search (optional Codex
re-embed into a remote space from Settings → Workers); wiki maintains a
markdown tree under the Rivet data directory (capture READMEs + knowledge
pages when wiki_model is set); compact builds session summary DAGs.
Trigger immediately via POST /v1/workers/tick or Intelligence → Run workers
now.
| Status | |
|---|---|
| M1 Local loop — supervise proxy, ingest, harness, login UI | Done |
| M2 Capture quality — rivetsink parse, redaction, export, ClickHouse primary | Done |
| M3 Desktop polish — tray (close-to-tray), conversation browser, wiki, packaging | Done |
| M4 Optional intelligence — vector/wiki workers + semantic MCP | Done |
| M5 Enterprise Helm scaffold | Done (OIDC/teams later) |
| M6 Windows + Linux desktop parity | Done |
GET /v1/status,GET|PUT /v1/configPOST /v1/proxy/start|stopPOST /v1/accounts/login, harness write, export/importGET /v1/wiki,/v1/topics,/v1/conversations*
MCP streamable HTTP (:8742/mcp): search_history, semantic_search,
topic_search, topic_get, get_full, browse_session, memory_stats.
Headless install + control plane (no desktop UI):
curl -fsSL https://raw.githubusercontent.com/wSedlacek/Rivet/main/scripts/install.sh | bash
export PATH="$HOME/.local/bin:$PATH"
rivet setupPrimary commands: rivet status, rivet doctor, rivet login <provider>,
rivet harness write claude, rivet demo seed. Paste
docs/agent-setup-prompt.md into an agent (or run
rivet prompt) for the full drop-in setup script.
Dev: cargo run -p rivet-cli -- --help. Installs pull archives from the latest
GitHub release (asset contract in docs/packaging.md).