Skip to content

opencodex部署在远端主机,本地codex app如何实现自动注入远端模型 #2288

Description

@mobaicloud

Documentation problem type

Missing documentation

Documentation location

https://github.com/lidge-jun/opencodex/

What is wrong or missing?

已经实现了远端部署,调用模型也没问题,但是无法像在本地运行那样同时保持codex账号登录及第三方模型的随意调用,我没有找到相关文档,尝试了两个小时也没有成功。
我使用了这样的配置:
model_provider = "opencodex"
[model_providers.opencodex]
name = "OpenCodex Remote"
base_url = "xxx/v1"
wire_api = "responses"
requires_openai_auth = false
但是codex账号状态就会丢失
如果我取消这个配置,codex账号状态恢复,但是无法调用opencodex里的模型
另外远端部署的opencodex,主账号也是无法登录的吗?

Image

What should the documentation explain instead?

已经实现了远端部署,调用模型也没问题,但是无法像在本地运行那样同时保持codex账号登录及第三方模型的随意调用,我没有找到相关文档,尝试了两个小时也没有成功。

Suggested wording or example

No response

Additional context or attachments

No response

Checks

  • I searched existing documentation issues.
  • No secrets or personal information are included.

Activity

  1. Ingwannu commented on Aug 21, 2026

    @Ingwannu
    Owner

    Correction after rechecking the current dev injection contract: my HTTPS example above used the obsolete header form. Codex CLI 0.146+ should use env_key, not env_http_headers.

    The SSH-tunnel recommendation is unchanged and remains the safest first test:

    # root keys, before the first [table]
    model_catalog_json = "/absolute/local/path/to/opencodex-catalog.json"
    openai_base_url = "http://127.0.0.1:20100/v1"

    Do not set model_provider = "opencodex" for that loopback/tunnel form.

    If a trusted TLS endpoint requires the dedicated provider form, the corrected configuration is:

    # root keys
    model_provider = "opencodex"
    model_catalog_json = "/absolute/local/path/to/opencodex-catalog.json"
    
    [model_providers.opencodex]
    name = "OpenCodex Remote"
    base_url = "https://your-host/v1"
    wire_api = "responses"
    requires_openai_auth = true
    env_key = "OPENCODEX_API_AUTH_TOKEN"

    Set OPENCODEX_API_AUTH_TOKEN in the local Codex App/CLI environment. This keeps the login/account UX while using the remote OpenCodex admission token. Thank you to the follow-up review for catching the outdated field. The issue should remain open with needs-info until the SSH-tunnel path is confirmed.

  2. added
    needs-infoWaiting on reporter for a concrete spec or reproduction
    on Aug 21, 2026
  3. lidge-jun commented on Aug 21, 2026

    @lidge-jun
    Owner

    리뷰 · 우선순위 41 / 80

    지금 dev HEAD d23c3179f에서 코드가 이미 답을 갖고 있음. 리포터 설정은 model_provider = "opencodex" + [model_providers.opencodex] + requires_openai_auth = false. 그게 ChatGPT 로그인 UX를 죽임. src/codex/inject.ts:213-238 buildProviderTableBlock()은 전용 테이블을 쓸 때 항상 requires_openai_auth = true. false는 주입 계약이 아님. 루프백은 아예 그 테이블을 안 씀. Design B (inject.ts:113-119, :783-806)는 shouldInjectApiAuthHeader()가 거짓일 때 루트 openai_base_url만 넣고 네이티브 openai 프로바이더 id를 유지함. 히스토리 리태그 없음. 로그인 상태 유지가 그 경로임. 전용 테이블 + false는 로컬 주입이 절대 안 쓰는 조합임.

    원격 프로세스가 로컬 $CODEX_HOME을 자동으로 못 씀. injectCodexConfig (inject.ts:672)는 그 프로세스의 CODEX_CONFIG_PATH만 읽음 (:688). 카탈로그도 그 머신 경로. chooseCatalogPathForInjection (:648-661) / setRootModelCatalogPath (:500-504). 기본 파일은 src/codex/paths.ts DEFAULT_CATALOG_PATH = join(CODEX_HOME, "opencodex-catalog.json"). 원격에서 만든 JSON을 로컬 Codex 앱이 직접 못 봄. 복사가 필요함. "자동 주입"은 빠진 기능이 아니라 로컬 파일 계약임.

    Ingwannu가 말한 SSH 터널이 코드랑 맞음. src/server/auth-cors.ts:50-55가 ssh -L 20100:localhost:10100을 루프백 Host로 인정함. 포트가 달라도 hostname이 루프백이면 됨. 터널이면 로컬 Codex는 Design B처럼 루트 openai_base_url = "http://127.0.0.1:20100/v1" + 로컬로 복사한 model_catalog_json이면 됨. model_provider = "opencodex" 넣지 말 것. 넣으면 inject.ts:697-717이 외부 프로바이더로 보고 주입을 건너뜀. 사용자 소유 루트 openai_base_url도 안 덮음 (:1097-1110). 원격 OpenCodex는 루프백에 묶는 게 안전함.

    HTTPS로 원격 노출할 때만 전용 테이블임. 그때도 requires_openai_auth = true. 현재 주입은 env_http_headers가 아니라 env_key = "OPENCODEX_API_AUTH_TOKEN" (inject.ts:229-236, #2073). 토큰을 TOML에 박지 말 것. Codex 인증 컨텍스트가 원격으로 가니까 TLS/SSH만. 원격 호스트에서 끝나는 프로바이더 OAuth는 거기서 끝내거나 콜백 포트를 같이 포워드. 메인 계정 로그인이 "원격에서 안 되냐"는 Direct 모드가 호출자 Codex 로그인을 쓰는 거랑, 원격 박스에서 OAuth를 띄우는 거랑 다름.

    문서 구멍은 맞음. README/docs에 ssh -L 레시피가 없음. docs/codex-app-model-catalog.md는 model_catalog_json 로컬 경로만 말함. 코드 버그 아님. needs-info. 리포터가 터널 폼을 확인하기 전엔 구현 PR 열지 말 것. 원격→로컬 자동 카탈로그 푸시 만들지 말 것. $CODEX_HOME을 네트워크로 쓰지 말 것. #1168이랑 다른 레인임. 카탈로그 쿼타 이슈 아님.

    #2188 L1–L9 사이드카 이미 dev. x_search 넣지 말 것. Grok OAuth Chat 기본(#2255)/GUI 옵트인 Responses(#2266)랑 다른 레인임. types.ts/config.ts 스플릿 안 씹힘. 스키마 PR 아님. 프리뷰 배포 아님. v2.29.0 이미 태그됨. 핫 크래시 아님. 비전공자 오퍼레이터가 전용 프로바이더 폼으로 로그인을 날리는 문서 구멍임. 그래서 41.

    해결방안: 이 이슈는 문서로 열어 둬라. 권장 경로는 원격 루프백 + SSH 터널 + 로컬 openai_base_url + 로컬로 복사한 model_catalog_json. requires_openai_auth = false 쓰지 말 것. 전용 테이블이 필요하면 true + env_key. 자동 원격 주입 피처로 키우지 말 것. 리포터 확인 나오면 문서 PR 하나. 스플릿이 inject.ts를 옮기면 리베이스하지 말고 닫고 다시 짜라. 지금은 그 정도 아님.

    이 댓글은 grok-bot이 작성했습니다

  4. spinachomes commented on Aug 21, 2026

    @spinachomes

    1.把category json下载到本地
    2.不用主账号登录,号池添加账号即可
    3.配置增加个header 设置api key
    4.本地我都不登录账号了,就像用中转一样

  5. Ingwannu commented on Aug 21, 2026

    @Ingwannu
    Owner

    补充说明:上面的 1–4 步是一种“把远端 OCX 当作中转/账号池”的可选方案,但它不会保留本地 Codex App 的 ChatGPT 主账号登录体验,所以不能直接回答本 issue 的原始需求。

    如果目标是“本地仍保持 ChatGPT 登录,同时调用远端 OCX 模型”,当前受支持且风险最低的验证路径仍然是 SSH 隧道:把远端 127.0.0.1:10100 映射到本地 127.0.0.1:20100,在本地复制远端生成的 catalog,并只设置根级 openai_base_url = "http://127.0.0.1:20100/v1"。不要设置 model_provider = "opencodex";该专用 provider 形态会改变原生账号/历史语义。

    若必须直接暴露可信 HTTPS 端点,则使用 requires_openai_auth = true 与 env_key = "OPENCODEX_API_AUTH_TOKEN",不要把 token 写进 TOML。该模式与 SSH 隧道的本地原生 provider 语义不同。

    请 issue 作者确认 SSH 隧道 + 本地 catalog 方案是否能保留登录并正常切换模型;在得到这个结果前保留 needs-info。

  6. mobaicloud commented on Aug 22, 2026

    @mobaicloud
    Author

    我现在应该怎么做,可否提供一个可以尝试或者正确的配置方式呢

  7. Ingwannu commented on Aug 29, 2026

    @Ingwannu
    Owner

    可以。若目标是 本地 Codex App 继续保持 ChatGPT 登录,同时使用远端 OpenCodex 模型,请先只测试下面这条最小路径。

    1. 远端服务器让 OpenCodex 只监听 127.0.0.1:10100,不要把该端口直接暴露到公网。
    2. 在本地电脑保持一个 SSH 隧道:
    ssh -N -L 20100:127.0.0.1:10100 your-user@your-server
    1. 把远端生成的 opencodex-catalog.json 安全复制到本地,例如本地保存为:
    C:\Users\你的用户名\.codex\opencodex-remote-catalog.json
    

    或 macOS/Linux:

    ~/.codex/opencodex-remote-catalog.json
    
    1. 在 本地 ~/.codex/config.toml 的根级位置加入下面两行:
    model_catalog_json = "/absolute/local/path/opencodex-remote-catalog.json"
    openai_base_url = "http://127.0.0.1:20100/v1"

    Windows 路径建议用正斜杠,例如:

    model_catalog_json = "C:/Users/your-name/.codex/opencodex-remote-catalog.json"
    openai_base_url = "http://127.0.0.1:20100/v1"
    1. 不要加入下面这些内容:
    model_provider = "opencodex"
    [model_providers.opencodex]
    requires_openai_auth = false

    它们会改变本地原生账号语义,正是你看到 ChatGPT 登录状态消失的原因。

    1. 保持 SSH 命令运行,然后只重启本地 Codex App。远端 catalog 更新后需要再次复制到本地;目前远端进程不会自动写入本地 $CODEX_HOME。

    如果仍失败,请回复三项经过脱敏的信息:本地操作系统、SSH 隧道命令的错误输出、以及本地 config.toml 中上述两行的实际路径。不要贴 token。确认这条路径可用后,我们再把它整理成正式文档。

  8. spinachomes commented on Aug 30, 2026

    @spinachomes

    最新成功测试(opencodex、chatgpt客户端均是最新版),在本地config.toml设置中调整或新增以下配置

    model_provider = "opencodex"
    #服务器下载的model_catalog_json
    model_catalog_json = "opencodex-catalog.json"
    
    [model_providers.opencodex]
    name = "opencodex"
    #替换为自己的地址
    base_url = "https://opencodex/v1"
    wire_api = "responses"
    requires_openai_auth = true
    
    #替换为自己的key
    [model_providers.opencodex.http_headers]
    X-Opencodex-Api-Key = "ocx_data_xxxxxx"

    这样可以也保持本机登录chatgpt账号,可以使用快速模式,模型列表也能看到其他自定义模型
    也可以不登录chatgpt账号,纯当中转用,由opencodex统一管理账号,auth.json里使用opencodex api key即可
    远程服务器可使用codex login --device-auth 登录主账号

    Image
  9. lidge-jun commented on Sep 3, 2026

    @lidge-jun
    Owner

    Closing as implemented on dev. Thanks @mobaicloud — 远端主机部署 + 本地 Codex app 自动注入远端模型 现在有了正式路径。

    The Remote Hub CLI and sync landed in 91a4f6c:

    • src/client/connect.ts performs the hub readiness check, pairing-grant exchange, and model sync against the remote management URL.
    • The guide is at docs-site/src/content/docs/guides/remote-hub.md, which documents connecting a local client to a hub running on another host.

    如果按指南操作后仍有模型没有注入,请开新 issue 并附上 ocx connect 的输出和 /healthz 结果。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationneeds-infoWaiting on reporter for a concrete spec or reproduction

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions