Install
curl -fsSL https://raw.githubusercontent.com/bnema/vev/main/install.sh | sh
# Arch Linux: yay -S vev-bin
# or: go install github.com/bnema/vev@latest
Releases support Linux x86_64/arm64 and macOS Apple silicon.
Usage
vev create an ephemeral session
vev new <name> create a named session
vev attach <name> attach to a local session (alias: a)
vev attach user@host[:session] attach to a remote daemon
vev ls [<host>|--all] list sessions
vev host add|rm <host> manage remote hosts
vev host list list remote hosts
vev kill <name>|--all kill sessions
The daemon starts on first use and exits after the last session. Numbered sessions survive detach; named sessions also survive daemon restarts. See durable-session recovery.
[!NOTE]
A release that bumps vev's protocol version resets named sessions saved by an older protocol. Session names are retained, but layouts, tabs, terminal history, recovery transcripts, and process-recovery state are discarded. Each local or remote daemon applies this reset to its own sessions when it first starts with the new protocol.
Keys and palette
No prefix key; bindings use Alt.
| Key |
Action |
| Alt+Space |
command palette |
| Alt+f |
floating terminal |
| Alt+1 … 9 |
switch tab |
| Alt+h/j/k/l or Alt+Arrow |
focus pane |
| Alt+a |
jump to a session needing attention |
Type a code or fuzzy-search the palette. Common default codes:
| Code |
Action |
Code |
Action |
CNT |
new tab |
CNS |
new named session |
SPR / SPL |
split right / left |
SPU / SPD |
split up / down |
STP / TFS |
stack / toggle stack |
TFP |
floating terminal |
MFP / MAT |
move pane / tab |
SSP |
session picker |
DET |
detach |
NTC |
notifications |
Scroll up to enter copy mode; use vim motions, v to select, and y to copy. All codes and bindings are configurable in configuration.
Remote attach
vev attach user@host[:session]
SSH bootstraps an authenticated direct UDP connection that resumes after sleep or network changes. Set VEV_REMOTE_TRANSPORT=stdio to use SSH only. The remote host needs vev installed; see remote resilience for firewall, transport, and host-list details.
Scripting
vev cmd controls a running daemon without starting one:
vev cmd split-right
vev cmd toast -l warn "build failed"
vev cmd list-panes --json
Use vev cmd --help for commands and targeting options.
Documentation
Development
make test # go test ./... -race
make lint # goimports check, go vet
make mocks # regenerate mocks
make demo # regenerate docs/assets/demo.gif (needs Docker)
source
1<h1 align="center">vev</h1>
2
3<p align="center">
4 <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" alt="License: MIT"></a>
5 <a href="https://github.com/bnema/vev/releases"><img src="https://img.shields.io/badge/platforms-Linux%20%7C%20macOS-blue?style=flat-square" alt="Platforms: Linux and macOS"></a>
6 <a href="https://github.com/bnema/vev/commits/main"><img src="https://badgen.net/github/last-commit/bnema/vev/main?icon=github" alt="Last commit"></a>
7 <a href="https://github.com/bnema/vev/stargazers"><img src="https://badgen.net/github/stars/bnema/vev?icon=github" alt="GitHub stars"></a>
8</p>
9
10<p align="center"><em>Norwegian: to weave</em></p>
11
12<p align="center">A terminal multiplexer for Linux and macOS.<br>
13Like tmux, minus the prefix key. Like mosh, minus mosh. One binary.</p>
14
15<p align="center"><img src="docs/assets/demo.gif" alt="vev demo: local and remote sessions, splits, stacked panes, floating window, notifications, detach and re-attach" width="800"></p>
16
17---
18
19## Install
20
21```sh
22curl -fsSL https://raw.githubusercontent.com/bnema/vev/main/install.sh | sh
23# Arch Linux: yay -S vev-bin
24# or: go install github.com/bnema/vev@latest
25```
26
27Releases support Linux x86_64/arm64 and macOS Apple silicon.
28
29## Usage
30
31```text
32vev create an ephemeral session
33vev new <name> create a named session
34vev attach <name> attach to a local session (alias: a)
35vev attach user@host[:session] attach to a remote daemon
36vev ls [<host>|--all] list sessions
37vev host add|rm <host> manage remote hosts
38vev host list list remote hosts
39vev kill <name>|--all kill sessions
40```
41
42The daemon starts on first use and exits after the last session. Numbered sessions survive detach; named sessions also survive daemon restarts. See [durable-session recovery](docs/durable-session-recovery.md).
43
44> [!NOTE]
45> A release that bumps vev's protocol version resets named sessions saved by an older protocol. Session names are retained, but layouts, tabs, terminal history, recovery transcripts, and process-recovery state are discarded. Each local or remote daemon applies this reset to its own sessions when it first starts with the new protocol.
46
47## Keys and palette
48
49No prefix key; bindings use Alt.
50
51| Key | Action |
52|---|---|
53| Alt+Space | command palette |
54| Alt+f | floating terminal |
55| Alt+1 … 9 | switch tab |
56| Alt+h/j/k/l or Alt+Arrow | focus pane |
57| Alt+a | jump to a session needing attention |
58
59Type a code or fuzzy-search the palette. Common default codes:
60
61| Code | Action | Code | Action |
62|---|---|---|---|
63| `CNT` | new tab | `CNS` | new named session |
64| `SPR` / `SPL` | split right / left | `SPU` / `SPD` | split up / down |
65| `STP` / `TFS` | stack / toggle stack | `TFP` | floating terminal |
66| `MFP` / `MAT` | move pane / tab | `SSP` | session picker |
67| `DET` | detach | `NTC` | notifications |
68
69Scroll up to enter copy mode; use vim motions, `v` to select, and `y` to copy. All codes and bindings are configurable in [configuration](docs/configuration.md).
70
71## Remote attach
72
73```sh
74vev attach user@host[:session]
75```
76
77SSH bootstraps an authenticated direct UDP connection that resumes after sleep or network changes. Set `VEV_REMOTE_TRANSPORT=stdio` to use SSH only. The remote host needs vev installed; see [remote resilience](docs/remote-resilience.md) for firewall, transport, and host-list details.
78
79## Scripting
80
81`vev cmd` controls a running daemon without starting one:
82
83```sh
84vev cmd split-right
85vev cmd toast -l warn "build failed"
86vev cmd list-panes --json
87```
88
89Use `vev cmd --help` for commands and targeting options.
90
91## Documentation
92
93- [Configuration](docs/configuration.md): bindings, palette, theme, overlays, and bar anchors
94- [Terminal compatibility](docs/terminal.md)
95- [Remote resilience](docs/remote-resilience.md)
96- [Durable session recovery](docs/durable-session-recovery.md)
97- [Performance](docs/performance.md)
98
99## Development
100
101```sh
102make test # go test ./... -race
103make lint # goimports check, go vet
104make mocks # regenerate mocks
105make demo # regenerate docs/assets/demo.gif (needs Docker)
106```