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, and zoxide from the file manager workflow.
  • Custom behavior: configure openers, keymaps, themes, previewers, preloaders, and plugins.
  • Companion automation: use ya for 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.

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