One terminal for your
machines and agents.

A Mac-native terminal that treats remote machines as first-class. Persistent sessions, real scrollback, a file tree, and a built-in editor — across every box you work on.

Download for Mac Free · macOS · 31 MB
agents
training
eval
ML Research
watching refactor-auth waiting on you 38% main · 4

Today

  1. prompt11:42 AM

    migrate the auth middleware off legacy session decode

  2. command11:42 AM
    rg -l "legacyDecode" src/
  3. edit11:43 AM
    41 export async function authenticate(req)
    42- const token = req.cookies.get("session");
    43- return legacyDecode(token);
    42+ const session = await sessionStore.fromRequest(req);
    43+ if (!session?.userId) return null;
    44+ return session;
    45
  4. recap11:43 AM

    Migrated auth/middleware.ts + 47 call sites. Tests pass. Should I migrate the legacy /v1 endpoints too?

~/research
$ python train.py --epochs 50
epoch 34/50 loss=0.0018 lr=2e-5
epoch 35/50 loss=0.0017 lr=2e-5
$
~/projects/web
$ pnpm dev
VITE v5 ready in 412 ms
→ http://localhost:5173
$
h100-vm ~/finetune
$ tail -f run.log
step 12400 ppl=4.21
step 12500 ppl=4.18
step 12600 ppl=4.16
~/dotfiles
$ nvim .zshrc
"~/.zshrc" 142L, 3.4K
$
⌘ →

Every machine you SSH into, in one window

Sessions on remote hosts keep running when your laptop sleeps or loses WiFi — reconnect and pick up with full scrollback. Local shells and remote hosts share the same UX.

⌘K command generation

Press ⌘K, describe what you want, get the command. Generated inline in the terminal — review, edit, run.

Claude renders in the file panel

Claude Code in Haven uses a built-in MCP (haven-display) to open files, diffs, images, or videos from remote paths directly in the file panel.

Native speed

Built native on Tauri + Rust, not Electron. GPU-accelerated rendering, light on memory, quiet in Activity Monitor. 31 MB app, ~4 MB remote daemon.

File browser and editor

Browse, edit, upload, and download over SFTP. Syntax-highlighted editor, keyboard-navigable tree, opens in the session's working directory.

Live machine monitoring

Real-time CPU, memory, GPU utilization, VRAM, and temperature per host. See which Haven session owns each GPU process.

FAQ

How does session persistence work?

Haven runs a lightweight open-source daemon on each remote host that manages PTY sessions independently of your SSH connection. When you disconnect, sessions keep running. When you reconnect, Haven reattaches and restores scrollback.

Do local sessions persist?

The shell process itself is destroyed when Haven quits, but the session is still there when you come back — Haven remembers the working directory and recent scrollback so you can pick up right where you left off. Remote sessions are the ones whose processes actually keep running on the other end.

What does the remote host need?

Linux (x86_64 or ARM64) with SSH access. Haven detects the architecture and uploads the daemon binary on first connect.

Is my data private?

Yes. We don't see your terminals. Haven runs entirely on your machines — there's no Haven-operated backend that your sessions pass through, so your output, commands, and credentials never reach us. The only exception is opt-in AI features (like host nicknames or agent-response summaries), which send a small amount of data through a Haven backend to a third-party model; we don't store those requests, and the model provider won't train on them. Beyond that, we collect basic anonymous product analytics (app starts, feature usage, crash reports) and nothing else. Full details on the Privacy page.

Is the daemon open source?

Yes. It runs natively on your remote machines with its own PTY management — no tmux, no shell wrapping. Haven talks to it through your existing SSH session, so the network path is whatever SSH gives you.

Your workspace should be beautiful.

Download for Mac Free · macOS · 31 MB

Get in touch

Question, bug report, or feature request — we read everything.