Skip to Content
OpenclawMigrate from Self-Hosted OpenClaw to Curate-Me — Zero Code Changes

Migrate from Self-Hosted OpenClaw

Migration takes one environment variable change. Your OpenClaw configuration, skills, prompts, and workflows stay exactly the same.

Before You Start

You’ll need:

  • An existing OpenClaw installation (any version)
  • A Curate-Me account (sign up free )
  • Your Curate-Me API key (cm_sk_xxx)

Step 1: Swap the Base URL

Replace your LLM provider’s base URL with the Curate-Me gateway:

# Before (direct to OpenAI): OPENAI_BASE_URL=https://api.openai.com/v1 # After (through Curate-Me gateway): OPENAI_BASE_URL=https://api.curate-me.ai/v1/openai X-CM-API-Key=cm_sk_xxx

For other providers:

# Anthropic ANTHROPIC_BASE_URL=https://api.curate-me.ai/v1/anthropic # Google Gemini GOOGLE_API_BASE_URL=https://api.curate-me.ai/v1/google # DeepSeek DEEPSEEK_BASE_URL=https://api.curate-me.ai/v1/deepseek

Step 2: Store Your Provider Secrets

Your LLM provider API keys (OpenAI, Anthropic, etc.) need to be stored in Curate-Me:

Via Dashboard

  1. Go to dashboard.curate-me.ai → Settings → Provider Secrets
  2. Add each provider key
  3. Keys are encrypted at rest with envelope encryption

Via API

curl -X POST https://api.curate-me.ai/v1/admin/secrets \ -H "X-CM-API-Key: cm_sk_xxx" \ -H "Content-Type: application/json" \ -d '{"provider": "openai", "secret": "sk-xxx"}'

Via SDK

from curate_me import CurateMe client = CurateMe(api_key="cm_sk_xxx") client.gateway.admin().store_secret("openai", "sk-xxx")

Step 3: Verify

Run a test request:

curl https://api.curate-me.ai/v1/openai/chat/completions \ -H "X-CM-API-Key: cm_sk_xxx" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o-mini", "messages": [{"role": "user", "content": "Hello!"}] }'

You should get a normal response with an additional x-cm-cost header showing the estimated cost.

Step 4: Configure Governance

Now that traffic flows through the gateway, configure your policies:

  1. Cost controls — Set daily budget ($50/day is a good starting point)
  2. Model allowlists — Restrict expensive model usage
  3. PII scanning — Enable block mode for production
  4. Rate limiting — Set RPM limits per org

All configurable in the dashboard → Gateway → Policies.

What Changes

AspectBeforeAfter
LLM requestsDirect to providerThrough Curate-Me gateway
Cost trackingNoneReal-time dashboard
SecuritySelf-managedAuto-patching + scanning
Audit trailNoneImmutable log
Agent codeUnchangedUnchanged
OpenClaw configUnchangedUnchanged
SkillsUnchangedUnchanged (+ security scanning)
PromptsUnchangedUnchanged

What Doesn’t Change

  • Your OpenClaw version and configuration
  • Your agent definitions and prompts
  • Your skill installations
  • Your MCP server connections
  • Your workflow files
  • Your channel configurations

The gateway is a transparent proxy. Your agents don’t know they’re being governed.

Rollback

If you ever want to stop using Curate-Me, swap the URL back:

OPENAI_BASE_URL=https://api.openai.com/v1

Everything works as before. No lock-in.

Upgrading to Managed Hosting

If you want to stop self-hosting entirely, use the Setup Wizard to deploy a fully managed runner on Curate-Me infrastructure.

Troubleshooting

401 Unauthorized: Check your X-CM-API-Key header. Keys start with cm_sk_, cm_gw_, or cm_.

403 Governance Denied: Check your governance policies. The response body includes which check failed (rate_limit, cost_estimate, pii_scan, model_allowlist, or hitl_gate).

504 Gateway Timeout: The upstream provider is slow. Check provider status pages. Curate-Me retries automatically with exponential backoff.

Connection Refused: Verify the gateway URL is correct (https://api.curate-me.ai/v1/{provider}).