Install
openclaw skills install relayplaneAgent ops layer for OpenClaw — observability, governance, and cost optimization with automatic failover. Never breaks your setup.
openclaw skills install relayplaneOpenRouter routes. RelayPlane observes, governs, and learns.
Agent ops for OpenClaw power users. Your agents make hundreds of API calls per session — RelayPlane gives you visibility, cost control, and governance over all of them.
RelayPlane is an optional optimization layer that sits in your agent's request pipeline. It routes simple tasks to cheaper models, enforces budgets, and logs everything — with automatic fallback to direct provider calls if anything goes wrong.
Key principle: RelayPlane is never a dependency. If the proxy dies, your agents keep working. Zero downtime, guaranteed.
npm install -g @relayplane/proxy@latest
# 1. Start the proxy (runs on localhost:4100 by default)
relayplane-proxy
# 2. Add to your openclaw.json:
# { "relayplane": { "enabled": true } }
# 3. That's it. OpenClaw routes through RelayPlane when healthy,
# falls back to direct provider calls automatically.
Never do this:
# ❌ WRONG — hijacks ALL traffic, breaks OpenClaw if proxy dies
export ANTHROPIC_BASE_URL=http://localhost:4100
Instead, use the config approach:
// ✅ RIGHT — openclaw.json
{
"relayplane": {
"enabled": true
}
}
The config approach uses a circuit breaker — if the proxy is down, traffic goes direct. The BASE_URL approach has no fallback and will take down your entire system.
Agent → OpenClaw Gateway → Circuit Breaker → RelayPlane Proxy → Provider
↓ (on failure)
Direct to Provider
Minimal (everything else has defaults):
{
"relayplane": {
"enabled": true
}
}
Full options:
{
"relayplane": {
"enabled": true,
"proxyUrl": "http://127.0.0.1:4100",
"autoStart": true,
"circuitBreaker": {
"failureThreshold": 3,
"resetTimeoutMs": 30000,
"requestTimeoutMs": 3000
}
}
}
| Command | Description |
|---|---|
relayplane-proxy | Start the proxy server |
relayplane-proxy stats | View usage and cost breakdown |
relayplane-proxy --port 8080 | Custom port |
relayplane-proxy --offline | No telemetry |
relayplane-proxy --help | Show all options |
import { RelayPlaneMiddleware, resolveConfig } from '@relayplane/proxy';
const config = resolveConfig({ enabled: true });
const middleware = new RelayPlaneMiddleware(config);
// Route a request — tries proxy, falls back to direct
const response = await middleware.route(request, directSend);
// Check status
const status = middleware.getStatus();
console.log(middleware.formatStatus());
import { createSandboxedProxyServer } from '@relayplane/proxy';
const { server, middleware } = createSandboxedProxyServer({
enableLearning: true, // Enable pattern detection
enforcePolicies: true, // Enforce budget/model policies
relayplane: { enabled: true }, // Circuit breaker wrapping
});
await server.start();
// All three pillars active: Observes + Governs + Learns
// Circuit breaker protects against proxy failures
Three Pillars — All Integrated:
Sandbox Architecture (v1.3.0+):
Learning Engine Endpoints (v1.4.0):
GET /v1/analytics/summary — analytics with date rangePOST /v1/analytics/analyze — detect patterns, anomalies, generate suggestionsGET /v1/suggestions — list pending suggestionsPOST /v1/suggestions/:id/approve / reject — suggestion workflowGET /v1/rules — active rulesGET /v1/rules/:id/effectiveness — is this rule helping?relayplane-proxy telemetry offrelayplane-proxy --offline