Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
- uses: actions/setup-node@v4
with:
node-version: '22'
# There is no test suite yet. Importing the module would start the proxy,
# so the gate is a parse-and-strip check: it catches broken syntax and
# type-stripping errors without binding a port.
- run: node --experimental-strip-types --check codex-proxy.ts
# `npm test` runs node:test over the translation layer. There is nothing
# to install -- the bridge has no dependencies and no build step, and the
# suite never opens a socket or calls the upstream API.
- run: npm test
15 changes: 14 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Responses API** — run Claude Code (or any Anthropic-API client) on
`gpt-5.6-*` models while keeping the client's own tools, skills and MCP
servers.

461 lines, zero dependencies, Node ≥ 22, no build step:
One file, zero dependencies, Node ≥ 22, no build step:

```sh
OPENAI_API_KEY=sk-... PORT=4001 ./codex-proxy.ts
Expand Down Expand Up @@ -58,6 +58,19 @@ upstream. Disable with `CODEX_CARRY_REASONING=0`.
Model aliases: `codex-luna` → `gpt-5.6-luna`, `codex-sol` → `gpt-5.6-sol`,
`codex-terra` → `gpt-5.6-terra`; any `gpt-*` name passes through unchanged.

## Tests

```sh
npm test
```

The translation layer is exported from `codex-proxy.ts`, and the server only
starts when the file is the process entry point — so `node --test` can pin
every conversion without opening a socket or calling the upstream API. The
streaming tests replay a recorded Responses SSE stream from
`test/fixtures/`, re-fed at several chunk sizes to prove events that span a
socket boundary are reassembled.

## Non-goals

Auth beyond a bearer key, retries, rate limiting, multi-tenant use. It is a
Expand Down
Loading
Loading