Coxswain
The one at the helm, who steers the boat and keeps the crew in time.
Coxswain is a two-panel file manager in the Norton Commander tradition, built for developers.
It comes as a terminal app (coxswain, Rust and Ratatui) and a desktop app (coxswain-gui,
Tauri and Svelte 5), both on one shared Rust core and one config file. It finds any file by
its name, its text or what it is about, previews over 60 kinds of file, opens archives like
folders, shows git in every panel, and keeps everything on your machine.
Find: type a word and names, the text inside files and what files are about come in, grouped, as you type.
Why Coxswain
- One core, two apps: a terminal app and a desktop app with the same keys, the same settings and one search store.
- Finds by name, by the words inside files and by what they are about, offline, with a small model on your machine or your own Ollama or LM Studio.
- Ask your files a question in your own words, and get an answer with numbered sources, from a model on your machine.
- Archives, git history, branches and ZFS snapshots open like folders: go in, look, copy out.
- Runs where you work: FreeBSD first, then NetBSD, OpenBSD, illumos, Linux (ARM too), Android (Termux), macOS and Windows; 29 languages.
- Nothing leaves your machine unless you ask, and online-only cloud files are never downloaded behind your back.
Highlights
- On FreeBSD and illumos: browse ZFS snapshots like folders. Alt+Z lists a folder's snapshots, Enter shows it as it was, Diff compares a file with now and F5 copies it back, with no root; the dataset, its compression and space sit in the footer. Properties names a file's package and lists its files, shows and sets chflags, and the sidebar has your boot environments and jails. OpenZFS on Linux and macOS too, and on TrueNAS over SSH. ZFS snapshots · FreeBSD
- FreeBSD, the other BSDs, illumos, Linux, macOS and Windows: both apps on FreeBSD, OpenBSD, Linux, macOS and Windows, the terminal app on NetBSD and illumos too, each BSD and illumos with an install line, its own package tool for what is missing, its own service for the search helper (rc.d, rcctl, SMF) and a manual page; TrueNAS over SSH. FreeBSD · NetBSD · OpenBSD · illumos · TrueNAS
- Norton Commander at heart: two panels, the F-key bar, a command line and NC's keys. Panels and keys
- One Find for names, words, meaning and answers: Ctrl+F and type; the hits come in groups (Names, In files, About this, History) ranked by words and meaning together, Ctrl+Enter asks, one key limits it to this folder, inside your zip, 7z and tar archives too; you choose what is read and what is left out (
*.log, a folder). Search · Inside archives · Choosing the folders - Gentle with your cloud: OneDrive, Dropbox, Google Drive, Proton Drive and iCloud files that are only online are found by name, marked with a cloud, and never downloaded unless you open one. Cloud files
- Ask your files: a question in your own words, answered from the closest passages with numbered sources, by your own chat model or one built in that needs no server (on a Mac it uses the GPU). Ask · Without a server · Set it up
- Search by meaning, in any language: a small model on your machine (on Apple Silicon it uses the GPU), or your own Ollama, Lemonade or OpenAI-style server. Search by meaning · Set it up
- See before you open: code, Markdown, PDF, Word, PowerPoint, spreadsheets, SQLite and Parquet (in the terminal app F3 too), HTML, fonts, video and more. The preview pane · Data
- Builds what needs building: LaTeX, Office, PlantUML and Graphviz previews, with your tools or a sealed container. LaTeX · Tools
- Reads cryptography bills of materials: a CycloneDX CBOM as a rated tree or sunburst, compared with last month's scan, in both apps. CBOMs
- Reads build provenance: SLSA and in-toto files as inputs → build → outputs, with who signed them, whether the files here are the ones built, and whether the commit is in your checkout, in both apps. Build provenance
- Archives are folders: zip, 7z and tar (gz, bz2, xz, zst): go in, preview, copy, move, rename, pack, with passwords to open them and to lock new zips and 7z (AES-256). Archives
- Git in every panel: branch, ahead and behind, counts, a glyph per file, and who last committed it and when. Git
- History as folders: Ctrl+G on a file or folder lists its commits; Enter on one browses the files as they were, F5 copies an old version out, and Find finds commit messages. Git history · History in search
- Branches and worktrees too: Alt+B lists the branches, Enter browses one's files, Alt+S switches to it (git refuses to lose your changes); Alt+W lists the worktrees. The git line names a worktree, a detached HEAD and a merge or rebase under way. Git branches
- Folder sizes without asking, instant in your home folder. Folder sizes
- Finds duplicates by content across folders and disks, and marks the extra copies by rule. Duplicates
- Eighteen themes with the looks of their era, and 29 languages, listed by region: Hebrew and Persian right to left, Greek capitals without accents, Japanese and Korean lined up in the terminal. Themes · Languages
- Nothing leaves your machine unless you ask for it. Privacy
![]() |
![]() |
| The terminal app | The desktop app in Cyber |
![]() |
![]() |
| The preview pane | Archives as folders |
Smart search: names, words, meaning and answers
One field finds every file by name in a blink, by the words inside it, by what it is about in any language, and Ask answers a question from your files with numbered sources: type, and the hits come in groups, the ones that fit your query first; Ctrl+Enter asks. It all runs on your own machine, or on your own server (Ollama, Lemonade, LM Studio, llama.cpp …); nothing leaves it unless you choose a server elsewhere. Three steps:
- Settings → Finding files → Set up… (terminal app:
coxswain --setup-search). The guide finds the model servers on your machine and says what suits it. - Use the graphics card or NPU if you have one: the guide checks that the server does.
- Let it read in the background: Start with my session keeps the index current between launches (a systemd user service, a launchd agent, a Run entry or an XDG autostart entry on FreeBSD; no administrator rights).
The whole walk-through: Smart search in a few minutes.
Ask with qwen3:8b on Ollama on the same machine. The wait for the first word is cut short.
Install
Quickest, per system (every option is in the table below):
| | |
| System | Terminal app | Desktop app |
|---|---|---|
| FreeBSD 14, 15 | fetch -qo - https://raw.githubusercontent.com/mwo-dk/coxswain/master/install/install-freebsd.sh | sh installs both apps (FreeBSD); --terminal-only for the terminal app alone |
The same line (experimental), with the packages it needs from pkg |
| NetBSD 10, 11 | ftp -o - https://raw.githubusercontent.com/mwo-dk/coxswain/master/install/install-unix.sh | sh (NetBSD) |
Not yet: webkit-gtk41's binary packages miss dependencies |
| OpenBSD 7.9 | ftp -o - https://raw.githubusercontent.com/mwo-dk/coxswain/master/install/install-unix.sh | sh installs both apps (OpenBSD); --terminal-only for the terminal app alone |
The same line (experimental), with webkitgtk41 from pkg_add |
| illumos (OmniOS, OpenIndiana) | curl -fsSL https://raw.githubusercontent.com/mwo-dk/coxswain/master/install/install-unix.sh | sh (illumos) |
Not built: no WebKitGTK 4.1 |
| TrueNAS | The Linux build (Community Edition) or the FreeBSD one (CORE) in your home, over SSH (TrueNAS) | Not on a NAS |
| Linux | brew install mwo-dk/coxswain/coxswain, or the static x86_64-unknown-linux-musl binary |
.deb, .rpm, .AppImage, or the Homebrew cask (x86-64) |
| Linux, Flatpak | Not in it: the line above | Not on Flathub yet: build it with flatpak-builder (Flatpak) |
| Linux on ARM64 (Raspberry Pi OS 64-bit, Asahi, ARM servers) | The static aarch64-unknown-linux-musl binary, or brew as above |
_arm64.deb, .aarch64.rpm, _aarch64.AppImage (Linux on ARM) |
| Nix (Linux, macOS) | nix run github:mwo-dk/coxswain, or nix profile install github:mwo-dk/coxswain (Nix) |
nix run github:mwo-dk/coxswain#coxswain-gui (Linux) |
| Android (Termux) | pkg install coxswain once it is in Termux's repository; until then pkg install rust git && cargo install coxswain (Termux) |
Not on Android |
| ChromeOS | The Linux binary for its processor, in the Linux terminal | The .deb for its processor, in Linux (ChromeOS) |
| Any | cargo install coxswain |
./install/install.sh (or install\install.ps1) from a clone |
| macOS | brew install mwo-dk/coxswain/coxswain |
brew install --cask mwo-dk/coxswain/coxswain-gui, or the .dmg |
| Windows | winget install mwo-dk.Coxswain.Terminal, or coxswain-terminal-<version>-x86_64-pc-windows-msvc.zip |
.msi or -setup.exe |
| Windows on ARM | coxswain-terminal-<version>-aarch64-pc-windows-msvc.zip |
_arm64_en-US.msi or _arm64-setup.exe (Windows on ARM) |
Downloads are on the releases page.
The builds are not code-signed: on macOS, if the app "is damaged", run
xattr -cr /Applications/Coxswain.app once (the cask does it for you); on Windows click
More info and Run anyway. Why macOS may ask about your folders again after an update: macOS.
Both apps check once a day for a newer release and give the exact update command
(Update checks). Every way to install and update, and building
from source: install/INSTALL.md. Git glyphs want a
Nerd Font; without one set glyphs = "ascii"
(Glyphs and fonts).
First steps
- Start it in a folder:
coxswain(orcox) in a terminal, orcoxswain-gui. Two folders open the two panels:coxswain ~/src ~/Downloads. - Move with the arrows, Enter opens (a folder, or an archive), Backspace goes up, Tab switches panels.
- Mark with Insert, then F5 copies or F6 moves to the other panel. F8 moves to the trash, F7 makes a folder, and Ctrl+Z undoes the last of them.
- Find anything with Ctrl+F; Tab looks deeper.
Turn on smart search (meaning and Ask): Settings → Finding files → Set up…, or
coxswain --setup-search(the guide). - Type a command and press Enter: it runs in the panel's folder.
- Settings, sorted by task (Finding files, Previews, Looks, Behaviour, Keys, Privacy and
updates): Ctrl+, in the desktop app, F9 → Settings or
coxswain --settingsin the terminal app. In the desktop app, Space shows the preview pane. - Not sure what you can do with a file? Shift+F10 (or the Menu key, or the ⋯ on the row) lists what fits it, each with its key: pack, extract, rename, history (The action menu). Forgot a key? F9 lists every command, and F1 shows your keys.
More in Panels and keys and Every default key.
Documentation
The docs index is the full map; every feature has its own page with the keys, what you see, the settings, and the questions people ask.
| Area | What is in it |
|---|---|
| Panels and keys | The screen, moving, quick search, marking, sorting, tabs, views, folder sizes, git, git history, the mouse, every key |
| Tags, notes, favourites and the sidebar | Colour tags, folder notes, favourite groups, places and drives |
| Commands, the user menu and scripts | The command line, F2 menu, scripts, F3 and F4, opening files |
| Search | The guided setup, names, text, scans, diagrams, git history, meaning, servers, the helper, disks, battery, notices |
| The preview pane | Every format, HTML, Office, diagrams, LaTeX, tools and containers |
| Files | Copy, move, delete, clipboard, drag and drop, batch rename, archives, properties, duplicates |
| Customising | Settings, themes, looks, your own theme, languages, keys, glyphs |
| Reference | The terminal app, flags, every config key, privacy, updates, where files are kept, FreeBSD, NetBSD, OpenBSD, illumos, TrueNAS, Flatpak |
| Questions, collected | The common questions, linked to their full answers |
| Changelog | Every version, newest first; the last ten are below |
Layout
crates/coxswain-core config, fs ops, archives, git status and history, search index and store, duplicates (shared)
crates/coxswain terminal UI (package and binaries: coxswain, cox)
gui/ Svelte 5 frontend
gui/src-tauri Tauri backend (binary: coxswain-gui)
Licence
MIT. Every release carries the licences of what it is built from (THIRD-PARTY-NOTICES.md, also
inside the apps), an SBOM for each app and a CBOM of the cryptography they use; see
Licences and bills of materials.
Norton Commander is a trademark of Gen Digital Inc. Coxswain is an independent project, not affiliated with or endorsed by Gen Digital.
Changelog
Newest first. Downloads for each release are on the releases page.
| Version | Date | What's new |
|---|---|---|
| 2.20.3 | 2026-10-10 | Buttons easier to read in the dark themes. Close, OK and the other lit buttons of Dark, Nord, Tokyo Night, Windows 11 (dark) and macOS (dark) are semibold: dark letters on a pastel accent were hard to read at the usual size. Your own theme gets it with bold = true on its accent slot. Your own theme |
| 2.20.2 | 2026-10-10 | Search by meaning indexes build output much faster, or not at all. A passage is at most 2,000 characters: a line of minified JSON or a list of paths used to be one "word" of thousands of tokens, and a server read all of it, so a few such files took hours. MSBuild's obj folders are left out by default, as target, build and dist are. Search by meaning |
| 2.20.1 | 2026-10-10 | No more black boxes on Windows. The desktop app ran git, converters and its commands in console windows that flashed up empty, one per program; now none shows. The terminal app is unchanged, so an editor it starts still has its terminal. View and edit |
| 2.20.0 | 2026-10-08 | A model for code questions. Settings → Ask → Model for code questions: questions about code can go to a model made for code, such as qwen3-coder, on the same server; Same as Ask stays the default. It is recommended only where it runs well on this machine (a graphics card that holds it, a Mac with the memory), and the line under the list says why, with the card and its memory. Ask about code |
| 2.19.0 | 2026-10-08 | Ask knows a question about code. When most of what it found is code, or the question names something in code (a::b, name(), a path), the line over the sources says Code question. No model decides it, in any language. Ask about code |
| 2.18.0 | 2026-10-08 | Ask reads code as code. Files of code, in any language, are cut at their functions and classes with their lines and indentation, each named after its item, and a question about a project's architecture, frameworks or libraries gets a map of it: each file with what it says it is and its public items, and what its project files say it uses. Search by meaning renews its vectors once. Ask about code |
| 2.17.0 | 2026-10-08 | On a Mac, a tip when a server has more. Ollama, LM Studio (MLX) and llama.cpp run on Metal too: when one has a larger chat model than your built-in one (qwen3:30b-a3b, larger and quicker) or a stronger embedding model (bge-m3, qwen3-embedding), Settings and Find say so in grey with a Use … button, and the setup guide lists the server's models first. Without a server nothing changes. The built-in chat model |
| 2.16.0 | 2026-10-08 | See what Coxswain keeps on your disk, and get the room back. Settings → Privacy and updates → Disk use (F9 → Disk use) lists the search store, the name index, previews, archive copies, LibreOffice profiles, the helper's log and the built-in models, each with its size, where it is, what clearing it costs, Show in panel and Clear; Clear everything that can be built again frees the lot in two clicks. Tectonic's cache and container images Coxswain pulled for previews are listed too, and go only when you tick them, after the exact list is shown. The preview (and F3) of index.bin and search.db now says what they hold: entries, folders, when built, files read by kind, vectors, errors, size per part. In the terminal: coxswain --disk and coxswain --disk clear. Disk use |
| 2.15.0 | 2026-10-08 | Ask and search by meaning use your graphics card when they can. When Ollama, Lemonade or another server here runs a model on the graphics card, it is the one recommended and preselected, never a built-in model on the processor; a built-in model that is slow here says so in red in Settings and under Find's Ask row, with the speed and a Use qwen3:8b button. Settings → Ask has one list of every chat model, the server's and the built-in ones, under where each runs. Settings → Finding files → Built-in models lists the models on the disk, with their folder, whether they are loaded and when they were last used, to unload or delete; coxswain --models does the same in the terminal. An unknown option on the command line is said, with the closest one. Built-in models |
| 2.14.0 | 2026-10-07 | A bigger built-in chat model for Ask. Qwen3 14B (8.4 GB, downloaded once from huggingface.co) knows more and reasons better than Qwen3 4B, and reads twice as much of your files on a Mac's GPU. The guide recommends it on a Mac with 32 GB or more; Settings → Ask lists only the models that fit the machine, each with the memory it needs. Let the model think first now works with the built-in Qwen3 1.7B and 14B too, on a Mac's GPU. Ask without a server |
All versions, back to 1.0.0: the full changelog.



