Filee: my own file manager for macOS

A native, keyboard-first, dual-pane file manager I built with Claude Code to replace Path Finder. It launches in 0.2 s and uses about a quarter of the memory.

Filee is the file manager I now use on my Mac. It replaces Path Finder, which I used for years. 2 panes, tabs, 3 views, and every action on the keyboard. It is native Swift and AppKit, and it does exactly what I need, nothing else.

I built it over 1 weekend with Claude Code, from a voice brief, then improved it while I used it. The story behind that is in The era of personal software is here. The name fits the -ee family of my other tools, next to Stickee: sticky notes that go full screen on every monitor and Dictee: my own local dictation app.

Filee in dark mode: a red title bar with the edelweiss app icon, a sidebar with a tree of favourites and coloured volume icons, a list view of a project folder on the left and a thumbnail view of landscape photos on the right

Why I built it

Path Finder was the best file manager for my needs, but not a perfect one. It is also heavy: 305 MB of memory on my Mac, more than twice Finder. And there were things I wanted that no file manager does my way:

  • Keyboard first. Type to filter, ⌘K for everything, no mouse needed.
  • My scripts in the file manager. Resize an image, upload it, transcribe a recording: 1 key on the selected file.
  • Fast on big folders. Some of my folders hold 20,000+ files.
  • My own look. Black, white and red, my fonts and my edelweiss logo.

Some Path Finder features I only noticed when they were missing. Each one went in the same day.

What it does

Feature How it works
2 panes, tabs Tab switches pane, ⌘T opens a tab, F5 / F6 copy or move to the other pane
3 views List with an expandable tree, Miller columns, thumbnails. Remembered per folder
Type to filter Any letter starts a fuzzy filter on the folder. Esc clears it
Command palette ⌘K finds commands, actions, favourites, recent folders and files
Favourites tree Favourites nest by path. ⇧⌘F adds or removes the current folder, with a clear message
Volumes Each drive gets its own icon and colour, from its name. A brand-name recorder shows its logo
"New today" A red dot marks every file added to its folder today. It resets at midnight
Batch rename Sequence, find and replace, date prefix from the photo's capture date, slugify
Custom actions Any script, on a key or in ⌘K, with the selected paths as arguments
Undo Rename, move, Trash, new folder and copy, 50 steps
Drop stack Collect files from several folders, then drop them in 1 move
Global hotkey ⌃⌥⌘F brings Filee to the front from any app

It also does the basics: Quick Look on Space, zip and unzip, Get Info, folder sizes, eject, a terminal at the current folder in Ghostty.

The numbers

Metric Budget Filee Path Finder
Launch to a usable window < 300 ms 140-220 ms -
List a folder of 10,000 files < 150 ms 66-83 ms -
Filter keystroke, 10,000 files < 16 ms 7-10 ms -
Memory, 2 panes and 5 tabs < 120 MB 60-90 MB 305 MB

The budgets are in the spec from day 1, and the automated QA measures them on every build. A build that breaks one doesn't ship.

For business people

A file manager is a tool I open 100s of times a day. Each small wait, each extra click and each missing shortcut adds up. Filee removes them for 1 user: me.

What changed for me:

  • No more licence. Path Finder costs a yearly subscription. Filee costs nothing to run.
  • My workflows are built in. The scripts I used to start from a terminal or a clipboard trick are now 1 key in the file manager.
  • It fits the way I work. When I miss something, I describe it and it's there the same day. No feature request, no waiting for a vendor.

The limit: it's personal software. 1 user, 1 Mac, no support, no updates from anyone but me. That's the trade, and for a tool this central to my day it's a good one.

For technical people

Stack

Layer Choice
Language Swift 6, about 8,500 lines
UI AppKit, frame-based layout, no SwiftUI
Listing getattrlistbulk(2): 100s of entries per system call
Copy, move copyfile(3) with clones: instant on the same APFS volume
Watching 1 FSEvents stream per visible folder
Config JSON with comments in ~/.filee/, reloaded live
Core logic A Swift package with no AppKit, unit tested
Build XcodeGen, Developer ID signing, hardened runtime

The listing, operations, rename planner, key map and fuzzy matcher sit in a separate package without AppKit, so they run in unit tests without a window.

QA that runs while I work

The QA harness drives the real app from JSON scripts: navigate, press keys, rename, copy, then check the result. 5 suites, about 80 checks, in about 1 minute. It runs on fixture folders, never on my real files. It never activates the window, ignores my real key presses and uses a private pasteboard, so I keep working while it runs.

Lessons from the build

  • Sorting text is slow. localizedStandardCompare cost 250 ms on 10,000 names. Filee builds a natural-order sort key once per file and reuses it for the filter.
  • The app icon can cost 65 MB. Drawing NSApp.applicationIconImage in the title bar made macOS decode its 1024 px versions. A 128 px copy fixed it.
  • Tiling window managers change your measurements. Amethyst resized the QA window to a full screen tile, and the memory budget failed by 30-40 MB. The QA window is now fixed at 1400×900.
  • Network shares are slow to ask. A volume's name and free space can take 150 ms on a network share, so the sidebar loads them in the background.
  • Since macOS 14, views don't clip. A view that fills its whole dirty rectangle paints over its neighbours.

Security

Filee reads the whole disk, so the first design goal is that it never leaks what it reads. Filee itself makes no network calls and sends no telemetry: nothing it reads leaves the Mac. Scripts run only when I press a key, never on their own. The future search index has a deny-list for secrets (.env, keys, SSH and cloud credentials) before it reads any content.

What's next

  • Phase 1.5: a folder size view and a default file viewer switch, so "Reveal in Finder" from any app opens Filee. Then I cancel Path Finder.
  • Phase 2: a whole-disk name index, to retire Find Any File.
  • Phase 3: content search in text, code, Office and PDF files.
  • Later: a disk map like DaisyDisk.

Further reading

The app Filee replaces:

The tool I built it with:

NicAI
Written by NicAI, Nic's AI assistant, for his personal knowledge base. Researched and drafted by the model, not hand-written by Nic. Verify anything you plan to act on.