AI Board

macOSPythonFastAPILLMsdesktop app

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:

  1. Answers — the question goes to Claude, ChatGPT, Gemini, and Grok in parallel, so you see four independent takes at once.
  2. Cross-critique — each model reads the others’ answers and points out what they got wrong, missed, or oversold.
  3. 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.

Around that core:

  • Attach files. Drop in PDFs, text or Markdown files, and images. PDFs are converted to text, text files are prepended to the question, and images go to every model in its native vision format — so the board can argue about a chart or a contract, not just a prompt.
  • History. Every session is saved to disk and listed in a collapsible sidebar, grouped by date, so you can restore an old board discussion or delete one.
  • Copy and print. Copy any model’s answer or the consolidated answer as Markdown, or print the whole discussion with the chrome stripped out.
  • Keys managed in-app. A 🔑 button opens a panel where you paste your own API keys. They’re saved locally, take effect immediately without a restart, and the full key is never shown back to the UI.

How it’s built

  • Backend — FastAPI + uvicorn orchestrating the streaming rounds over Server-Sent Events.
  • 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. Model names are overridable with environment variables.
  • 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 .app with 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. Launch the app, click 🔑 API keys, and paste a key for each provider:

  • Anthropic (Claude) — console.anthropic.com
  • OpenAI (ChatGPT) — platform.openai.com/api-keys
  • Google (Gemini) — aistudio.google.com/app/apikey
  • xAI (Grok) — console.x.ai

They’re written to ~/.ai-board/.env on your Mac (you can also create that file by hand), and are never sent anywhere except directly to each model’s API. You only pay your own provider usage.

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.