The local-first AI agent for Linear — free to use.

Delegate an issue.Come back to a PR.

Assign a Linear issue to Delego. Claude Code or Codex runs on your own machine, opens a pull request, and reports back — automatically.

Live247runners online3,420PRs shipped this week
delego.app — Home
Tuesday, May 19 · Week 21
One job needs your eyes.
3 of 6 runners online. 1 job need attention.
Runners
3 / 6
Online
Needs attention
1
Job failed
Recent
5 / 6
Completed
Linear
On
Webhooks healthy
Needs attention
Nothing to look at right now.
Nothing to look at right now.
Linear Connected
Manage setup →
Recent activity
Last 5 jobs
PER-36Add exhaustive default to formatExecutionPreferenceProblems switchCompleted
PER-44Rate-limit runner endpoints to block unauthenticated DDOSCompleted
PER-43Execution executor with wrong model fails with ambiguous error 22:39
PER-41Errors in conversation logging block jam PR ID on hard-fail in draft stateCompleted
Why Delego

AI coding, the way it should work.

Three things that make Delego different from running AI agents manually.

Linear-native workflow

Delegate any issue directly in Linear. Use labels to pick the executor, model, and thinking level. Results — PR URL, progress log — come straight back into the issue.

Your machine, your data

The agent runs locally — your code never touches our servers. Use your existing Claude or Codex subscription. No extra cloud execution fees, no vendor lock-in.

Hands-off automation

Delegate and walk away. Come back to a PR already opened, tested, and reported into your Linear issue — with full progress logs visible in the dashboard.

Watch it work

From issue to PR.

Four screens. One action in Linear triggers the whole pipeline — here's what each surface shows you.

linear.app · PER-44 Rate-limit runner endpoints
PER · Platform/All issues/PER-44Subscribed
PER-44·In progress·Medium

Rate-limit runner endpoints to block unauthenticated DDOS

Open relay routes are getting pounded by unauth'd traffic. Add per-IP rate-limit on /api/runners/* before the auth check. Cap at 100 req/min. Return 429 with Retry-After header.

M
Marek created the issue
2 minutes ago
M
Marek added label delego:claude-sonnet-4-5
just now · webhook fired
delego.app · Runners
Runners3 online · 1 claiming · 2 idle
PER-44 received from Linear · assigning to a free runner…just now
marek-mbp-16Claiming
os darwin · arm64v0.8.3
PER-44Rate-limit runner endpoints…
marek-studioOnline
os darwin · arm64v0.8.3
Waiting for work
ci-worker-01Online
os linux · x86_64v0.8.3
PER-41Just finished · PR #322
old-miniIdle · 4h
os darwin · arm64v0.7.9
Last seen 4h ago · upgrade available
delego.app · Job PER-44
PER-44 · zietek/delego-saas · attempt 1
Rate-limit runner endpoints to block unauthenticated DDOS
Running · 00:42
PromptTimelineCommunication log
Webhook received from Linear00:00
Label delego:claude-sonnet-4-5 matched. Queued.
Runner marek-mbp-16 claimed00:02
Worktree created from main.
Claude Code session opened00:08
Model sonnet-4-5 · thinking high.
Editing rate-limit middleware00:42
2 files touched · 48 lines added. Streaming tool calls live.
Repositoryzietek/delego-saas
Branch per-44-runner-ratelimit
Runner marek-mbp-16
Started19/05/2026, 21:54:11
Execution preferences claude · sonnet-4-5 · high
Token usage12.4k in · 3.1k out · streaming…
github.com · zietek/delego-saas · pull/324
#324 PER-44 · Rate-limit runner endpoints to block unauthenticated DDOSSquash & merge
Activity Diff +108 −18
apps/web/app/api/runners/[runner]/route.ts·9 files Reviewed
12 import { NextResponse } from 'next/server'
13 import { enforceRouteHandler } from '@kit/next/routes'
13+ import { getSupabaseServerAdminClient } from
14+ '@kit/supabase/server-admin-client'
15+ import { authenticateRunner } from
16+ '~/lib/server/relay/runner-auth'
@@ -38,7 +42,18 @@ export async function POST
38 const repository = createRunnerRepository(
39 '~/lib/server/relay/repositories/runner-repository'
40+ const auth = await authenticateRunner(request)
41+ if (auth.isErr()) {
42+ return NextResponse.json(
43+ { error: auth.reason }, { status: 401 }
44+ )
45+ }
46
47 const repo = createRunnerRepository(client)
48 // 23 unchanged lines
DDelego SaaSjust now
Opened automatically for PER-44.
Rate-limits expired entries when the store grows past 10,000 IPs (prevents unbounded memory growth).
  • Checks rate limit before any auth logic — blocked IPs short-circuit immediately
  • Records a failure for every 401 branch (missing header, wrong scheme, empty token, unknown runner)
  • 503 (transient DB failure) does not count as a failure
  • RunnerAuthResult type includes 429 status
  • Retry-After header set automatically on 429
All 7 route handlers now call runnerAuthOrResponse(auth) instead of the inline NextResponse.json pattern.
Linked to PER-44 — status updated to In review.
Local runner

It runs where you run.

A lightweight daemon polls the relay, claims work, and streams progress back. Code never leaves your machine.

marek-mbp-16·delego runner v0.8.3Online · 11s ago
21:54:09info webhook received issue=PER-36 repo="zietek/delego-saas"
21:54:10ok   claimed job runner=marek-mbp-16 attempt=1
21:54:11info creating worktree branch="per-36-format-pref"
21:54:17exec claude code session opened model="sonnet-4-5" thinking=high
21:54:31tool read "apps/web/lib/serverless/services/execute-job-from-webhook.ts"
21:54:42tool edit "…/execution-preference-problems.ts" +48 -12
21:55:01tool run "pnpm test execution"
21:55:09ok   tests passed 17/17 1.2s
21:55:14git  commit "fix(execution): exhaustive default for preference problems"
21:55:25ok   pr opened #324 "zietek/delego-saas"
21:55:25ok   posted to linear issue=PER-36
How it works

From delegation to pull request.

One action in Linear triggers the whole pipeline.

01
Linear

Delegate the issue.

Assign any issue to the Delego app. Labels pick the executor, the model, and the repo you want the work done in.

Issue · PER-44
Rate-limit runner endpoints to block unauthenticated DDOS
backendsecuritydelego:claude-sonnet-4-5
02
Relay

Relay queues the job.

Webhook lands on the relay. The job appears in your Delego dashboard with full execution-preference resolution.

Dashboard · Recent
PER-44Rate-limit runner endpoints…Queued
PER-43Execution executor with wrong model…Done
03
Local

Runner executes locally.

Your paired CLI polls the relay, claims the job, and runs Claude Code or Codex on your machine — code never leaves your laptop.

marek-mbp-16 · v0.8.3
ok claimed PER-44
exec claude code "sonnet-4-5"
tool edit route.ts +48 −12
ok tests passed 17/17
04
GitHub

PR is waiting. Issue is closed out.

Pull request opens with description and tests already written. Status, log, and PR link land back on the original Linear issue.

github.com · pull/324
#324PER-44 · Rate-limit runner endpoints…
+108−189 filesReady to merge

Start delegating in minutes.

Free to use. Pair a runner, connect Linear, delegate your first issue.