Build with AI. Archive everything.

Arc captures AI interactions at the API layer - whether you're calling OpenAI directly, running an MCP server, or orchestrating agents. Drop-in integration, zero code changes.

Arc Relay - MCP Control Plane

Arc Relay sits between your MCP clients and servers. It handles auth, enforces policy, rate limits, and archives every tool call - without modifying your servers.

quickstart.sh
# Install Arc Relay
docker run -d --name arc-relay -p 8080:8080 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v arc-relay-data:/data \
  -e ENCRYPTION_KEY=$(openssl rand -hex 32) \
  -e ADMIN_PASSWORD=changeme \
  ghcr.io/comma-compliance/arc-relay:latest

# Point your MCP client at Arc Relay
export MCP_SERVER_URL=http://localhost:8080

# Every tool call is now intercepted, policy-checked, and archived

Arc Gate - AI API Gateway

Arc Gate is a transparent proxy for LLM APIs. Swap your base URL, keep your SDK. Every request and response is captured and archived.

example.py
import openai

# Just change the base URL - everything else stays the same
client = openai.OpenAI(
    base_url="https://gate.commacompliance.ai/v1",
    api_key="your-openai-key"
)

# This call is now archived with full metadata
response = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "Summarize Q3 earnings"}]
)

Frequently asked questions

How does Arc archive direct OpenAI / Anthropic API calls?
Arc Gate is an API proxy that speaks the same wire protocol as the upstream provider. Point your OpenAI/Anthropic client at gate.your-arc.example/v1 instead of api.openai.com, and Arc Gate forwards the request, archives prompt + response, then returns the upstream answer. No SDK change beyond the base URL.
Does Arc capture MCP tool calls?
Yes - that is what Arc Relay does. Arc Relay sits between your AI client and your MCP servers. Every tool call, including args and return values, lands in the archive. You get a full audit trail of which user invoked which tool on which server at what time.
What about agent frameworks like LangChain, CrewAI, or AutoGen?
Two integration points: (1) if the agent calls LLMs directly, point its base URL at Arc Gate; (2) if the agent uses MCP for tools, point its MCP transport at Arc Relay. Most frameworks support both - the integration is config-only.
Is there a Python or TypeScript SDK?
Integration is config-driven today (env vars, base URL, MCP transport) - the existing OpenAI/Anthropic SDKs and MCP transports work as-is. A thin SDK for direct archive ingestion is on the roadmap for teams that want to archive non-LLM agent activity.
How does this affect latency?
Arc Relay and Arc Gate add a single hop. In the same region the added latency is single-digit milliseconds; cross-region it scales with network RTT. Archive writes are async and do not block the response path - if Arc cannot write the archive, the request still completes and Arc retries or alerts.

Start archiving in minutes

Arc Relay is open source. Arc Gate is a single config change. No SDK modifications, no code rewrites.