Skip to content

Installation

luvus ships as a single static binary (~3 MB) with no runtime dependencies. Pick whichever channel you prefer:

Terminal window
curl -fsSL https://luvus.dev/install.sh | sh

Downloads the right prebuilt binary for your OS/arch from GitHub releases and puts it on your PATH (/usr/local/bin or ~/.local/bin). macOS builds ship for both Apple silicon and Intel; Linux for x86_64 and arm64.

Terminal window
luvus doctor

doctor probes the optional tools luvus integrates with and tells you what each unlocks:

ToolUnlocks
gitthe git tab · worktrees · orchestration workers
gh (authenticated)PRs, issues, and PR detail in the git tab
sshremote sessions (luvus --remote host)

None are required for the core multiplexer: panes, tabs, agents, and resume all work without them.

Live agent status and session resume work with zero setup. For precise session ids and lifecycle events used by sound alerts and module automation, install the integration hook for your agent:

Terminal window
luvus integration install claude # or: copilot · codex · opencode

Also available from Settings → Integrations inside luvus. luvus integration uninstall <agent> removes only luvus’s hook and never touches the agent itself.

Use one command to check first and install only when a newer release exists:

Terminal window
luvus update

Direct macOS and Linux installs are downloaded from the matching GitHub Release, checked against its published SHA-256 digest, and replaced only after the downloaded binary reports the expected version. Homebrew and Cargo installs update through their package manager. Nix and Linux system packages are never overwritten; the command reports the matching package-manager action instead. On Windows it checks for the release, then prints the PowerShell installer command because Windows cannot replace the executable while it is running.

The running server is left alone so active panes are not interrupted. After a successful update, reload it when you are ready:

Terminal window
luvus server restart # your session is saved and restored

Development binaries under target/debug or target/release are never overwritten by luvus update. Rebuild those from source instead.

Luvus is the new name and binary for Bohay. Install Luvus, then run the migration from a normal terminal outside Bohay so the script can safely stop the old server and its panes:

Terminal window
curl -fsSL https://luvus.dev/install.sh | sh
curl -fsSL https://luvus.dev/migrate.sh | sh
luvus

The script stops default and named Luvus/Bohay servers, preserves an existing ~/.luvus/ directory as a timestamped backup, then lets Luvus copy durable state from ~/.bohay/. It carries over settings, session snapshots, named sessions, manifests, module configuration, and orchestration data. It deliberately skips sockets, locks, the old managed skill cache, and worktrees/. Existing worktree paths still work because the Bohay directory is never moved or deleted.

Migration is copy-only and supports the default homes. It refuses to run inside a Bohay/Luvus pane or when LUVUS_HOME or BOHAY_HOME is explicitly set. If a Bohay server is still reachable, the previous Luvus state is restored and the script exits without discarding data. Keep ~/.bohay/ until you have verified your workspaces and agents, then archive or remove it yourself.

During the 0.11.x transition, Luvus accepts the old BOHAY_* input variables when the matching LUVUS_* variable is absent. Panes and modules receive both variable families so existing automation continues working while it migrates.

Everything lives in ~/.luvus/ (override with $LUVUS_HOME): your configuration, the auto-saved session snapshot, and the orchestration ledger. The directory is created owner-only (0700).

The default session keeps its files directly in this directory. Named server sessions store their runtime files under ~/.luvus/sessions/<name>/. Preferences, manifests, skills, and module installations remain shared.