Show HN: Spyc – a vi-driven terminal file commander for your coding agents Tripstack Corp. released spyc, a Rust-based, vi-driven terminal file commander that integrates AI coding agents via a local MCP socket, allowing agents to access the user's file selections and status without copy-paste. The tool, available via Homebrew and cargo, features a two-pane interface with a vim-flavored file manager and a child process pane (default Claude Code, also supporting Codex, Antigravity, and zot), plus git integration through gix, Lua scripting, and live previews. spyc is an independent project not affiliated with Side Effects Software Inc. or Anthropic. The file commander built for collaborating with your coding agents. Keyboard-driven · MCP-native · Rust · macOS and Linux Put an AI coding agent in your terminal and you get a chat window. You still describe your working tree to it, paste paths back and forth, and lose track of what it's looking at. spyc runs the agent in a pane beside a keyboard-driven file commander and gives it live, structured access to what you're looking at over a local MCP socket. The agent asks spyc what is the cursor on, what is staged, what is picked — no copy-paste, no path description. Pick three files, ask a question, and it sees your selection. When it names a path in its answer, gf jumps you there. The file manager is the shared workspace where you and your agents actually work — not a file list bolted onto a chat window. A two-pane terminal program. The top pane is a vim-flavoured file commander with git-aware listings; the bottom pane is a child process — Claude Code by default Codex, Antigravity and zot are first-class too , in practice anything. They share focus through a screen-style ^a chord prefix. Everything else — vi motions, marks, picks, inventory, pager, shell integration — is what you'd expect from a keyboard-driven file manager. The MCP bridge is what sets spyc apart from Yazi, Broot, or Ranger. A real session, mid-task: two columns on one worktree ^s n , three agent tabs on the divider each carrying its own activity dot, and the A monitor top-right reporting draws per second, throughput, and every MCP tool the agents have called. Two bands are blurred — the agent's own status line, and one command echo carrying an absolute home path. The name. Say it "spy-see" — near enough to spicy , which is where the chili comes from. It carries a lineage too: spy and the keyboard-driven file commanders before it, rebuilt from scratch in Rust for the age of coding agents. spyc is an independent project, not affiliated with or endorsed by Side Effects Software Inc. or Anthropic. Markdown renders, source arrives syntax-highlighted, a binary falls back to a hex dump — same key every time, no editor, file list still there. Images open as actual pictures on a terminal with a graphics protocol. ^s | opens a live preview column on the cursor file; press it on another file to swap, again to close. It re-renders when the file changes on disk, so it doubles as a watch window while something else writes. The gutter marks what changed; gd diffs against HEAD, | toggles side-by-side/unified, gb blames. All in-process through gix — spyc never shells out to git . map T lua todos binds a key to a script. This one runs spyc's own gitignore-aware search and picks every file with a TODO left in it. Scripts run off the main thread behind a kill switch; init.lua can register : commands and event hooks too. Each tab carries a live dot — pulsing while the agent works, settling to a hot-red square the moment it blocks — and that transition fires a border pulse and a desktop notification, so you get pulled back from another window. Driven by the agent reporting its own status over MCP, not by scraping the screen. Pre-built, signed binaries — no Rust toolchain needed: brew install Tripstack-Corp/tap/spyc macOS & Linux cargo install spyc any platform, with Rust Debian/Ubuntu users get a signed apt repo, and every release ships verified tarballs. Full install guide — apt, tarballs, terminal, font, clipboard and MCP setup — is in INSTALL.md; building from source and running the rolling CURRENT stream are in BUILD.md /Tripstack-Corp/spyc/blob/main/BUILD.md . You'll want a coding agent for the pane npm install -g @anthropic-ai/claude-code and a Nerd Font https://www.nerdfonts.com/ for the powerline status bar — press C inside spyc for a mono fallback if you'd rather not install one. spyc opens in the current directory spyc -r resume a session tabs + each agent's conversation Move with hjkl , Enter opens, e edits, ? shows the full help overlay. Then try the part that makes spyc spyc, in a git repo: - Press t on two or three files to pick them. - Press ^\ to open the agent pane — it launches claude by default. - Ask: "How do these files interact?" The agent reads your picks over MCP, with no pasting of paths. - When it names a file, press gf to jump straight to it. ^a j / ^a k switch focus between the list and the pane. On startup spyc runs a local MCP server and writes the agent's config automatically — no flags, no setup. The agent can then ask spyc: What you're looking at — get spyc context : cwd, cursor file, picks, inventory, active filter, git branch. Where things are — search paths / search content gitignore-aware , plus search picks and search inventory for state generic filesystem tools can't see. Git and worktrees — status, log and diff in-process, plus worktree create/open/remove without ever shelling out to git worktree . The handshake has to stay short, so the depth ships as an installable skill: spyc --install-skill → Claude Code, codex, and agy skill dirs spyc offers a Y/n update when its copy moves ahead of yours, never overwrites edits you've made, and is managed in-app with :skill . Multiple spyc instances coexist safely, and enterprise managed-mcp.json policies are respected — see INSTALL.md /Tripstack-Corp/spyc/blob/main/INSTALL.md mcp-configuration . Each tab's activity dot answers which one needs me — hot pulse while working, settled square when blocked or done, with a desktop notification on the transition. An advisory scope registry register scope / list scopes / wait for scope clear keeps parallel agents off each other's files. Sessions auto-save within seconds of any change, so a crash loses almost nothing and spyc -r resumes every tab and conversation. Design: docs/AGENT ORCHESTRATION.md /Tripstack-Corp/spyc/blob/main/docs/AGENT ORCHESTRATION.md . The essentials. Press ? in spyc for the full overlay, or see docs/KEYBINDINGS.md /Tripstack-Corp/spyc/blob/main/docs/KEYBINDINGS.md for the complete map. | Key | Action | |---|---| h j k l | Move counts work: 5j | Enter / e | Open in pager / open in $EDITOR | t | Pick / unpick a file multi-select | ^\ or F10 | Toggle the agent pane | ^a j / ^a k | Switch focus between list and pane | ^a s | Send picked paths to the pane | gf / gF | Jump from pane output to a file + line | F / :grep | Fuzzy filename finder / project content search | ? / q | Full help overlay / quit | spyc reads .spycrc.toml from ~/.spycrc.toml user and ./.spycrc.toml project , applying changes live. Bootstrap a fully-commented file with every default: spyc --print-config ~/.spycrc.toml Rebind keys, set colors and layout, tune agent notifications, script in Lua. Note that ^a and ^w are reserved as chord prefixes, and a project-local config can't bind executing verbs — full reference, including both rules, in CONFIGURATION.md /Tripstack-Corp/spyc/blob/main/CONFIGURATION.md . | docs/KEYBINDINGS.md /Tripstack-Corp/spyc/blob/main/docs/KEYBINDINGS.md CONFIGURATION.md /Tripstack-Corp/spyc/blob/main/CONFIGURATION.md .spycrc.toml , notifications, keymap DSL, Lua INSTALL.md /Tripstack-Corp/spyc/blob/main/INSTALL.md BUILD.md /Tripstack-Corp/spyc/blob/main/BUILD.md docs/HARNESS.md /Tripstack-Corp/spyc/blob/main/docs/HARNESS.md docs/AGENT ORCHESTRATION.md /Tripstack-Corp/spyc/blob/main/docs/AGENT ORCHESTRATION.md ARCHITECTURE.md /Tripstack-Corp/spyc/blob/main/ARCHITECTURE.md DESIGN.md /Tripstack-Corp/spyc/blob/main/DESIGN.md CHANGELOG.md /Tripstack-Corp/spyc/blob/main/CHANGELOG.md · ROADMAP.md /Tripstack-Corp/spyc/blob/main/ROADMAP.md CONTRIBUTING.md /Tripstack-Corp/spyc/blob/main/CONTRIBUTING.md Issues https://github.com/Tripstack-Corp/spyc/issues roadmap board https://github.com/orgs/Tripstack-Corp/projects/1 BSD-3-Clause. Logo uses Twemoji https://github.com/jdecked/twemoji pepper artwork CC-BY 4.0 .