Sign in to Claude and ChatGPT from usine, stored on the gateway
维护者通常 1 天内回复
已经有一个关联 PR 被合并了。
- #965 来自 @usine-phildl —— 已合并
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 20/100
- Issue 类型
- 功能
- 描述清晰度
- 描述清楚
- 活跃度
- 停滞
- 技术栈
- typescript
调研方向
Start with apps/docs/src/content/docs/guides/configure-a-gateway.md, packages/gateway/src/admin, and the setup and Configuration → Settings entry points in the web app. Check the pinned Claude Code and Codex login flows, then trace how credentials are handed to the gateway or stored for local harnesses. Done means UI and CLI login work with and without a gateway, the specified failure and credential-leak tests pass, and all gates pass.
由索引模型根据 Issue 内容生成。
描述
Problem
On an instance with a gateway, the operator sets provider credentials by hand over SSH (apps/docs/src/content/docs/guides/configure-a-gateway.md, step 4): run claude setup-token and paste the token into /etc/usine-gateway/secrets.env, run CODEX_HOME=$(mktemp -d) codex login on a laptop and scp the auth.json to the gateway, set USINE_GATEWAY_CHATGPT_AUTH_FILE, then reload the service. Without a gateway, the operator runs each harness's own login on the orchestrator host. usine itself offers no login step.
Proposed change
- Web: a "Connect Claude" and "Connect ChatGPT" step in setup and in Configuration → Settings. Each shows the current state per provider (connected, expires, last refresh, which credential kind: subscription or API key) and offers connect, replace, and disconnect.
- CLI:
usine login <provider>andusine logout <provider>with the same effect, for headless hosts. - Flow: use each provider CLI's own login, preferring a device-code flow so the browser can be on another machine. Verify what Claude Code (
claude setup-token) and Codex (codex login, device auth) support at the pinned versions, and an API-key path for both. - Storage: with a gateway, hand the credential to it over its admin API (
packages/gateway/src/admin), which stores it with the same file modes and refresh handling it has today. Without a gateway, store it where the local harnesses read it. Credentials never pass through the operator API's JSON responses, logs, or the browser after the login completes. - Docs: replace the manual steps in the gateway guide and the quickstart's login section with the new step, keeping the manual path as a fallback.
It's a new screen: load the impeccable skill in .agents/skills and follow "How to add UI" in apps/web/README.md. Screenshots under docs/screenshots/<issue>/ for the owner's review before merge.
Acceptance criteria
- On a fresh instance with a gateway, the operator connects ChatGPT and Claude from the UI or CLI, and a remote attempt runs on those logins with no SSH step.
- On an instance without a gateway, the same step makes the local worker's harnesses signed in.
- Tests cover the admin API handoff, a failed or cancelled login, and that no credential appears in API responses or logs.
- All gates pass.
- 主要语言
- TypeScript
- 星标
- 1
- 派生
- 0
- 平均合并
- 3 小时 44 分钟
- 30 天内合并 PR
- 378
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
basaltbytes/usine 的其他 Issue
-
bug
难度 4/5 3-5 天 新手友好度 47/100
basaltbytes/usine#1018 ·
维护者通常 1 天内回复
-
bug
难度 4/5 3-5 天 新手友好度 58/100
basaltbytes/usine#1017 ·
维护者通常 1 天内回复
-
enhancement
难度 4/5 3-5 天 新手友好度 35/100
basaltbytes/usine#1016 · 1 条评论 ·
维护者通常 1 天内回复
-
bug
难度 4/5 3-5 天 新手友好度 52/100
basaltbytes/usine#1012 ·
维护者通常 1 天内回复
-
bug
难度 4/5 3-5 天 新手友好度 45/100
basaltbytes/usine#1009 ·
维护者通常 1 天内回复
查看 basaltbytes/usine 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 75/100
transitmatters/shutdown-tracker#155 ·
维护者通常 2 天内回复
-
bug triaged
难度 2/5 1-3 小时 新手友好度 76/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 65/100
维护者通常 1 天内回复
-
"Claude Code request is missing its initial user message" when the prompt starts with an image path未关闭
难度 2/5 1-3 小时 新手友好度 84/100
earendil-works/pi-claude-code#31 ·
维护者通常 8 天内回复
-
bug pending triage
难度 1/5 1 小时以内 新手友好度 92/100
privatenumber/cleye#48 ·