Skip to main content

Compatibility

Verified client and API surface for the Yabanin gateway. Statuses: source-reviewed (code inspected, no live test), tested (reproduced in the current version), unsupported (no route/support in the checked version), not verified (no test evidence either way).

tested below means pkg/gateway/compat_test.go drove an httptest upstream with a synthetic fixture. It does not mean a live CLI was launched. Live CLIs are not verified. Setup sketches: Codex, Claude Code, OpenCode, Continue, Cline.

Client / versionInbound APIStreamingTool behaviorProvider / configurationEvidence dateStatusLimitation
Codex-shaped clientPOST /v1/responses✓custom tool call returned as custom_tool_callOpenAI-compatible upstream, translationfixture, 2026-09-30testedprevious_response_id is unsupported (400). reasoning.effort is dropped in translation
Claude Code-shaped clientPOST /v1/messages✓tool_use / tool_result round-trip in the client formatOpenAI-compatible upstream, translationfixture, 2026-09-30testedtranslation drops thinking, hosted tools, and cache_control
Claude Code-shaped clientPOST /v1/messages✓native body forwarded, including cache_controlprovider=anthropicfixture, 2026-09-30testednative mode does not apply tool gating (TOOL-02)
OpenCode-shaped clientPOST /v1/chat/completions✓function tool call passed throughOpenAI-compatible upstreamfixture, 2026-09-30testedcontent arrays are forwarded as chat content parts
Cline-shaped clientPOST /v1/chat/completions✓non-stream and streaming tool_calls (fragments merge by index)OpenAI-compatible upstreamfixture, 2026-09-30; streaming 2026-10-12testedstreaming evidence is fixture-level (cline_chat_stream); the live CLI row below stays not verified
Continue-shaped clientPOST /v1/completions—not a tool call; prompt and suffix forwardedOpenAI-compatible upstreamfixture, 2026-09-30testedFIM only; this row is not chat
Model listGET /v1/models——gateway catalog, no upstream callfixture, 2026-09-30testedempty database advertises the configured fallback model
OpenAI-compatible clientsPOST /v1/chat/completions✓passthroughany configured provider2026-09-17source-reviewedclient-side parity depends on each client's envelope parsing
MCP tool invocationPOST /api/mcp/invoke—single tool call per requestexternal MCP servers (allow-listed)2026-09-17source-reviewedagent keys (yag_) only; default OFF
Codex CLIPOST /v1/responses✓—live binary—not verifiedfixture coverage is not a live CLI run
Claude Code CLIPOST /v1/messages✓—live binary—not verifiedfixture coverage is not a live CLI run
OpenCode CLIPOST /v1/chat/completions✓—live binary—not verifiedfixture coverage is not a live CLI run
Continue CLIPOST /v1/completions——live binary—not verifiedfixture coverage is not a live CLI run
ClinePOST /v1/chat/completions——live binary—not verifiedfixture coverage is not a live CLI run

Not verified: other client transports (WebSocket, gRPC), agent frameworks beyond the listed keys. Absence of a test means not verified, not unsupported; unsupported requires the checked absence of a route or feature in the stated version.

Live evidence tooling (IMP-82)​

Three scripts produce compatibility evidence without touching the working stand (:18082 gateway / :15432 Postgres). None has produced live evidence yet; all statuses below are honest not_run for live targets.

ToolWhat it doesLive statusValidated
scripts/compat/stand_evidence.py (DSN from YABANIN_EVIDENCE_DSN)read-only SQL sample of OpenCode-shaped traffic (chat.completions: models, streaming proxy, tool calls, errors) → docs/compat/opencode-stand-evidence.md; no prompts, no error text, secret-pattern scan before writenot_run — the live stand DB was not sampled; the owner can run it with the stand DSNon a disposable seeded PostgreSQL (synthetic fixtures), 2026-10-03; report in docs/compat/opencode-stand-evidence.md is from that synthetic run and is not live evidence
scripts/compat/smoke.sh (port from YABANIN_ACCEPT_PORT, default 14610)if opencode/codex/claude is installed, probes the acceptance stack: GET /v1/models + minimal non-stream POST /v1/chat/completions; key from YABANIN_ACCEPT_KEYnot_run — no acceptance-stack run recorded from the IMP-82 lane (no YABANIN_ACCEPT_KEY)CLI detection and pass/fail/not_run branches, 2026-10-03, against a local stub HTTP server
scripts/compat/stream_smoke.sh (port from YABANIN_ACCEPT_PORT, default 14610)probes the acceptance stack with ONE streaming POST /v1/chat/completions (stream:true + tools + stream_options.include_usage:true, max_tokens clamped ≤ 256) and checks the wire contract: text/event-stream, chunk frames, exactly one data: [DONE], usage chunk delivered when the client asked; owner-authorized spend cap 5 USD per run (R044-D1, 2026-10-12), response bodies never printednot_run — no acceptance-stack key/stand available at execution time (port 14610 closed); the owner can run it and record the outputpass/fail/not_run branches, 2026-10-12, against a local stub SSE server (ok + missing-[DONE] cases)

No live-CLI compatibility claim is made: the not verified rows above stay not verified until an owner-recorded live run (smoke output or stand evidence report) is attached to this page with a date.