privateboard 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +120 -0
- package/dist/cli.js +10502 -0
- package/dist/cli.js.map +1 -0
- package/package.json +63 -0
- package/public/adjourn-overlay.css +253 -0
- package/public/agent-overlay.css +444 -0
- package/public/agent-overlay.js +604 -0
- package/public/agent-profile.css +3230 -0
- package/public/agent-profile.js +3329 -0
- package/public/app.js +6629 -0
- package/public/auto-hide-scroll.js +90 -0
- package/public/avatar-skill.js +793 -0
- package/public/avatars/chair.svg +98 -0
- package/public/avatars/first-principles.svg +122 -0
- package/public/avatars/long-horizon.svg +147 -0
- package/public/avatars/open_ai.png +0 -0
- package/public/avatars/phenomenologist.svg +130 -0
- package/public/avatars/socrates.svg +187 -0
- package/public/avatars/user-empathy.svg +117 -0
- package/public/avatars/value-investor.svg +117 -0
- package/public/favicon.svg +10 -0
- package/public/fonts/agent-Italic.woff2 +0 -0
- package/public/fonts/human-sans.woff2 +0 -0
- package/public/icons.css +103 -0
- package/public/models-cache.js +57 -0
- package/public/new-agent.css +1359 -0
- package/public/new-agent.js +675 -0
- package/public/onboarding.css +628 -0
- package/public/onboarding.js +782 -0
- package/public/prototype-dashboard.html +7596 -0
- package/public/report/spines/a16z-thesis.css +1055 -0
- package/public/report/spines/anthropic-essay.css +556 -0
- package/public/report/spines/boardroom-dark.css +1082 -0
- package/public/report/spines/gartner-note.css +538 -0
- package/public/report/spines/mckinsey-deck.css +523 -0
- package/public/report/spines/openai-paper.css +516 -0
- package/public/report.html +1417 -0
- package/public/room-settings.css +895 -0
- package/public/room-settings.js +1039 -0
- package/public/themes.css +338 -0
- package/public/user-settings.css +1236 -0
- package/public/user-settings.js +1291 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 kaysaith1900
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# PrivateBoard
|
|
2
|
+
|
|
3
|
+
> Your private board meeting, on call.
|
|
4
|
+
> A local-first, multi-agent thinking amplifier — convene a panel of directors with distinct lenses, drop a real question on the table, and let them argue. You walk away with a brief.
|
|
5
|
+
|
|
6
|
+
Not a chatbot. Not an assistant. A board.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## What it is
|
|
11
|
+
|
|
12
|
+
PrivateBoard runs entirely on your machine and routes to the model providers you bring keys for. You pick a few directors with sharp, opinionated lenses — Socrates, First Principles, Value Investor, User-Empathy, Long Horizon, Phenomenologist — convene a room, and they take turns pushing back on the question you actually care about. When you adjourn, a chair files a brief.
|
|
13
|
+
|
|
14
|
+
- **Local-first.** All state lives in `~/.boardroom/` (SQLite). Nothing leaves your machine without your provider call.
|
|
15
|
+
- **BYO keys.** OpenRouter (one key, all models) or direct keys for Anthropic / OpenAI / Google / xAI. Provider keys are stored on disk and never sent to PrivateBoard's authors.
|
|
16
|
+
- **Multi-agent.** A chair orchestrates the room: chooses speakers, manages the queue, intervenes when the discussion drifts, and writes the brief.
|
|
17
|
+
- **Streaming.** Director turns stream token-by-token over SSE.
|
|
18
|
+
- **Memory.** Each director carries an "About You" line and per-room lessons that compound across sessions.
|
|
19
|
+
|
|
20
|
+
## Quick start
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# 1. Make sure you have Node 20+
|
|
24
|
+
node --version
|
|
25
|
+
|
|
26
|
+
# 2. Run it (no install needed)
|
|
27
|
+
npx privateboard@latest
|
|
28
|
+
|
|
29
|
+
# → boots a local server on http://127.0.0.1:3030 and opens your browser
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
First-run onboarding asks you to:
|
|
33
|
+
1. Pick a name.
|
|
34
|
+
2. Pick a theme.
|
|
35
|
+
3. Paste an API key for one provider — OpenRouter is the lowest-friction starting point.
|
|
36
|
+
4. Pick a starter question (or convene your own).
|
|
37
|
+
|
|
38
|
+
That's it. The directors take it from there.
|
|
39
|
+
|
|
40
|
+
## Bring your own key
|
|
41
|
+
|
|
42
|
+
PrivateBoard supports four LLM carriers. You only need one to get started; add more later from User Settings.
|
|
43
|
+
|
|
44
|
+
| Provider | What you get | Where to get a key |
|
|
45
|
+
|---|---|---|
|
|
46
|
+
| **OpenRouter** | Universal router · access every supported model with one key | [openrouter.ai/keys](https://openrouter.ai/keys) |
|
|
47
|
+
| **OpenAI** | Direct route to GPT models | [platform.openai.com](https://platform.openai.com/api-keys) |
|
|
48
|
+
| **Google** | Direct route to Gemini (defaults to Gemini Flash) | [aistudio.google.com](https://aistudio.google.com/apikey) |
|
|
49
|
+
| **Anthropic** | Direct route to Claude (Sonnet today; more after registry expands) | [console.anthropic.com](https://console.anthropic.com/) |
|
|
50
|
+
|
|
51
|
+
Keys are stored locally in your `~/.boardroom/` SQLite database. PrivateBoard never proxies through a remote service.
|
|
52
|
+
|
|
53
|
+
## How a room works
|
|
54
|
+
|
|
55
|
+
1. **Convene** — pick a subject and a cast of directors (or let the chair auto-pick).
|
|
56
|
+
2. **Speaking queue** — the chair seats directors, opens the floor, and routes turns. Directors interrupt, agree, push back.
|
|
57
|
+
3. **Pause / resume / steer** — drop a follow-up at any time; the queue absorbs it.
|
|
58
|
+
4. **Adjourn** — the chair writes a brief: claims that held up, claims that fell, decisions, open questions.
|
|
59
|
+
5. **Brief library** — every adjourned room files a brief; All Reports surfaces them across rooms.
|
|
60
|
+
|
|
61
|
+
## Data & privacy
|
|
62
|
+
|
|
63
|
+
- **State directory:** `~/.boardroom/` (SQLite + brief markdown + logs).
|
|
64
|
+
- **No telemetry.** PrivateBoard does not phone home.
|
|
65
|
+
- **Provider calls are direct.** Your model traffic goes from your machine straight to the provider you configured a key for.
|
|
66
|
+
- **Wipe everything:** delete `~/.boardroom/`. Done.
|
|
67
|
+
|
|
68
|
+
## Development
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
git clone https://github.com/kaysaith1900/privateboard.git
|
|
72
|
+
cd privateboard
|
|
73
|
+
npm install
|
|
74
|
+
|
|
75
|
+
# watch-mode build + auto-restart
|
|
76
|
+
npm run dev
|
|
77
|
+
|
|
78
|
+
# one-shot build + run
|
|
79
|
+
npm run build
|
|
80
|
+
node dist/cli.js
|
|
81
|
+
|
|
82
|
+
# tests
|
|
83
|
+
npm test
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Stack:
|
|
87
|
+
|
|
88
|
+
- **Runtime:** Node 20+
|
|
89
|
+
- **Server:** Hono (`@hono/node-server`)
|
|
90
|
+
- **Storage:** `better-sqlite3` with hand-rolled migrations
|
|
91
|
+
- **LLM:** Vercel AI SDK adapters for Anthropic, OpenAI, Google, xAI, plus an OpenAI-compatible adapter for OpenRouter
|
|
92
|
+
- **Frontend:** vanilla HTML / CSS / JS shipped from `public/`
|
|
93
|
+
- **Bundling:** `tsup`
|
|
94
|
+
- **Tests:** Vitest
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
src/
|
|
98
|
+
├── cli.ts CLI entrypoint
|
|
99
|
+
├── server.ts Hono app · static + JSON + SSE
|
|
100
|
+
├── routes/ /api/agents · rooms · briefs · keys · models · prefs · usage · avatar
|
|
101
|
+
├── orchestrator/ chair · room · stream · brief · memory · pickers
|
|
102
|
+
├── ai/ model registry · provider adapters · skills
|
|
103
|
+
├── storage/ SQLite + migrations + reconcile
|
|
104
|
+
└── seed/ default directors + chair
|
|
105
|
+
public/ frontend (served as-is)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## CLI
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
privateboard [options]
|
|
112
|
+
-p, --port <n> port to listen on (default: auto-detect from 3030)
|
|
113
|
+
--host <h> host to bind (default: 127.0.0.1)
|
|
114
|
+
--no-open skip auto-opening the browser
|
|
115
|
+
-V, --version print version
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## License
|
|
119
|
+
|
|
120
|
+
MIT
|