saros-proxy 0.1.0 → 0.3.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/README.md +147 -197
- package/dist/proxy.d.ts +10 -0
- package/dist/proxy.js +38 -1
- package/dist/proxy.js.map +1 -1
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
Saros — like the eclipse cycle, this proxy predicts exhaustion and rotates accounts before they run out. Built for the OpenCode-Go API.
|
|
9
9
|
|
|
10
|
-
Manage multiple OpenCode-Go API keys behind a single endpoint. When one key
|
|
10
|
+
Manage multiple OpenCode-Go API keys behind a single endpoint. When one key gets rate-limited, revoked, or returns server errors, the proxy automatically fails over to the next healthy key — zero downtime.
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
@@ -16,14 +16,16 @@ Manage multiple OpenCode-Go API keys behind a single endpoint. When one key is r
|
|
|
16
16
|
- [Features](#features)
|
|
17
17
|
- [Architecture](#architecture)
|
|
18
18
|
- [Installation](#installation)
|
|
19
|
-
- [
|
|
20
|
-
- [Quick
|
|
19
|
+
- [Prompt Install](#prompt-installfor-the-lazy-ones)
|
|
20
|
+
- [Quick Install (npm)](#quick-install-npm)
|
|
21
|
+
- [From Source](#from-source)
|
|
22
|
+
- [Docker](#docker)
|
|
23
|
+
- [Setup Wizard](#setup-wizard)
|
|
21
24
|
- [Configuration Reference](#configuration-reference)
|
|
22
25
|
- [Usage Examples](#usage-examples)
|
|
23
26
|
- [OpenCode Integration](#opencode-integration)
|
|
24
27
|
- [Troubleshooting](#troubleshooting)
|
|
25
28
|
- [Development](#development)
|
|
26
|
-
- [LLM Quick Reference](#llm-quick-reference)
|
|
27
29
|
- [Security](#security)
|
|
28
30
|
- [License](#license)
|
|
29
31
|
|
|
@@ -31,15 +33,15 @@ Manage multiple OpenCode-Go API keys behind a single endpoint. When one key is r
|
|
|
31
33
|
|
|
32
34
|
## Features
|
|
33
35
|
|
|
34
|
-
- **Multi-key rotation** — Round-robin
|
|
35
|
-
- **
|
|
36
|
-
- **Circuit breaker** — Disable
|
|
37
|
-
- **Streaming support** — SSE
|
|
38
|
-
- **Request timeout** — Configurable timeout with
|
|
39
|
-
- **Graceful shutdown** — Drains active requests before exiting.
|
|
36
|
+
- **Multi-key rotation** — Round-robin across all your API keys.
|
|
37
|
+
- **Auto failover** — Retry failed requests with the next healthy key.
|
|
38
|
+
- **Circuit breaker** — Disable flaky keys after a configurable threshold, then lazily re-enable them after cooldown.
|
|
39
|
+
- **Streaming support** — SSE passthrough with mid-stream error detection.
|
|
40
|
+
- **Request timeout** — Configurable timeout with a clean 504 response.
|
|
41
|
+
- **Graceful shutdown** — Drains active requests before exiting (no dropped connections).
|
|
40
42
|
- **Security hardening** — API key masking in logs, SSRF prevention (HTTPS-only upstream), configurable CORS, host binding validation.
|
|
41
|
-
- **Config validation** — CLI args, YAML file,
|
|
42
|
-
- **Health endpoint** — `GET /health`
|
|
43
|
+
- **Config validation** — CLI args, YAML file, or environment variables with sensible defaults.
|
|
44
|
+
- **Health endpoint** — `GET /health` shows key status, active requests, and circuit-breaker state.
|
|
43
45
|
- **No database** — Stateless proxy, zero external dependencies beyond Node.js.
|
|
44
46
|
|
|
45
47
|
---
|
|
@@ -47,48 +49,49 @@ Manage multiple OpenCode-Go API keys behind a single endpoint. When one key is r
|
|
|
47
49
|
## Architecture
|
|
48
50
|
|
|
49
51
|
```
|
|
50
|
-
|
|
51
|
-
│
|
|
52
|
-
│
|
|
53
|
-
│
|
|
54
|
-
│
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
│
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
│
|
|
63
|
-
│
|
|
64
|
-
│
|
|
65
|
-
│
|
|
66
|
-
│
|
|
67
|
-
│
|
|
68
|
-
│ │
|
|
69
|
-
│
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
52
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
53
|
+
│ Your App / OpenCode │
|
|
54
|
+
│ │
|
|
55
|
+
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
56
|
+
│ │ Request 1│ │ Request 2│ │ Request 3│ ... │
|
|
57
|
+
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
|
|
58
|
+
└────────┼──────────────┼──────────────┼──────────────────────┘
|
|
59
|
+
│ │ │
|
|
60
|
+
└──────────────┼──────────────┘
|
|
61
|
+
│
|
|
62
|
+
▼
|
|
63
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
64
|
+
│ Saros (:3000) │
|
|
65
|
+
│ │
|
|
66
|
+
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
|
67
|
+
│ │ Key Selector │─▶│ Circuit │─▶│ Request │ │
|
|
68
|
+
│ │ Round-Robin │ │ Breaker │ │ Forwarder │ │
|
|
69
|
+
│ │ + Failover │ │ Threshold + │ │ + Timeout + │ │
|
|
70
|
+
│ │ │ │ Cooldown │ │ SSE │ │
|
|
71
|
+
│ └──────────────┘ └──────────────┘ └──────┬───────┘ │
|
|
72
|
+
└─────────────────────────────────────────────┼───────────────┘
|
|
73
|
+
│
|
|
74
|
+
┌───────────┼───────────┐
|
|
75
|
+
▼ ▼ ▼
|
|
76
|
+
┌──────────┐ ┌──────────┐ ┌──────────┐
|
|
77
|
+
│ Key A │ │ Key B │ │ Key C │
|
|
78
|
+
│ sk-abc… │ │ sk-def… │ │ sk-ghi… │
|
|
79
|
+
└────┬─────┘ └────┬─────┘ └────┬─────┘
|
|
80
|
+
│ │ │
|
|
81
|
+
└────────────┼────────────┘
|
|
82
|
+
▼
|
|
83
|
+
┌──────────────────────────┐
|
|
84
|
+
│ OpenCode-Go API │
|
|
85
|
+
│ https://opencode.ai │
|
|
86
|
+
└──────────────────────────┘
|
|
85
87
|
```
|
|
86
88
|
|
|
87
89
|
### How Request Distribution Works
|
|
88
90
|
|
|
89
|
-
|
|
91
|
+
Here's how Saros picks which API key to use — it runs on two levels:
|
|
92
|
+
|
|
93
|
+
#### Layer 1: Round-Robin (always on)
|
|
90
94
|
|
|
91
|
-
#### Layer 1: Round-Robin (always active)
|
|
92
95
|
Every new request cycles to the next key in order:
|
|
93
96
|
|
|
94
97
|
```
|
|
@@ -98,35 +101,50 @@ Request 3 → Key C
|
|
|
98
101
|
Request 4 → Key A (wraps around)
|
|
99
102
|
```
|
|
100
103
|
|
|
101
|
-
|
|
104
|
+
Even distribution by default. Got 2 accounts? Odd requests go to account 1, even to account 2. Simple.
|
|
102
105
|
|
|
103
106
|
#### Layer 2: Usage-Based Gating (optional)
|
|
104
|
-
If you enable [dashboard scraping](#usage-based-key-selection), the proxy checks each account's quota usage before selecting a key:
|
|
105
107
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
-
|
|
108
|
+
If you enable dashboard scraping, Saros checks each account's quota before picking a key:
|
|
109
|
+
|
|
110
|
+
- Usage **≥ threshold** (default 70%) → that key gets skipped
|
|
111
|
+
- **All** keys over threshold → falls back to the lowest-usage key
|
|
112
|
+
- No usage data available → pure round-robin, no change
|
|
109
113
|
|
|
110
114
|
| Scenario | Behavior |
|
|
111
115
|
|---|---|
|
|
112
|
-
| Scraping
|
|
113
|
-
| Scraping
|
|
114
|
-
| Scraping
|
|
116
|
+
| Scraping off | Pure round-robin across all keys |
|
|
117
|
+
| Scraping on + data available | Round-robin, skipping over-quota accounts |
|
|
118
|
+
| Scraping on + no data | Falls back to pure round-robin |
|
|
115
119
|
|
|
116
120
|
#### Concurrent Request Safety
|
|
117
|
-
|
|
121
|
+
|
|
122
|
+
Saros tracks which keys are currently in use. A key handling a streaming request won't get assigned another one until it finishes. No double-booking.
|
|
118
123
|
|
|
119
124
|
---
|
|
120
125
|
|
|
121
126
|
## Installation
|
|
122
127
|
|
|
123
|
-
###
|
|
128
|
+
### Prompt Install(for the lazy ones)
|
|
129
|
+
|
|
130
|
+
Don't feel like reading through everything? Copy this prompt and paste it to your AI assistant. It'll read [`LLM_INSTRUCTIONS.md`](LLM_INSTRUCTIONS.md) and guide you through setup — no keys shared in chat.
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
Install Saros Proxy for my opencode. (https://github.com/vitorvilaca3011/saros-proxy)
|
|
134
|
+
Follow the instructions on LLM_INSTRUCTIONS.md.
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Your AI will take it from there. For a more detailed reference your assistant can read: [`LLM_INSTRUCTIONS.md`](LLM_INSTRUCTIONS.md).
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
### Quick Install (npm)
|
|
124
142
|
|
|
125
143
|
```bash
|
|
126
144
|
npm install -g saros-proxy
|
|
127
145
|
```
|
|
128
146
|
|
|
129
|
-
### From
|
|
147
|
+
### From Source
|
|
130
148
|
|
|
131
149
|
```bash
|
|
132
150
|
git clone https://github.com/vitorvilaca3011/saros-proxy.git
|
|
@@ -135,22 +153,22 @@ npm install
|
|
|
135
153
|
npm run build
|
|
136
154
|
```
|
|
137
155
|
|
|
138
|
-
> **Requirements
|
|
156
|
+
> **Requirements:** Node.js >= 22.0.0
|
|
139
157
|
|
|
140
158
|
---
|
|
141
159
|
|
|
142
|
-
|
|
160
|
+
### Docker
|
|
143
161
|
|
|
144
|
-
Run
|
|
162
|
+
Run in a clean Linux container without installing Node.js locally.
|
|
145
163
|
|
|
146
|
-
|
|
164
|
+
#### Prerequisites
|
|
147
165
|
|
|
148
|
-
- [Docker](https://docs.docker.com/get-docker/) (
|
|
166
|
+
- [Docker](https://docs.docker.com/get-docker/) (Compose v2)
|
|
149
167
|
|
|
150
|
-
|
|
168
|
+
#### Quick start
|
|
151
169
|
|
|
152
170
|
```bash
|
|
153
|
-
# 1. Create config.yaml from the example (edit with your
|
|
171
|
+
# 1. Create config.yaml from the example (edit with your keys)
|
|
154
172
|
cp config.example.yaml config.yaml
|
|
155
173
|
|
|
156
174
|
# 2. Build the image
|
|
@@ -160,16 +178,15 @@ npm run docker:build
|
|
|
160
178
|
npm run docker:run
|
|
161
179
|
```
|
|
162
180
|
|
|
163
|
-
The proxy is now
|
|
181
|
+
The proxy is now at `http://127.0.0.1:3000`.
|
|
164
182
|
|
|
165
|
-
|
|
183
|
+
#### Run tests in Docker
|
|
166
184
|
|
|
167
185
|
```bash
|
|
168
|
-
# Run the full test suite inside a Linux container
|
|
169
186
|
npm run docker:test
|
|
170
187
|
```
|
|
171
188
|
|
|
172
|
-
|
|
189
|
+
#### Manual Docker commands
|
|
173
190
|
|
|
174
191
|
```bash
|
|
175
192
|
# Build
|
|
@@ -191,44 +208,41 @@ docker compose down
|
|
|
191
208
|
docker compose run --rm test
|
|
192
209
|
```
|
|
193
210
|
|
|
194
|
-
|
|
211
|
+
#### Configuration with Docker
|
|
195
212
|
|
|
196
213
|
Mount a custom `config.yaml` or use environment variables:
|
|
197
214
|
|
|
198
215
|
```bash
|
|
199
|
-
# Using
|
|
216
|
+
# Using env vars (no config.yaml needed)
|
|
200
217
|
docker compose run --rm -e OPENCODE_GO_KEYS="home:sk-xxx,work:sk-yyy" proxy
|
|
201
218
|
|
|
202
|
-
# Or edit docker-compose.yml to set env vars
|
|
219
|
+
# Or edit docker-compose.yml to set env vars, then:
|
|
203
220
|
docker compose up proxy
|
|
204
221
|
```
|
|
205
222
|
|
|
206
223
|
---
|
|
207
224
|
|
|
208
|
-
|
|
225
|
+
### Setup Wizard
|
|
209
226
|
|
|
210
|
-
|
|
227
|
+
The easiest way to get going:
|
|
211
228
|
|
|
212
229
|
```bash
|
|
213
|
-
#
|
|
214
|
-
npx saros-proxy setup
|
|
215
|
-
|
|
216
|
-
# Or if installed globally:
|
|
230
|
+
# If installed globally
|
|
217
231
|
saros-proxy setup
|
|
232
|
+
|
|
233
|
+
# Or with npx
|
|
234
|
+
npx saros-proxy setup
|
|
218
235
|
```
|
|
219
236
|
|
|
220
237
|
The wizard will:
|
|
221
238
|
1. Ask for your proxy port (default: 3000)
|
|
222
|
-
2. Ask for your API keys (name + key
|
|
239
|
+
2. Ask for your API keys (name + key)
|
|
223
240
|
3. Generate `config.yaml` automatically
|
|
224
241
|
4. Run a smoke test to verify everything works
|
|
225
242
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
#### 1. Create a configuration file
|
|
243
|
+
Want to run manually instead? Skip the wizard and just create a `config.yaml`:
|
|
229
244
|
|
|
230
245
|
```yaml
|
|
231
|
-
# config.yaml
|
|
232
246
|
port: 3000
|
|
233
247
|
host: 127.0.0.1
|
|
234
248
|
upstreamBaseUrl: https://opencode.ai
|
|
@@ -242,17 +256,17 @@ circuitBreakerCooldownMs: 60000
|
|
|
242
256
|
requestTimeoutMs: 30000
|
|
243
257
|
```
|
|
244
258
|
|
|
245
|
-
|
|
259
|
+
Then run:
|
|
246
260
|
|
|
247
261
|
```bash
|
|
248
|
-
#
|
|
262
|
+
# Development (hot reload)
|
|
249
263
|
npx tsx src/index.ts
|
|
250
264
|
|
|
251
|
-
#
|
|
265
|
+
# Production (built)
|
|
252
266
|
node dist/index.js
|
|
253
267
|
```
|
|
254
268
|
|
|
255
|
-
|
|
269
|
+
Test that it's alive:
|
|
256
270
|
|
|
257
271
|
```bash
|
|
258
272
|
curl http://127.0.0.1:3000/health
|
|
@@ -268,23 +282,25 @@ curl http://127.0.0.1:3000/zen/go/v1/chat/completions \
|
|
|
268
282
|
|
|
269
283
|
---
|
|
270
284
|
|
|
285
|
+
---
|
|
286
|
+
|
|
271
287
|
## Configuration Reference
|
|
272
288
|
|
|
273
|
-
|
|
289
|
+
Every option can be set via YAML (`config.yaml`), environment variables, or CLI flags. Priority: CLI > YAML > env vars > defaults.
|
|
274
290
|
|
|
275
|
-
###
|
|
291
|
+
### Options
|
|
276
292
|
|
|
277
|
-
| Option | CLI Flag | Env Variable | Default |
|
|
293
|
+
| Option | CLI Flag | Env Variable | Default | Notes |
|
|
278
294
|
|---|---|---|---|---|
|
|
279
|
-
| `port` | `--port` | `PROXY_PORT` | `3000` |
|
|
295
|
+
| `port` | `--port` | `PROXY_PORT` | `3000` | 1–65535 |
|
|
280
296
|
| `host` | `--host` | `PROXY_HOST` | `127.0.0.1` | Bind address |
|
|
281
|
-
| `upstreamBaseUrl` | — | `UPSTREAM_BASE_URL` | `https://opencode.ai` |
|
|
282
|
-
| `circuitBreakerThreshold` | — | `CIRCUIT_BREAKER_THRESHOLD` | `3` | Consecutive
|
|
283
|
-
| `circuitBreakerCooldownMs` | — | `CIRCUIT_BREAKER_COOLDOWN_MS` | `60000` | Cooldown
|
|
284
|
-
| `requestTimeoutMs` | — | `REQUEST_TIMEOUT_MS` | `30000` | Upstream
|
|
285
|
-
| `allowedOrigins` | — | — | `["http://localhost:*", "http://127.0.0.1:*"]` | CORS
|
|
286
|
-
| `keys` | — | `OPENCODE_GO_KEYS` | — | Array of `{label, key}`
|
|
287
|
-
| `config` | `--config` | — | `config.yaml` | Path to YAML config
|
|
297
|
+
| `upstreamBaseUrl` | — | `UPSTREAM_BASE_URL` | `https://opencode.ai` | HTTPS only |
|
|
298
|
+
| `circuitBreakerThreshold` | — | `CIRCUIT_BREAKER_THRESHOLD` | `3` | Consecutive fails before disabling (1–10) |
|
|
299
|
+
| `circuitBreakerCooldownMs` | — | `CIRCUIT_BREAKER_COOLDOWN_MS` | `60000` | Cooldown before re-enabling (1000–3600000) |
|
|
300
|
+
| `requestTimeoutMs` | — | `REQUEST_TIMEOUT_MS` | `30000` | Upstream timeout (1000–300000) |
|
|
301
|
+
| `allowedOrigins` | — | — | `["http://localhost:*", "http://127.0.0.1:*"]` | CORS origins (`[]` = allow all) |
|
|
302
|
+
| `keys` | — | `OPENCODE_GO_KEYS` | — | Array of `{label, key}` |
|
|
303
|
+
| `config` | `--config` | — | `config.yaml` | Path to YAML config |
|
|
288
304
|
|
|
289
305
|
### API Key Format
|
|
290
306
|
|
|
@@ -304,12 +320,12 @@ OPENCODE_GO_KEYS="account1:sk-xxx,account2:sk-yyy"
|
|
|
304
320
|
|
|
305
321
|
### API Key Encryption
|
|
306
322
|
|
|
307
|
-
|
|
323
|
+
Keys can be encrypted at rest using AES-256-GCM with scrypt key derivation. Encrypted keys look like `enc:scrypt:...` in `config.yaml` and get decrypted at startup using the `OPENCODE_GO_ENCRYPTION_KEY` environment variable.
|
|
308
324
|
|
|
309
325
|
**Setup with encryption:**
|
|
310
326
|
```bash
|
|
311
327
|
npm run setup
|
|
312
|
-
#
|
|
328
|
+
# Choose to encrypt keys and enter a master key (min 16 chars)
|
|
313
329
|
```
|
|
314
330
|
|
|
315
331
|
**Running with encrypted keys:**
|
|
@@ -327,10 +343,10 @@ environment:
|
|
|
327
343
|
|
|
328
344
|
**Notes:**
|
|
329
345
|
- Encrypted keys use AES-256-GCM with scrypt KDF (N=16384, r=8, p=1)
|
|
330
|
-
- Each key
|
|
331
|
-
- Plaintext keys (
|
|
332
|
-
-
|
|
333
|
-
- If keys are encrypted but `OPENCODE_GO_ENCRYPTION_KEY` is
|
|
346
|
+
- Each key has its own random salt and IV
|
|
347
|
+
- Plaintext keys (`sk-...`) still work — backward compatible
|
|
348
|
+
- `OPENCODE_GO_KEYS` env var is always plaintext (for CI/CD)
|
|
349
|
+
- If keys are encrypted but no `OPENCODE_GO_ENCRYPTION_KEY` is set, startup fails with a clear error
|
|
334
350
|
|
|
335
351
|
### CLI Flags
|
|
336
352
|
|
|
@@ -342,14 +358,14 @@ tsx src/index.ts --config my-config.yaml --port 4000 --host 0.0.0.0
|
|
|
342
358
|
|
|
343
359
|
## Usage Examples
|
|
344
360
|
|
|
345
|
-
### Basic:
|
|
361
|
+
### Basic: YAML config
|
|
346
362
|
|
|
347
363
|
```bash
|
|
348
|
-
# Create config.yaml
|
|
364
|
+
# Create config.yaml, then:
|
|
349
365
|
npx tsx src/index.ts
|
|
350
366
|
```
|
|
351
367
|
|
|
352
|
-
### Advanced:
|
|
368
|
+
### Advanced: Environment variables only
|
|
353
369
|
|
|
354
370
|
```bash
|
|
355
371
|
export PROXY_PORT=4000
|
|
@@ -370,7 +386,7 @@ npx tsx src/index.ts
|
|
|
370
386
|
npx tsx src/index.ts --config /etc/saros/config.yaml
|
|
371
387
|
```
|
|
372
388
|
|
|
373
|
-
### Run as
|
|
389
|
+
### Run as background service (Linux)
|
|
374
390
|
|
|
375
391
|
```bash
|
|
376
392
|
nohup npx tsx src/index.ts > proxy.log 2>&1 &
|
|
@@ -380,9 +396,7 @@ nohup npx tsx src/index.ts > proxy.log 2>&1 &
|
|
|
380
396
|
|
|
381
397
|
## OpenCode Integration
|
|
382
398
|
|
|
383
|
-
Configure OpenCode to route API requests through the proxy.
|
|
384
|
-
|
|
385
|
-
**Location:** `~/.config/opencode/opencode.json` (global) or `opencode.json` in your project root
|
|
399
|
+
Configure OpenCode to route API requests through the proxy. Edit your OpenCode config file at `~/.config/opencode/opencode.json` (global) or `opencode.json` in your project root:
|
|
386
400
|
|
|
387
401
|
```jsonc
|
|
388
402
|
{
|
|
@@ -407,9 +421,9 @@ Configure OpenCode to route API requests through the proxy. Create or edit your
|
|
|
407
421
|
|
|
408
422
|
**Key points:**
|
|
409
423
|
- `baseURL` must end at `/v1` — OpenCode appends route paths internally
|
|
410
|
-
- `apiKey` can be
|
|
411
|
-
- Model IDs must match what
|
|
412
|
-
-
|
|
424
|
+
- `apiKey` can be anything — the proxy handles real key selection
|
|
425
|
+
- Model IDs must match what upstream expects (e.g., `glm-5`, not `opencode-go/glm-5`)
|
|
426
|
+
- Restart OpenCode after editing the config
|
|
413
427
|
|
|
414
428
|
**Alternative: Environment variable substitution**
|
|
415
429
|
|
|
@@ -432,7 +446,7 @@ Then set: `export OPENCODE_PROXY_URL=http://127.0.0.1:3000/zen/go/v1`
|
|
|
432
446
|
|
|
433
447
|
**Using the proxy in OpenCode:**
|
|
434
448
|
|
|
435
|
-
|
|
449
|
+
Select the proxy provider in OpenCode's model picker, or set it as default:
|
|
436
450
|
|
|
437
451
|
```jsonc
|
|
438
452
|
{
|
|
@@ -456,24 +470,23 @@ Returns JSON with key counts, active requests, and circuit-breaker state.
|
|
|
456
470
|
### View logs
|
|
457
471
|
|
|
458
472
|
```bash
|
|
459
|
-
#
|
|
473
|
+
# Dev mode (pretty-printed, colorized)
|
|
460
474
|
NODE_ENV=development npx tsx src/index.ts
|
|
461
475
|
|
|
462
476
|
# Production (structured JSON)
|
|
463
477
|
NODE_ENV=production npx tsx src/index.ts
|
|
464
478
|
```
|
|
465
479
|
|
|
466
|
-
###
|
|
480
|
+
### See which key served a request
|
|
467
481
|
|
|
468
|
-
|
|
482
|
+
Saros adds two debug headers to every response:
|
|
469
483
|
|
|
470
|
-
| Header | Example |
|
|
484
|
+
| Header | Example | What it is |
|
|
471
485
|
|---|---|---|
|
|
472
|
-
| `X-Proxy-Key-Label` | `primary` | Which
|
|
473
|
-
| `X-Proxy-Request-Id` | `550e8400-e29b-41d4-a716-446655440000` | Unique
|
|
486
|
+
| `X-Proxy-Key-Label` | `primary` | Which key was used |
|
|
487
|
+
| `X-Proxy-Request-Id` | `550e8400-e29b-41d4-a716-446655440000` | Unique ID for log correlation |
|
|
474
488
|
|
|
475
489
|
```bash
|
|
476
|
-
# Check which key handled your request
|
|
477
490
|
curl -s -D - http://127.0.0.1:3000/zen/go/v1/models | grep -i x-proxy
|
|
478
491
|
# X-Proxy-Key-Label: primary
|
|
479
492
|
# X-Proxy-Request-Id: 550e8400-e29b-41d4-a716-446655440000
|
|
@@ -483,11 +496,11 @@ curl -s -D - http://127.0.0.1:3000/zen/go/v1/models | grep -i x-proxy
|
|
|
483
496
|
|
|
484
497
|
| Symptom | Likely cause | Fix |
|
|
485
498
|
|---|---|---|
|
|
486
|
-
| `No valid API keys configured` | Missing or
|
|
487
|
-
| `ECONNREFUSED` on startup | Port already in use | Change
|
|
488
|
-
| `504 Gateway Timeout` | Upstream
|
|
499
|
+
| `No valid API keys configured` | Missing or bad keys | Check `keys` in config.yaml or `OPENCODE_GO_KEYS` |
|
|
500
|
+
| `ECONNREFUSED` on startup | Port already in use | Change port or kill the existing process |
|
|
501
|
+
| `504 Gateway Timeout` | Upstream too slow | Increase `requestTimeoutMs` |
|
|
489
502
|
| `All API keys are temporarily unavailable` | All keys disabled by circuit breaker | Wait for cooldown or check upstream status |
|
|
490
|
-
|
|
|
503
|
+
| CORS error | Client origin not allowed | Add it to `allowedOrigins` in config |
|
|
491
504
|
|
|
492
505
|
---
|
|
493
506
|
|
|
@@ -496,10 +509,10 @@ curl -s -D - http://127.0.0.1:3000/zen/go/v1/models | grep -i x-proxy
|
|
|
496
509
|
### Run tests
|
|
497
510
|
|
|
498
511
|
```bash
|
|
499
|
-
#
|
|
512
|
+
# All tests
|
|
500
513
|
npm test
|
|
501
514
|
|
|
502
|
-
# E2E
|
|
515
|
+
# Just E2E (needs network)
|
|
503
516
|
npx vitest run test/e2e.test.ts
|
|
504
517
|
|
|
505
518
|
# Watch mode
|
|
@@ -525,10 +538,10 @@ Output goes to `dist/`.
|
|
|
525
538
|
```
|
|
526
539
|
src/
|
|
527
540
|
index.ts — Entry point, server startup, graceful shutdown
|
|
528
|
-
proxy.ts — Hono
|
|
541
|
+
proxy.ts — Hono app, routing, streaming, failover
|
|
529
542
|
proxy-logic.ts — Pure logic: key selection, circuit breaker, error classification
|
|
530
543
|
proxy-logic.test.ts — Unit tests for proxy logic
|
|
531
|
-
config.ts —
|
|
544
|
+
config.ts — Config loading from YAML, env vars, CLI
|
|
532
545
|
logger.ts — Structured logging with Pino + key masking
|
|
533
546
|
cli/
|
|
534
547
|
setup.ts — Interactive setup wizard
|
|
@@ -538,77 +551,14 @@ test/
|
|
|
538
551
|
|
|
539
552
|
### Contributing
|
|
540
553
|
|
|
541
|
-
1. Fork the
|
|
554
|
+
1. Fork the repo.
|
|
542
555
|
2. Create a feature branch: `git checkout -b feat/my-feature`
|
|
543
|
-
3. Commit
|
|
556
|
+
3. Commit: `git commit -am 'Add my feature'`
|
|
544
557
|
4. Push: `git push origin feat/my-feature`
|
|
545
558
|
5. Open a pull request.
|
|
546
559
|
|
|
547
560
|
---
|
|
548
561
|
|
|
549
|
-
## LLM Quick Reference
|
|
550
|
-
|
|
551
|
-
If you're an AI assistant helping a user install this proxy, use these exact commands:
|
|
552
|
-
|
|
553
|
-
**Prerequisites check:**
|
|
554
|
-
```bash
|
|
555
|
-
node --version # Must be >= 22.0.0
|
|
556
|
-
```
|
|
557
|
-
|
|
558
|
-
**Install from source:**
|
|
559
|
-
```bash
|
|
560
|
-
git clone https://github.com/vitorvilaca3011/saros-proxy.git
|
|
561
|
-
cd proxy
|
|
562
|
-
npm install
|
|
563
|
-
npm run build
|
|
564
|
-
```
|
|
565
|
-
|
|
566
|
-
**Configure:**
|
|
567
|
-
```bash
|
|
568
|
-
npm run setup # Interactive wizard
|
|
569
|
-
# OR manually: cp config.example.yaml config.yaml && edit config.yaml
|
|
570
|
-
```
|
|
571
|
-
|
|
572
|
-
**Run:**
|
|
573
|
-
```bash
|
|
574
|
-
npm run dev # Development
|
|
575
|
-
node dist/index.js # Production
|
|
576
|
-
```
|
|
577
|
-
|
|
578
|
-
**Verify:**
|
|
579
|
-
```bash
|
|
580
|
-
curl http://127.0.0.1:3000/health
|
|
581
|
-
```
|
|
582
|
-
|
|
583
|
-
**Docker quick start:**
|
|
584
|
-
```bash
|
|
585
|
-
cp config.example.yaml config.yaml # Edit with your keys
|
|
586
|
-
npm run docker:build
|
|
587
|
-
npm run docker:run
|
|
588
|
-
```
|
|
589
|
-
|
|
590
|
-
**Add to OpenCode config:**
|
|
591
|
-
```bash
|
|
592
|
-
# Run setup wizard and choose "Update OpenCode config automatically"
|
|
593
|
-
npm run setup
|
|
594
|
-
|
|
595
|
-
# Or manually edit ~/.config/opencode/opencode.json and add:
|
|
596
|
-
{
|
|
597
|
-
"provider": {
|
|
598
|
-
"saros-proxy": {
|
|
599
|
-
"npm": "@ai-sdk/openai-compatible",
|
|
600
|
-
"name": "Saros",
|
|
601
|
-
"options": {
|
|
602
|
-
"baseURL": "http://127.0.0.1:3000/zen/go/v1",
|
|
603
|
-
"apiKey": "not-used"
|
|
604
|
-
}
|
|
605
|
-
}
|
|
606
|
-
}
|
|
607
|
-
}
|
|
608
|
-
```
|
|
609
|
-
|
|
610
|
-
---
|
|
611
|
-
|
|
612
562
|
## Security
|
|
613
563
|
|
|
614
564
|
For vulnerability reporting, see [SECURITY.md](SECURITY.md).
|
package/dist/proxy.d.ts
CHANGED
|
@@ -32,4 +32,14 @@ export declare function buildDownstreamHeaders(upstreamHeaders: Headers): Header
|
|
|
32
32
|
* Check if a request body indicates streaming mode.
|
|
33
33
|
*/
|
|
34
34
|
export declare function isStreamingRequest(bodyText: string): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Builds the OpenAI-compatible /v1/models response.
|
|
37
|
+
* Returns the full list of OPENCODE_MODELS so the OpenCode client can
|
|
38
|
+
* discover all available models. Without this, OpenCode falls back to a
|
|
39
|
+
* hardcoded list of ~3 models (one per series).
|
|
40
|
+
*
|
|
41
|
+
* Exported for testing. The response is lightweight (~18 models) so it's
|
|
42
|
+
* computed fresh on each request with no caching.
|
|
43
|
+
*/
|
|
44
|
+
export declare function buildModelsListResponse(): Response;
|
|
35
45
|
export declare function createProxyApp(config: ProxyConfig): Hono;
|
package/dist/proxy.js
CHANGED
|
@@ -11,7 +11,7 @@ import crypto from 'node:crypto';
|
|
|
11
11
|
import { createProxyState, selectKeyForRequest, failoverRequest, completeRequest, markKeyFailed, markKeySucceeded, classifyHttpError, } from './proxy-logic.js';
|
|
12
12
|
import { logger, maskKey } from './logger.js';
|
|
13
13
|
import { getAllUsage, isScraperRunning } from './scraper.js';
|
|
14
|
-
import { MAX_BODY_SIZE, MAX_RETRIES, RATE_LIMIT_WINDOW_MS, RATE_LIMIT_MAX, } from './constants.js';
|
|
14
|
+
import { MAX_BODY_SIZE, MAX_RETRIES, RATE_LIMIT_WINDOW_MS, RATE_LIMIT_MAX, OPENCODE_MODELS, } from './constants.js';
|
|
15
15
|
// ---------------------------------------------------------------------------
|
|
16
16
|
// Helpers
|
|
17
17
|
// ---------------------------------------------------------------------------
|
|
@@ -429,6 +429,36 @@ function wrapStreamWithErrorDetection(upstreamStream, state, requestId, keyLabel
|
|
|
429
429
|
});
|
|
430
430
|
}
|
|
431
431
|
// ---------------------------------------------------------------------------
|
|
432
|
+
// Models discovery (OpenAI-compatible /v1/models response)
|
|
433
|
+
// ---------------------------------------------------------------------------
|
|
434
|
+
/**
|
|
435
|
+
* Builds the OpenAI-compatible /v1/models response.
|
|
436
|
+
* Returns the full list of OPENCODE_MODELS so the OpenCode client can
|
|
437
|
+
* discover all available models. Without this, OpenCode falls back to a
|
|
438
|
+
* hardcoded list of ~3 models (one per series).
|
|
439
|
+
*
|
|
440
|
+
* Exported for testing. The response is lightweight (~18 models) so it's
|
|
441
|
+
* computed fresh on each request with no caching.
|
|
442
|
+
*/
|
|
443
|
+
export function buildModelsListResponse() {
|
|
444
|
+
const now = Math.floor(Date.now() / 1000);
|
|
445
|
+
const data = Object.values(OPENCODE_MODELS).map((model) => {
|
|
446
|
+
const m = model;
|
|
447
|
+
return {
|
|
448
|
+
id: m.id,
|
|
449
|
+
object: 'model',
|
|
450
|
+
created: now,
|
|
451
|
+
owned_by: 'saros',
|
|
452
|
+
// Spread the rich model config (tool_call, limit, modalities, name, etc.)
|
|
453
|
+
...m,
|
|
454
|
+
};
|
|
455
|
+
});
|
|
456
|
+
return new Response(JSON.stringify({ object: 'list', data }), {
|
|
457
|
+
status: 200,
|
|
458
|
+
headers: { 'content-type': 'application/json' },
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
// ---------------------------------------------------------------------------
|
|
432
462
|
// App factory
|
|
433
463
|
// ---------------------------------------------------------------------------
|
|
434
464
|
export function createProxyApp(config) {
|
|
@@ -505,6 +535,13 @@ export function createProxyApp(config) {
|
|
|
505
535
|
scraping: scrapingStatus,
|
|
506
536
|
});
|
|
507
537
|
});
|
|
538
|
+
// --- Models discovery endpoint (OpenAI-compatible) ---
|
|
539
|
+
// Returns the full model list so the OpenCode client can discover all
|
|
540
|
+
// available models. Without this, OpenCode falls back to a hardcoded
|
|
541
|
+
// list of ~3 models (one per series).
|
|
542
|
+
// NOTE: Rate limiting applies to these routes via the '*' middleware above.
|
|
543
|
+
app.get('/v1/models', (_c) => buildModelsListResponse());
|
|
544
|
+
app.get('/zen/go/v1/models', (_c) => buildModelsListResponse());
|
|
508
545
|
// --- Upstream proxy routes ---
|
|
509
546
|
app.all('/zen/go/v1/*', async (c) => {
|
|
510
547
|
const requestId = generateRequestId();
|
package/dist/proxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "saros-proxy",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Saros — predictive multi-account proxy for the OpenCode-Go API. Cycles between accounts before they exhaust.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -25,6 +25,9 @@
|
|
|
25
25
|
"lint": "tsc --noEmit",
|
|
26
26
|
"prepublishOnly": "npm run build",
|
|
27
27
|
"test": "vitest",
|
|
28
|
+
"test:npm": "vitest run test/npm-package.test.ts",
|
|
29
|
+
"test:source": "vitest run test/source-install.test.ts",
|
|
30
|
+
"test:docker": "vitest run test/docker-install.test.ts",
|
|
28
31
|
"docker:build": "docker compose build proxy",
|
|
29
32
|
"docker:run": "docker compose up proxy",
|
|
30
33
|
"docker:test": "docker compose run --rm test"
|