A FastAPI proxy server that seamlessly turns GitHub Copilot's chat completion/embeddings capabilities into OpenAI compatible API service.
🚀 Advanced Integration
- Seamless GitHub Copilot chat completion API proxy
- Real-time streaming response support
- High-performance request handling
🔐 Security & Reliability
- Secure authentication middleware
- Automatic token management and refresh
- Built-in CORS support for web applications
💻 Universal Compatibility
- Cross-platform support (Windows and Unix-based systems)
- Docker containerization ready
- Flexible deployment options
- Python 3.10+
- pip (Python package manager)
- GitHub Copilot subscription
- GitHub authentication token
- Clone the repository:
git clone https://github.com/yuchanns/copilot-openai-api.git
cd copilot_provider- Install dependencies:
# Install PDM first if you haven't
pip install -U pdm
# Install project dependencies using PDM
pdm install --prod- Set up environment variables:
# Windows
set COPILOT_TOKEN=your_access_token_here
set COPILOT_SERVER_PORT=9191 # Optional: Server port (default: 9191)
set COPILOT_SERVER_WORKERS=4 # Optional: Number of workers (default: min(CPU_COUNT, 4))
# Unix/Linux/macOS
export COPILOT_TOKEN=your_access_token_here
export COPILOT_SERVER_PORT=9191 # Optional: Server port (default: 9191)
export COPILOT_SERVER_WORKERS=4 # Optional: Number of workers (default: min(CPU_COUNT, 4))📝 Note:
COPILOT_TOKEN: Required for authentication. If not set, a random token will be generated.COPILOT_SERVER_PORT: Optional. Controls which port the server listens on.COPILOT_SERVER_WORKERS: Optional. Controls the number of worker processes.
- Configure GitHub Copilot:
- Windows users: Check
%LOCALAPPDATA%/github-copilot/ - Unix/Linux/macOS users: Check
~/.config/github-copilot/
- Windows users: Check
Required configuration files:
apps.jsonorhosts.json(containing GitHub OAuth token)token.json(will be created automatically)
💡 How to get a valid Github Copilot configuration?
Choose any of these official GitHub Copilot plugins:
- GitHub Copilot for VS Code
- GitHub Copilot for Visual Studio
- GitHub Copilot for Vim
- GitHub Copilot for JetBrains IDEs
After installing and signing in, configuration files will be automatically created in your system's config directory.
Choose between local or Docker deployment:
Start the server with:
pdm devLaunch the containerized version:
# Unix/Linux/macOS
docker run --rm -p 9191:9191 \
-v ~/.config/github-copilot:/home/appuser/.config/github-copilot \
ghcr.io/yuchanns/copilot-openai-api
# Windows
docker run --rm -p 9191:9191 ^
-v %LOCALAPPDATA%/github-copilot:/home/appuser/.config/github-copilot ^
ghcr.io/yuchanns/copilot-openai-apiThe Docker setup:
- Maps port 9191 to your host
- Mounts your Copilot configuration
- Provides identical functionality to local deployment
Access the chat completion endpoint:
curl -X POST http://localhost:9191/v1/chat/completions \
-H "Authorization: Bearer your_access_token_here" \
-H "Content-Type: application/json" \
-d '{
"messages": [{"role": "user", "content": "Hello, Copilot!"}]
}'Access the embeddings endpoint:
curl -X POST http://localhost:9191/v1/embeddings \
-H "Authorization: Bearer your_access_token_here" \
-H "Content-Type: application/json" \
-d '{
"model": "copilot-text-embedding-ada-002",
"input": ["The quick brown fox", "Jumped over the lazy dog"]
}'Proxies requests to GitHub Copilot's Completions API.
Required Headers:
Authorization: Bearer <your_access_token>Content-Type: application/json
Request Body:
- Follow GitHub Copilot chat completion API format
Response:
- Streams responses directly from GitHub Copilot's API
- Supports both streaming and non-streaming modes
Proxies requests to Github Copilot's Embeddings API.
Required Headers:
Authorization: Bearer <your_access_token>Content-Type: application/json
Request Body:
- Follow GitHub Copilot embeddings API format
Response:
- JSON response from GitHub Copilot's embeddings API
Secure your endpoints:
- Set
COPILOT_TOKENin your environment - Include in request headers:
Authorization: Bearer your_access_token_here
The server provides clear error responses:
- 401: Missing/invalid authorization header
- 403: Invalid access token
- Other errors are propagated from GitHub Copilot API
- Configure CORS for your specific domains (default:
*) - Safeguard your
COPILOT_TOKENand GitHub OAuth token - Built-in token management with concurrent access protection
Licensed under the Apache License 2.0 - see the LICENSE file for details.