roziv0.0.27Docstui-lipan ↗SponsorGitHub ↗

Tiling terminal multiplexer

rozi

Your terminals, tiled like a window manager.

rozi arranges panes as you open them, keeps named sessions running after you leave, reaches other machines over SSH, and shows which coding agents need you. Change any of it live, from inside rozi. On Linux, macOS, and Windows.

For Linux and macOS. Installs the current release and links ~/.local/bin/rozi.

rozi
1 ·3
2 ·3
3
4
5
∞ dev
ActivityPanesSessions
rozimaster
●Claude Code1
Refactoring layout engine
○OpenCode1
Idle
●OpenCode1
Smoke test · 10s wait
●Claude Code2
Waiting for approval
FilesGitWorktrees
~/Work/Projects/rozi
› assets
› benches
› docsM
› srcM
› testsM
› README.md
❐zsh
a3f19c2 layout: cache the tiling tree
7be04d1 workbar: workspace badges
e2c0b8f agents: detect blocked state
✳︎ Claude Code v2.1.228
Opus 5 · high effort · Claude Pro
~/Work/Projects/rozi
❯refactor the layout engine
⏺ Edit(src/layout/mod.rs)
⎿ +42 −18 · tiling pass split out
⏺ Bash(cargo clippy)
⎿ 0 warnings · 42 suites green
⏺ Done — tiling pass is out
of mod.rs.
- layout/mod.rs: split and
resize share one solve pass.
- layout/tree.rs: rebalance is
incremental — O(depth) now.
Tree is clean; cargo test passes.
✳︎ Sautéed for 2m 49s
❐~
opencode 1.18.16
loading workspace · 2 MCP servers
read ../tui-lipan/AGENTS.md
21:45 · 8/11/2026
+ Thought: 190ms
I'll read ../tui-lipan/AGENTS.md from the workspace.
→ Read ~/Work/Projects/tui-lipan/AGENTS.md
▣ Skein · Grok 4.5 · 4m 51s · done
❐~
Claude Code v2.1.228
Opus 4.6 with high effort · ~/Work/Projects/rozi
❯fix the pane focus race in tree.rs
⏺ Edit(src/layout/tree.rs)
rozi
tiling terminal multiplexer
  • 7layouts
  • 31themes
  • 123rebindable commands
  • 23agents detected
  • 3supported platforms

Included features

All of it works out of the box

Panes arrange themselves

Each new pane splits the focused one along its longer side, so the screen stays balanced without dragging borders. Switch between seven layouts, float a pane, or fill the screen with one key.

Layouts and panes →

Sessions keep running

Detach and your shells, editors, and servers carry on. Come back later, from another window, to the same panes and scrollback. After a reboot, rozi restores the layout, the commands, and their history.

Sessions →

Other machines over SSH

rozi --remote devbox opens a session on another machine, installs rozi there if you allow it, and reconnects after a dropped link. Remote sessions are listed next to local ones.

Remote sessions →

Coding agents at a glance

rozi reads what coding-agent CLIs draw and marks each pane working, blocked, or finished, on its border, its workspace tab, and in the sidebar. 23 agents are built in, and you can add your own.

Agent detection →

Change it live

Themes, frames, layouts, and keys change from inside rozi, previewed as you browse. Your choice is saved to config.toml, and an edit to the file applies the moment you save it.

Customize rozi →

A complete terminal in every pane

True color, inline images, mouse support, scrollback search, and a vi-style copy mode. With shell integration, new panes open in the directory you are working in.

Terminal features →

Make it yours

Previewed live · saved to config.toml · no restart

Open Settings and move through a list: the theme, the pane frames, or the layout change behind the picker as you go. Enter keeps a value and writes it to config.toml; Esc puts the old one back.

Every tab here is the same workspace. Only the lines under the picture differ, and the programs in the panes pick up the theme too.

Customize rozi →31 themes →
[theme]
name = "rozi"

Rebind keys without a manual

Ctrl+A then ? lists every key in effect. Pick a command, press the new chord, and rozi shows it before saving, including any command that already uses it. The binding works the moment you confirm.

The prefix and the held modifier are rows in the same list, so moving from Alt to Super takes one change.

Edit keybindings →

First five minutes

Every command works two ways: press the prefix, then a key, or hold Alt and press the key. Rebind either, or hold Super instead.

Prefix, then a keyHold Alt
Ctrl+AEnterAlt+EnterOpen another pane
Ctrl+Ah j k lAlt+H…LMove focus by direction
Ctrl+AfAlt+FFullscreen the focused pane
Ctrl+AtAlt+TFloat the pane on top
Ctrl+A1…9Alt+1…9Jump to a workspace
Ctrl+ApAlt+PSearch every command
Ctrl+A?Alt+?Show and edit every key
Ctrl+AdAlt+DLeave; named sessions keep running
Full key reference →

Configuration file

Everything Settings changes lives in one file, ~/.config/rozi/config.toml on Linux and macOS. rozi applies it when you save, without closing a pane, and a mistake never takes it down: a bad value falls back to its default with a warning.

[theme]
name = "catppuccin-mocha"

[input]
prefix = "ctrl-a"           # the key that starts a command
modifier = "alt"            # or "super"

[layout]
default = "dwindle"         # how new workspaces arrange panes

[pane]
border_style = "rounded"
Every setting →

Configuration examples

One file · live reload · 123 rebindable commands

[theme]
name = "catppuccin-mocha"   # a preset, "system", or your own file

[pane]
border_mode = "merged"      # neighbours share one seam
border_style = "rounded"    # plain, double, thick
titlebar = "integrated"
workbar_powerline = true
padding = [0, 1]

[animations]
pane_style = "slide"        # or "scale"
geometry_ms = 220

Configure presets, custom theme files, borders, titlebars, and animation timing.Reference →

Extensions are ordinary programs

Any language · public protocol · api = 1

  1. rozi extensions newscaffold
  2. rozi extensions checkvalidate
  3. rozi run-action reload-extensionsinstall
  4. rozi extensions listconfirm
[extension]
id = "git-tools"
title = "Git tools"
version = "0.1.0"
api = 1

[[commands]]
id = "branches"                 # invoked as git-tools.branches
label = "Switch branch"
exec = ["python", "{extension_dir}/bin/branches.py"]

[[services]]
name = "watch"
exec = ["./bin/watch", "--json"]
restart = "on-failure"

Public commands

rozi pick
Opens a searchable picker and returns the selected value
rozi publish
Publishes actionable rows in the Activity sidebar
rozi subscribe
Streams events to a long-running process
rozi notify
Shows a toast for a result produced off screen
rozi run-action
Runs a built-in, user-defined, or extension command

Worked examples

Write an extension →

Screenshots and recordings

For agents, scripts, demos, and bug reports

rozi capture-ui returns the screen as rozi drew it: every pane, border, and overlay, and the images programs displayed. rozi capture-pane does the same for one pane, and works on a detached session too. Ask for plain text, ANSI, or a PNG, so a coding agent can look at what it is working in.

rozi record keeps a pane's screen over time, change by change. The session records it, so it carries on after you detach: review in the morning what an agent did overnight. Record the whole window instead for a demo, then replay it in a terminal or export a GIF, a video, or an asciinema cast.

# one pane, as text with its colors
rozi capture-pane --target 3 --render ansi
# record this pane, label a moment, stop
rozi record start --output ~/demo.rozirec
rozi record mark "tests started"
rozi record stop
# watch it back, or turn it into frames
rozi record play ~/demo.rozirec --speed 2
rozi record export ~/demo.rozirec --to png-frames frames
Capturing the screen →Recording →
Recorded by rozi itself.

Feature index

Everything in v0.0.27

Window management

Layouts and panes →

Seven layoutsshape-aware splitsfloatingfullscreenmove, swap, and promoteresize modenine workspacesmerged bordersgaps and paddingscratchpadanimations

The terminal itself

Terminal features →

True colorinline imagesmouse reportingscrollback searchvi copy modeclipboard and OSC 52hintsedit scrollbackshell integrationpane loggingsynchronized typing

Sessions and sharing

Sessions →

Named sessionstemporary sessionsseveral windows per sessionshared sessionsremote over SSHrestore after rebootautosaveprofilessession picker

Look and feel

Customize rozi →

31 themessystem themelive reloadhost terminal colorsworkbar segmentspowerline capstitlebar stylessidebar tabsSettings with live previewkeybinding editorattention alertsnotifications and sounds

Control socketpickpublishsubscribenotifyrun-actioncapture-panecapture-uiPNG and ANSI screenshotspane and UI recordingGIF, video, and cast export18 hook eventsservicesuser commandsextensionsagent skillVim and Neovim navigation

How it ships

Installation →

Linux, macOS, and Windowsnative executables with no separate runtimesigned releasesmanaged updatesrollbackpublished benchmarksprivate control socketsMPL-2.0

Documentation

34 pages, all in the repository