You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Paste your own provider key and use Quorum with no sign-in - the key travels in the POST body and short-circuits before any auth import, DB read, or 402. Keyless requests still return 402 no_key on chat, consensus, and OCR. NEXT_PUBLIC_AUTH_ENABLED gates the sign-in UI and the server-side session lookup, so a zero-backend clone runs as pure BYOK. Keys live only in the browser, never stored or logged server-side. README rewritten BYOK-first.
Copy file name to clipboardExpand all lines: README.md
+41-31Lines changed: 41 additions & 31 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -83,36 +83,38 @@ Switch instantly from the header or settings.
83
83
84
84
## Quick Start
85
85
86
+
Quorum is **BYOK-first (bring your own key)**: paste your own provider API keys and go. No account, no database, no sign-in. Keys are stored only in your browser.
Create a `.env.local` file from [`.env.example`](./.env.example):
95
+
Open [localhost:3000](http://localhost:3000), open **Settings**, and paste an API key for any provider you want on the panel. That is the whole setup.
93
96
94
-
```bash
95
-
cp .env.example .env.local
96
-
```
97
+
> The consensus verdict and document OCR always run on **Gemini**, so add a Gemini key even if your panel is Claude/GPT/Perplexity only.
97
98
98
-
```powershell
99
-
Copy-Item .env.example .env.local
100
-
```
99
+
Set `REQUIRE_USER_API_KEYS=true` (recommended for any BYOK or public deploy) so a keyless request returns a clear "add your key" prompt instead of a generic provider error. Anonymous BYOK gives you an in-session thread; sign in (below) to save history across visits.
101
100
102
-
Fill in your credentials (see `.env.example` for all placeholders). Quorum is BYOK-first: you can run it with server-side provider keys in `.env.local`, and signed-in users can save their own encrypted provider keys from Settings.
101
+
---
103
102
104
-
```env
105
-
# Gemini option A: Google AI Studio API key
106
-
GEMINI_API_KEY=your_gemini_api_key
103
+
## Self-Hosting with Accounts (optional)
107
104
108
-
# Gemini option B: Vertex AI with Application Default Credentials
109
-
VERTEX_PROJECT_ID=your_google_cloud_project_id
110
-
VERTEX_LOCATION=us-central1
105
+
Sign-in is an optional upgrade: saved, encrypted provider keys and thread history synced to a database. Skip this entire section for pure BYOK.
111
106
112
-
# Model Providers
113
-
PERPLEXITY_API_KEY=your_perplexity_api_key
114
-
ANTHROPIC_API_KEY=your_anthropic_api_key
115
-
OPENAI_API_KEY=your_openai_api_key
107
+
Create a `.env.local` from [`.env.example`](./.env.example):
# Optional server-side provider keys (used only when REQUIRE_USER_API_KEYS is false)
131
+
GEMINI_API_KEY=your_gemini_api_key
132
+
PERPLEXITY_API_KEY=your_perplexity_api_key
133
+
ANTHROPIC_API_KEY=your_anthropic_api_key
134
+
OPENAI_API_KEY=your_openai_api_key
127
135
```
128
136
129
137
> **Important:** Prefer `.env.local` for local secrets. It takes precedence over `.env` and is gitignored by default.
130
138
131
-
Gemini supports two server-side auth paths:
132
-
133
-
- Google AI Studio/API key: set `GEMINI_API_KEY`.
134
-
- Vertex AI ADC: leave `GEMINI_API_KEY` empty, set `VERTEX_PROJECT_ID` and `VERTEX_LOCATION`, then authenticate locally:
135
-
136
-
```bash
137
-
gcloud auth application-default login
138
-
```
139
-
140
-
For local Google login, create a Google OAuth client and add this authorized redirect URI:
139
+
For Google login, create a Google OAuth client and add this authorized redirect URI:
141
140
142
141
```text
143
142
http://localhost:3000/api/auth/callback/google
144
143
```
145
144
146
-
Then initialize the database and run the app:
145
+
Gemini has two server-side auth paths (only relevant when serving your own keys):
146
+
147
+
- Google AI Studio API key: set `GEMINI_API_KEY`.
148
+
- Vertex AI ADC: leave `GEMINI_API_KEY` empty, set `VERTEX_PROJECT_ID` and `VERTEX_LOCATION`, then `gcloud auth application-default login`.
149
+
150
+
Then migrate the database and run:
147
151
148
152
```bash
149
153
npx prisma migrate dev
150
154
npm run dev
151
155
```
152
156
153
-
Open [localhost:3000](http://localhost:3000) and start debating.
157
+
---
158
+
159
+
## Privacy & Security
160
+
161
+
- Your keys live only in your browser's `localStorage` and are sent to the server solely to call the model you picked. They are never persisted or logged server-side.
162
+
- Signed-in users' saved keys are encrypted at rest, scoped per account, and never travel back to the client.
163
+
- Browser BYOK is inherently exposed to XSS: any script running on the page can read `localStorage`. Use your own revocable keys, and self-hosters should serve a strict Content-Security-Policy.
0 commit comments