ThreadBay is a macOS app for working on multiple Git branches in parallel and running development agents in integrated terminals.
- Add a project from the settings by selecting its local Git repository.
- Create a space from a new branch, an existing branch, or a GitHub pull request. You can give it an optional display name; otherwise ThreadBay assigns a stable two-word name such as
cosmic-otter. - ThreadBay creates an independent clone next to the source repository, then checks out the selected branch. Each task has its own directory and does not affect other spaces. The current branch can later be changed without renaming the space.
- From that space, launch Claude Code, Codex, a shell, or a custom command in the integrated terminal. Multiple sessions can run at the same time.
- Open the directory in VS Code, Zed, Cursor, or Finder. Deleting a space stops its sessions, removes its directory, and removes it from ThreadBay.
Each Git space also exposes actions in the sidebar to create a commit, generate a commit message with Claude, Codex, or a custom command, optionally push or merge it, and switch branches with a searchable picker. Merges run in a temporary worktree and never change the configured source repository or the branch checked out in the space.
The app remains accessible from the menu bar and can send a notification when an agent finishes a turn or waits for an action. Projects, spaces, and agents are stored in local YAML files:
~/Library/Application Support/com.jlex.threadbay/settings.yaml~/.threadbay/spaces.yaml~/Library/Application Support/com.jlex.threadbay/agents.yaml
- macOS 14 or later;
- Swift 6, provided by Xcode or the Command Line Tools;
- Git;
ghto create a space from a pull request;- the commands for the agents or editors you want to use (
claude,codex,code,zed,cursor, etc.).
git clone https://github.com/goudyj/threadbay.git
cd threadbay
swift build
swift test
./scripts/run-app.shSwift Package Manager downloads dependencies automatically during the first build. The launcher builds and opens ThreadBay Dev.app, which has its own macOS identity and storage. It can run alongside the production app without stopping agents that are already running there.
Development data is isolated from production data:
~/Library/Application Support/com.jlex.threadbay.dev/settings.yaml~/.threadbay-dev/spaces.yaml~/Library/Application Support/com.jlex.threadbay.dev/agents.yaml
The development app starts with an empty configuration. Add a disposable project from its settings before testing destructive operations such as deleting spaces or branches.
To create a release build without launching it:
./scripts/build-app.shThe script compiles in release mode, assembles ThreadBay.app at the project root, and signs it locally. You can then move it to the Applications folder.
The existing explicit debug build also remains available and still targets the production app bundle:
./scripts/build-app.sh debugTo assemble the isolated development bundle without launching it, pass the dev profile:
./scripts/build-app.sh debug dev