RelayPlane
by @relayplane
Agent ops layer for OpenClaw — observability, governance, and cost optimization with automatic failover. Never breaks your setup.
clawhub install relayplane📖 About This Skill
name: relayplane description: Agent ops layer for OpenClaw — observability, governance, and cost optimization with automatic failover. Never breaks your setup. user-invocable: true model-invocable: false disableModelInvocation: true homepage: https://relayplane.com version: 4.1.0 author: Continuum license: MIT metadata: openclaw: emoji: "🔀" category: ai-tools instruction-only: true
RelayPlane
OpenRouter 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.
What It Does
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.
Installation
npm install -g @relayplane/proxy@latest
Quick Start
# 1. Start the proxy (runs on localhost:4100 by default)
relayplane-proxy2. 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.
⚠️ Important: Do NOT Set BASE_URL
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.
Architecture
Agent → OpenClaw Gateway → Circuit Breaker → RelayPlane Proxy → Provider
↓ (on failure)
Direct to Provider
Configuration
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
}
}
}
Commands
| 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 |
Programmatic Usage (v1.3.0+)
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());
Advanced: Full Agent Ops Proxy
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
What's New in v1.4.0
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?Privacy
relayplane-proxy telemetry offrelayplane-proxy --offlineLinks
💡 Examples
# 1. Start the proxy (runs on localhost:4100 by default)
relayplane-proxy2. 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.
⚙️ Configuration
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
}
}
}