Skip to content

[Feature Request] 모든 프로바이더의 다계정 및 API 키 풀을 CLI에서 조회·전환 #180

Description

@jhste102lab

제안 배경

현재 OpenCodex GUI에서는 다음과 같은 다계정 및 다중 자격증명 기능을 사용할 수 있습니다.

  • ChatGPT/Codex 계정 풀: 메인 계정과 추가 계정 조회, 다음 새 세션에 사용할 계정 선택
  • 일반 OAuth 프로바이더: 여러 로그인 계정 저장 및 활성 계정 전환
  • API 키 기반 프로바이더: 여러 API 키 저장 및 활성 키 전환

하지만 동일한 기능을 공식 ocx CLI 명령으로 사용할 수는 없는 것으로 보입니다.

현재 터미널에서 전환하려면 각 관리 API를 직접 호출해야 합니다.

Codex 계정 풀
GET /api/codex-auth/accounts
GET /api/codex-auth/active
PUT /api/codex-auth/active

일반 OAuth 계정
GET /api/oauth/accounts?provider=<provider>
PUT /api/oauth/accounts/active

API 키 풀
GET /api/providers/keys?name=<provider>
PUT /api/providers/keys/active

GUI를 사용할 수 없는 SSH 환경이나 터미널 중심 작업 환경에서는 공식 CLI 명령으로 계정과 키를 조회하고 전환할 수 있으면 편리할 것 같습니다.

제안하는 통합 명령 구조

자격증명 종류가 달라도 가능한 한 일관된 명령 구조를 제공하는 방식을 제안합니다.

프로바이더의 계정 또는 키 목록 조회

ocx account list
ocx account list <provider>
ocx account list <provider> --json

예시:

ocx account list openai
ocx account list anthropic
ocx account list xai
ocx account list cursor
ocx account list openrouter

출력 예시:

PROVIDER    TYPE         ID                       PLAN/LABEL    STATUS
openai      codex        main                     free          current
openai      codex        chatgpt-1712345678901    plus          next session
anthropic   oauth        acct_a1b2c3              Max           active
openrouter  api-key      key_3f8a91               personal      active

이메일, 계정명, API 키는 현재 GUI 및 관리 API와 마찬가지로 마스킹된 형태만 표시하면 좋겠습니다.

현재 활성 자격증명 확인

ocx account current <provider>
ocx account current <provider> --json

예시:

ocx account current openai
ocx account current anthropic
ocx account current openrouter

계정 또는 API 키 전환

ocx account use <provider> <account-or-key-id>

예시:

# 다음 새 Codex 세션에서 사용할 추가 ChatGPT 계정 선택
ocx account use openai chatgpt-1712345678901

# Codex App의 메인 로그인 계정으로 복귀
ocx account use openai main

# Anthropic OAuth 활성 계정 변경
ocx account use anthropic acct_a1b2c3

# OpenRouter 활성 API 키 변경
ocx account use openrouter key_3f8a91

OpenAI Codex 계정 풀은 현재 GUI 동작과 동일하게 다음에 생성되는 새 Codex 세션부터 적용되고, 이미 특정 계정에 연결된 기존 thread에는 영향을 주지 않는 방식이면 좋겠습니다.

일반 OAuth 계정과 API 키는 해당 프로바이더의 활성 자격증명을 변경하는 현재 GUI 동작과 동일하면 좋겠습니다.

대안: 자격증명 유형별 하위 명령

구현상 계정과 API 키를 분리하는 편이 더 명확하다면 다음 구조도 가능할 것 같습니다.

ocx account list <provider>
ocx account use <provider> <account-id>
ocx account add <provider>
ocx account remove <provider> <account-id>

ocx key list <provider>
ocx key use <provider> <key-id>
ocx key add <provider>
ocx key remove <provider> <key-id>

다만 사용자는 프로바이더마다 OAuth인지 API 키인지 확인해야 하므로, 가능하다면 ocx account 아래에서 통합적으로 처리하는 쪽이 더 편리해 보입니다.

Codex 계정 풀 전용 옵션

Codex 계정 풀에는 일반 OAuth 계정과 다른 기능이 있으므로 다음 옵션도 지원되면 좋겠습니다.

ocx account refresh openai
ocx account auto-switch openai on
ocx account auto-switch openai off
ocx account auto-switch openai threshold 80

또는 기존 의미를 더 명확하게 유지하기 위해 아래처럼 별도 namespace를 제공할 수도 있습니다.

ocx codex-auth list
ocx codex-auth current
ocx codex-auth use <account-id|main>
ocx codex-auth refresh
ocx codex-auth auto-switch on|off

지원 대상

다중 OAuth 계정을 지원하는 프로바이더

안정적인 계정 ID 또는 이메일이 있는 OAuth 프로바이더의 저장된 계정을 조회하고 전환할 수 있으면 좋겠습니다.

예:

  • xAI
  • Anthropic
  • Google Antigravity
  • Cursor
  • GitHub Copilot

Kimi와 Kiro처럼 계정 식별자가 없어 새 로그인 시 기존 슬롯을 교체하는 프로바이더는 단일 계정으로 표시하거나, CLI에서 명확한 안내를 출력하면 좋겠습니다.

API 키 기반 프로바이더

provider.apiKeyPool을 사용하는 모든 키 기반 프로바이더에서 키 목록 조회 및 활성 키 전환을 지원하면 좋겠습니다.

예:

  • OpenAI API
  • Anthropic API
  • OpenRouter
  • Google Gemini
  • Azure OpenAI
  • 기타 key 기반 custom provider

기대 효과

  • GUI가 없는 SSH 및 원격 서버 환경에서 계정과 API 키 전환 가능
  • 쉘 스크립트와 자동화 도구에서 현재 활성 자격증명 확인 가능
  • 관리 API를 직접 호출하는 curl 명령을 사용하지 않아도 됨
  • 실행 중인 프록시 포트를 직접 파악할 필요 없이 ocx가 runtime port를 자동 해석
  • --json을 이용한 자동화 및 상태 모니터링 가능
  • 프로바이더마다 서로 다른 관리 API를 외울 필요가 없음
  • OpenCodex의 GUI와 CLI 기능을 일관되게 유지 가능

최소 구현 범위 제안

우선 다음 명령만 있어도 핵심 사용 사례는 충족될 것 같습니다.

ocx account list <provider> [--json]
ocx account current <provider> [--json]
ocx account use <provider> <account-or-key-id>

내부적으로는 이미 존재하는 관리 API를 재사용할 수 있을 것으로 보입니다.

Codex 계정 풀
GET /api/codex-auth/accounts
GET /api/codex-auth/active
PUT /api/codex-auth/active

일반 OAuth 계정
GET /api/oauth/accounts?provider=<provider>
PUT /api/oauth/accounts/active

API 키 풀
GET /api/providers/keys?name=<provider>
PUT /api/providers/keys/active

기타 고려사항

  • 액세스 토큰과 API 키 원문은 절대 출력하지 않기
  • 이메일과 계정 식별 정보는 마스킹된 값만 출력하기
  • 존재하지 않는 프로바이더나 계정/키 ID를 선택하면 non-zero exit code 반환
  • 프록시가 실행 중이 아닐 경우 명확한 오류와 실행 안내 표시
  • ocx status와 동일한 방식으로 실제 runtime port 자동 감지
  • OpenAI Codex 계정 수동 선택은 기존 thread가 아니라 다음 새 세션부터 적용된다는 안내 표시
  • 다계정을 지원하지 않는 OAuth 프로바이더는 교체 방식임을 명확히 안내
  • CLI reference 및 Providers 문서에도 새 명령 추가

검토 부탁드립니다. 감사합니다.

Activity

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions