v3.7.0 — Anonymous Key Allowlist + Zero-Config Client
Ships the zero-config LAN experience: OCP admins opt in to a public anonymous access key, and ocp-connect clients auto-discover and use it. Plus a structural fix for OpenClaw multi-agent deployments, and a from-scratch rewrite of IDE detection in ocp-connect.
The headline change: ./ocp-connect <server-ip> (zero args) on a fresh client machine now fully configures OpenClaw to work with OCP, without any admin coordination or per-user key issuance.
✨ New
Server-side
PROXY_ANONYMOUS_KEYallowlist (#15). New env var lets admins designate a single well-known "anonymous" key that bypassesvalidateKey()inmultimode. Exposed viaGET /health.anonymousKeyfor client self-discovery. Opt-in, survives rotation, admin controls the policy./health.anonymousKeyfield — new response field (null when not set) so clients can auto-discover the allowlist key without out-of-band coordination.
Client-side (ocp-connect)
- Zero-config auto-discovery (#16).
ocp-connect <server-ip>without--keynow reads/health.anonymousKeyand uses it automatically when present. Compatible with pre-v3.7.0 servers (falls through to existing behavior when field is absent). - Per-agent
auth-profiles.jsonseeding (#13). ocp-connect now writes~/.openclaw/agents/<id>/agent/auth-profiles.jsonfor every agent inagents.list, including the defaultmainagent (implicitagentDir). This fixes the silent 100% failure rate of OpenClaw multi-agent deployments. - Improved IDE detection + hint density (#14). Detection hit rate went from ~25% to ~100% for the 4 supported IDEs:
- Cline: now matches the real extension ID
saoudrizwan.claude-devinstead of the obsoletegrep -qi clinepattern - Continue.dev: checks both
config.yaml(v1.x) andconfig.json(legacy), plus the installed VSCode extension - Cursor: adds
/Applications/Cursor.appfallback so dmg-installed Cursors are detected even without the optional shell command - opencode (new): detects
~/.opencode/bin/opencode/~/.local/share/opencode//command -v opencode
- Cline: now matches the real extension ID
- Each IDE hint now prints the base URL, truncated API key, model IDs, and the exact menu path or config file location — paste-ready.
🐛 Fixed
- OpenClaw silent 100% failure (#13). Multi-agent OpenClaw setups were reporting
No API key found for provider Xon every chat message because ocp-connect only wrote the rootopenclaw.json, while OpenClaw's per-agent loader only reads<agentDir>/auth-profiles.json. Now fixed at the ocp-connect layer. /dev/ttystderr leakage (#13). ocp-connect was exposingDevice not configuredshell errors in CI/SSH/no-tty environments even though the fallback path worked correctly. Read calls are now wrapped with{ read ... </dev/tty; } 2>/dev/null.- Misleading smoke test (#13).
✓ Smoke test passedonly verified OCP direct connectivity, not the IDE/agent → OCP path. It now prints an explicit caveat instructing users to restart OpenClaw and test via the bot before assuming end-to-end works. - Help text "configures IDEs" (#13).
ocp-connect --helppreviously claimed to "configure" Cline/Continue.dev/Cursor, but it only prints manual setup hints. The wording is now accurate. - Anonymous warning (#13). Running
ocp-connectin anonymous mode on an OpenClaw multi-agent setup now prints a clear warning instead of silently writing empty-key profiles that OpenClaw would reject. - Corrupt
auth-profiles.json(#13). If the target file is malformed JSON, ocp-connect now backs it up to.bakand rebuilds fresh, preserving user intent without losing data on unexpected disk errors.
📝 Docs
- README sync to v3.7.0 (#17). Banner, Client Setup example output, model IDs, and Environment Variables table all updated. New Zero-config paragraph +
PROXY_ANONYMOUS_KEYrow. - Anonymous Access section (#15). New README section covering the opt-in enable flow, client auto-discovery via
/health, and the "not a secret" guidance (/healthis unauthenticated by design).
🔧 Internal
- Version bumps:
package.json3.6.0 → 3.7.0,ocp-connect1.0 → 1.3.0 - All changes stay inside
ocp-connect/server.mjs/README.md— no OpenClaw modifications (OpenClaw's npm package lifecycle makes upstream patches fragile; fixes are bolt-on at the OCP boundary)
🔬 End-to-end verification
Verified on macOS 13 with real OpenClaw 2026.4.11 + Telegram bot + 172.16.2.30 OCP server:
- Cold install (fresh
~/.openclawstate) ocp-connect 172.16.2.30(zero args)- OpenClaw gateway restart
- Real Telegram message to a bot → Claude Sonnet reply
auth-state.json:errorCount: 0,lastUsedupdated,lastGood: ocp:default- Zero 401 errors, zero "No API key found" lane errors
Plus cross-IDE testing: 4/5 IDEs pass end-to-end (OpenClaw, opencode, Cline, Continue.dev). Cursor is blocked by a Cursor 3.x product-design issue (Custom OpenAI Models field doesn't route through the Override URL) that is outside OCP's control — tracked in #12 comments for upstream feedback.
📋 Upgrade path
Server side:
cd /path/to/ocp
git pull
export PROXY_ANONYMOUS_KEY=ocp_public_anon_v1 # any string of your choice
# restart OCP (systemctl/launchctl/docker-compose — depends on your install)Then verify: curl http://<your-server>:3456/health | jq .anonymousKey should return your chosen value.
Client side:
# Fresh machines: download the v1.3.0 ocp-connect and run it with zero args
curl -fsSL https://raw.githubusercontent.com/dtzp555-max/ocp/main/ocp-connect -o ocp-connect
chmod +x ocp-connect
./ocp-connect <server-ip>Existing deployments: just re-run ocp-connect <server-ip> (no --key) after updating to v1.3.0 and restarting OpenClaw.
📚 Reference
-
All 5 PRs in this release:
-
Full investigation and test evidence: issue #12 (closed)