main · 4 workspaces running

Every task on its own branch.

Korev runs Claude Code and Codex in parallel on your Mac. Each task gets a git worktree with its own chats, terminal, diff and pull request.

Free and open source · macOS · Needs the claude or codex CLI and gh

New workspace

acme/web
Opus 5.5high
Korev creates a worktree on a new branch, copies your .env files, runs your setup script and sends the task to the agent.
5c11f32main
⌘N · new workspace

Start the next task while the first one runs.

A workspace is a git worktree on its own branch. Agents in two workspaces never edit the same files.

  • Korev copies your .env files and runs your setup script
  • Each workspace gets ten ports, starting at $KOREV_PORT
  • Switch with ⌘1 to ⌘9; bold rows have unread output
~/korev/workspaces/web/4 worktrees · one .git
rate-limit-headers/thiago/rate-limit-headers:55000
fix-flaky-checkout/thiago/fix-flaky-checkout:55010
dark-mode-settings/thiago/dark-mode-settings:55020
onboarding-copy/thiago/onboarding-copy:55030
a41e0c9Merge #479 Dark mode settings
⌘⇧D · diff view

Read the diff. Comment on lines. Send them all at once.

The Changes tab lists every file that differs from the target branch. Comments collect until you send them to the agent as one message.

  • Unified or split, with Viewed to collapse a file
  • “N files changed” after each turn shows only that turn
  • Open a review chat with its own model
src/middleware/rateLimit.ts
@@ -18,13 +18,17 @@ export function rateLimit(opts: Options)
1818 return async (req, res, next) => {
1919 const key = tenantKey(req);
20− const ok = await bucket.take(key);
20+ const { ok, remaining, resetAt } = await bucket.take(key);
21+ res.setHeader('X-RateLimit-Limit', opts.limit);
22+ res.setHeader('X-RateLimit-Remaining', remaining);
23+ res.setHeader('X-RateLimit-Reset', Math.ceil(resetAt / 1000));
2124 if (!ok) {
22− return res.status(429).end();
25+ return res.status(429).json({ error: 'rate_limited' });
TYou · line 30
Also set Retry-After on the 429 response.
2326 }
e7d2b18Merge #481 Fix flaky checkout test
⌘⇧P · ⌘⇧X · ⌘⇧M

One button walks it to merge.

The header always shows the next git step. Create PR and Fix errors send a prompt to the agent. Merge runs gh pr merge --squash.

  • Failing checks go to the agent with their links
  • GitHub review comments come in with Add to chat
  • Archive on merge cleans up the worktree
Rate limit headersthiago/rate-limit-headers
Create PRFix errorsMergeArchive
0b93fa4Merge #482 Send rate limit headers on every response
Ask · linked workspaces

Plan across repositories before anything changes.

Ask reads the default branch and cannot edit files. When the plan is ready, Start workspaces opens one linked workspace per repository with the whole conversation.

  • Each agent changes only its own repository
  • It can read the linked ones and leave notes in .context/
We want a billing portal. What has to change in web and api?
c2f8e61Merge #483 Billing portal· acme/web, acme/api

Also in Korev

Checkpoints

Korev saves the worktree before every message you send. Revert to a message and the files go back with it.

Plan mode

Press ⇧Tab. The agent reads and plans without changing files. Approve the plan to let it build.

Ten ports per workspace

Each workspace gets its own $KOREV_PORT range, so two dev servers never fight for a port.

Repository config

.korev/settings.toml sets setup, run and archive scripts, preview URLs, env files and prompts.

Start from a PR or issue

Create a workspace from an existing branch, pull request or GitHub issue.

From your phone

Check on running agents and send messages from the phone app, over Tailscale.

Spotlight testing

For apps that only run from the main checkout, Korev syncs a workspace’s changes into it.

Archive on merge

When the PR merges, Korev stops the agents, snapshots the files and removes the worktree.

Uses the agents you already have.

Korev runs the claude and codex CLIs with their own sign-in, MCP servers and skills, and uses gh for pull requests and checks.

Build from source
$ git clone https://github.com/thiagosalvatore/korev.git
$ cd korev
$ make package-run   # builds and opens Korev.app