Early accessHandoff layer for AI coding agents

Never get rate limited again.

Every AI you pay for, chained into one agent that never stops.
Without copy-pasting a single line.

Download for macOS

macOS menu bar app + CLI · works with Claude Code, Claude Desktop, Cursor and ChatGPT

Watches
  • Claude Code
  • Claude Desktop
  • Cursor
  • ChatGPT
  • Claude.ai
Hands off to
  • Cursor
  • Claude
  • ChatGPT
  • DeepSeek
  • OpenAI

Why Harlay

Claude won’t hand your work to Cursor. Cursor won’t hand it to Codex. Harlay will.

They compete for your subscription, so none of them will ever build the way out. Harlay sits above all of them, on your machine, and turns every limit into a handoff.

Without Harlay1h 48m

Waiting for the 6:00 PM reset. Or twenty minutes pasting logs into another tool and explaining the task again.

With HarlaySeconds

Same task, open in the next tool, starting on the line where the last one stopped.

How it works

Four steps.
Zero copy-paste.

Harlay sits in your menu bar and does nothing until a session dies. Then it moves fast.

  1. 01

    Detect

    Catches exit codes, 429s and “usage limit reached” banners as they happen. Or hit ⌃⌥H to hand off yourself.

    exit 1 · HTTP 429 · banner text
  2. 02

    Extract

    Reads the conversation straight from local logs and app storage, then checks git to see what really changed.

    jsonl · sqlite · indexeddb · git diff
  3. 03

    Distill

    Drops cat dumps, retry loops and dead ends. Keeps the goal, the progress, the blocker and the next move.

    112k tokens → ~2k tokens
  4. 04

    Rehydrate

    Opens or focuses the target with files attached and the brief pre-filled. Nothing left to do but send it.

    cursor · claude.ai · chatgpt · cli

The brief

112k tokens of mess in.
One page out.

Every handoff produces the same four-part brief. Small enough to paste anywhere, specific enough that the next model starts on the right line.

Raw session112,408 tokens
Harlay brief1,946 tokens

98% smaller. Nothing the next agent needs is gone.

handoff · claude-code → cursor1,946 tokens

Goal

Move auth from session cookies to JWT across api/. Keep the existing tests green.

Done

  • Added src/lib/jwt.ts with sign and verify helpers
  • Swapped cookie middleware for JWT in auth.ts
  • Migrated 9 of 12 route handlers

Blocked on

tests/auth.spec.ts:48 expected 401, got 500. verify() throws on expired tokens instead of returning null.

Changed files

src/lib/jwt.ts            +41
api/middleware/auth.ts    +18  −27
api/routes/*.ts           +64  −88

Handoffs

You pick where
the work goes next.

Set a target and a fallback for each source. Turn on auto and Harlay hands off without asking.


        
  • Cursor Composer

    Editor opens with changed files attached and the brief in Composer.

  • Claude, second account

    A fresh chat in your other account, context already pasted.

  • ChatGPT

    New conversation with the brief and diff summary loaded.

  • Fallback CLI agent

    A terminal agent on DeepSeek or OpenAI, running on your own keys.

Local by default

Your logs stay on your machine.
Only the brief moves.

Reads, never uploads

Session history and git state are parsed on device. There is no Harlay server in the middle.

You see it first

Review or edit the brief before it lands. Or skip that and run zero-click.

Your accounts, your keys

Targets open in apps you are already signed in to. Fallback agents use your own API keys.

Stop waiting
for the reset.

Download for macOS