Marmota is a terminal file manager that works beside your Claude Code and Codex sessions; you start it with y. You browse files on top; at the foot you see every session that runs, what each one is doing, and you can write to any of them without leaving your files.
# the first time, build.sh installs everything: Go, WezTerm, a Nerd Font, the y command
git clone https://github.com/junjieliang672/marmota.git
cd marmota
./build.sh
# then, in a new terminal (WezTerm)
y
build.sh builds the program into bin/y, adds a short block to your shell config that puts it on your PATH, and gives WezTerm its look: the pane you type in stays bright and a blue edge marks it. Run ./build.sh again whenever you pull new changes; it keeps your settings and adds any new ones.
2
What is on the screen
ABCDEF
A
File panels. Your folders. tab moves to the next panel, n opens another. A ✳ marks a file a running session changed.
B
Preview. The file under the cursor; while you are in the Sessions box, the selected session's conversation.
C
Sessions box. Every running session, cc for Claude Code and co for Codex. ! goes in and out.
D
Details. The file, your Mac's cpu, memory and disk, and file operations under way. M focuses it.
E
Ask box. Where you write to a session, or start a new one. K opens it.
F
Status line. The keys you can press now, and how many sessions are working, need you or have unread replies. F hides the boxes at the foot.
3
Pick how you want to work
Marmota works as a plain file manager, or with coding agents beside it. Start with the way you work today; each one builds on the one before.
Workflow 1
Just browse files
No agents needed. Marmota is a file manager first: two or more panels, a preview of what is under the cursor, and the boxes at the foot, which F hides.
Two panels: trip notes on the left, the code of a tide-table tool on the right. The preview shows predict.go, the file under the cursor.
Jump to a project and open a file
z, type part of the folder's name, enter. (ctrl+n opens it in a new panel instead.)
/ and a few letters filter the folder; esc clears it.
e opens the file in your editor; E in your second one.
Move files between two folders
n opens a second panel; go to the destination there.
tab back to the first panel.
One file: ctrl+c to copy or ctrl+x to cut. Several: space on each, then c or x.
tab to the other panel, v to paste.
z, then ti: the folders you visit most whose names match, with how often you went there. enter goes to the picked one.
Find a file deep in a folder
Put the cursor on the folder and press f.
Type part of the name; enter goes to the file.
Look before you open
The preview shows text, code, images and PDFs; ctrl+f hides or shows it. In a PDF, alt+shift+→ turns the page.
M focuses Details: the file's size and dates, file operations under way, and your Mac's cpu, memory and disk.
Hand files to another app
p copies the path; P the parent folder's; c the current folder's.
Y sends the selection to your shelf app (Yoink) to drag elsewhere.
Keep your places, and leave from one
t pins the folder under the cursor; s opens the popup with pinned folders and recent files.
Q quits and leaves your shell in the folder you were in.
s: your pinned folders and recent files. The line at the bottom shows the path enter goes to.
Workflow 2
One coding agent beside you
Claude Code or Codex runs in a WezTerm pane next to Marmota, in the folder you are in. You browse on the left and talk to it on the right; Cmd+Opt+←→ move between the two.
Claude Code adds a health check, on the right. On the left, ✳ marks the two files it has changed so far (M changed in git, ? new), and the status line says ✳ 1 working.
Start it
Go to the project's folder.
>, type claude or codex, enter. The session opens beside Marmota.
Show it the files you mean
Select the files in Marmota (space), or leave the cursor on one.
@ types them into the session's prompt as mentions and moves the keyboard there.
Say what to do with them.
@ on server.go typed @internal/api/server.go into Claude Code's prompt and moved the keyboard there; the request follows it.
Keep browsing while it works
A ✳ marks each file it changed; a folder shows how many inside (✳3). Git's letter shows beside changed files.
The status line says ✳ 1 working until it replies.
Talk to it without leaving your files
m on a file adds it to your draft as a mention.
K opens the Ask box, which writes to it; type and press enter. ↑ brings back what you said before.
Answer when it asks permission
The status line shows ⚑ 1 needs you.
! lands on it; the preview shows its question with the options.
K hands your keys to the question (y, enter, arrows, esc); ctrl+k gives them back.
Bring it to the folder you are in
Browse to another folder.
= moves the session there; the conversation goes on. Claude Code gets its /cd typed in; a Codex session works there from its next turn.
A session out of sight wants to run a shell command. After ! and K, your keys go to its question: 1 answers Yes.
Workflow 3
Several sessions, one beside you
Hand tasks to sessions that run in the background, each in its own folder, while one stays beside you. The Sessions box lists them all; the others wait in a hidden WezTerm workspace until you bring one in.
Four sessions: two replied (●), one asks permission (⚑), one works beside Marmota (✳). The preview shows the selected session's question.
Start one in the background
! then n: the Ask box writes to a new session in this folder. (With no session running yet, K opens it that way.)
tab picks Claude Code or Codex; ctrl+o the model, ctrl+t the effort (medium unless you change it), shift+tab the permission mode.
Write the task, enter. It starts out of sight and your keyboard stays in Marmota. Its row shows at once; in a folder it hasn't seen, it first asks whether you trust it, and the preview shows that question: K answers it there.
See how each one is doing
! opens the Sessions box. Each row: its state, cc or co, its name, its age, and what it is doing now. A phone beside the age means Remote Control is on: you can follow and answer that session from the Claude app (Claude Code) or the ChatGPT app (Codex).
The preview shows the selected session's conversation; pguppgdown scroll it.
✳WorkingReplying or running a tool.
⚑Needs youAsks a permission or a question.
●UnreadReplied since you looked.
○WaitingReady for your next prompt.
!n, then tab for Codex: the Ask box will start a Codex session in tidepool, in auto mode, at medium effort.
Swap which one is beside you
In the Sessions box, jk to a session (or 3g for the third). From your files, ] and [ go straight to the next and the previous one.
enter brings its pane beside Marmota with the keyboard; the one that was there waits out of sight.
Write to any of them
Select a session in the Sessions box and press K.
Write and press enter: Claude Code gets it in its prompt even while hidden; Codex runs it after what it is doing.
For a running Codex session, ctrl+o and ctrl+t change its model and effort from your next message.
K on a hidden session: the message goes into its prompt. Under the draft, what you sent it before and when it replied.
Keep one in view while you browse
Select it, press V: the preview stays on its conversation while you move through files.
V again lets go.
Branch, rename, stop
w forks the session into a new git worktree, to try another approach without touching the first.
r renames it; x stops it after asking (the conversation is kept); m mentions a Claude Code session in your draft.
Workflow 4
Review what a session changed
Before you accept a session's work, read what it did, file by file, without opening each one.
W on the session that added the health check: its three files, and server.go compared with the file as it was before the session first changed it.
!, select the session, W: the panel lists the files it changed.
Move through them; the preview shows each file's diff. ] and [ jump to the next and previous change.
e opens the file in your editor to fix something yourself, or write to the session with K.
W or esc goes back to the folder.
Workflow 5
Leave them running
Get on with something else, in Marmota or another app. Marmota tells you when a session needs you, and never moves your focus on its own.
A hidden session stopped to ask permission. The note in the top right says which one and why; ! opens it, esc puts the note away.
When a session you can't see asks something, fails, or replies, a note appears in Marmota's top right corner; while Marmota isn't in front, WezTerm also posts a macOS notification.
The status line keeps count: ✳ working, ⚑ needs you, ● unread.
! opens the session the note is about; answer it with K, or esc to put the note away.
Away from your desk? Start the session with >claude rc: Remote Control lets you follow and answer it from the Claude app.
4
Make it yours
y path-list prints where your settings live, usually ~/.config/marmota.
config.toml: your editor, theme, preview settings, codex_command, and cd_on_quit (your shell moves to the folder you quit in).
hotkeys.toml: every key. If you prefer Vim keys, copy src/superfile_config/vimHotkeys.toml over it.
Themes: set theme to the name of any file in the theme folder.