for your Mac // dual-pane · keyboard-first
Inode app icon

The file manager that knows where you're working.

Folders used by your shells, editors, and coding agents appear in the sidebar, one keystroke away. Dual panes and function keys cover everyday file operations.

A native macOS file manager in the commander tradition, with two panes, tabs, and an editable breadcrumb path bar. The keys Finder taught you work here: ↩ renames, ⌘O opens, ⌘⌫ trashes. So do the classic commander keys: F5 copies and F6 moves. ⌘K connects to your servers, and ⇧⌘Space opens Ask Inode, which turns a plain-language request such as "compress the selected files" into a command using Apple Intelligence on your Mac.

Inode's dual-pane window: a Swift project on the left with git status dots and sortable columns, a release folder on the right
Two panes, tabs, breadcrumb paths, sortable columns, git status beside the names.
Active workspaces

Your current working directories are in the sidebar.

The sidebar's Active section lists the folders your configured shells, editors, and coding agents are working in. Go Anywhere (⇧⌘G) tags each folder with the tool working there and jumps straight to it.

⇧⌘G, four letters, ↩: the pane lands in the folder codex is working in.

Agents & editors

claude, codex, nvim, hx: long-running tools show up with their working directory the moment they start. The roster is yours to configure (smartViews.processNames).

Shells & tmux

Inode lists each running zsh, bash, and fish shell by TTY recency, along with tmux sessions and their working directories.

Finder windows

Folders open in Finder appear as places in Inode. Wherever you were browsing, you can keep going with two panes.

Recents & favorites

Go Anywhere (⇧⌘G) fuzzy-searches recent folders, favorites, and process directories in one list. Literal paths work too.

Ask Inode

Type what you mean.

⇧⌘Space opens Ask Inode. It turns one sentence into a selection, filter, or file operation. Apple's on-device foundation models parse the request, and all processing stays on your Mac.

"show only files edited today"filters the listing to today's changes
"select all image files"selects every image in the pane
"delete log files over 50 MB"moves the matches to the Trash, after you confirm
"compress the selected files"zips the selection
"open all pdfs named invoice"opens the matches with their default app
"find reports edited this week"fills the search criteria and runs it
"select screenshots edited this week", parsed and applied on this Mac.
[typed]

Typed commands you can inspect

The model returns a typed command with a verb and criteria. Inode checks those fields against your request before running it. Destructive requests require confirmation. File operations use the same queue as F5 and F8, including its ⌘Z undo support.

[on-device]

Apple Intelligence, on this Mac

Parsing runs in the on-device models; the request never leaves your Mac. On Macs without Apple Intelligence the menu item grays out, and every other feature keeps working.

Servers

Remote servers, in the same two panes.

⌘K lists your SSH hosts and saved connections; one keystroke later the pane shows the server. Browse, copy with F5, rename, and delete over SFTP, WebDAV, FTP, SMB, and rclone, with the same progress and conflict handling as local operations.

Your SSH config, understood

SFTP hosts come straight from ~/.ssh/config, read the way ssh reads it: Include files and variable expansion land correctly. Point a connection at a specific private key when you need one.

Add your own

Settings → Connections stores SFTP, WebDAV, FTP, SMB, and rclone servers, with no SSH config required. Test a connection before you save it.

Passwords, handled

Save a password to the macOS Keychain, or type it when you connect. Saved passwords stay bound to the server they were saved for.

In the sidebar

Every server is a sidebar entry: click to connect, eject to end the session. A connected server browses like any other folder.

Projects

Every project in its own tab.

Workspaces keep several projects open in one window. Each one has its own pane tabs, sort, views, columns, and previews, and all of them come back after a restart. ⌘⌃O opens a project, ⌘⌃N starts a workspace at the current folder, and ⌘⌃] or ⌘⌃[ switches between them.

[tabs]

A tab for each project

A strip of workspace tabs appears above the panes once a second workspace is open. Double-click a tab to rename it, and close one with ⌘⌃W. Shelves, recents, the terminal, and your settings are shared by all workspaces.

[project file]

A file you can commit

A project can carry .inode/workspace.jsonc. It sets the tab title and the starting layout, and it adds favorites, saved searches, and commands while that workspace is active. Nothing runs when a project opens. Each project command asks before its first run.

// .inode/workspace.jsonc
{
  "version": 1,
  "title": "inode",            // the tab title
  "layout": {                  // first open only
    "left":  { "tabPaths": ["./", "./Sources"] },
    "right": { "tabPaths": ["./docs"] }
  },
  "favorites": ["./docs"],
  "commands": [
    { "title": "Build", "command": "swift build" }
  ]
}

Commit it with the repo. On another Mac or in a fresh clone, inode -w asks once and then opens the project with that layout.

Finder

Move between Finder and Inode.

Open a Finder window's folder in either pane, or reveal an Inode selection in Finder when you want the desktop view.

Finder's windows, in your sidebar

Whatever Finder has open is a place in Inode, one click or keystroke away. Go › Import Finder Favorites… brings over the folders from Finder's sidebar.

Same Trash, same Quick Look

F8 uses the system Trash, so ⌘Z brings files back. Space previews with Quick Look, thumbnails and all.

Reveal and return

⌘⌥R reveals the selection in Finder. Drag & drop works in both directions.

Git

Your working tree, in the file list.

[status]

Badges where you look

Modified, untracked, and added marks sit next to file names and aggregate onto directories, so a dirty subtree is visible from the top. One config switch (general.showGitStatus) turns it off.

[repo]

Repo-friendly artifacts

A project's .inode/workspace.jsonc is plain JSONC with paths relative to the project, so you can diff and commit it. Your keybindings and appearance stay in your own config.

Keyboard

The keys you already know.

Finder's shortcuts work out of the box, the orthodox commander keys stay on as aliases, and every binding can be changed in the config. The command palette reaches every action.

↩rename; F2 still works
⌘O / ⌘↓open the selection
F5 / F6copy / move to the other pane
⇧⌘N / ⌘⌫new folder / move to the Trash; F7 and F8 still work
⌘F2batch rename with live preview
⇥switch panes
SpaceQuick Look
⌘Kconnect to a server: SSH hosts and saved connections
⌘⌥Ppreview the selection below the active pane (⌘⌥E edits a text file in place), or float it with ⌘⌥⇧P
⌘⌃N / ⌘⌃Onew workspace / open a project as a workspace tab
⌘⇧Pcommand palette with fuzzy search over every action
⇧⌘GGo Anywhere: recents, favorites, process cwds
⌘Ledit the path by turning breadcrumbs into a text field
typefilter the listing; every word must match, so "pdf 39" finds Rechnung_202600039.pdf
⌘⌥Ffilter the sidebar as you type
⌘Fsearch: This Folder to Everywhere, content terms, saved searches
F4terminal panel, follows the active pane
F12visor mode slides Inode over any app with a global hotkey
⌘Zundo moves, renames, trash, copies, archives
Optional vim keys

One line in ~/.config/inode/config.jsonc ("vimKeybindings": true) adds h/j/k/l, gg/G, dd, yy, p, and / for filtering on top of the defaults. It's off by default, and your own bindings always win.

In the box

More tools for daily file work.

Compare & sync marks unique, newer, and older across panes.
A zip archive opened like a folder, its contents listed in the pane
Archives open like folders; F5 extracts.

Preview & edit in the pane

⌘⌥P opens a live preview below the active pane's list. Text files are editable right there and save through the same undo-friendly queue. Each pane keeps its own preview, and ⌘⌥⇧P floats it in a window you can place anywhere.

Archives are folders

Enter zip, tar, and 7z like directories. F5 extracts; the system's bsdtar does the work.

Copy progress and conflict handling

Inode uses APFS clones when possible and reports byte-accurate progress. You can resolve each conflict, cancel an operation, or leave it queued.

Compare & sync

⇧F2 marks unique, newer, and older across panes; mirror one-way when you're ready.

Batch rename

Patterns like [N], [C:1:1:3], and regex find & replace, with a live preview before anything touches disk.

Embedded terminal

F4 opens a real terminal that follows the active pane's directory.

Custom commands

Config-defined shell commands with $FILES, $DIR, and $OTHER_DIR appear in the palette and can be bound to keys.

Open with any compatible app

The full "Open With" submenu lists every app that can handle the selection, with the default app first.

Visor mode

A global hotkey summons Inode over any app, Yakuake-style, from the top edge.

Pin & recall

Keep Inode floating on top while you work in another app; the Recent Folders picker jumps you back.

Info panel

⌥⌘I: preview, metadata, and on-demand folder sizes.

Disk-usage treemap

Select a folder in Preview Mode for a treemap of what's inside. Switch between size and file count, and click a tile to descend. Dotfiles stay hidden until you toggle them in.

List columns

Created, last-opened, and added dates, kind, extension, tags. Each pane remembers visibility, order, and width; every header sorts. Send via Mail sits in the context menu.

Command-line companion

Settings → General installs the inode command: inode <path> opens a location in the app, with flags for the Shelf, panes, and the visor. inode -w opens the current folder's .inode/workspace.jsonc as a workspace tab. inode:// links do the same from other apps.

Config as text

Inode reloads config.jsonc when it changes. The file supports comments and stores keybindings, favorites, commands, and appearance settings in a diffable format.

The license

Buy once. Keep it forever.

One purchase buys a year of updates and software that stays yours when the year is over.

Yours, outright

One purchase covers three Macs. After you enter the key, Inode runs offline. Licensing does not use DRM or require an account.

A year of updates

Every release for twelve months from purchase, features and bug fixes alike. Critical security fixes keep shipping beyond that year.

The installed version does not expire

When your update year ends, the installed version remains active on every Mac you licensed.

Renew at your pace

Another year of updates is €19 / $19, half the price of a new license. Renew whenever the current releases tempt you: skipping a year is fine, and picking it back up later is, too.

Get Inode.

Download it, press ⇧⌘G, and jump to one of your current working directories. The trial is free for 14 days. A license covers three Macs, costs €39 / $39 one time, and includes a year of updates; installed versions do not expire.

macOS 26+ · Apple silicon · native AppKit · works alongside Finder · Ask Inode uses Apple Intelligence on device · brew install --cask river42-com/tap/inode

Get update news.

A few messages a year when a new version ships.

We use double opt-in and do not track you. Every message includes an unsubscribe link.