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 Models API to list available models.
Required Headers:
Authorization: Bearer <your_access_token>
Response:
- JSON response containing a list of available models from GitHub Copilot
- Compatible with OpenAI API format
Example:
curl http://localhost:9191/v1/models \ -H "Authorization: Bearer your_access_token_here"Get details for a specific model.
Required Headers:
Authorization: Bearer <your_access_token>
Path Parameters:
model: Model ID (e.g.,gpt-5.1,claude-sonnet-4)
Response:
- JSON response with model details in OpenAI format
Example:
curl http://localhost:9191/v1/models/gpt-5.1 \ -H "Authorization: Bearer your_access_token_here"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.