CLI · TUI · MIT licensed

Ship analytics dashboards
without leaving the terminal.

OpenBoard turns a single CSV or JSON file into one authenticated React analytics app — then builds it, pushes it to GitHub, and deploys it to Vercel. Every new dataset becomes another tab in the same app, not a new project.

$ npm install -g openboard-cli
Read the quickstart
The OpenBoard terminal UI: a boxed banner reading 'O p e n B o a r d — Analytics Dashboard Generator — v1.0.0', above a menu with LLM Setup, Dashboards, Settings, and Exit, and a hint to use arrow keys to navigate.
The welcome screen — node dist/index.js

# the loop

  1. 01configure

    Pick an LLM provider and add your GitHub + Vercel tokens once. Everything is stored encrypted in ~/.openboard.

  2. 02point at data

    Hand it a CSV or JSON path. OpenBoard parses it, infers types, and summarizes the columns.

  3. 03describe the board

    An internal chat drives the model. Ask for the metrics, charts, and tables you actually want.

  4. 04deploy

    Build, commit, push, and ship to Vercel — one step, with a live progress bar. Each deploy is tagged for rollback and health-checked before OpenBoard calls it done.

# what's in the box

Bring your own model

OpenAI, Anthropic, OpenAI Codex, Moonshot, or a local Ollama host. API keys are encrypted with AES-256-GCM and never reach the browser bundle.

One app, many tabs

The first dataset scaffolds a shared authenticated React app. Each later dataset is added as a tab — same shell, same login, same deploy target.

Server-side auth by default

Login runs through a real /api/auth endpoint backed by an httpOnly cookie. No credentials and no auth decisions are shipped to the client.

Headless & scriptable

The same pipeline runs non-interactively from an agent — NDJSON progress events, stable error codes, dry runs, idempotency keys. Flip to the view for the command contract.

Prompt history

Every change is recorded per dashboard, so openboard update can regenerate from fresh data without you re-describing intent.

Deploys itself

Build → GitHub push → Vercel deploy is part of the flow. If CLI auth is missing, it falls back to Vercel's Git integration on the pushed commit.

Self-healing builds

When generated code fails to build, the error is fed back to the model for an automatic repair pass — most broken generations fix themselves before you ever see them.

Verified, reversible deploys

After every deploy the live URL is health-checked (app shell + auth API), and each deploy is git-tagged — openboard rollback restores the previous one in a single command.

Resumable runs

Every run persists its state under ~/.openboard/runs. If a deploy dies after generation, agent resume picks up at the build step — no second LLM bill.

# quickstart

Node 18+.

# install from npm
npm install -g openboard-cli

# launch the interactive TUI
openboard

# …or run it headless
openboard agent create --data ./rides.csv --name "Rides"
openboard agent update --dashboard rides --prompt "add a weekday vs weekend chart"

# from source instead
git clone https://github.com/syedateebulislam/openboard
cd openboard && npm install && npm run build

Built with TypeScript, Ink, and a pluggable LLM layer. Generated apps use React, Vite, Recharts, and Tailwind.