regatta

Regatta

Regatta is a macOS desktop app I built with Electron, React, TypeScript, and node-pty to run multiple terminal sessions and git worktrees side by side without losing track of which pane needs input or accidentally clobbering uncommitted git work.

Regatta running three terminal panes with live status and Fleet sidebar

Download and Try It

Opening the Downloaded App on macOS

Because I built and packaged this as a student without a paid $99/year Apple Developer ID account, the .dmg and .zip builds in the GitHub Release are ad-hoc signed (codesign -s -). The first time you open Regatta.app after downloading it, macOS Gatekeeper will block it because of the download quarantine flag.

To open it:

  1. Drag Regatta.app to /Applications.
  2. Run this in Terminal to clear the quarantine attribute:
    xattr -cr /Applications/Regatta.app
    

    (Or right-click Regatta.app in Finder and click Open.)

Platform Architecture Status
macOS 13+ Apple Silicon (arm64) Supported and tested (.dmg and .zip on Releases page)
macOS 13+ Intel (x64) Build from source (npm run dev)
Windows / Linux x64 / arm64 Not supported yet (worktree safety checks use macOS lsof and APFS clonefile)

Why I Built This

Whenever I had three or four terminal tabs open on different git branches or worktrees, I kept running into two problems:

  1. I couldn’t tell at a glance which terminal was still compiling/running tests versus waiting at a prompt for a y/n confirmation.
  2. Cleaning up temporary git worktree folders when switching branches is surprisingly easy to mess up. If you delete a worktree directory before checking whether it has unmerged commits or staged files, or while a background process is still writing to it, you can lose work.

So I built Regatta around two main ideas: a live multi-pane terminal grid that tracks process state per pane, and a worktree runner (“Heats”) that isolates parallel runs in separate git worktrees and moves finished worktrees to a recoverable trash folder instead of deleting them.

Regatta Heats view after running two isolated git worktree lanes and running checks

What Is Inside

Regatta layout menu and pane controls

Building and Running from Source

You need macOS (Apple Silicon), Node.js 20+, and git.

git clone https://github.com/draarivpatel-ui/regatta.git
cd regatta
npm ci
npm run dev

Other scripts in package.json:

npm test        # run unit tests with Vitest
npm run check   # run TypeScript typecheck + unit tests
npm run e2e     # build and run the Playwright Electron end-to-end test suite
npm run dist    # package dist/Regatta-0.1.0-arm64.dmg and .zip via electron-builder

Repository Layout

License

MIT License. See LICENSE.