A wrapper around GitHub Copilot API to make it OpenAI compatible, making it usable for other tools like AI assistants, local interfaces, and development utilities.
copilot-api-demo.mp4
- Bun (>= 1.2.x)
- GitHub account with Copilot subscription (Individual or Business)
To install dependencies, run:
bun install
Build image
docker build -t copilot-api .
Run the container
docker run -p 4141:4141 copilot-api
You can run the project directly using npx:
npx copilot-api@latest start
With options:
npx copilot-api@latest start --port 8080
For authentication only:
npx copilot-api@latest auth
Copilot API now uses a subcommand structure with two main commands:
start
: Start the Copilot API server (default command)auth
: Run GitHub authentication flow without starting the server
The following command line options are available for the start
command:
Option | Description | Default | Alias |
---|---|---|---|
--port | Port to listen on | 4141 | -p |
--verbose | Enable verbose logging | false | -v |
--business | Use a business plan GitHub account | false | none |
--manual | Enable manual request approval | false | none |
--rate-limit | Rate limit in seconds between requests | none | -r |
--wait | Wait instead of error when rate limit is hit | false | -w |
--github-token | Provide GitHub token directly | none | -g |
Option | Description | Default | Alias |
---|---|---|---|
--verbose | Enable verbose logging | false | -v |
Using with npx:
# Basic usage with start command
npx copilot-api@latest start
# Run on custom port with verbose logging
npx copilot-api@latest start --port 8080 --verbose
# Use with a Business GitHub account
npx copilot-api@latest start --business
# Enable manual approval for each request
npx copilot-api@latest start --manual
# Set rate limit to 30 seconds between requests
npx copilot-api@latest start --rate-limit 30
# Wait instead of error when rate limit is hit
npx copilot-api@latest start --rate-limit 30 --wait
# Provide GitHub token directly
npx copilot-api@latest start --github-token ghp_YOUR_TOKEN_HERE
# Run only the auth flow
npx copilot-api@latest auth
# Run auth flow with verbose logging
npx copilot-api@latest auth --verbose
Note: For backward compatibility, if no subcommand is provided, the
start
command will be used as default.
The project can be run from source in several ways:
bun run dev
bun run start
- Consider using free models (e.g., Gemini, Mistral, Openrouter) as the
weak-model
- Use architect mode sparingly
- Disable
yes-always
in your aider configuration - Be mindful that Claude 3.7 thinking mode consumes more tokens
- Enable the
--manual
flag to review and approve each request before processing - If you have a GitHub Business account with Copilot, use the
--business
flag
When using the --manual
flag, the server will prompt you to approve each incoming request:
? Accept incoming request? › (y/N)
This helps you control usage and monitor requests in real-time.
- Manual authentication flow
- Manual request approval system
- Rate limiting implementation
- Token counting
- Enhanced error handling and recovery