@pikoloo/codex-proxy 1.0.6 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -5
- package/docs/API.md +0 -15
- package/images/dashboard-screenshot.png +0 -0
- package/images/readme-cover.png +0 -0
- package/images/settings-screenshot.png +0 -0
- package/package.json +11 -3
- package/public/css/style.css +1097 -40
- package/public/index.html +439 -184
- package/public/js/app.js +384 -66
- package/src/account-rotation/index.js +64 -27
- package/src/format-converter.js +5 -1
- package/src/index.js +1 -1
- package/src/model-mapper.js +145 -22
- package/src/routes/api-routes.js +19 -3
- package/src/routes/chat-route.js +77 -4
- package/src/routes/messages-route.js +189 -21
- package/src/routes/metrics-route.js +43 -0
- package/src/routes/settings-route.js +127 -21
- package/src/security.js +2 -1
- package/src/server-settings.js +40 -5
- package/src/server.js +27 -2
- package/src/usage-metrics.js +472 -0
- package/src/utils/logger.js +14 -1
- package/images/demo-screenshot.png +0 -0
- package/images/f757093f-507b-4453-994e-f8275f8b07a9.png +0 -0
- package/src/account-rotation/strategies/base-strategy.js +0 -48
- package/src/account-rotation/strategies/index.js +0 -31
- package/src/account-rotation/strategies/round-robin-strategy.js +0 -42
- package/src/account-rotation/strategies/sticky-strategy.js +0 -97
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Codex Claude Proxy
|
|
2
2
|
|
|
3
|
-

|
|
4
4
|
|
|
5
|
-
_Current
|
|
5
|
+
_Current README cover: a short, thumbgen-style composite generated from fresh local dashboard screenshots._
|
|
6
6
|
|
|
7
7
|
[](https://choosealicense.com/licenses/mit/)
|
|
8
8
|
[](https://nodejs.org/)
|
|
@@ -25,7 +25,7 @@ _Current dashboard preview: a real capture of the local Web UI with the macOS-st
|
|
|
25
25
|
- **Seamless Translation**: Translates Anthropic Messages API calls to ChatGPT Codex format.
|
|
26
26
|
- **Model Mapping**: maps Claude model aliases to current OpenAI models, with direct GPT model IDs passed through.
|
|
27
27
|
- **Personal Account Mode**: Uses the active ChatGPT account by default for local-only personal use, with account switching and auto-refresh.
|
|
28
|
-
- **Web Dashboard**: Built-in macOS-style UI (`http://localhost:8081`) for managing accounts, viewing logs, adjusting settings, and testing prompts.
|
|
28
|
+
- **Web Dashboard**: Built-in macOS-style UI (`http://localhost:8081`) for managing accounts, configuring Claude Code, viewing logs, adjusting settings, and testing prompts.
|
|
29
29
|
- **Streaming Support**: Full Server-Sent Events (SSE) support for real-time responses.
|
|
30
30
|
- **Native Tool Calling**: Supports Claude's tool use capabilities by translating them to Codex function calls.
|
|
31
31
|
|
|
@@ -118,7 +118,9 @@ For **headless/VM servers** without a browser:
|
|
|
118
118
|
5. Paste it back in the terminal
|
|
119
119
|
|
|
120
120
|
### 3. Configure Claude Code
|
|
121
|
-
|
|
121
|
+
In the dashboard, click **Configure Claude Code** to write the proxy settings into Claude Code. Enable **Configure on startup** if you want the proxy to keep Claude Code pointed at the local server whenever it starts.
|
|
122
|
+
|
|
123
|
+
You can also run this command:
|
|
122
124
|
```bash
|
|
123
125
|
curl -X POST http://localhost:8081/claude/config/proxy
|
|
124
126
|
```
|
|
@@ -154,11 +156,16 @@ The proxy automatically maps Claude model names to current OpenAI backend models
|
|
|
154
156
|
|
|
155
157
|
### Web Dashboard
|
|
156
158
|
|
|
157
|
-
The dashboard uses a clean desktop split-view layout with a compact toolbar, native-feeling glass surfaces, account management, live logs, settings, and prompt test panels. The
|
|
159
|
+
The dashboard uses a clean desktop split-view layout with a compact toolbar, native-feeling glass surfaces, account management, live logs, settings, Claude Code configuration, and prompt test panels. The screenshots below are captured from the actual local app.
|
|
160
|
+
|
|
161
|
+
| Dashboard | Settings |
|
|
162
|
+
| --- | --- |
|
|
163
|
+
|  |  |
|
|
158
164
|
|
|
159
165
|
Visit `http://localhost:8081` to:
|
|
160
166
|
- **Manage Accounts**: Add, remove, or switch active ChatGPT accounts.
|
|
161
167
|
- **Personal Mode**: Requests use the active account only unless multi-account rotation is explicitly enabled by environment variable.
|
|
168
|
+
- **Configure Claude Code**: Use the dashboard button to set `ANTHROPIC_BASE_URL`, `ANTHROPIC_API_KEY`, and Claude model defaults, or enable the startup toggle to do it automatically.
|
|
162
169
|
- **View Logs**: See real-time request/response logs for debugging.
|
|
163
170
|
- **Test Models**: Run quick tests against the configured models.
|
|
164
171
|
|
package/docs/API.md
CHANGED
|
@@ -115,21 +115,6 @@ Content-Type: application/json
|
|
|
115
115
|
}
|
|
116
116
|
```
|
|
117
117
|
|
|
118
|
-
### Account Selection Strategy
|
|
119
|
-
|
|
120
|
-
Requests use the active account only by default. Account rotation settings are inert unless `CODEX_CLAUDE_PROXY_ENABLE_MULTI_ACCOUNT_ROTATION=true` is set.
|
|
121
|
-
|
|
122
|
-
```bash
|
|
123
|
-
GET /settings/account-strategy
|
|
124
|
-
|
|
125
|
-
# Response
|
|
126
|
-
{
|
|
127
|
-
"success": true,
|
|
128
|
-
"accountStrategy": "sticky",
|
|
129
|
-
"rotationEnabled": false
|
|
130
|
-
}
|
|
131
|
-
```
|
|
132
|
-
|
|
133
118
|
### Switch Account
|
|
134
119
|
|
|
135
120
|
```bash
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pikoloo/codex-proxy",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Local personal proxy for OpenAI Codex models with Claude API compatibility",
|
|
5
5
|
"author": "Suraj Mandal <surajmandalcell@gmail.com>",
|
|
6
6
|
"type": "module",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"accounts:list": "node src/cli/accounts.js list",
|
|
39
39
|
"accounts:remove": "node src/cli/accounts.js remove",
|
|
40
40
|
"accounts:verify": "node src/cli/accounts.js verify",
|
|
41
|
-
"build": "find src bin -name '*.js' -print0 | xargs -0 -n1 node --check",
|
|
41
|
+
"build": "find src bin scripts \\( -name '*.js' -o -name '*.mjs' \\) -print0 | xargs -0 -n1 node --check",
|
|
42
42
|
"test": "node --test tests/*.test.js",
|
|
43
43
|
"test:unit": "node --test tests/unit/*.test.js",
|
|
44
44
|
"test:all": "node --test tests/unit/*.test.js tests/*.test.js",
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
"test:ui": "node --test tests/ui.test.js"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
+
"@duckdb/node-api": "^1.5.3-r.1",
|
|
51
52
|
"alpinejs": "3.15.12",
|
|
52
53
|
"cors": "^2.8.5",
|
|
53
54
|
"express": "^4.18.2"
|
|
@@ -56,6 +57,13 @@
|
|
|
56
57
|
"path-to-regexp": "0.1.13",
|
|
57
58
|
"qs": "6.15.2"
|
|
58
59
|
},
|
|
59
|
-
"keywords": [
|
|
60
|
+
"keywords": [
|
|
61
|
+
"codex",
|
|
62
|
+
"openai",
|
|
63
|
+
"proxy",
|
|
64
|
+
"claude",
|
|
65
|
+
"chatgpt",
|
|
66
|
+
"oauth"
|
|
67
|
+
],
|
|
60
68
|
"license": "MIT"
|
|
61
69
|
}
|