Skip to content

Repository files navigation

vev

License: MIT Platforms: Linux and macOS Last commit GitHub stars

Norwegian: to weave

A minimal, remote friendly terminal multiplexer for Linux and macOS.

vev demo: local and remote sessions, splits, stacked panes, floating window, notifications, detach and re-attach


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. Exiting the final shell removes that session and returns to the most recently used session; with no previous session, vev exits. 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

In the session picker, press / to fuzzy-search session names, hosts, tab names, and tab details; use Arrow keys or Ctrl+n/Ctrl+p to move between matches. Escape clears the query, and a second Escape leaves search.

When a client is attached to both a local and a remote daemon, CNS and CNS <name> list eligible daemon destinations in the existing palette. If two or more destinations exist, choose one explicitly with Up or Down before pressing Enter. The unqualified choice appears only when the client has an exact local route; remote choices remain host-qualified. A direct remote start without a proven local route never labels its home route as local.

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)

About

Tiny and remote friendly terminal multiplexer in pure Go.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages