Some tools are not self-hosted services, but they still belong in a good home-lab or developer workflow.
Yazi is one of those tools. It is a terminal file manager for people who already spend a lot of time in shells, SSH sessions, project folders, servers, and dotfiles.
Yazi is a fast terminal file manager written in Rust, based on non-blocking async I/O.
Yazi GitHub Source Code Yazi Website Yazi Installation Docs License: MIT ❤️
What is Yazi?
Yazi is a native terminal file manager. Think of it as the part of your workflow between cd, ls, tree, find, ripgrep, and a graphical file manager.
It gives you a navigable terminal UI with previews, tabs, selections, open rules, search, archive handling, image preview support, a plugin system, and a companion CLI called ya.
The important distinction for this site: Yazi is not a Docker Compose application, and it is not something you expose through a reverse proxy.
You install it on the machine where you work.
That might be your laptop, your workstation, a dev container, or a server you access over SSH.
Why Use Yazi?
Yazi is useful when you want file management to stay close to the terminal.
- Fast navigation: move through project folders without repeatedly typing paths.
- Useful previews: inspect text, code, images, archives, PDFs, videos, and directories from one interface.
- Async behavior: file operations and previews are designed around non-blocking work.
- Shell integration: use tools such as
fd,ripgrep,fzf, andzoxidefrom the file manager workflow. - Custom behavior: configure openers, keymaps, themes, previewers, preloaders, and plugins.
- Companion automation: use
yafor packages, cache, events, and cross-instance control.
If you already like terminal-first tools such as tmux, fzf, ripgrep, lazygit, or btop, Yazi fits that mental model.
Tech Overview of Yazi
Yazi is a Rust workspace made of many yazi-* crates.
The two binaries most users care about are:
| Binary | Role |
|---|---|
yazi |
The interactive terminal file manager |
ya |
Companion CLI for packages, cache, events, and actions |
The repo has a clean split between terminal UI, core state, config parsing, scheduling, plugins, file operations, VFS, and companion CLI behavior.
Some of the more interesting areas:
| Area | What it does |
|---|---|
yazi-fm |
Main terminal file manager binary |
yazi-cli |
ya command-line companion |
yazi-core |
App state, tabs, manager behavior, previews, input, notifications |
yazi-config |
TOML config, keymaps, themes, open rules, presets |
yazi-scheduler |
Async task scheduling for files, plugins, preloaders, processes, and hooks |
yazi-dds |
Data distribution service for cross-instance communication |
yazi-plugin |
Lua plugin integration |
yazi-vfs / yazi-sftp |
Virtual and remote filesystem pieces |
The architecture explains why Yazi feels different from older terminal file managers. It is not just a screen loop with a list of files. It has worker pools for file tasks, plugin work, MIME fetching, preload tasks, subprocesses, hooks, and size calculations.
Installing Yazi on Ubuntu
Yazi now documents an official APT repository for Debian and Ubuntu users, with stable and nightly builds for amd64 and arm64.
For the stable channel:
curl -fsSL https://yazi-rs.github.io/builds/yazi-keyring.gpg | \
sudo tee /usr/share/keyrings/yazi-keyring.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/yazi-keyring.gpg] https://yazi-rs.github.io/builds/ stable main' | \
sudo tee /etc/apt/sources.list.d/yazi.list >/dev/null
sudo apt update
sudo apt install yazi
Then check both binaries:
yazi --version
ya --version
Yazi also supports Arch, Nix, Homebrew, MacPorts, Snap, Flatpak, GitHub binaries, Cargo, and source builds.
For a general Linux workstation setup, see the Linux Setup 101 checklist.
Optional Dependencies for Better Previews
Yazi itself is the file manager, but some preview and navigation features depend on external command-line tools.
Common optional tools include:
sudo apt install ffmpeg 7zip jq poppler-utils fd-find ripgrep fzf zoxide imagemagick
Exact package names vary by distribution. On Ubuntu, fd-find usually exposes the command as fdfind.
The upstream install docs also mention file as a prerequisite for file type detection.
First Commands to Learn
Launch Yazi in the current folder:
yazi
Launch it somewhere specific:
yazi ~/Downloads
Use ya to inspect companion features:
ya --help
ya pkg --help
ya cache --help
The default navigation is familiar if you already use Vim-style tools:
| Key | Action |
|---|---|
j / Down |
Move down |
k / Up |
Move up |
l / Right |
Enter directory |
h / Left |
Go to parent directory |
Space |
Toggle selection |
v |
Enter visual selection mode |
y |
Copy selected files |
x |
Cut selected files |
p |
Paste |
d |
Move to trash |
r |
Rename |
. |
Toggle hidden files |
s |
Search file names with fd |
S |
Search file contents with ripgrep |
z |
Jump with fzf |
Z |
Jump with zoxide |
q |
Quit |
Configuration Model
Yazi configuration is split into three main files:
| File | Purpose |
|---|---|
yazi.toml |
General configuration |
keymap.toml |
Keybindings |
theme.toml |
Colors and visual theme |
The upstream repo ships default presets, which makes customization easier because you can copy only the part you want to override.
A small practical example:
[mgr]
show_hidden = true
sort_by = "mtime"
sort_reverse = true
sort_dir_first = true
Use this kind of config when you want project folders to show recent files first and dotfiles by default.
Plugins, Themes, and ya pkg
Yazi has a package manager built into the ya companion CLI:
ya pkg --help
The package commands cover:
- adding packages
- deleting packages
- installing configured packages
- listing packages
- upgrading packages
This matters because Yazi is not only a binary you install once. It is closer to a configurable terminal workspace where plugins and flavors can become part of your dotfiles.
Field Note: Local Smoke Test
I tested Yazi locally on 2026-08-29.
Environment:
| Item | Result |
|---|---|
| OS | Ubuntu, kernel 7.0.0-30-generic, x86_64 |
yazi |
26.8.15 (1f3588d 2026-08-15) |
ya |
26.8.15 (1f3588d 2026-08-15) |
| Upstream clone | /tmp/yazi-fosspost.qGaMYJ at commit faa20df |
These checks worked:
yazi --version
ya --version
ya pkg --help
ya cache --help
I also launched Yazi against the cloned repository with a bounded terminal test:
LINES=40 COLUMNS=120 script -q -c 'timeout 3s yazi /tmp/yazi-fosspost.qGaMYJ' /tmp/yazi-fosspost-launch-sized.log
That rendered the Yazi interface, showed the repo folders, and then exited via timeout.
One caveat from the test: launching through a pseudo-terminal without dimensions failed with:
failed to get terminal dimension with both ioctl and $LINES/$COLUMNS variables
That is not a normal interactive terminal problem. It is a useful reminder that TUI tools expect a real terminal with dimensions.
Yazi vs Ranger, lf, nnn, and GUI File Managers
Yazi sits in a familiar category, but its design priorities are different.
| Tool | Best Fit |
|---|---|
| Yazi | Modern Rust terminal file manager with async I/O, previews, Lua plugins, tabs, package management |
| Ranger | Classic Python terminal file manager with a long-lived ecosystem |
| lf | Small Go terminal file manager with simple configuration |
| nnn | Very fast minimal terminal file manager |
| Midnight Commander | Dual-pane terminal file manager with an old-school workflow |
| Nautilus / Dolphin / Thunar | Graphical desktop file management |
Pick Yazi if you want the terminal workflow, but you still care about rich previews, modern terminal graphics, tabs, mouse support, and a plugin system.
Pick a graphical file manager if you mainly work through drag-and-drop desktop workflows.
Where Yazi Fits in a Home-Lab Workflow
Yazi is useful on the boring machines too.
On a local workstation, it helps with project navigation, screenshots, downloads, media folders, and dotfiles.
On a server, it can make SSH file inspection less painful, especially when paired with tmux.
In a development workflow, it pairs naturally with:
The clean mental model is this: Docker runs services, tmux keeps terminal sessions alive, Herdr helps supervise agent-heavy terminal work, and Yazi helps you move through the filesystem without leaving the terminal.
Conclusion
Yazi is one of those tools that looks small until it replaces dozens of tiny context switches.
It will not replace every graphical file manager, and it is not trying to be a self-hosted file browser like FileBrowser or Nextcloud Files.
But for terminal-first users, it gives file browsing a faster, more visual, and more extensible shape.
If you already live in ssh, tmux, ripgrep, fzf, and project directories, Yazi is worth trying for a week.
FAQ
Is Yazi self-hosted?
No. Yazi is a native terminal application. You install it on your laptop, workstation, server, or development environment.
It does not expose a web interface and it does not need Docker Compose.
Can I use Yazi over SSH?
Yes. Yazi is a terminal application, so it can run in an SSH session.
Your experience depends on the remote terminal, fonts, optional preview tools, and whether the terminal supports the image protocol you want to use.
Does Yazi replace tmux?
No. Yazi manages files. tmux manages terminal sessions, panes, and detach/reattach workflows.
They are complementary: run Yazi inside a tmux pane when you want file navigation inside a persistent terminal session.
Does Yazi need Nerd Fonts?
Nerd Fonts are recommended for a nicer icon experience, but the file manager is not only about icons.
If symbols look broken, start by checking your terminal font before changing Yazi itself.
Is the Flatpak version recommended?
The upstream docs warn that the Flatpak edition has limitations because of sandboxing.
It can be useful for trying the app, but power users may prefer the official APT repository, distro package, Homebrew, Nix, or release binary path depending on their system.
Comments