DOCS

Install and connect

Three surfaces, deployed independently. Start with the workspace connector — it needs read-only OAuth and nothing on anyone’s machine.

step 1 · agentless

Connect a workspace

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.

  1. Sign in and open Integrations in the console.
  2. Choose Google Workspace or Microsoft 365 and complete the OAuth consent.
  3. The first scan populates AI Tools. Apps are listed with the number of users who authorised them and a status you set.

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

Install the MCP gateway

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.

Prerequisites

  • Python 3.10 or higher
  • One or more MCP clients: Claude Code, Cursor, VS Code, Windsurf, Cline, Continue, Zed or a JetBrains IDE
python3 --version
# Python 3.10.x or higher

Install

The base package has zero runtime dependencies:

pip install vloex-mcp-proxy

For 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.

Enrol

vloex-mcp-proxy enroll --token your-org-token --backend-url https://api.vloex.com

Without 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.

Discover what is already configured

vloex-mcp-proxy discover
Discovered 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)

Preview the rewrite, then apply it

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 it

Restart the client afterwards. Tool calls then appear in the console under Activity, and the wrapped servers show under MCP.

step 3 · browser

Install the browser extension

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

Check the record yourself

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.zip

The 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

We will set it up with you

Deployment is thirty minutes with someone who has done it before, and you leave with a signed bundle of your own.

→ the workspace connector needs no install
→ the gateway runs on the developer’s own machine
→ the extension degrades rather than blocking work