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.json
orhosts.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 dev
Launch 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-api
The 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
Proxies requests to Github Copilot's Embeddings API.
Required Headers:
Authorization: Bearer <your_access_token>
Content-Type: application/json
Request Body:
{
"model": "<model_name>",
"input": ["string or array of strings"]
}
model
: The name of the embedding model (e.g.copilot-text-embedding-ada-002
or compatible name)input
: Accepts a string or an array of strings
Response:
{
"data": [{
"embedding": [...],
"index": 0,
"object": "embedding"
}, {
"embedding": [...],
"index": 1,
"object": "embedding"
}],
"usage": {
"prompt_tokens": 10,
"total_tokens": 10
}
}
Secure your endpoints:
- Set
COPILOT_TOKEN
in 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_TOKEN
and GitHub OAuth token - Built-in token management with concurrent access protection
Licensed under the Apache License 2.0 - see the LICENSE file for details.