Integrates OCP with Tao's cross-device development system (Phase 1 L1). - AGENTS.md: project-level tool-agnostic instructions (read by Cursor, OpenCode, Copilot, etc. in addition to Claude Code). Inherits from ~/.cc-rules/AGENTS.md. - CLAUDE.md: prepends @AGENTS.md + @~/.cc-rules/AGENTS.md imports. - docs/adr/0002-alignment-constitution.md: captures why ALIGNMENT.md exists (2026-04-11 drift response). - docs/adr/0003-models-json-spot.md: captures v3.11.0 SPOT refactor. - docs/adr/0004-openclaw-auto-sync.md: captures v3.11.0 auto-sync design. ADRs numbered 0002-0004 because an untracked 0001-cross-device-system.md already exists locally and was out of scope for this PR. Governance/docs only. No code change. No version bump (not a release). Co-authored-by: Tao Deng <dtzp555@gmail.com> Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
4.2 KiB
Inherits: @~/.cc-rules/AGENTS.md
OCP — Open Claude Proxy — Agent Guidelines
Scope: the dtzp555-max/ocp repository.
Audience: any AI coding agent (Claude Code / Cursor / OpenCode / Copilot / Codex / Gemini) touching OCP source.
What this project is
OCP (Open Claude Proxy) is an open-source HTTP gateway that sits between the Claude Code CLI (cli.js) and Anthropic's public API. It forwards, observes, and multiplexes traffic that cli.js already emits — it is explicitly not an extension layer. A secondary role: registering OCP as a local provider inside OpenClaw (a sibling IDE-agnostic tool), so that users running OpenClaw against OCP see the same model list as native Claude Code.
Runtime: Node.js (ESM, .mjs throughout). No build step. No bundler. server.mjs is the single executable entrypoint; ocp and ocp-connect are CLI wrappers.
Stack
- Node.js >=18, native ESM modules
http/httpsbuilt-ins for the proxy core (no Express, no Fastify)models.jsonas the single source of truth for model metadata- GitHub Actions for CI (
alignment.yml,release.yml) ghCLI assumed for PR creation and release automation- No TypeScript. No test framework beyond
test-features.mjs. Keep dependencies minimal.
Key files to know
server.mjs— the proxy itself; every request path lives here. Governed byALIGNMENT.md.models.json— single source of truth for model IDs, aliases, and context windows. See ADR 0003.setup.mjs— first-time installer; readsmodels.jsonto derive bootstrap config.scripts/sync-openclaw.mjs— idempotent OpenClaw registry sync invoked byocp update. See ADR 0004.ocp— user-facing CLI (install, update, start, stop, status, logs, etc.).ALIGNMENT.md— the constitution. Binding for anyserver.mjschange. See ADR 0002..github/workflows/alignment.yml— CI blacklist grep; fails the build on known-hallucinated tokens.CLAUDE.md— Claude-Code-specific session instructions + release_kit overlay (Iron Rule 5.5).docs/adr/— Architecture Decision Records. Read these before proposing governance or SPOT changes.
Project-specific constraints
ALIGNMENT.mdis binding. Any PR touchingserver.mjsmust citecli.js:NNNN(orcli.js vE4 <functionName>) in the commit body and PR description. SeeCLAUDE.md§ "Hard requirements forserver.mjschanges" and ADR 0002.- Alignment CI is not suppressible. The
alignment.ymlworkflow grepsserver.mjsfor known-hallucinated tokens (includingapi/oauth/usage,api/usage). Adding to the blacklist is fine; removing entries requires anALIGNMENT.mdamendment PR. - No self-approval. Implementation author cannot merge their own PR (Iron Rule 10). A fresh-context reviewer must open
cli.jsat the cited lines and confirm in the review comment. models.jsonis the only place to add/edit models. Do not touchMODEL_MAPorMODELSarrays directly inserver.mjsorsetup.mjs. See ADR 0003.- OpenClaw boundary.
scripts/sync-openclaw.mjsonly writesmodels.providers["claude-local"].modelsandagents.defaults.models["claude-local/*"]in~/.openclaw/openclaw.json. Do not expand scope. See ADR 0004.
Release protocol
OCP follows the machine-readable release_kit: overlay in CLAUDE.md (Iron Rule 5.5). Before any version bump or tag push, re-read that YAML block and walk every item in new_feature_doc_expectations and bootstrap_quirk_policy. Tag push triggers .github/workflows/release.yml, which creates the GitHub Release automatically — do not create the release manually.
Version is sourced from package.json; changelog from CHANGELOG.md; user-facing docs from README.md.
Handoff expectations
A fresh session picking up OCP work should read, in order:
- This file (
AGENTS.md). ALIGNMENT.md— constitution; non-optional.CLAUDE.md— tool-specific instructions and release_kit overlay.docs/adr/— most recent ADRs first; they explain why the current structure exists.- Any active spec under
docs/superpowers/specs/*/tasks.md(if present). ~/.cc-rules/memory/auto/MEMORY.md— cross-machine memory index.
Only after these should the session touch code.