https://github.com/polyphon-ai/polyphon
Open source Electron desktop app for orchestrating conversations between multiple AI agents simultaneously. One chat. Many minds.
https://github.com/polyphon-ai/polyphon
ai chat claude desktop electron gemini llm local-first multi-agent open-source openai typescript
Last synced: 3 months ago
JSON representation
Open source Electron desktop app for orchestrating conversations between multiple AI agents simultaneously. One chat. Many minds.
- Host: GitHub
- URL: https://github.com/polyphon-ai/polyphon
- Owner: polyphon-ai
- License: other
- Created: 2026-03-11T18:29:45.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-03-25T20:50:44.000Z (3 months ago)
- Last Synced: 2026-03-26T08:42:19.509Z (3 months ago)
- Topics: ai, chat, claude, desktop, electron, gemini, llm, local-first, multi-agent, open-source, openai, typescript
- Language: TypeScript
- Homepage: https://polyphon.ai
- Size: 26.5 MB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# Polyphon
**One chat. Many voices.**
[](https://github.com/polyphon-ai/polyphon/actions/workflows/ci.yml) [](https://github.com/polyphon-ai/polyphon/releases/latest) [](LICENSE) [](https://x.com/intent/follow?screen_name=PolyphonAI)

Polyphon is an Electron desktop application for orchestrating conversations between multiple AI agents simultaneously. Agents can respond to the user and to each other — like a conductor leading an ensemble.
---
## Features
- **Multi-agent sessions** — add any number of voices to a conversation and watch them reason together
- **Compositions** — save and reuse named multi-voice configurations across sessions
- **Mixed providers** — combine API-key voices (Anthropic, OpenAI, Gemini), CLI voices (`claude`, `codex`), and custom OpenAI-compatible endpoints (Ollama, LM Studio, vLLM) in the same session
- **Tones** — per-voice tone overrides (professional, collaborative, concise, exploratory, teaching) or custom tones
- **Conductor profile** — set your name, pronouns, and context so voices address you correctly
- **@mention routing** — direct a message to a specific voice or broadcast to all
- **Local-first** — no cloud dependency required; your data stays on your machine
- **No telemetry** — never phones home without explicit opt-in
---
## Voice Providers
| Provider | Type | Requires |
|---|---|---|
| Anthropic (Claude) | API | `ANTHROPIC_API_KEY` |
| OpenAI | API | `OPENAI_API_KEY` |
| Google Gemini | API | `GEMINI_API_KEY` |
| Claude Code (`claude`) | CLI | `claude` CLI installed |
| Codex (`codex`) | CLI | `codex` CLI installed |
| Custom (Ollama, LM Studio, vLLM, …) | OpenAI-compatible | Endpoint URL |
API keys are read from your shell environment — set them in `.zshrc` / `.bash_profile` and they are available even when launching from the Dock.
---
## Installation
### Download
Pre-built installers for **macOS (Apple Silicon)** are available on the [Releases](https://github.com/polyphon-ai/polyphon/releases) page.
### Build from source
**Prerequisites:** Node.js 22+, npm
```sh
git clone https://github.com/polyphon-ai/polyphon.git
cd polyphon
make install
make run
```
---
## Development
```sh
make install # install dependencies + git hooks
make run # start in development mode (hot reload)
make build # package the Electron app
make dist # create distributable installers
```
### Testing
```sh
make test # unit + integration + e2e
make test-unit # Vitest unit tests only
make test-integration # Vitest integration tests only
make test-e2e # Playwright e2e with mocked voices (CI-safe, no credentials needed)
make test-e2e-live # e2e against real providers (opt-in, never CI)
make test-openai-compatible-live # e2e against real openai compatible providers (ollama)
make test-watch # Vitest in watch mode
```
### Lint
```sh
make lint # TypeScript type-check (no emit)
```
### Developer tools
Chrome DevTools are closed by default in `make run`. To open them at launch:
```sh
POLYPHON_DEVTOOLS=1 make run
```
---
## Community
- **Website:** [polyphon.ai](https://polyphon.ai)
- **X / Twitter:** [@PolyphonAI](https://x.com/intent/follow?screen_name=PolyphonAI)
- **GitHub Org:** [github.com/polyphon-ai](https://github.com/polyphon-ai)
- **GitHub:** [polyphon-ai/polyphon](https://github.com/polyphon-ai/polyphon)
- **Reddit:** [u/PolyphonAI](https://www.reddit.com/user/PolyphonAI)
- **Email:** [hello@polyphon.ai](mailto:hello@polyphon.ai)
---
## Contributing
Issues and bug reports are welcome. This project is not currently accepting pull requests.
---
## License
[Apache 2.0](LICENSE) © 2026 Corey Daley
---
## Tech Stack
| Layer | Technology |
|---|---|
| Shell | Electron 41 |
| UI | React 19 + TypeScript + Tailwind CSS v4 |
| State | Zustand 5 |
| Database | `better-sqlite3` v12 + SQLCipher 4.14.0 (AES-256 whole-database encryption) |
| Build | Electron Forge + Vite 7 |
| Testing | Vitest 4 + Playwright |
---