Opt-in bind address for the Claude first-party intercept (serve LAN clients)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 85/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- node.js, typescript
- Domain
- backend
Research direction
Read src/claude/intercept/connect-proxy.ts around line 292 to see the hard-coded server.listen call. Add interceptBind and interceptAllowedClients to the Claude config schema, thread the bind address into startConnectProxy with validation that non-loopback requires a credential, and update the ocx claude desktop status command to display the active bind address. Done when the intercept listens on the configured address by default, LAN clients can reach it with the credential, and the status output shows the bind address.
Written by the indexing model from the issue text.
Description
Area
Proxy and routing
What are you trying to accomplish?
Run one opencodex on one machine and point Claude Code sessions on other machines on the same LAN at its first-party intercept: HTTPS_PROXY=http://opencodex:<password>@<host>:10200 plus that machine's CA in NODE_EXTRA_CA_CERTS. One proxy then holds the account pool, routing, usage log and config for every machine. The gateway listener already supports this for /v1/* with the data-plane key, so only the intercept is missing.
What prevents this today?
startConnectProxy in src/claude/intercept/connect-proxy.ts hard-codes the bind address. On v2.80.0 that is line 292:
server.listen({ port, host: "127.0.0.1", exclusive: true }, () => {
A client on another host can't reach the intercept, and nothing in config changes this. We carry a one-line local patch (host: "0.0.0.0"). The CONNECT proxy still requires its Basic credential, so a LAN client without it is refused.
What should OpenCodex do?
Add an opt-in setting for the intercept's bind address. It defaults to 127.0.0.1, so current behaviour is unchanged.
- It would only take effect while the intercept requires its credential. Refuse to start with a non-loopback bind and no credential.
- Optionally accept a list of allowed client networks (for example
192.168.0.0/16), like--allow-private-networkelsewhere. - Show the bind address in
ocx claude desktop status, so a LAN-exposed intercept is visible.
Example usage or interface
"claudeCode": {
"interceptBind": "0.0.0.0",
"interceptAllowedClients": ["192.168.254.0/24"]
}
or ocx claude desktop apply --first-party --intercept-bind 0.0.0.0.
Alternatives or workarounds
- A local patch to
connect-proxy.ts. It has to be re-applied after every update. - An SSH tunnel per client. Fragile, and every client needs its own.
- A separate opencodex per machine. That duplicates the account pool, so two machines on one Muse Coding Plan account collide on its limits.
Additional context
Two machines in use today: one runs opencodex (macOS), the other (Linux) runs Claude Code sessions through it with the patched bind. Both are on a private LAN.
- Dominant language
- TypeScript
- Stars
- 16.9k
- Forks
- 1.3k
- Avg merge
- 7h 34m
- Merged PRs (30d)
- 667
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from lidge-jun/opencodex
-
Transient OAuth login failure persists in getLoginStatus and masks active account in dashboardPossibly taken A pull request linked to this issue is open or already merged. Openaccount-pool bug gui
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
lidge-jun/opencodex#7378 · 2 comments ·
Maintainers usually reply within 1 day
-
fix(google-antigravity): discoverAntigravityProject fails with missing_project when project is not auto-discovered, rejecting valid tokensPossibly taken @yobushka claimed this today. Openaccount-pool bug
Difficulty 3/5 1-2 days Newbie friendliness 35/100
lidge-jun/opencodex#7382 · 2 comments ·
Maintainers usually reply within 1 day
-
account-pool bug needs-design provider proxy
Difficulty 4/5 3-5 days Newbie friendliness 42/100
lidge-jun/opencodex#7380 · 3 comments ·
Maintainers usually reply within 1 day
-
[Bug] 2.88.0: opted-in pool account leaves rotation 5 min after its last credit read once its 5h window is full; requests fall to the hard-locked main accountPossibly taken A pull request linked to this issue is open or already merged. Openaccount-pool bug
Difficulty 4/5 3-5 days Newbie friendliness 48/100
lidge-jun/opencodex#7377 · 2 comments ·
Maintainers usually reply within 1 day
-
[Bug] OpenCodex 2.88.0: existing threads fail after model/provider switching when encrypted reasoning is rejected inside HTTP 200 SSEPossibly taken A pull request linked to this issue is open or already merged. Openbug proxy streaming tools
Difficulty 5/5 Over a week Newbie friendliness 35/100
lidge-jun/opencodex#7369 · 2 comments ·
Maintainers usually reply within 1 day
All issues in lidge-jun/opencodex
Similar issues
-
area: aria/combobox gemini-triaged
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
angular/components#33973 ·
Maintainers usually reply within 1 day
-
bug priority: P2
Difficulty 1/5 1-3 hours Newbie friendliness 84/100
Maintainers usually reply within 1 day
-
[bug] status, list and push crash with an uncaught NotInitializedError stack trace when teamai is not initializedPossibly taken @jay23606 claimed this today. Openbug good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Tencent/teamai-cli#1227 ·
Maintainers usually reply within 1 day
-
[Tool]: YapOpen
Difficulty 1/5 1-3 hours Newbie friendliness 62/100
withkarann/aifoxx#417 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
sindresorhus/eslint-plugin-unicorn#3921 ·
Maintainers usually reply within 1 day