Chatio Chat is open source

The same chat interface that runs at chatio.dev/chat is now on GitHub: local-first, bring-your-own-keys, and self-hostable under Apache 2.0.

Alex Wang4 min read

Chatio started as a leaderboard for everyday assistants. Then we needed a place to actually talk to the models we score: side by side, with real tools, without handing a third party your keys or your chat history.

That interface lives at chatio.dev/chat. Today we are open-sourcing it.

The code is on GitHub as alextyhwang/chatio-chat, licensed under Apache 2.0.

What you get

Local-first by default. Conversations stay in your browser (IndexedDB). No account required. Nothing leaves your device unless you explicitly share a thread.

Bring your own keys. OpenAI, Anthropic, Google, xAI, DeepSeek, and 300+ models via OpenRouter. Keys stay in the browser; they are not stored on our servers.

Custom chat modes. Reusable system prompts, tool configs, and model presets so you can switch “jobs” without rebuilding settings every time.

Optional tools. Web search, computer use, and a few domain tools when you want them. Wire up only what you need.

Self-hostable. Deploy to Vercel, Railway, or any Node host. Basic usage needs zero environment variables. Sharing, image uploads, and server-side search are optional add-ons.

Why open source the chat?

The leaderboard answers “which model is good at being an assistant?” The chat answers “can I use that judgment in a real conversation?” Those only stay honest if the chat is inspectable, forkable, and runnable on your own machine.

We also got tired of chat UIs that feel like a funnel: sign up, sync everything to the cloud, hope the privacy policy holds. Chatio Chat is the opposite bet. Your keys, your history, your host if you want one.

Model listings and rankings still pull from chatio.dev by default, so a self-hosted copy can stay in sync with the board without you maintaining a model catalog.

Try it, fork it

If you self-host, break something interesting, or ship a mode other people should steal, open an issue or a PR. The point of releasing it is so the best version does not have to live only on our domain.