OpenCode plugin for seamless switching between multiple GitHub Copilot accounts in a single session.
- π Multi-account support - Use 2+ GitHub Copilot accounts simultaneously
- π― Per-model labeling - Models appear as
username:model-name - π Secure - OAuth tokens stored locally with 0600 permissions
- β‘ Non-blocking - Lazy loads, zero impact on OpenCode startup
- π Auto token refresh - 5-minute buffer before expiry
- π± Cross-platform - macOS, Linux, Windows
Claude: Opus/Sonnet/Haiku (all versions)
OpenAI: GPT-5, GPT-4o, o1, o3-mini
Google: Gemini 2.5 Pro, Gemini 3
15+ models total. New models auto-detected when you authenticate.
npm install -g opencode-copilot-multi
# Restart OpenCodenpx opencode-copilot-multi@latest addEdit ~/.config/opencode/opencode.json:
{
"plugin": ["opencode-copilot-multi"]
}-
Add account
opencode-copilot-multi add
- Launches OpenCode auth
- Select "GitHub Copilot"
- Complete OAuth
-
Restart OpenCode - models now appear
-
Select model - e.g.,
john:claude-sonnet-4 -
Add more accounts - Run
addagain
opencode-copilot-multi list # Show all accounts
opencode-copilot-multi add # Add GitHub Copilot account
opencode-copilot-multi remove <username> # Remove account
opencode-copilot-multi clear [--force] # Remove all accounts
opencode-copilot-multi install # Register plugin (auto-run)
opencode-copilot-multi --help # Show help- Node.js: β₯ 18.0.0
- OpenCode: Latest version
- GitHub Copilot: Active subscription
- Run:
opencode-copilot-multi list - If empty, run:
opencode-copilot-multi add - Restart OpenCode
- Check logs:
tail ~/.local/share/opencode/log/copilot-multi.log
Re-authenticate:
opencode-copilot-multi remove <username>
opencode-copilot-multi addopencode-copilot-multi install
# Restart OpenCode- ARCHITECTURE.md - System design, diagrams, patterns
- CONTRIBUTING.md - How to contribute
- SECURITY.md - Token security, vulnerability process
- CHANGELOG.md - Version history
When you select john:claude-sonnet-4:
- Parser extracts username + model
- Pool lookup finds account by username
- Token check refreshes if expiring
- API call routes to GitHub Copilot with account's token
- Response returned to OpenCode
See ARCHITECTURE.md for detailed flow diagrams.
- Storage:
~/.local/share/opencode/copilot-multi-accounts.json(0600) - Tokens: OAuth only, no passwords
- Refresh: Auto 5 minutes before expiry
- No telemetry: Offline by design
See SECURITY.md for complete details.
npm install
npm run build # Compile TypeScript
npm run watch # Watch & rebuild
npm link # Link globally for testingProject structure:
src/
βββ index.ts # Plugin entry
βββ provider.ts # Custom fetch handler
βββ storage/ # Account pool & auth
βββ discovery/ # Account detection
βββ config/ # Config management
βββ commands/ # CLI commands
βββ utils/ # Helpers
See CONTRIBUTING.md for development workflow.
MIT Β© 2025 Valerio Fantozzi
Contributions welcome! See CONTRIBUTING.md for:
- Code style guidelines
- Development setup
- PR process
- Areas for contribution
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Security: See SECURITY.md
Made with β€οΈ by Valerio Fantozzi