CHADTree for Neovim: Installation, Features, and Trade-offs
File manager for Neovim. Better than NERDTree.
At a glance
- What is it?
- CHADTree is a Python-based Neovim file manager built around parallel filesystem scanning and a difference-minimizing rendering engine. It offers file operations, Git status, filtering, sessions, and color support, but its documented installation path is tied to an older Neovim baseline and local dependency management.
- Who is it for?
- CHADTree is a reasonable choice for Neovim users who want file operations, Git status, filtering, saved sessions, and color-rich directory views inside the editor. It is a weaker fit for users who need a current standalone installation path, documented Windows recovery beyond one command, or a dependency model that does not place runtime packages inside the plugin directory.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
CHADTree's Neovim File-Management Scope
CHADTree addresses a specific editing problem: navigating and manipulating project files without leaving Neovim. The README positions it as an alternative to NERDTree, with support for directory navigation, visual selections, and routine file operations including create, copy, paste, delete, and rename. It is aimed at users who manage projects inside Neovim and want the file tree to participate in editor workflows rather than operate as a separate application.
The documented feature set extends beyond browsing. Quickfix integration provides a path between the file tree and Neovim's quickfix list. Bookmarks, glob filtering, follow mode, session support, trash support, and `ls -l` statistics cover recurring navigation and housekeeping tasks. Git-related features include asynchronous parsing of untracked, modified, and staged files, plus support for Git submodules. The repository includes Python source, Vim plugin files, Lua files, documentation, configuration files, Docker assets, and type definitions, which matches the description of a Neovim plugin rather than a standalone file manager.
CHADTree is not a general-purpose desktop file browser. Its documented controls and behavior are tied to Neovim commands, key bindings, configuration, and the editor's rendering model. Users who need a platform-native file manager, a server-side administration interface, or a browser-based file transfer tool are outside the stated scope.
Parallel Scans and Difference-Minimizing Rendering
The README identifies two architectural priorities: parallel filesystem scanning and a React-like reconciliation engine that minimizes rendering differences. The wording describes the intended implementation model, but it does not expose the internal Python modules or scheduler. It is therefore safer to treat the performance claims as project documentation rather than independently established measurements.
The practical flow starts with a directory tree in Neovim. When files or folders change, CHADTree compares the new filesystem view with the displayed view and updates the relevant portions instead of presenting the whole tree as an unrelated redraw. The README also states that CHADTree does not block, although the mechanism used to keep filesystem work separate from the editor is not documented in the README.
Other state also enters the rendering path. Git status is parsed asynchronously, which can represent staged, modified, and untracked entries without making those states part of the directory name itself. `$LS_COLORS` supplies Unix-style colors, while bundled icon sets and themes provide file-type decoration. Cursor position is maintained when movement changes the tree, and selections are preserved during copy or move operations. These details matter for an editor file manager because they affect whether the tree remains useful while the user edits files.
CHADTree Installation Through VimPlug
The README gives a VimPlug installation example and specifies minimum versions of Python 3.8.2 and Neovim 0.4.3. It also says that `virtualenv` must be available. The documented plugin declaration selects the `chad` branch and invokes dependency installation:
Plug 'ms-jpq/chadtree', {'branch': 'chad', 'do': 'python3 -m chadtree deps'}After installation or an update, the README says to run `:CHADdeps`. That command installs CHADTree dependencies locally inside `chadtree/.vars/runtime`. The repository's `requirements.txt` lists `std2`, `pynvim_pp`, and `PyYAML`, while `pyproject.toml` identifies the package as `chadtree` and requires Python `>=3.8.0`. The install example is specifically for VimPlug, although the README also mentions Vundle and similar plugin managers without providing equivalent configuration.
The first documented use is to open the file manager with `:CHADopen`. The README suggests mapping that command to a leader key:
nnoremap <leader>v <cmd>CHADopen<cr>Users can inspect available hot keys with `:CHADhelp keybind` or request the browser version with `:CHADhelp keybind --web`. The README also documents `:CHADhelp` for the built-in documentation window and `:CHADhelp --web` for browser access. A key mapping for clearing the quickfix list is shown separately:
nnoremap <leader>l <cmd>call setqflist([])<cr>That mapping is a recommendation, not a CHADTree requirement. The documented removal path is deletion of `chadtree/`, which the README says cleanly removes everything CHADTree uses.
Trash, Sessions, Filtering, and Git Visibility
CHADTree distinguishes file operations from simple navigation. Visual mode selections support multi-file actions, while create, copy, paste, delete, and rename are explicitly listed. Trash support is available, but the README qualifies it: it requires `trash` or `trash-cli`. This is a concrete environment dependency rather than a universally enabled feature. A user relying on trash should verify that the appropriate executable is available on the target system before relying on that deletion path.
Filtering accepts glob patterns, and follow mode is documented as another way to work with the tree. Session support can save open folders to disk and restore them later, which is useful for returning to a known project state. The `ls -l` statistics feature adds file listing information, while symlink handling is described as correct in the README. These capabilities make CHADTree more than a static directory pane, but the README does not describe configuration file locations, session filenames, or exact filtering commands.
Git status is parsed asynchronously. The stated states are untracked, modified, and staged, and submodules are supported. Because parsing is asynchronous, the exact timing of status appearance is not documented. A reviewer should not infer that a status marker is already present the instant a file changes. The repository layout includes configuration and plugin directories, but the README excerpt does not provide a configuration file example.
CHADTree Limitations and Recovery Boundaries
The clearest limitation is the age and specificity of the documented integration path. The README names Neovim 0.4.3 as a minimum version and Python 3.8.2, while `pyproject.toml` requires Python `>=3.8.0`. That does not prove incompatibility with newer Neovim, but the README does not document validation for a current release. The lack of GitHub releases also means there is no documented release history in the repository information available here.
The dependency model has another operational cost. `:CHADdeps` installs packages under `chadtree/.vars/runtime`, so dependency updates are tied to the plugin directory. Removing the directory is presented as a clean cleanup, but users who keep a plugin manager cache or another installation copy must account for those locations separately.
Windows has a documented repair command, but only for one specific problem. The FAQ says that when Windows gets stuck with CHADTree decorations, run `:CHADrestore`. The README does not explain what causes the state, whether it affects tree contents, or what broader recovery steps exist. Mimetype warnings are also listed as a safety feature, yet the README does not specify the warning configuration or whether users can disable it. These omissions matter for evaluation because they limit how far the documented behavior can be predicted.
As an alternative to NERDTree, CHADTree's documented difference is its own parallel scan and difference-minimizing rendering design, together with the feature set above. The README does not describe NERDTree's internals, so it does not support a precise technical comparison of the two implementations. The meaningful distinction available here is architectural and feature-based, not a verified claim about how NERDTree works.
CHADTree Maintenance, License, and Upgrade Surface
The repository is not archived, and the last push was on 2026-10-16. The repository information does not include GitHub releases, so upgrade planning cannot rely on a documented release series. Users should distinguish plugin updates from dependency installation: the README explicitly associates `:CHADdeps` with installation and updating.
CHADTree is licensed under GPL-3.0. That identifies the repository's stated license, but it does not settle compatibility with a particular organization's policy. The README also says that CHADTree imports icons and themes from other open-source projects. Based on the repository layout and documentation, an adopter may need to account for both the CHADTree license and the imported components when preparing a distribution. The README does not provide a consolidated notice for every imported asset.
The Docker assets show a container-oriented deployment recipe, but they do not make CHADTree a headless server file manager. The `Dockerfile` installs Neovim, Git, Python virtual-environment support, copies the project into a Neovim package path, and runs `python3 -m chadtree deps --xdg ~/.local/share/nvim`. The `docker-compose.yml` file defines a `chadtree` service with `restart: always` and a `TZ` environment variable. Since the README does not supply a Docker usage tutorial, these files show an additional packaging path rather than a complete supported installation guide.
Editorial conclusion
CHADTree is a reasonable choice for Neovim users who want file operations, Git status, filtering, saved sessions, and color-rich directory views inside the editor. It is a weaker fit for users who need a current standalone installation path, documented Windows recovery beyond one command, or a dependency model that does not place runtime packages inside the plugin directory. Before adoption, verify that the documented versions, `python3 -m chadtree deps` process, and `:CHADdeps` command still match the target Neovim environment, then review the project-specific key bindings with `:CHADhelp keybind`. The first practical checkpoint is whether its `chad` branch and local runtime layout work with the user's plugin manager.
Frequently asked questions
How do I install CHADTree for Neovim?
The README shows a VimPlug declaration on the `chad` branch with `python3 -m chadtree deps`, followed by `:CHADdeps` after installation or updating. It says dependencies are installed locally inside `chadtree/.vars/runtime`.
How do I open CHADTree and view its key bindings?
Run `:CHADopen` to open the file manager. Use `:CHADhelp keybind` to read the key binding documentation, or `:CHADhelp keybind --web` to open it in a browser.
Does CHADTree require external tools for trash support?
Yes. The README states that trash support requires `trash` or `trash-cli`.
What should I do if Windows gets stuck with CHADTree decorations?
The README's FAQ gives one specific recovery command: `:CHADrestore`. It does not document the cause or a more general recovery procedure for that Windows state.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/ms-jpq-chadtree)Was this useful?