SoquelBeta
The last file manager you'll ever need. And it's open source!
Version 1.7.0 · Free and MIT licensed · Apple silicon · macOS 13 or later
Soquel is in beta. Version 2.0 will be the first alpha release.
Views
- List view ⌥⌘1
- Rows and columns. Click a header to sort.
- Icon view ⌥⌘2
- Files as icons, with a slider for how big.
- Column view ⌥⌘3
- One column per folder level, left to right.
- View-mode pill
- One control to switch between the three views.
- Thumbnails in icon view
- Icons show the actual picture, page or video frame.
- Sort by name, size, kind, date, extension or created ⌃⌘1–⌃⌘6
- Or click a column header.
- Multi-column sorting
- Shift-click a second header to break ties.
- Auto-sized columns ⌥⌘=
- Widths snap to fit the longest name in the folder.
- Metadata columns
- Show dimensions, duration, codec, camera and more as columns.
- Preview and details panel ⌥⌘I
- A side panel with the preview, dates, permissions, owner and a checksum.
- Quick Look Space
- The same spacebar preview as Finder.
Panes and tabs
- Nested pane splits ⌘D ⇧⌘D
- Split a pane in two, and split those again.
- Up to four panes, tabs in each
- ⌘1–⌘4 to focus a pane, ⌘T for a new tab.
- Session restore
- Reopens the panes and tabs you had last time.
- Named workspaces
- Save a pane layout under a name and reopen it later.
- Pane toolbar
- A filter box and buttons you choose, above each pane.
Moving files
- Create, rename, duplicate, copy, move, trash, delete
- If one file fails the rest still go, and it names the one that failed.
- Rename in every view
- Rename from list, icon or column view.
- Conflict handling
- Keep both, replace or skip, with both sizes and dates shown.
- Folder merge on conflict
- Merge two folders instead of replacing one with the other.
- Undo ⌘Z
- Undoes rename, create, duplicate, trash and move.
- Clean This Folder ⌃⌘L
- Proposes where the files should go, shows the exact request and every move first, then offers to undo the entire clean in one step. Local AI is recommended: Ollama, LM Studio and llama.cpp need no key and keep the request on your Mac. Use hosted APIs only for approved data; protected health information requires an executed BAA. Opt-in under Settings › Clean.
- Transfer queue ⌥⌘J
- See copies in progress, and pause, resume or cancel each one.
- Selection shelf ⌃⌘A ⌃⌘B
- Collect files from several folders, then move them all at once.
- Batch rename
- Rename many files at once, with a preview before it happens.
- Cut and paste in the context menu
- Right-click cut, then paste where you want it.
- Drag and drop
- Between panes, and to and from other apps.
- New File templates
- Make an empty text, Markdown, JSON, Swift, Python, shell, HTML or CSV file.
- Folder comparison and sync ⇧⌘K
- Compare two folders and copy the differences one way.
Finding things
- Search panel ⌥⌘F
- Search names or contents, by plain text, regex or glob.
- Search by meaning ⌃⌘F
- Finds a file by what it is about, not the exact words. Runs on your Mac.
- Search says what it skipped
- Tells you how many files it could not read, so nothing looks like a clean zero.
- Search ranking
- Name matches come before content matches.
.gitignore-aware search- Optionally skip whatever the repository ignores.
- Saved searches
- Keep a search in the sidebar and run it again.
- In-folder filter /
- Type to narrow the folder you are in.
- Command palette ⇧⌘P
- Type the name of any command instead of hunting the menus.
Getting around
- Breadcrumbs and an editable path bar
- Click the path to type or paste one.
- History, enclosing folder, Git root
- Back, forward, ⌘↑ for the parent, and a jump to the repository root.
- Folder tree ⇧⌘T
- The folder hierarchy in the sidebar.
- Sidebar groups
- Sort your pinned folders into named sections.
- Pin to the sidebar
- Drag a folder in to keep it there.
- Custom sidebar icons
- Give a pinned folder any emoji or symbol, and a different display name.
- Keyboard-first preset
- vi-style keys: j and k to move, h and l to leave and enter.
- Remappable shortcuts
- Change any shortcut by pressing the keys you want.
Knowing what is there
- Disk map ⇧⌘U
- A ring chart of what is using the space, biggest first.
- Folder sizes
- An optional column showing how big each folder is.
- Git status
- Marks changed files, and folders with changes inside.
- Archive browsing
- Look inside a zip, tar, 7z or rar without unpacking it.
- Copy path, six formats
- Absolute, file URL, filename, no extension, parent, shell-escaped.
- Compare two files ⌥⌘D
- A unified diff, with both sets of line numbers. Patches open in it too.
- Branches ⇧⌘B
- Every local branch, ahead and behind, and a diff against the current one. Switching is a beta setting and refuses a dirty tree.
- Recents ⇧⌘Y
- The files you touched and the actions you took, newest first.
- Hide from screen sharing ⌃⌘P
- Every window is left out of a screen share, a recording and a screenshot, and stays on your own screen as it is.
- Hidden files ⇧⌘.
- Show or hide dotfiles.
Reaching other places
- Connect to Server ⌃⌘K
- Mount SMB, AFP, NFS, WebDAV or read-only FTP. No password goes through Soquel.
- SFTP with nothing to install
- Type what you would type for ssh. No macFUSE, no sshpass, no kernel extension.
- The SFTP password never reaches the command line
- It goes to ssh over a pipe, and is not stored.
- One SFTP connection, reused
- You are asked for the password once. Browsing after that does not reconnect.
- Cloud drives in the sidebar
- iCloud Drive, Google Drive, Dropbox, OneDrive and Box, wherever they are installed.
- Terminal and editor ⌃⌘T ⌃⌘E
- Open the current folder in your terminal or editor.
- Open With, and set the default
- Open a file in any app, or change what opens that type everywhere.
- Choose what opens each kind of file
- Twenty-three file kinds in one Settings table.
- A prompt before slow applications
- Asks first before launching Xcode, Android Studio and the like.
Making it yours
- Settings as one JSON file
settings.json. Edit it in any editor and the app picks it up without restarting.- Customisable colours
- Seven colour slots, set separately for light and dark.
- Ready-made palettes
- Eight to pick from, or edit
theme.jsonyourself. - Background image
- Any image behind the file list, with opacity and five fit modes.
- Designed light and dark palettes
- Numbers are monospaced, so columns of them line up.
- Settings window ⌘,
- Appearance, Themes, Keyboard, Applications, Window and Updates.
When something goes wrong
- Logging
- Every notable action goes to a dated file in
~/Library/Logs/Soquel/. - Copy Recent Logs
- Puts the last three minutes on the clipboard, ready to paste into a bug report.
Nothing matches that.
Questions
- Is it safe to open? It is not from the App Store.
- It is signed with an Apple Developer ID and notarised by Apple, so it opens with a normal double-click and no warning. Notarising means Apple has scanned the build; it does not mean Apple endorses it.
- Desktop, Documents and Downloads look empty.
- Those folders are protected by macOS and need Full Disk Access. Soquel offers to set it up on the first launch, and the same window is under Soquel → Set Up Permissions… A file manager cannot grant itself that, and neither can anything else: the list is protected by System Integrity Protection precisely so no program can add itself to it.
- Can Soquel replace Finder?
- Not entirely, and no application can. macOS keeps folders for Finder — the call to reassign them is refused. Disks can be reassigned, so double-clicking one opens it here, and anything can be opened in Soquel through Open With.
- Does it send anything anywhere?
- There is no account and no telemetry. Search by meaning runs on the language model macOS already ships. Clean This Folder is off by default; if enabled, Ollama, LM Studio and llama.cpp keep its request local and are the recommended choice. A hosted provider receives the exact text shown by Show What Would Be Sent; use one only for approved data, and never send protected health information without an executed BAA. Hidden files are skipped, secret-bearing files are not opened and key-shaped text is removed first. Separately, the opt-in update check asks github.com for the latest release tag and sends nothing about you or your machine.
- Where does it keep my settings?
- Three readable JSON files in
~/Library/Application Support/Soquel/: settings (the sidebar included), colours and saved layouts. Edit one in another editor while Soquel is running and the window redraws. Deleting the folder resets everything. - Is it really free?
- Yes.
- Where do I ask a question or report something?
- Two places, pick whichever fits. soquel.hamlet.so is a forum — plain questions, "how do I", "this is behaving oddly", ideas. No GitHub account needed. GitHub issues is for bug reports with steps to reproduce, and feature requests you want tracked against the code.
Changelog
- Local AI comes first. Ollama, LM Studio and llama.cpp are first in the provider picker, Ollama is the default, and the app recommends the local path because it needs no key and keeps the request on your Mac.
- Hosted use requires an explicit data approval. Before adding or using a hosted API key, confirm that the provider is approved for the files and that an executed BAA covers any protected health information.
- Removed stale Keychain wording left in the provider interface. Keys live in Soquel's separate mode-0600 credentials file.
- Clean This Folder says what it did, and offers to put it back. How many files went into how many folders, with an Undo button beside Done. The whole clean is one step, so nothing has to be unpicked file by file.
- Fixed: the panel could wedge. Both “Show What Would Be Sent” and the provider picker opened a sheet on a sheet, which never presents and still blocks its parent — every click beeped and force quit was the only way out.
- Fixed: pressing a button before the folder had been read crashed.
- Fixed: the ✦ button never reached the toolbar, and the API key is now a 0600 file rather than a Keychain item that asked for a password on every update.
- Clean This Folder ⌃⌘L, a beta you turn on in Settings › Clean. Reads one folder and suggests where things should go, as moves you tick. Nothing moves until you say so, and the whole clean undoes as one step.
- Ask whichever service you like, or none: Ollama, LM Studio and llama.cpp run on your own machine and need no key, and Soquel finds the one you already have running. OpenRouter, Anthropic, OpenAI, GLM, DeepSeek, Groq and Together are a click each, or type in any address that speaks either format.
- The only feature that sends the contents of files anywhere, so: hidden files are not read, files whose names suggest a secret are never opened, anything shaped like a key or a password is removed first, and a button prints the exact text before it is sent. Your files on disk are never altered by any of that.
- Mark a folder as global and things can be filed into it from anywhere. Write a sentence about what a folder is for and Soquel is told it. A plan may not move a file anywhere else.
- Launch Soquel from Terminal. Settings › General installs the
soquelcommand; run it on its own or give it one or more folders to open. - The installer puts the command in
/usr/local/bin, asks for administrator approval only when needed, and asks before replacing a file already using that name.
- Update channels. The middle number is a finished release, the last one is a nightly, so 1.3.0 is finished work and 1.3.1 would be the day's. Settings › Updates picks which you follow.
- Soquel can install an update itself — it checks the download is signed by the developer before replacing anything, and refuses outright if it is not. Off until you turn it on.
- A faulty-build notice. If the version you are running has been withdrawn, Soquel says what breaks and offers one click to the fix and one back to the last good version.
- Settings › Default App. Finder starts, Soquel takes over, Finder quits — covering the Dock's Finder icon and Reveal in Finder. Also mounted disks, and hiding the desktop icons. One button gives all of it back.
- The Git column explains itself. Hovering a badge says what Git thinks and what would change it; the column header carries the whole legend.
- Fixed: a branch whose name begins with a dash was passed to git as an option.
git diff --output=<file>writes over that file, so Diff with Current could empty one of your files with one click. This withdrew 1.1.0. - Fixed: the diff panel dropped every blank line and numbered every line after one too low.
- Fixed: parsing a patch was quadratic and ran on the main thread — 16,000 lines froze the window for 8.3 seconds. It is linear now, and off the main thread.
- Fixed: opening a
.diffhad no size limit. It refuses over 8 MB, as comparing two files already did. - Fixed: extracting one entry of an archive could reveal an unrelated file outside the extraction folder.
- New: a faulty-build notice. If the version you are running has been withdrawn, Soquel says so and offers one click to install the fix and one to go back to the last good version. Both check the signature first. Settings › Updates turns it off.
1.1.0 — withdrawn
18 Aug 2026 removedWithdrawn — do not use. In the Branches panel, Diff with Current on a branch whose name begins with a dash can empty one of your files. Git reads the name as an option rather than a branch. Use 1.1.1. This release has been removed and can no longer be downloaded.
- Compare two files ⌥⌘D. A unified diff with both sets of line numbers.
A
.diffor.patchopens as a diff instead of grey text. - Branches ⇧⌘B. Every local branch with ahead and behind counts, and a diff against the one you are on. Switching branches is a beta setting, off by default — with it on a switch is refused while there are uncommitted changes rather than stashing them for you.
- Renumber a batch that is already numbered. Close a gap, start somewhere else, or insert in the middle, keeping the rest of every name.
- Recents ⇧⌘Y. What you opened, moved, renamed and trashed. Recording costs 2.2 microseconds and the file is written on a timer, not per action.
- Hide from screen sharing, on ⌃⌘P. Every Soquel window is left out of a screen share, a recording and a screenshot, and stays on your own screen exactly as it is. macOS refuses to make an image of the window at all, so nothing you forgot to hide can leak.
- A General pane in Settings holding every switch that used to live only in the command palette: hidden files, folders first, Git status, folder sizes, column fitting, per-folder views, the preview panel, the folder tree, sync browsing, keyboard-first keys and verified copies.
- The pane toolbar disappeared for good below about 820 pt of window width. It scrolls now, so every button stays reachable at any size.
- The breadcrumb keeps the folder you are in on screen instead of cutting it off the end.
- The sidebar notices volumes as they mount and unmount. A disk image did not appear until the next launch.
- Clicking the Dock icon with no window open makes one.
- Eject a mounted disk image, external drive or network share from the sidebar — a button on the row, or Eject in its context menu. Installers no longer sit there mounted with no way to get rid of them.
- ⌘W closes the window and leaves the app running. ⇧⌘W quits. Close Tab moved to ⌥⌘W, Close Pane to ⌃⌘W.
- A copy-path button in the address bar. It was reachable only from a menu or a shortcut before.
- 209 bug fixes.
- Reading a folder of 1,000 files: 50 ms → 10 ms. Copying 4,000 files: 31 a second → 2,000 a second.
- Drag and drop only worked list-to-list. It works in icon view, column view and onto the sidebar now.
- Double-click did nothing in icon view.
- A file named
-mmade Compress delete the other files you selected. - A typo in a hand-edited settings.json wiped every setting on the next save.
- ⌘W quit the app when the window had one tab.
- Five of the six settings panes were blank.
- Undo was greyed out after every file operation.
- Command palette moved from ⌘K to ⇧⌘P. ⌘K is unbound.
- SFTP and cloud drive entries added to the feature search; they shipped in 1.0.6 unlisted.
- Changelog added to this page.
- SFTP over
/usr/bin/sftp. No macFUSE, no sshpass, no kernel extension. - SFTP password passed via
SSH_ASKPASSpipe, not argv. Not stored. - SFTP holds one
ControlMasterconnection; later operations skip the handshake. - SFTP is a browser window, not a mount. Other applications cannot see the files.
- Connect to Server infers
sftp://fromuser@host. - Sidebar lists iCloud Drive, and any provider under
~/Library/CloudStorage. - Fixed: empty password segfaulted — window released inside the alert's dismissal.
- Fixed: SFTP hit the mount check and was rejected before the browser opened.
- Fixed: tree folder expansion was never persisted; only sidebar groups were.
- Fixed: navigating a pane scrolled the sidebar and moved its selection.
- Fixed: sidebar click called
focusTable(), so arrow keys never reached the outline. - Fixed: Themes tab widened the Settings window. Panes are pinned to the tab view width.
- Fixed: Escape did not close Settings.
- Rename edits in place in list, icon and column view. Base name selected, extension excluded.
- Return commits, Escape cancels, click elsewhere commits.
- Fixed:
editColumn(0,…)targeted the Git column, which has no text field. Name column now looked up by identifier. - Fixed: editor had no opaque background; row highlight and old name showed through.
- Fixed: commit ran inside the dismissing click, collapsing parent columns in column view.
- Fixed: editor frame grew from the cell origin, drawing half a row high.
- Reads
.DS_Storefor view mode, sort column and icon size. Never writes one. - Soquel's own per-folder settings take precedence over Finder's.
- ⌘A in list, icon and column view.
- ⌘-click and ⇧-click in column view.
- Column widths and column-view width draggable, clamped to a minimum.
- Icon view zoom.
- HTML preview via WKWebView.
- Fixed: two filter fields were on screen at once.
- Fixed: tab bar invisible in every build shipped.
.fullSizeContentViewput the top 28pt of each pane behind an opaque title bar. - Fixed: double-click and list-view rename did nothing. Pane read
Prefs.viewModewhile the list drew from its own mode. - Fixed: column view drew an empty pane, same cause.
- Fixed: path bar emitted
//Applications; a separator followed the root crumb. - Default sort is newest first. Folders no longer grouped above files.
- Copy Path on ⌥⌘C.
- Compress excludes
.DS_Store,__MACOSXand._*. - Themes install from a gist or a git repo. A repo can carry an image.
- Window opacity applies to the window, not the background image.
- Air, Windows 95 and Platinum themes.
- Settings searchable.
- Duplicate finder. Groups by size, hashes only on collision. Detects duplicate folders, not just files.
- Verified copy. Checksums both ends, reports per-file pass or fail. Off by default.
- Quick Look on a folder shows its contents.
- Sync browsing. Off by default.
- Make Symlink —
ln -s, relative when link and target share a parent. - Folder tree lists files, five then an overflow row.
- Show Package Contents in a window over the pane.
- Tags, per-folder view settings, transfer retry, Run a Command Here.
- Uninstaller matches both
Nameandcom.vendor.Namesupport folders. - Warning before trashing on a network volume.
- Opt-in update check.
First public release. 38 issues from an adversarial sweep closed. Seven could lose data:
- Fixed: the test suite wrote over the user's colours.
- Fixed: opening
theme.jsonrewrote it with the shipped palette and dropped the background. - Fixed: folder sync wrote a file over a directory, deleting the tree, and reported one replaced file.
- Fixed: replace deleted the destination before confirming the replacement landed.
- Fixed: type-to-select only worked in list view — NSTableView implements it; nothing else did.
- Fixed: thumbnail cancellation was a no-op; every generator ran to completion and was discarded.
- Fixed: a failed regex reported "no matches" instead of an error.
- Fixed: semantic search scoped to
~/Notesreturned hits from~/Notes-archive. - Fixed: disk map charged unreadable files zero bytes, so a protected folder read as empty.
- Fixed: sidebar drops landed at the bottom regardless of target.
- ⇧⌘L pins and unpins the current folder.
Pay what you like
The download is the whole thing. There is no paid version and nothing is held back from this one. That said, if you found it helpful, you can send USDC, USDT or ETH here:
Ethereum. Other chains tooWell established tokens are fine, including on Solana and Bitcoin. Shitcoins I burn on sight. They have destroyed the world of crypto.