About this project
Vessel is a local-first observability proxy for LLM traffic. You point a client's base_url at a single binary and get capture, search, metrics, replay, compare, and a private UI. All captured traffic is stored only on your machine; prompts are forwarded only to the model providers you configure.
Supported backends include OpenAI (Chat/Responses APIs), Anthropic Messages, Ollama, and any OpenAI-compatible server (LM Studio, llama.cpp, vLLM). Vessel captures and searches all traffic types, including unknown formats, and stores them with compressed bodies in a local SQLite database.
Key capabilities:
- Capture and search: Live history with sessions, tags, filters, backend health, and warnings. Light/dark themes.
- Replay and Compare: Replay any captured request against the same or a different backend or model. Fan out up to 8 variations (multiple models or parameter sweeps like temperature 0.2/0.7/1.0). Compare responses side by side with metric deltas. Score responses 1-5; Reports ranks models and parameter sets by mean score.
- Reports: Tokens, requests, tok/s, duration, cache efficiency, warnings by model/tag/backend, context growth over sessions. Export filtered lists to CSV or JSONL.
- Routing and tags: Route any request to any configured backend per-request via path (/b/{backend}/...) or X-Vessel-Backend header. Tag requests via X-Vessel-Tags header or path (/t/{tag}/...) for attribution in multi-agent apps. Named sessions via X-Vessel-Session.
- MCP endpoint: Read-only MCP server at /vessel/mcp lets AI tools like Claude Code search and inspect captured traffic. Captured requests and sessions are also exposed as MCP resources.
- Warnings: Detects cold loads, slow TTFT, slow responses, repetitive output, truncated responses, estimated tokens, incomplete streams, client disconnects, body truncation, HTTP/parse errors, and more.
Privacy: Requests are forwarded byte-for-byte. Vessel never stores API keys; authorization headers are redacted at rest. It binds localhost by default and warns if you bind a non-loopback address.
Installation is available via Homebrew (macOS/Linux), Scoop (Windows), Docker Compose, or direct download. Configuration is via a vessel.json file with options for listen address, backends, timeouts, retention caps, capture limits, warning thresholds, and MCP enablement. Building from source requires .NET 10 and Node.js. Licensed under MIT.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.