AI Board
AI Board is a native macOS app I built to stop second-guessing which model to ask. Instead of pasting the same question into four different chat windows, I ask it once and let a “board” of models deliberate.
What it does
You type a question and it runs a three-round pipeline:
- Answers — the question goes to Claude, ChatGPT, Gemini, and Grok in parallel, so you see four independent takes at once.
- Cross-critique — each model reads the others’ answers and points out what they got wrong, missed, or oversold.
- Consolidation — a final pass synthesises everything into a single, sharper answer that reflects where the models agreed and where they didn’t.
Everything streams live, so you watch the board think rather than waiting for a final block of text.
How it’s built
- Backend — FastAPI + uvicorn orchestrating the streaming rounds.
- Model clients — thin wrappers over the Anthropic, OpenAI, Google GenAI, and xAI (Grok) SDKs behind a shared interface, so swapping or adding a model is a one-line change.
- Frontend — a single-page HTML/JS UI (Tailwind + marked.js) rendering the live, multi-column stream.
- Desktop shell — a Python entry point launches the server in a background thread and opens it in a native macOS WKWebView window via pywebview. Packaged into a standalone
.appwith PyInstaller.
Get it & set up
The code is on GitHub — use the Source link above. It ships with my code, not my credentials — you bring your own API keys.
1. Build the app.
git clone https://github.com/stephenhefekta/ai-board.git
cd ai-board
bash build.sh # produces dist/AI Board.app
Drag AI Board.app to your Applications folder. It isn’t notarised by Apple, so on first launch right-click it → Open → Open.
2. Add your own keys. Create a file at ~/.ai-board/.env with a key for each provider:
ANTHROPIC_API_KEY=your-claude-key # console.anthropic.com
OPENAI_API_KEY=your-openai-key # platform.openai.com/api-keys
GOOGLE_API_KEY=your-gemini-key # aistudio.google.com/app/apikey
XAI_API_KEY=your-grok-key # console.x.ai
You only pay your own provider usage. The keys stay on your machine and are never sent anywhere except directly to each model’s API.
Why I made it
Different models have different blind spots. Seeing them disagree — and forcing them to defend their answers against each other — surfaces a more honest result than trusting any single one. It’s become my default for anything where being wrong is expensive.