rig.
MACHINED TO SPEC · PRIVATE BETA

Your machine, milled to spec.

A dedicated machine, your repos, your keys. Claude works the plate around the clock. Nothing leaves the shop until you sign it off from your phone.

RUNTIME
ALWAYS ON
REGIONS
GLOBAL
ACCESS
BY INVITE
9:41
Sessions
Active 3 Review 1 Done
your-rig online · 14 ms ↑6d 4h
ingest-api feat/rate-limit
Add per-key rate limiting to /ingest, 100 req/min
sonnet·38.4k ctx·12m 04s·+42−3
web-dashboard chore/sessions REVIEW
Migration drops legacy sessions table
3 files·waiting 4m·needs approval
infra fix/tf-drift MERGED
Reconcile terraform drift in sfo3
PR #412·22 min ago·6m 51s
+New session

Sessions

Rigs

Repos

Settings
ingest-api feat/rate-limit
main ← feat/rate-limit·3 files·12m 04s
Add rate limiting to the /ingest endpoint — 100 req/min per API key, 429 with Retry-After.
Token bucket in Redis keyed on req.apiKey. Reusing the existing client so there's no new dependency.
read src/api/ingest.ts 340 L
read middleware/index.ts 88 L
edit middleware/limit.ts +42−3
bash npm test -- --run 3.24s
PASS test/limit.spec.ts (11) PASS test/ingest.spec.ts (37) 48 passed · 0 failed
write test/limit.headers.spec.ts
claude-sonnet · 38.4k / 200k ctx$0.11
+ Reply to Rig…
limit.ts +42−3 2/3
middleware/limit.ts
@@ -14,3 +14,9 @@ app.post("/ingest")
12import { redis } from "../redis";
13// per-key bucket, 1m window
14− app.post("/ingest", handler);
14+ const limit = bucket({
15+   capacity: 100,
16+   refill: "1m",
17+   store: redis,
18+   key: (req) => req.apiKey,
19+ });
20+
21+ app.post("/ingest", limit, handler);
22
✓ 48 tests·lint clean·tsc 0 errors3.24s
Comment
Approve & open PR
Web Sim Shell Data
your-rig:~/ingest-api zsh · 0.4% cpu
~/ingest-api npm run dev
> ingest-api@2.1.0 dev
> tsx watch src/server.ts
09:38:02 ready http://localhost:3000
09:38:02 redis connected 127.0.0.1:6379
09:38:14 POST /ingest 202 11ms
09:38:14 POST /ingest 202 8ms
09:38:15 POST /ingest 429 2ms retry-after=41
09:38:15 bucket key=ak_9f21 drained 100/100
09:38:22 POST /ingest 202 9ms
~/ingest-api redis-cli ttl rl:ak_9f21
(integer) 41
~/ingest-api
⌃C clear
Friday, August 7
9:41
RIG-SFO3
3 active
QUEUE
1 waiting
r RIG now
web-dashboard · approval needed
Migration 0042_drop_sessions.sql will drop 1 table (18,204 rows).
destructive·backup 2m ago·reversible
View diff Approve
r ingest-api · 48 tests passed 4m
Face ID to approve
A · SESSION LIST
B · DIFF REVIEW
C · APPROVE PUSH
SCALE 1:1 · REV D
YOUR BOX · YOUR KEYS
rig.
MACHINED TO SPEC · BETA

Your machine, milled to spec.

A dedicated machine, your repos, your keys. Claude works the plate around the clock — nothing leaves the shop until you sign it off.

RUNTIMEALWAYS ON
REGIONSGLOBAL
ACCESSBY INVITE
9:41
Sessions
Active 3 Review 1 Done
your-rig online · 14 ms ↑6d 4h
ingest-api feat/rate-limit
Add per-key rate limiting to /ingest, 100 req/min
sonnet·38.4k ctx·12m 04s·+42−3
web-dashboard chore/sessions REVIEW
Migration drops legacy sessions table
3 files·waiting 4m·needs approval
infra fix/tf-drift MERGED
Reconcile terraform drift in sfo3
PR #412·22 min ago·6m 51s
+New session

Sessions

Rigs

Repos

Settings
ingest-api feat/rate-limit
main ← feat/rate-limit·3 files·12m 04s
Add rate limiting to the /ingest endpoint — 100 req/min per API key, 429 with Retry-After.
Token bucket in Redis keyed on req.apiKey. Reusing the existing client so there's no new dependency.
read src/api/ingest.ts 340 L
read middleware/index.ts 88 L
edit middleware/limit.ts +42−3
bash npm test -- --run 3.24s
PASS test/limit.spec.ts (11) PASS test/ingest.spec.ts (37) 48 passed · 0 failed
write test/limit.headers.spec.ts
claude-sonnet · 38.4k / 200k ctx$0.11
+ Reply to Rig…
limit.ts +42−3 2/3
middleware/limit.ts
@@ -14,3 +14,9 @@ app.post("/ingest")
12import { redis } from "../redis";
13// per-key bucket, 1m window
14− app.post("/ingest", handler);
14+ const limit = bucket({
15+   capacity: 100,
16+   refill: "1m",
17+   store: redis,
18+   key: (req) => req.apiKey,
19+ });
20+
21+ app.post("/ingest", limit, handler);
22
✓ 48 tests·lint clean·tsc 0 errors3.24s
Comment
Approve & open PR
Web Sim Shell Data
your-rig:~/ingest-api zsh · 0.4% cpu
~/ingest-api npm run dev
> ingest-api@2.1.0 dev
> tsx watch src/server.ts
09:38:02 ready http://localhost:3000
09:38:02 redis connected 127.0.0.1:6379
09:38:14 POST /ingest 202 11ms
09:38:14 POST /ingest 202 8ms
09:38:15 POST /ingest 429 2ms retry-after=41
09:38:15 bucket key=ak_9f21 drained 100/100
09:38:22 POST /ingest 202 9ms
~/ingest-api redis-cli ttl rl:ak_9f21
(integer) 41
~/ingest-api
⌃C clear
Friday, August 7
9:41
RIG-SFO3
3 active
QUEUE
1 waiting
r RIG now
web-dashboard · approval needed
Migration 0042_drop_sessions.sql will drop 1 table (18,204 rows).
destructive·backup 2m ago·reversible
View diff Approve
r ingest-api · 48 tests passed 4m
Face ID to approve
ASESSION LIST
BDIFF REVIEW
CAPPROVE PUSH
SCALE 1:1 · REV DYOUR BOX · YOUR KEYS