Files
boardroom-map/README.md
T

79 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Boardroom Map — a private document-review panel for your DGX Sparks
Boardroom Map is a StartOS service (`.s9pk`) that lets you **drop confidential
documents in and have a panel of local LLMs review them** on your NVIDIA DGX
Sparks. You pick the models and the personas (lenses), and how many reviews to
run; each reviewer writes a report, and an optional **local lead reviewer**
synthesizes them into one consolidated report. There is **no frontier model and
no cloud API key** — in the default air-gapped mode the documents and reviews
never leave your hardware.
It is a sibling of [Nightshift](../nightshift) and reuses the same control-plane
pattern (a GPU-free orchestrator on StartOS driving the Sparks over SSH), but
with the swarm, the git blackboard, and the Claude overseer removed and replaced
by an on-demand **document-review pipeline**.
## Architecture
```
StartOS box (control plane, no GPU) DGX Spark(s)
┌────────────────────────────────────┐ ┌───────────────────────────────┐
│ FastAPI web UI + job runner │ SSH │ per-job Docker network │
│ • inbox (drop documents) │ ───────▶│ (──internal in airgapped) │
│ • extract text (PDF/DOCX/TXT/MD) │ rsync │ ┌─────────┐ ┌────────────┐ │
│ • plan model "waves" │ ───────▶│ │ vLLM(s) │◀─│ LiteLLM │ │
│ • launch reviewer containers │ │ └─────────┘ │ router │ │
│ • pull reports, synthesize, wipe │◀─────── │ ┌──────────────┐ ▲ │ │
│ • reports saved here only │ rsync │ │ reviewer ×N │──┘ │ │
└────────────────────────────────────┘ │ │ (read-only, │ │ │
│ │ sandboxed) │ │ │
│ └──────────────┘ │ │
└───────────────────────────────┘
```
- **Reviewers** are one-shot, read-only, hardened containers (non-root,
`--cap-drop ALL`, read-only rootfs, no docker socket). In air-gapped mode they
sit on an `--internal` network and can reach only the model proxy.
- **Waves:** the job runner serves models in waves bounded by
`maxConcurrentModels`, so a panel can span more models than fit in GPU memory
at once.
- **Confidentiality:** documents are extracted to text on the StartOS box; only
text crosses to the Sparks, and it is wiped from the Sparks after the job.
## Repo layout
```
startos/ StartOS package definition (TypeScript / start-sdk)
manifest/ main.ts interfaces.ts versions/ file-models/ actions/
orchestrator/ The control-plane app (Python)
app.py FastAPI UI + JSON API
jobs.py the job runner (extract → serve waves → review → synthesize)
serving.py vLLM + LiteLLM router on the Sparks, in waves
reviewers.py launch the reviewer panel
synthesis.py the local lead reviewer
extraction.py PDF/DOCX/TXT/MD → text (on the StartOS box)
preflight.py probe models before launching reviewers
spark_client.py SSH/rsync helpers
bm_config.py config defaults (mirrors startos/file-models/config.ts)
sandbox/ reviewer image (built ON the Spark, not packed in the s9pk)
grader_agent.py reviewer.Dockerfile build.sh
openclaw/ what each Spark needs provisioned (OpenClaw's job)
```
## Build
Same path as Nightshift — GitHub CI (`.github/workflows/build.yml`) or a local
build with `start-cli` (see the s9pk-build-on-mac recipe). The vLLM and reviewer
images are built **on the Sparks**, not packed into the `.s9pk`.
```
npm ci && npm run check && npm run build # type-check + bundle
make # pack the .s9pk (needs start-cli)
```
## Status
v0.1 — source complete, `tsc`-clean and Python-syntax-clean. Not yet validated
against live Sparks. See `openclaw/OPENCLAW_SPEC.md` for the Spark-side
provisioning (HF model pre-pull is required for air-gapped runs).