That ordering is the whole adoption story — run for a few days, read the shadow report to see which calls enforcement would have stopped, and only then drop the flag. What it produces afterwards is a receipt rather than a log line, which matters precisely when the person asking does not trust your logs.
A governance layer for autonomous actions. Run it as a proxy in front of an MCP server and every tools/call is classified, scored and recorded before it reaches the upstream; allowed calls forward transparently, blocked ones return an MCP error.
- A proxy in front of any MCP server, with an audit database of every call
- Shadow mode — everything classified, scored and recorded, nothing blocked
- A shadow report showing what enforcement would have done before you enable it
- A verifiable receipt for each governed action, checkable by someone who does not trust your logs
- Starter policies for common MCP servers, so enforcement begins from a ready-made perimeter
- A Python decorator for governing your own functions, not only tool calls
- An HTTP API and a first-party TypeScript client for non-Python agents
Pip install vaara gives you the CLI, the MCP proxy and the server; brew installs the macOS CLI and menu-bar app, and npm install @vaara/client the TypeScript client. Run vaara-mcp-proxy with --upstream pointing at the server you want to front and --db for the audit database, then point your client at the proxy instead of the upstream.
One command — pip install vaara
