본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 05. 20. 19:50

StarryKira/copilot2api-go: Go 언어로 재작성된 GitHub Copilot API 역공학 프록시

요약

GitHub Copilot API를 역공학하여 OpenAI 및 Anthropic 호환 API로 변환해주는 Go 언어 기반의 프록시 프로젝트입니다. 멀티 계정 관리와 부하 분산 기능을 제공하며, 웹 콘솔을 통해 계정 인증 및 관리가 가능합니다.

핵심 포인트

  • GitHub Copilot API를 OpenAI 및 Anthropic 표준 API 규격으로 변환하여 제공
  • Round-Robin 및 우선순위 전략을 통한 멀티 계정 부하 분산(Load Balancing) 지원
  • 웹 콘솔을 통한 GitHub OAuth 디바이스 플로우 기반의 간편한 계정 관리
  • Docker를 지원하여 프로덕션 환경에 용이한 배포 가능
  • 스트리밍 SSE 및 모델 ID 매핑 기능 포함

Go 언어로 재작성된 GitHub Copilot API용 역공학 (Reverse-engineered) 프록시입니다. 관리 및 부하 분산 (Load balancing)을 위한 멀티 계정 웹 콘솔을 통해 Copilot을 OpenAI 및 Anthropic 호환 API 서비스로 노출합니다.

경고: 이것은 역공학 (Reverse-engineered) 프록시입니다. GitHub의 지원을 받지 않으며 예기치 않게 작동이 중단될 수 있습니다. 사용 시 발생하는 위험은 사용자 본인에게 있습니다.

GitHub 보안 고지: Copilot을 과도하게 자동화하거나 스크립트로 사용할 경우 GitHub의 남용 탐지 시스템 (Abuse-detection systems)이 작동할 수 있습니다. GitHub의 허용 가능한 사용 정책 (Acceptable Use Policies) 및 GitHub Copilot 약관을 검토하십시오.

멀티 계정 관리 (Multi-Account Management): 여러 GitHub Copilot 계정을 추가, 삭제, 시작 및 중지할 수 있는 웹 콘솔
풀 모드 부하 분산 (Pool Mode Load Balancing): Round-Robin 또는 우선순위 (Priority) 전략을 사용하여 계정 간에 요청을 분산
OpenAI 호환 API:
/v1/chat/completions
/v1/models
/v1/embeddings

Anthropic 호환 API:
/v1/messages
/v1/messages/count_tokens
— 자동 프로토콜 변환 (Protocol translation)
모델 ID 매핑 (Model ID Mapping): Copilot 내부 모델 ID와 표준 표시 ID 간의 양방향 매핑 (예: claude-sonnet-4-20250514)
스트리밍 SSE (Streaming SSE): OpenAI 및 Anthropic 형식 모두에서 스트리밍 응답을 완벽하게 지원
GitHub OAuth 디바이스 플로우 (GitHub OAuth Device Flow): 웹 콘솔에서 직접 계정 인증
관리자 인증 (Admin Authentication): 세션 관리가 포함된 비밀번호 보호 콘솔
이중 언어 웹 UI (Bilingual Web UI): 자동 감지 기능이 있는 영어 및 중국어 인터페이스
Docker 준비 완료 (Docker Ready): 최소한의 프로덕션 이미지를 위한 멀티 스테이지 Dockerfile

# 빌드 (Build)
go build -o copilot-go .
# 실행 (웹 UI 서빙을 위해 프로젝트 루트에서 실행)
...
# 이미지 빌드 (Build image)
docker build -t copilot-go .
# 지속성 데이터와 함께 실행 (Run with persistent data)
...
services:
copilot-go:
build: .
...
옵션 (Option)기본값 (Default)설명 (Description)
--web-port3000웹 콘솔 포트
--proxy-port4141프록시 API 포트
--verbosefalse상세 로깅 (Verbose logging) 활성화
--auto-starttrue실행 시 활성화된 계정 자동 시작
  • http://localhost:3000 열기

— 첫 방문 시 관리자 계정 생성 - OAuth 디바이스 플로우 (OAuth device flow)를 통해 GitHub Copilot 계정 추가

  • 계정 인스턴스 시작
  • 계정의 API Key (또는 Pool Key)를 사용하여 프록시 호출
엔드포인트 (Endpoint)메서드 (Method)설명
/v1/chat/completionsPOST채팅 완성 (Chat completions, 스트리밍 지원)
/v1/modelsGET사용 가능한 모델 목록 조회
/v1/embeddingsPOST임베딩 (Embeddings) 생성
/chat/completionsPOST/v1 접두사가 없는 별칭 (Alias)
/modelsGET/v1 접두사가 없는 별칭 (Alias)
/embeddingsPOST/v1 접두사가 없는 별칭 (Alias)
엔드포인트 (Endpoint)메서드 (Method)설명
/v1/messagesPOST메시지 API (Messages API, 스트리밍 지원)
/v1/messages/count_tokensPOST토큰 계산 (Token counting, 추정치)

모든 프록시 엔드포인트는 Bearer 토큰을 필요로 합니다:

# Authorization 헤더 사용 (OpenAI 스타일)
curl -H "Authorization: Bearer sk-your-api-key" ...
# x-api-key 헤더 사용 (Anthropic 스타일)
...
curl http://localhost:4141/v1/chat/completions \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
...
curl http://localhost:4141/v1/messages \
-H "x-api-key: sk-your-api-key" \
-H "Content-Type: application/json" \
...
ANTHROPIC_BASE_URL=http://localhost:4141 \
ANTHROPIC_API_KEY=sk-your-api-key \
claude

또는 프로젝트 내에 .claude/settings.json을 생성하십시오:

{
"env": {
"ANTHROPIC_BASE_URL": "http://localhost:4141",
...
엔드포인트 (Endpoint)메서드 (Method)설명
/api/configGET서버 설정 (프록시 포트, 설정 상태)
/api/auth/setupPOST초기 관리자 설정
/api/auth/loginPOST관리자 로그인
엔드포인트 (Endpoint)메서드 (Method)설명 (Description)
/api/auth/checkGET세션 검증 (Validate session)
/api/accountsGET상태를 포함한 모든 계정 목록 조회
/api/accounts/usageGET일괄 사용량 쿼리 (Batch usage query)
/api/accounts/:idGET단일 계정 조회
/api/accountsPOST계정 추가
/api/accounts/:idPUT계정 업데이트
/api/accounts/:idDELETE계정 삭제
/api/accounts/:id/regenerate-keyPOSTAPI 키 재발급 (Regenerate API key)
/api/accounts/:id/startPOST인스턴스 시작
/api/accounts/:id/stopPOST인스턴스 중지
/api/accounts/:id/usageGET계정 사용량 조회
/api/auth/device-codePOSTGitHub OAuth 흐름 시작
/api/auth/poll/:sessionIdGETOAuth 상태 폴링 (Poll OAuth status)
/api/auth/completePOSTOAuth 완료 및 계정 생성
/api/poolGET풀 (Pool) 설정 조회
/api/poolPUT풀 (Pool) 설정 업데이트
/api/pool/regenerate-keyPOST풀 (Pool) API 키 재발급
/api/model-mapGET모델 ID 매핑 (Model ID mappings) 조회
/api/model-mapPUT매핑 일괄 업데이트
/api/model-mapPOST단일 매핑 추가
/api/model-map/:copilotIdDELETE매핑 삭제

Copilot은 비표준 모델 ID를 반환합니다. 매핑 (Mapping) 기능을 통해 양방향 변환을 구성할 수 있습니다:

/v1/models는 매핑된 표시 ID (display IDs)를 반환합니다.

  • 들어오는 요청은 표시 ID를 Copilot 내부 ID로 다시 변환합니다.
  • 매핑 정보는 ~/.local/share/copilot-api/model_map.json에 저장됩니다.
  • 웹 콘솔 (Web Console)의 "Model ID Mapping" 패널을 통해 설정 가능합니다.
copilot-go/
├── main.go # 진입점 (Entry point), 웹 콘솔 및 프록시 (proxy) 시작
├── config/config.go # 상수 (Constants), 상태 (State), 헤더 빌더 (header builders)
...

모든 데이터는 ~/.local/share/copilot-api/에 저장됩니다.

파일 (File)내용 (Content)
accounts.json계정 목록
pool-config.json풀 (Pool) 모드 설정
admin.json관리자 비밀번호 해시 (Admin password hash)
model_map.json모델 ID 매핑

ericc-ch/copilot-api (TypeScript/Bun)를 기반으로 하며, 멀티 계정 콘솔 모드를 갖춘 Go 언어로 재작성되었습니다.

MIT

GitHub Copilot API 역공학 (Reverse Engineering) 프록시 서비스 (Go 재작성 버전)로, 다중 계정 Web 관리, 부하 분산 (Load Balancing)을 지원하며 Copilot을 OpenAI/Anthropic 호환 인터페이스로 변환합니다.

경고: 이것은 역공학 프록시이며, GitHub의 공식 지원을 받지 않으므로 언제든 작동이 중단될 수 있습니다. 사용에 따른 위험은 사용자 본인에게 있습니다.

GitHub 보안 고지: Copilot을 과도하게 자동화하거나 스크립트 방식으로 사용할 경우 GitHub의 남용 탐지 시스템 (Abuse Detection System)이 작동할 수 있습니다. GitHub의 허용 가능한 사용 정책 (Acceptable Use Policy) 및 GitHub Copilot 약관을 확인하시기 바랍니다.

다중 계정 관리: Web 콘솔을 통해 여러 GitHub Copilot 계정의 추가, 삭제, 시작/중지 가능
Pool 모드 부하 분산 (Load Balancing): 라운드 로빈 (Round-Robin) 또는 우선순위 (Priority) 전략으로 요청 분산
OpenAI 호환 인터페이스: /v1/chat/completions, /v1/models, /v1/embeddings 지원
Anthropic 호환 인터페이스: /v1/messages, /v1/messages/count_tokens 지원 — 자동 프로토콜 변환
모델 ID 매핑: Copilot 내부 ID와 표준 ID 간의 양방향 매핑 (예: claude-sonnet-4-20250514)
스트리밍 SSE: OpenAI 및 Anthropic 형식의 스트리밍 (Streaming) 응답 완전 지원
GitHub OAuth 디바이스 플로우 (Device Flow): Web 콘솔에서 직접 계정 인증 완료
관리자 인증: 비밀번호로 보호되는 콘솔, 세션 관리 지원
중문/영문 인터페이스: 브라우저 언어 자동 감지 및 수동 전환 지원
Docker 지원: 멀티 스테이지 빌드 (Multi-stage build)를 통한 작은 크기의 프로덕션 이미지

# 컴파일
go build -o copilot-go .
# 실행 (Web UI 로드를 위해 프로젝트 루트 디렉토리에서 실행)
...
# 이미지 빌드
docker build -t copilot-go .
# 실행 (데이터 영속화)
...
services:
  copilot-go:
    build: .
    ...
파라미터기본값설명
--web-port3000Web 콘솔 포트
--proxy-port4141프록시 API 포트
--verbosefalse상세 로그
--auto-starttrue시작 시 활성화된 계정 자동 시작
  • http://localhost:3000 접속, 최초 사용 시 관리자 계정 생성
  • GitHub OAuth 디바이스 플로우를 통해 Copilot 계정 추가
  • 계정 인스턴스 시작
  • 계정 API Key 또는 Pool Key를 사용하여 프록시 인터페이스 호출
엔드포인트 (Endpoint)메서드 (Method)설명
/v1/chat/completionsPOST대화 완성 (스트리밍 지원)
/v1/modelsGET모델 목록
/v1/embeddingsPOST텍스트 임베딩 (Embeddings)
엔드포인트 (Endpoint)메서드 (Method)설명
/v1/messagesPOST메시지 API (스트리밍 지원)
/v1/messages/count_tokensPOST토큰 (Token) 수 계산 (추정)

모든 프록시 엔드포인트는 Bearer 토큰이 필요합니다:

# OpenAI 스타일
curl -H "Authorization: Bearer sk-your-api-key" ...
# Anthropic 스타일
...
curl http://localhost:4141/v1/chat/completions \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
...
curl http://localhost:4141/v1/messages \
-H "x-api-key: sk-your-api-key" \
-H "Content-Type: application/json" \
...
ANTHROPIC_BASE_URL=http://localhost:4141 \
ANTHROPIC_API_KEY=sk-your-api-key \
claude

또는 프로젝트 내에 .claude/settings.json 생성:

{
"env": {
"ANTHROPIC_BASE_URL": "http://localhost:4141",
...

Copilot이 반환하는 모델 ID(Model ID)는 표준 규격에 맞지 않으므로, 매핑(Mapping) 기능을 통해 양방향 변환을 지원합니다:

/v1/models

  • 매핑된 표준 ID를 반환합니다.
  • 요청 시 표준 ID를 Copilot 내부 ID로 자동 변환합니다.
  • 매핑 정보는 ~/.local/share/copilot-api/model_map.json에 영구 저장됩니다.
  • Web 콘솔의 「모델 ID 매핑 (Model ID Mapping)」 패널을 통해 설정할 수 있습니다.

모든 데이터는 ~/.local/share/copilot-api/에 저장됩니다:

파일내용
accounts.json계정 목록
pool-config.json풀 (Pool) 모드 설정
admin.json관리자 비밀번호 해시 (Hash)
model_map.json모델 ID 매핑 테이블

ericc-ch/copilot-api (TypeScript/Bun)를 기반으로 Go 언어로 재작성되었으며, 다중 계정 콘솔 모드가 새롭게 추가되었습니다.

MIT

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub AI Coding Assistants의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
1

댓글

0