DOCS
Three surfaces, deployed independently. Start with the workspace connector — it needs read-only OAuth and nothing on anyone’s machine.
step 1 · agentless
Read-only OAuth into Google Workspace or Microsoft 365. This reads the OAuth grants your staff have already authorised, so it tells you which AI tools are in use before anything is installed anywhere.
The connector is read-only. It cannot revoke a grant, and setting a tool to “blocked” creates a policy for future usage rather than removing the app’s existing access.
step 2 · coding agents
A stdio proxy that sits between an AI coding agent and the MCP servers it calls. Every tool call passes through it and is scanned. Every call the gateway can sign is signed locally, by a key that never leaves the machine; where it cannot — standalone mode with no enrolled device, a keypair that will not load, a key registration the backend rejects, or a signing failure on the call itself — the call is still recorded, marked unsigned rather than counted as proven.
python3 --version
# Python 3.10.x or higherThe base package has zero runtime dependencies:
pip install vloex-mcp-proxyFor event sync, heartbeat and enrolment against a backend, install the backend extra:
pip install "vloex-mcp-proxy[backend]"An npm wrapper of the same name exists but is currently broken and pending a release tag. Use pip until that lands.
vloex-mcp-proxy enroll --token your-org-token --backend-url https://api.vloex.comWithout enrolment the proxy still runs and still enforces local policy, but it produces no audit trail — and the audit trail is the part you cannot get anywhere else.
vloex-mcp-proxy discoverDiscovered MCP Clients:
Claude Code (~/.claude/mcp.json) (verified)
Servers:
filesystem → npx -y @modelcontextprotocol/server-filesystem /tmp
github → npx -y @modelcontextprotocol/server-github
Cursor (~/.cursor/mcp.json) (verified)
Servers:
postgres → npx -y @modelcontextprotocol/server-postgres
Total: 2 client(s), 3 server(s)Nothing is modified until you drop --dry-run. The rewrite wraps each server’s command so calls route through the proxy.
vloex-mcp-proxy discover --rewrite --dry-run # show the diff
vloex-mcp-proxy discover --rewrite # apply itRestart the client afterwards. Tool calls then appear in the console under Activity, and the wrapped servers show under MCP.
step 3 · browser
Captures prompts and responses on the assistant sites it injects into, before the request leaves the browser. Published on both stores:
For fleet rollout, push it through Chrome Enterprise policy, Microsoft Intune or Jamf rather than asking people to install it themselves.
The extension works without a backend. If it cannot reach one it degrades rather than blocking anybody’s work — and it records that it could not reach one, rather than logging nothing.
step 4 · prove it
Every event a device can sign is signed on that device — the gateway and the extension both do. Where a device cannot, the event is recorded as unsigned rather than counted as proven: workspace OAuth discovery carries no device signature, and an unenrolled or WebCrypto-less browser degrades to unsigned. The day’s events are folded into a Merkle root with a signed checkpoint. Export a sealed bundle from Evidence and verify it offline:
python3 vloex-verify.py bundle.zipThe verifier is a single file with no dependency on us. Fetch the key set independently rather than trusting the copy inside the bundle — verifying against a key that ships in the thing being verified proves nothing.
Try it on a sample bundle without an account.
stuck somewhere
Deployment is thirty minutes with someone who has done it before, and you leave with a signed bundle of your own.