Tired of juggling tmux sessions?

Stop juggling
tmux sessions.

One window for every Codex and Claude Code chat, across every project, on your Mac and your servers. Close the laptop, and they keep going.

Before
  1. $ ssh gpu-boxyour servers
  2. $ cd ~/vision-trainanother project
  3. $ tmux new -s sweepso it survives closing the lid
  4. $ claudeor codex, depending on the job
  5. …repeat for every task…
  6. $ tmux ls
  7. 11 sessions. Which one needed you?

After

Harbor with four projects, two on remote servers, and a Codex chat split beside a Claude Code chat asking for approval.

Hand off the work. Close the laptop.

Your agents keep going. Every chat runs in tmux on its own machine, and Harbor just attaches.

This Mac
build-01
gpu-box

Come back only when you’re needed.

Every chat shows what it’s doing. Notifications and ⌘J take you to the one that needs you.

  • Working
  • Needs input
  • Background job
  • Done
Folded tab groups and an overview of open chats: one needs input, others are working or waiting on background jobs.

Tabs that work like your browser.

Groups, split view and focus mode. Habits you already have, now for your agents.

Every machine, one sidebar.

Projects on your Mac and over SSH, side by side. Hosts come straight from your SSH config.

The sidebar with projects on this Mac, on build-01 and on gpu-box.

Everything else you’d want

The New chat dialog: choose Codex, Claude Code or Terminal, and a permission mode.
Codex and Claude CodePick the agent and permission mode for each chat.
Agent versions on each machine, with updates available on build-01.
Agent updatesKeep both agents current on every machine.
Dragging a file onto a chat: Drop files or folders to insert their paths.
Drag and dropDrop a file on a remote chat and it’s copied over. No more scp.
A formatted note: a heading, italic text, prioritized to-dos, a code block and a bullet.
Notes and to-dosMarkdown notes with headings, code and checklists, on any chat or project.
Find in scrollback, with matches highlighted: 4 of 5.
Search⌘K for chats, ⌘F for scrollback.
The chat menu with Rename chat, Pin chat and Fork chat, next to a pinned chat.
Rename, pin and forkForking runs the agent’s own fork command.

Get started

  1. curl -fsSL https://spsharan.com/harbor-app/install.sh | bash
  2. brew install tmux on your Mac and servers
  3. Sign in to Codex or Claude Code

macOS on Apple Silicon. Servers need tmux 3.2+, Python 3.8+ and key-based SSH. Harbor keeps itself up to date.

Prefer a disk image? Download the .dmg; Harbor isn’t notarized, so macOS makes you choose Open Anyway in System Settings → Privacy & Security on first launch.