![]() Warp, built for coding with multiple AI agents Available for macOS, Linux and Windows |
|---|
Open Yasa is Hasna's public fork of Yazi. It keeps Yazi's async terminal file manager core and adds an Open Machines-aware entry layer for browsing across local and remote machines.
This fork intentionally stays close to upstream Yazi. The Hasna Open Yasa distribution is licensed under Apache-2.0; the upstream Yazi MIT license text is preserved in LICENSE-MIT, and upstream authorship remains credited in this repository's history and package metadata.
When Open Yasa starts without an explicit path, it opens a top-level machine chooser before normal file browsing. Each entry shows the Open Machines slug, friendly/display name when available, route kind, status, and platform.
- Local machine entries enter the current working directory through the real local filesystem, so local browsing remains the normal Yazi fast path.
- Remote machine entries enter
sftp://<machine-id>/...; the SFTP service is resolved dynamically through themachines routecommand from@hasna/machineswhen it is installed and configured. - Remote file operations use Yazi's existing SFTP provider. Listing, reading, writing, copy, move, rename, delete, and symlink behavior are available only when the resolved SSH/SFTP route authenticates successfully.
- Remote SFTP host keys are checked against the user's
~/.ssh/known_hostsby default. Add or verify host keys through your normal SSH/Open Machines trust flow before browsing a new remote machine;no_cert_verify = trueremains an explicit opt-out for trusted private environments. - If Open Machines is unavailable, Open Yasa falls back to a local machine entry and still works as a local terminal file manager.
- Unreachable or unauthenticated machines surface through Yazi's existing folder
error state. Open Machines-generated SFTP services use a shorter connection
timeout than static
vfs.tomlservices. - Adding and connecting machines is handled by the Open Machines CLI, for
example
machines manifest add,machines setup --apply, andmachines sync --apply. The Open Yasa chooser re-reads topology on refresh, so newly connected machines appear without fork-specific private state.
Configuration default:
[open_yasa]
machines_layer = trueRun yazi /some/path to bypass the machine chooser and start directly in a local
or supported VFS path.
Hidden Files
Open Yasa shows dotfiles by default. Press . to toggle their visibility for
the current session. To hide dotfiles by default instead, use the supported
manager setting:
[mgr]
show_hidden = falseOn Unix, Open Yasa uses the first applicable config path in this order:
- An absolute
$YAZI_CONFIG_HOME/yazi.toml. - An absolute
$XDG_CONFIG_HOME/yazi/yazi.toml. ~/.config/yazi/yazi.toml.
[general] show_hidden is obsolete and ignored; configure this setting only
under [mgr].
cargo build --release --locked --bin yazi --bin ya
install -Dm755 target/release/yazi ~/.local/bin/open-yasa
install -Dm755 target/release/ya ~/.local/bin/open-yasa-ya
ln -sf ~/.local/bin/open-yasa ~/.local/bin/yasa
ln -sf ~/.local/bin/open-yasa-ya ~/.local/bin/yasa-yaThe upstream-compatible yazi and ya binaries are still built. Hasna installs
the fork under open-yasa/open-yasa-ya plus the short yasa/yasa-ya
aliases to avoid replacing upstream Yazi unless that is intentional.
GitHub release automation builds open-yasa-* draft/nightly artifacts. Store
publishing to Winget or Snap is disabled until Open Yasa has dedicated package
identities and release credentials.
This repository tracks upstream Yazi through the read-only upstream remote:
git fetch upstream
git merge upstream/mainKeep fork-specific Open Yasa work in feature branches and PRs against
hasna/yasa; do not push to upstream.
Yazi (means "duck") is a terminal file manager written in Rust, based on non-blocking async I/O. It aims to provide an efficient, user-friendly, and customizable file management experience.
💡 A new article explaining its internal workings: Why is Yazi Fast?
- 🚀 Full Asynchronous Support: All I/O operations are asynchronous, CPU tasks are spread across multiple threads, making the most of available resources.
- 💪 Powerful Async Task Scheduling and Management: Provides real-time progress updates, task cancellation, and internal task priority assignment.
- 🖼️ Built-in Support for Multiple Image Protocols: Also integrated with Überzug++ and Chafa, covering almost all terminals.
- 🌟 Built-in Code Highlighting and Image Decoding: Combined with the pre-loading mechanism, greatly accelerates image and normal file loading.
- 🔌 Concurrent Plugin System: UI plugins (rewriting most of the UI), functional plugins, custom previewer/preloader/spotter/fetcher; Just some pieces of Lua.
- ☁️ Virtual Filesystem: Remote file management, custom search engines.
- 📡 Data Distribution Service: Built on a client-server architecture (no additional server process required), integrated with a Lua-based publish-subscribe model, achieving cross-instance communication and state persistence.
- 📦 Package Manager: Install plugins and themes with one command, keeping them up-to-date, or pin them to a specific version.
- 🧰 Integration with ripgrep, fd, fzf, zoxide
- 💫 Vim-like input/pick/confirm/which/notify component, auto-completion for cd paths
- 🏷️ Multi-Tab Support, Cross-directory selection, Scrollable Preview (for videos, PDFs, archives, code, directories, etc.)
- 🔄 Bulk Rename/Create, Archive Extraction, Visual Mode, File Chooser, Git Integration, Mount Manager
- 🎨 Theme System, Mouse Support, Drag and Drop, Trash Bin, Custom Layouts, CSI u, OSC 52
- ... and more!
example.mp4
Public beta, can be used as a daily driver.
Yazi is currently in heavy development, expect breaking changes.
- Discord Server (English mainly): https://discord.gg/qfADduSdJu
- Telegram Group (Chinese mainly): https://t.me/yazi_rs
| Platform | Protocol | Support |
|---|---|---|
| kitty (>= 0.28.0) | Kitty unicode placeholders | ✅ Built-in |
| iTerm2 | Inline images protocol | ✅ Built-in |
| WezTerm | Inline images protocol | ✅ Built-in |
| Konsole | Kitty old protocol | ✅ Built-in |
| foot | Sixel graphics format | ✅ Built-in |
| Ghostty | Kitty unicode placeholders | ✅ Built-in |
| Windows Terminal (>= v1.22.10352.0) | Sixel graphics format | ✅ Built-in |
| st with Sixel patch | Sixel graphics format | ✅ Built-in |
| Warp (macOS/Linux only) | Inline images protocol | ✅ Built-in |
| Tabby | Inline images protocol | ✅ Built-in |
| VSCode | Inline images protocol | ✅ Built-in |
| Rio (>= 0.3.9) | Kitty unicode placeholders | ✅ Built-in |
| Black Box | Sixel graphics format | ✅ Built-in |
| Bobcat | Inline images protocol | ✅ Built-in |
| X11 / Wayland | Window system protocol | ☑️ Überzug++ required |
| Fallback | ASCII art (Unicode block) | ☑️ Chafa required (>= 1.16.0) |
See https://yazi-rs.github.io/docs/image-preview for details.
Thanks to RustRover team for providing open-source licenses to support the maintenance of Yazi.
Active code contributors can contact @sxyazi to get a license (if any are still available).
Yazi is MIT-licensed. For the upstream license text, see LICENSE-MIT.
