Persistent terminal sessions
for GPU machines.
A native macOS terminal for managing remote VMs, sessions, and AI agents. The replacement for SSH + tmux.
$ claude
Orchestrating 4 sessions across 2 machines...
a100-box: training-run epoch 34/50 loss=0.0018
a100-box: eval-sweep checkpoint-34 acc=94.2%
h100-cluster: finetune-13b 73% ETA 1h48m
h100-cluster: tensorboard serving :6006
$
/home/user/research
experiments/
checkpoints/
data/
train.py
eval.py
config.yaml
requirements.txt
1import torch
2from model import TransformerLM
3
4def train(config):
5 model = TransformerLM(config)
6 optimizer = torch.optim.AdamW(
7 model.parameters(),
8 lr=config["lr"],
9 )
10
11 for epoch in range(config["epochs"]):
12 loss = train_epoch(model)
13 print(f"epoch {epoch} loss={loss:.4f}")
a100-box 10.0.1.42 up 14d 7h
CPU
23%
Memory
61% — 78.2 / 128 GB
GPU 0 — A100 80GB
94% util — VRAM 71.2 / 80 GB — 62°C
training-runpython train.py — 68.4 GB
GPU 1 — A100 80GB
78% util — VRAM 54.1 / 80 GB — 58°C
eval-sweeppython eval.py — 51.2 GB
GPU 2 — A100 80GB
2% util — VRAM 0.4 / 80 GB — 34°C
idle
⌘B
- Persistent sessions Close your laptop, lose WiFi, reboot. Sessions keep running on the remote machine. Reconnect and pick up where you left off, full scrollback intact.
- GPU-accelerated terminal WebGL rendering via xterm.js. Native scrolling and keybindings. Built on Tauri and Rust — not Electron.
- Live GPU monitoring Real-time CPU, memory, GPU utilization, VRAM, and temperature for every connected host. See which Haven session owns each GPU process.
- AI agent orchestration Install the MCP bridge on any local session and give an AI agent control over your other terminals. One orchestrator, many sessions, many machines. view in docs →
- Split layouts Side-by-side columns, 2x2 grids, focus+sidebar. Drag session tabs into any grid slot. view in docs →
- Remote file browser Browse, edit, upload, and download files over SFTP. Syntax-highlighted editor built in. Opens in the session's working directory.
- Open-source daemon Haven auto-deploys a ~4MB daemon to your remote hosts. It manages PTY sessions, persists state across disconnects, and encrypts all IPC. Fully open source.
- Video and audio streaming Stream video and audio from remote machines.
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?
- Local sessions are standard shell processes on your Mac. They persist while Haven is running but won't survive an app restart. Remote sessions are the ones that stay alive on the other end.
- How does the AI orchestrator work?
- Right-click a local session and select "Install Orchestrator MCP." The AI agent running in that specific session gets access to
list_sessions,read_terminal, andwrite_terminal— it can see and control every other Haven session, local and remote. - What does the remote host need?
- Linux (x86_64 or ARM64) with SSH access. That's it. Haven detects the architecture and uploads the correct daemon binary on first connect.
- Is this a tmux wrapper?
- No. Haven runs its own daemon with native PTY management and encrypted IPC. The terminal is GPU-accelerated via WebGL. It's what tmux + SSH would look like if you rebuilt it as a native app.
- Is the daemon open source?
- Yes. The daemon that runs on your remote machines is fully open source at github.com/christiansafka/haven-daemon. You can audit exactly what runs on your infrastructure.
Your workspace should be beautiful.