{"id":48774624,"url":"https://github.com/prassaaa/copilot-api","last_synced_at":"2026-04-13T12:04:10.580Z","repository":{"id":337729021,"uuid":"1140753233","full_name":"prassaaa/copilot-api","owner":"prassaaa","description":"Expose GitHub Copilot through an OpenAI and Anthropic-compatible API, enabling direct usage with Claude Code.","archived":false,"fork":false,"pushed_at":"2026-02-11T03:53:43.000Z","size":2233,"stargazers_count":48,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-11T04:05:53.417Z","etag":null,"topics":["claude","claude-code","gemini-ai","github-copilot","grok","open-ai","open-ai-compatible-api","reverse-engineering"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prassaaa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-01-23T18:00:19.000Z","updated_at":"2026-02-11T03:53:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/prassaaa/copilot-api","commit_stats":null,"previous_names":["prassaaa/copilot-api"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/prassaaa/copilot-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prassaaa%2Fcopilot-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prassaaa%2Fcopilot-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prassaaa%2Fcopilot-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prassaaa%2Fcopilot-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prassaaa","download_url":"https://codeload.github.com/prassaaa/copilot-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prassaaa%2Fcopilot-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31751708,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T09:16:15.125Z","status":"ssl_error","status_checked_at":"2026-04-13T09:16:05.023Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude","claude-code","gemini-ai","github-copilot","grok","open-ai","open-ai-compatible-api","reverse-engineering"],"created_at":"2026-04-13T12:04:05.569Z","updated_at":"2026-04-13T12:04:10.568Z","avatar_url":"https://github.com/prassaaa.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"public/favicon.svg\" width=\"80\" height=\"80\" alt=\"Copilot API Logo\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eCopilot API\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eProxy server yang mengkonversi GitHub Copilot API ke format OpenAI \u0026 Anthropic — dengan dashboard management mobile-friendly untuk multi-account, quota monitoring, dan API playground.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/el-pablos/copilot-api/actions\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/el-pablos/copilot-api/ci.yml?branch=main\u0026style=flat-square\u0026label=CI\" alt=\"Build Status\" /\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/github/package-json/v/el-pablos/copilot-api?style=flat-square\u0026color=fe8019\" alt=\"Version\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/runtime-Bun%20%E2%89%A51.2-b8bb26?style=flat-square\" alt=\"Bun\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/theme-Gruvbox%20Dark-282828?style=flat-square\" alt=\"Gruvbox Theme\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/el-pablos/copilot-api?style=flat-square\" alt=\"License\" /\u003e\n\u003c/p\u003e\n\n---\n\n\u003e **Peringatan**: Ini adalah reverse-engineered proxy dari GitHub Copilot API. Tidak didukung resmi oleh GitHub dan bisa berhenti berfungsi kapan saja. Gunakan dengan risiko sendiri.\n\u003e\n\u003e **Catatan Keamanan GitHub**: Penggunaan berlebihan atau otomatis terhadap Copilot bisa memicu sistem deteksi abuse GitHub. Pastikan kamu review [GitHub Acceptable Use Policies](https://docs.github.com/site-policy/acceptable-use-policies) dan [GitHub Copilot Terms](https://docs.github.com/site-policy/github-terms/github-terms-for-additional-products-and-features#github-copilot).\n\n---\n\n## Apa itu Copilot API?\n\n**Copilot API** adalah proxy server yang bikin kamu bisa pakai GitHub Copilot dari tools apa aja yang support format OpenAI atau Anthropic API. Jadi kalau kamu punya akses GitHub Copilot, kamu bisa gunain buat:\n\n- **Claude Code** — langsung connect tanpa perlu API key Anthropic\n- **Tools OpenAI-compatible** — apapun yang bisa kirim request ke `/v1/chat/completions`\n- **Custom app** — bikin aplikasi sendiri yang pakai model-model Copilot\n\nMasalah yang diselesaikan: GitHub Copilot itu powerful banget, tapi API-nya proprietary dan nggak bisa dipake langsung sama tools third-party. Copilot API jadi jembatan antara Copilot dan ekosistem OpenAI/Anthropic.\n\n## Fitur Utama\n\n- **Multi-Format API** — Support OpenAI Chat Completions, Anthropic Messages, dan Embeddings\n- **Dashboard Mobile-First** — WebUI management responsive yang bisa diakses dari HP\n- **Multi-Account Pool** — Rotasi otomatis antar beberapa akun GitHub (4 strategi: sticky, round-robin, quota-based, hybrid)\n- **Quota Monitoring** — Real-time tracking penggunaan per akun (Chat, Completions, Premium)\n- **API Playground** — Test endpoint langsung dari dashboard dengan preset templates\n- **Real-time Logs** — Server-Sent Events streaming log dengan filter dan export\n- **Request History** — Audit trail lengkap semua request dengan cost estimation\n- **Claude CLI Integration** — One-click config deployment untuk Claude Code\n- **OAuth Device Flow** — Tambah akun GitHub tanpa copy-paste token\n- **Rate Limiting** — Kontrol interval request dengan opsi wait atau error\n- **Model Fallback** — Auto-fallback ke model lain kalau yang diminta nggak available\n- **Cache \u0026 Queue** — Caching response dan queue management untuk reliability\n\n## Arsitektur\n\n### Request Pipeline\n\n```\nClient Request → Hono Server → Middleware (CORS, Auth, Logging)\n    → Cache Check → Queue → Rate Limit → Account Pool Selection\n    → Copilot API → Response Transform (OpenAI/Anthropic format) → Client\n```\n\n### Komponen Utama\n\n| Komponen     | Lokasi                    | Deskripsi                              |\n| ------------ | ------------------------- | -------------------------------------- |\n| CLI Entry    | `src/main.ts`             | Command definitions pakai Citty        |\n| Server       | `src/server.ts`           | Hono app dengan middleware stack       |\n| Startup      | `src/start.ts`            | Server orchestration, token refresh    |\n| Account Pool | `src/lib/account-pool.ts` | Multi-account rotation (4 strategi)    |\n| Token Mgmt   | `src/lib/token.ts`        | GitHub \u0026 Copilot token handling        |\n| Config       | `src/lib/config.ts`       | File-based config dengan env overrides |\n| WebUI        | `src/webui/routes.ts`     | Dashboard API routes                   |\n| Frontend     | `public/`                 | Alpine.js + Tailwind CSS dashboard     |\n\n### Struktur Folder\n\n```\ncopilot-api/\n├── src/\n│   ├── main.ts              # CLI entry point\n│   ├── server.ts             # Hono server setup\n│   ├── start.ts              # Server orchestration\n│   ├── lib/                  # Core libraries\n│   ├── routes/               # API route handlers\n│   ├── services/             # External service clients\n│   └── webui/                # Dashboard API\n├── public/\n│   ├── index.html            # Dashboard UI (mobile-first)\n│   ├── js/app.js             # Alpine.js application\n│   └── favicon.svg           # Logo\n├── tests/                    # Unit \u0026 integration tests\n└── .github/workflows/        # CI/CD pipelines\n```\n\n## Diagram Flow\n\n```mermaid\nflowchart TD\n    Client[Client App] --\u003e|Request| Server[Hono Server]\n    Server --\u003e|Auth Check| Middleware[Middleware Stack]\n    Middleware --\u003e|Cache Check| Cache{Cache Hit?}\n    Cache --\u003e|Yes| Client\n    Cache --\u003e|No| Queue[Request Queue]\n    Queue --\u003e|Rate Limit| RateLimit[Rate Limiter]\n    RateLimit --\u003e|Account Selection| Pool[Account Pool]\n    Pool --\u003e|API Call| Copilot[GitHub Copilot API]\n    Copilot --\u003e|Response| Transform[Response Transform]\n    Transform --\u003e|OpenAI/Anthropic Format| Client\n```\n\n## Cara Install \u0026 Setup\n\n### Prerequisites\n\n- [Bun](https://bun.sh) \u003e= 1.2.x\n- Akun GitHub dengan akses Copilot (Individual, Business, atau Enterprise)\n\n### Install\n\n```bash\n# Clone repository\ngit clone https://github.com/el-pablos/copilot-api.git\ncd copilot-api\n\n# Install dependencies\nbun install\n```\n\n### Autentikasi\n\n```bash\n# Login ke GitHub (OAuth device flow)\nbun run auth\n```\n\n### Jalankan\n\n```bash\n# Development mode (hot reload)\nbun run dev\n\n# Production mode\nbun run start\n\n# Dengan custom port\nPORT=8080 bun run start\n```\n\nDashboard otomatis available di `http://localhost:4141`\n\n## Konfigurasi\n\n### Environment Variables\n\n| Variable         | Default | Deskripsi                               |\n| ---------------- | ------- | --------------------------------------- |\n| `PORT`           | `4141`  | Port server                             |\n| `DEBUG`          | `false` | Verbose logging                         |\n| `WEBUI_PASSWORD` | -       | Password untuk dashboard WebUI          |\n| `GH_TOKEN`       | -       | GitHub token (alternatif OAuth)         |\n| `HTTP_PROXY`     | -       | HTTP proxy (dengan flag `--proxy-env`)  |\n| `HTTPS_PROXY`    | -       | HTTPS proxy (dengan flag `--proxy-env`) |\n\n### Config File\n\nKonfigurasi disimpan di `~/.config/copilot-api/config.json`. Bisa diedit lewat dashboard WebUI atau langsung edit file JSON.\n\n## Dashboard WebUI\n\nDashboard mobile-first yang bisa diakses langsung dari browser:\n\n### Fitur Dashboard\n\n- **Overview** — Statistik real-time, chart usage by model, runtime pulse\n- **Model Catalog** — Browse semua model dengan filter vendor dan search\n- **Usage \u0026 Quotas** — Detail quota per akun (Chat, Completions, Premium)\n- **Account Pool** — Manajemen multi-account dengan OAuth flow\n- **Real-time Logs** — Live streaming log dengan filter level, search, export\n- **Settings** — Server config, Claude CLI integration, model mapping\n- **Request History** — Audit trail paginated dengan filter dan cost tracking\n- **API Playground** — Test endpoint langsung dengan preset templates\n\n### Mobile Features\n\n- 🎨 **Gruvbox Dark Theme** — Eye-friendly dark color scheme yang konsisten\n- 📱 Responsive sidebar dengan hamburger menu dan swipe-to-close gesture\n- 🔽 Bottom navigation bar dengan 5 quick access tabs\n- 📊 Card view responsive untuk data tables\n- 👆 Touch-friendly buttons (min 48px targets sesuai Material Design)\n- ⌨️ Keyboard navigation dengan visible focus indicators \u0026 focus trap\n- ♿ ARIA labels dan accessibility attributes komprehensif\n- 📐 Safe area support untuk notched devices (iPhone X+)\n- 🍞 Toast queue system dengan auto-dismiss dan swipe-to-dismiss\n- 💀 Skeleton loading screens untuk better perceived performance\n\n## API Endpoints\n\n### OpenAI Compatible\n\n| Method | Endpoint               | Deskripsi                              |\n| ------ | ---------------------- | -------------------------------------- |\n| POST   | `/v1/chat/completions` | Chat completions (streaming supported) |\n| POST   | `/v1/embeddings`       | Text embeddings                        |\n| GET    | `/v1/models`           | List available models                  |\n| POST   | `/v1/responses`        | Responses API                          |\n\n### Anthropic Compatible\n\n| Method | Endpoint       | Deskripsi                          |\n| ------ | -------------- | ---------------------------------- |\n| POST   | `/v1/messages` | Messages API (streaming supported) |\n\n### Utility\n\n| Method | Endpoint  | Deskripsi        |\n| ------ | --------- | ---------------- |\n| GET    | `/health` | Health check     |\n| GET    | `/usage`  | Usage statistics |\n| GET    | `/token`  | Token info       |\n\n## Commands\n\n```bash\nbun run dev              # Development mode dengan hot reload\nbun run start            # Production mode\nbun run build            # Build dengan tsdown\nbun run lint             # Lint dengan ESLint\nbun run typecheck        # TypeScript type checking\nbun test                 # Jalankan semua test\nbun run auth             # Autentikasi GitHub\nbun run check-usage      # Cek quota Copilot\nbun run debug            # Display debug info\n```\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/stars/el-pablos/copilot-api?style=social\" alt=\"Stars\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/forks/el-pablos/copilot-api?style=social\" alt=\"Forks\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/issues/el-pablos/copilot-api?style=flat-square\" alt=\"Issues\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/last-commit/el-pablos/copilot-api?style=flat-square\" alt=\"Last Commit\" /\u003e\n\u003c/p\u003e\n\n## Color Palette\n\nDashboard menggunakan **Gruvbox Dark** theme yang eye-friendly:\n\n| Color            | Hex       | Usage                         |\n| ---------------- | --------- | ----------------------------- |\n| 🟠 Orange Bright | `#fe8019` | Primary accent, active states |\n| 🟢 Green Bright  | `#b8bb26` | Success, online status        |\n| 🔵 Blue Bright   | `#83a598` | Links, info badges            |\n| 🟣 Purple Bright | `#d3869b` | Pool badges, secondary accent |\n| 🟡 Yellow Bright | `#fabd2f` | Warnings, highlights          |\n| 🔴 Red Bright    | `#fb4934` | Errors, destructive actions   |\n| 🔵 Aqua Bright   | `#8ec07c` | Charts, cached status         |\n| ⬛ Background    | `#1d2021` | Main background (hard)        |\n| ⬜ Foreground    | `#ebdbb2` | Primary text                  |\n\n## Kontribusi\n\nKontribusi terbuka! Silahkan buka issue atau pull request. Pastikan semua test passed sebelum submit PR.\n\n## Lisensi\n\n[MIT License](LICENSE) — Prasetyo Ari Wibowo\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprassaaa%2Fcopilot-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprassaaa%2Fcopilot-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprassaaa%2Fcopilot-api/lists"}