Cardinal is a macOS search app with a Rust workspace split into twelve crates
Fastest file searching tool for macOS
At a glance
- What is it?
- Cardinal is a Tauri desktop search tool for macOS whose Rust code lives in a Cargo workspace of named crates, from fswalk and query-segmentation to a search cache, so the README is an operator manual rather than a library reference.
- Who is it for?
- Adopt Cardinal if you are on macOS 12 or later, you want Everything-style query syntax with size, tag, content and path filters, and you want everything in one window with Quick Look and Finder reveal. Do not adopt it for a cross-platform or headless workflow: the crates are macOS-targeted, the install path is a Homebrew cask, and nothing here documents a Linux or Windows build.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 91 days ago.
- What is it written in?
- Mainly Rust, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A Tauri shell over a twelve-crate Rust workspace
The Rust code is not one crate. Cargo.toml declares a workspace with resolver 3 and lists twelve members: lsf, cardinal-sdk, fswalk, namepool, was, fs-icon, file-tags, query-segmentation, cardinal-syntax, search-cancel, slab-mmap, and search-cache. The cardinal directory that holds the app is explicitly excluded from the workspace.
The crate names describe the pipeline without any further documentation. fswalk is the filesystem walk, query-segmentation and cardinal-syntax split the typed query from its interpretation, file-tags covers Finder tags, fs-icon covers icons, namepool and slab-mmap are memory-oriented pieces, search-cancel is about aborting a running search, and search-cache is persistence. An SDK crate sits alongside them, which suggests the query layer is meant to be usable without the GUI, though the README does not document it.
Two other workspace-level files are worth knowing about: book.toml implies an mdBook documentation setup, and AGENTS.md is a repository-level instruction file for coding agents. rustfmt.toml and a rust-toolchain.toml pin formatting and the compiler, so the toolchain version is defined by the repository rather than by your machine.
The search language is the actual feature
Cardinal layers an Everything-compatible syntax on top of plain substring and prefix matching, and this is where most of the README is spent. A query of *.zip size:>100MB, for instance, finds ZIP files larger than 100MB.
A space means AND, so report draft shows only files whose names contain both tokens. Quoting forces an exact phrase, in this case "Application Support". A slash works as a path separator inside a token, so brary/Applicat finds directories such as Library/Application Support.
Beyond that sit typed operators. in: sets the search root, as in in:/Users demo !.psd, which searches under /Users for names containing demo and excludes .psd files. tag: matches Finder tags with ; as the OR separator. size: filters by file size. content: searches inside files, for example *.md content:"Bearer " to find Markdown files containing that string.
Two additions sit outside Everything syntax. Wrapping a token with slashes forces whole-name matching: /report anchors the start, draft/ anchors the end, and /report/ demands both. And a globstar dives through every subfolder, so ~/**/.DS_Store finds stray .DS_Store files anywhere under your home directory. The full operator catalog, including boolean grouping, folder scoping, extension filters and regex, lives in doc/pub/search-syntax.md rather than in the README.
Installing is a cask, building is a Tauri command
For users the install is Homebrew.
brew install --cask cardinal-searchPackaged builds are also published on the Releases page. The cask name is cardinal-search rather than cardinal, which is worth remembering when the tap name and the app name diverge.
Building from source needs macOS 12 or later, a Rust toolchain, Node.js 18 or newer with npm, and the Xcode command-line tools plus the Tauri prerequisites. The production build is two commands:
cd cardinal
npm run tauri buildDevelopment mode runs the same shell with a release flag and a feature named dev:
cd cardinal
npm run tauri dev -- --release --features devNote the app directory is not in the Rust workspace, so the two builds are separate from the twelve library crates. That separation is what lets the library crates be built and tested without a GUI toolchain.
The keyboard map is the interaction model
There is no menu-driven workflow to speak of. The README documents shortcuts instead.
Cmd+Shift+Space toggles the window globally, which makes the app behave like a quick launcher rather than a window you keep open. Esc hides it again. Cmd+, opens Preferences, and the gear button in the status bar switches the interface language instantly between the fifteen translations listed at the top of the README, from English and Español to 한국어 and العربية.
Inside the results, ArrowUp and ArrowDown move the selection and Shift with them extends it to a range. Space opens Quick Look on the highlighted row without leaving the app, Cmd+O opens it, and Cmd+R reveals it in Finder. Cmd+C copies the selected files while Cmd+Shift+C copies their paths, which is the one you want when building a command line for something else. Cmd+F returns focus to the search bar, and the arrow keys inside the search bar cycle search history.
Copying paths rather than files is the shortcut that makes Cardinal composable with the rest of a shell workflow, and it costs nothing to bind.
What the README does not tell you
The documentation is thin where adoption decisions get made. It gives no indexing or indexing-on-launch behaviour, no statement about whether the filesystem is walked on demand or kept in a persistent index, and no numbers for how large a corpus the search cache handles. search-cache exists as a crate, so caching is real, but its policy is not written down anywhere in the files the README points to.
There is no mention of a command line interface. Every documented action is a keyboard shortcut in a window, and while the presence of an SDK crate hints at programmatic use, no API surface, no crate version and no example appear in the README.
There is also nothing about permissions. Reading Finder tags, indexing volumes you do not own, and running a background index all interact with macOS privacy prompts, and the README does not mention full disk access, no indexer daemon, no background refresh, and no behaviour when you attach a network volume. A file search tool on macOS lives or dies on those details and they are exactly what is missing.
Finally, the app is documented in fifteen languages but the README carries no changelog highlights and no upgrade notes between versions, so CHANGELOG.md is where a version question gets answered.
How this differs from the tools it replaces
Against a shell pipeline of find and mdfind, the gain is structured filtering and an interactive result list. The loss is scriptability, since nothing in the README describes a non-interactive mode.
Versioning and the MIT boundary
The project is MIT licensed, in a LICENSE file at the repository root, with no copyleft obligation on an application that embeds it.
The release line is pre-1.0. v0.1.23 is the newest tag, dated 2026-03-24, after v0.1.22 on 2026-03-08 and v0.1.21 on 2026-01-22. The repository is not archived and the last push was on 2026-07-23, which is months after the newest tag and means master carries work that no release has packaged. Patch releases are small and frequent, but a zero-major version is the maintainer's signal that interfaces may still move.
For teams, the practical reading is: pin a release if you need a stable artefact, and read CHANGELOG.md before upgrading, because the README promises nothing about compatibility between patch versions.
Editorial conclusion
Adopt Cardinal if you are on macOS 12 or later, you want Everything-style query syntax with size, tag, content and path filters, and you want everything in one window with Quick Look and Finder reveal. Do not adopt it for a cross-platform or headless workflow: the crates are macOS-targeted, the install path is a Homebrew cask, and nothing here documents a Linux or Windows build. Verify first what your team is pinning, since v0.1.23 is the newest release at 0.1.x and the last push was on 2026-07-23, so read CHANGELOG.md rather than trusting the tag. If you need a CLI or a library instead of a GUI, read doc/pub/search-syntax.md first and confirm the crate you would embed actually exposes what you need.
Frequently asked questions
How do I install Cardinal on macOS?
Install the Homebrew cask with brew install --cask cardinal-search. Packaged builds are also published on the GitHub Releases page.
How do I build Cardinal from source?
You need macOS 12 or later, a Rust toolchain, Node.js 18+ with npm and the Xcode command-line tools with the Tauri prerequisites. Run cd cardinal and then npm run tauri build.
Does Cardinal support search operators like size and tags?
Yes. The README shows size:>100MB for file size, tag:ProjectA;ProjectB for Finder tags with semicolon as OR, in: to set the search root, content: to search inside files, and quoted strings for exact phrases. The full catalog is in doc/pub/search-syntax.md.
Can I use Cardinal from the command line?
No command line interface is documented. Every documented action is a keyboard shortcut in the application window, and the README does not describe a non-interactive mode.
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/cardisoft-cardinal)Was this useful?