neuron-explorer
Qwen3.5‑4B 전용 조향형 뉴런 탐색기, 모든 MLP 뉴런을 밀어 결과를 보관·탐색
Claude Code·Codex·Gemini CLI·Copilot 등 여러 에이전트 세션을 동시에 실행, 각각 별도 계정·프로젝트 폴더 제공
Run many Claude Code, Codex, Gemini CLI, Copilot and other agent sessions side by side, each with its own account and project folder.
개발 도구TypeScript · CSSGitHub @cachewraith온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
Desktop app for running many Claude Code, Gemini CLI and Antigravity sessions side by side, each with its own account, project folder and git branch. Windows, macOS and Linux.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Run many agent CLI sessions (claude, gemini, agy, codex, opencode, cursor-agent, copilot) side by side, each with its own account and project folder, as a chat or a terminal.
Install · Usage · Shortcuts · Build from source · Privacy
Switching claude accounts normally means logging out and back in. Wraithgrid removes that
step: every pane has its own account and its own project folder, and all of them run at the
same time in one window.
It runs the official CLIs as-is, pointing each pane at its account's folder through the CLI's
own variable: CLAUDE_CONFIG_DIR (Claude Code), GEMINI_CLI_HOME (Gemini CLI), CODEX_HOME
(Codex), CURSOR_CONFIG_DIR (Cursor Agent) or COPILOT_HOME (Copilot CLI). Claude and Gemini
accounts each keep their own login, settings and history. Codex, Cursor and Copilot keep their
settings and history per account, but may keep the sign-in in the system keyring, so their
accounts can end up sharing one login. Antigravity (agy) and opencode have no per-account
folder: all their accounts on a machine share one login.
Wraithgrid never reads, copies or proxies anything inside those folders, except when you
move a chat to another account yourself (Continue as…), which copies that one
conversation.
A claude pane can be a chat (like Claude Desktop or T3 Code) or a terminal: in both,
the official CLI does the work, with the same account, folder, CLAUDE.md, skills and mods.
| Many accounts at once | Personal, work and client accounts run side by side, each with its own login, settings and history. |
| Chat or terminal | claude panes open as a chat: streamed answers, tool cards and diffs, Allow/Deny approvals, model, effort and mode pickers, / skills, attached files. Switch any pane to its terminal. |
| Seven agent CLIs | Each account runs Claude Code, Gemini CLI, Antigravity CLI, Codex, opencode, Cursor Agent or Copilot CLI; mix them in one grid. |
| Paste screenshots | Ctrl+V in a pane pastes a clipboard image, even a Wayland screenshot: it is saved to a temp file and attached by path. |
| Flexible layouts | 1, 2 side by side, 2×2 or 3 columns. Drag dividers to resize, drag headers to swap, zoom any pane. |
| Projects | A project is a folder plus an account: its chats, their History (search, resume, delete) and its panes. Switch with Ctrl+Shift+1…9. |
| Usage | Each claude account's session and weekly limits with reset times, and spend per day, project and chat. |
| Continue as another account | Hit a limit? Carry a chat on under another claude account, in place. |
| Account folders | Group accounts into folders by drag and drop on the Accounts page. |
| Live pane status | Each pane shows whether its CLI is running (animated), waiting for your approval, done (finished while you looked elsewhere) or idle. Tuned for claude; other CLIs' prompts are matched from their docs. |
| Web preview | Preview in a project's menu runs its dev server (found in package.json or artisan) and shows the page in a pane beside the chat: local addresses only, its own session, other links open in your browser. Attach to chat hands the agent a screenshot plus the page's console errors and failed requests. |
| Git changes & worktrees | A pane's header shows its branch and change count; Ctrl+Shift+D opens the diff beside the grid (drag its edge to resize). Commit, Push, Pull, and a History tab with the commit graph. A pane can also run on its own git worktree branch. |
Download the package for your system from the latest release, or build one yourself.
| System | Package |
|---|---|
| Ubuntu 22.04+, Debian 12+, Kali | sudo apt install ./wraithgrid-<version>-amd64.deb |
| Fedora | sudo dnf install ./wraithgrid-<version>-x86_64.rpm |
| Arch (and Hyprland on Arch) | sudo pacman -U ./wraithgrid-<version>-x64.pacman |
| Any Linux distro | chmod +x Wraithgrid-<version>-x86_64.AppImage, then run it |
| Windows 10 (1809+) and 11 | Wraithgrid-Setup-<version>-x64.exe |
| macOS 12+, Apple Silicon | Wraithgrid-<version>-mac-arm64.dmg, drag to Applications |
| macOS 12+, Intel | Wraithgrid-<version>-mac-x64.dmg, drag to Applications |
Every release includes a SHA256SUMS.txt for verifying downloads.
On Linux or macOS, one line picks the right package, checks it against SHA256SUMS.txt and
installs it (WRAITHGRID_DRY_RUN=1 only downloads and checks):
curl -fsSL https://raw.githubusercontent.com/cachewraith/wraithgrid/main/scripts/install.sh | sh
[!NOTE] You also need the
claudeCLI. Wraithgrid finds it on yourPATH(including the native installer's~/.local/binand npm's global folder). You can also set its path in Settings.For other accounts, install that CLI (
gemini,agy,codex,opencode,cursor-agentorcopilot); they are found on yourPATH, or set a path in Settings → Other agent CLIs.
xattr -dr com.apple.quarantine /Applications/Wraithgrid.app.
Updates: Settings → Updates opens the release page instead of installing in place (macOS
only lets an app replace itself when it is Developer ID signed).claude as usual.
claude from Homebrew (/opt/homebrew/bin) or the native installer is found even when
Wraithgrid is opened from the Dock.wraithgrid, for window rules such as:
windowrulev2 = workspace 3, class:^(wraithgrid)$
exec, a .desktop entry or a dock often starts apps
without your shell's PATH. Wraithgrid then asks your login shell for it once at startup
(like VS Code does), so claude, node and the tools claude runs are found. Your shell rc
can check WRAITHGRID_RESOLVING_ENVIRONMENT=1 to skip slow setup during that call..deb, which installs an AppArmor profile. The AppImage also needs
FUSE 2 (libfuse2t64 on Ubuntu 24.04, libfuse2 on Debian/Kali, fuse-libs on Fedora,
fuse2 on Arch).--no-sandbox, and turning the sandbox off is not recommended.pwsh), then Windows PowerShell, then
cmd. The native caption buttons (with snap layouts) sit on the title bar. An npm-installed
claude (claude.cmd) runs through , so launch args containing are
refused; the native has no such limit.~/.wraithgrid/accounts/<name> for a fresh login. Pick its
CLI: Claude Code, Gemini CLI, Antigravity CLI, Codex, opencode, Cursor Agent or Copilot CLI.Ctrl+Shift+P): pick the folder in Wraithgrid's own folder picker (it fills in the name),
the account its chats use, the machine it runs on, and whether the first chat opens right
away.Ctrl+Shift+N: pick an account (plan and sign-in state
shown) and a folder; in a project both default to the project's, so it is usually just
Enter. More options has launch args (--resume, -c), a plain shell, and Work on a
new branch (git worktree), which gives the pane its own checkout under
~/.wraithgrid/worktrees so panes in the same repo don't edit each other's files.
Agents with a chat view always open as chats; a plain shell and CLIs without one are
terminals.Ctrl+Shift+Z.Ctrl+Shift+1…9 or
Switch project… in the palette.A chat pane runs the same claude without its terminal screen:
Esc
stops a turn.Shift+Tab cycles). Type / for
skills and commands.Ctrl+V pastes a screenshot./usage) shows each account's limits and spend; the top-bar
pill follows the focused pane's account.agy); other CLIs open as
terminals. codex chats run codex app-server (approvals, Stop, model, effort and mode all
live). agy
can't ask for approval in a chat: a tool that needs one is skipped and the chat says so
(pick Bypass permissions, or allow it in agy's settings), and Stop or a model/mode switch
restarts agy on the same conversation. Chat agents stop when
Wraithgrid quits (terminal panes can keep running), and the wraithgrid command sees
terminal panes only.When claude exits, the pane stays open with the exit code and last error line, and a
Restart button. On the next launch your projects, layouts, accounts and folders come
back and each pane starts claude again, continuing its conversation if you had prompted it.
Agents that keep running. Panes run in a small background process (wraithgrid-host), not
in the window. The first time you close the window with agents running, Wraithgrid asks:
Tick Remember my choice, or change it later under Settings → When the window closes. Running agents keep using CPU, memory and API usage, and no notifications arrive while the window is closed. On GNOME without the AppIndicator extension there is no tray icon: open Wraithgrid again to see or stop the agents. A window crash no longer stops panes either; the window reloads and shows them again. Updating from Settings → Updates stops running agents after asking. The background process exits by itself 10 minutes after its last pane ends.
Turn on Settings → Command line first; it is off by default. Then the wraithgrid
command, or an agent in one of your panes, can drive panes while Wraithgrid runs (the window
may be closed):
wraithgrid list # panes: id, title, workspace, account, state
wraithgrid send alpha "fix the failing test"
wraithgrid wait alpha --until idle # also: running, blocked (asking for approval), exited
wraithgrid read alpha --lines 50
wraithgrid new --account work --cwd ~/proj/api -- --model opus
wraithgrid split alpha # beside alpha, same account and folder
wraithgrid attach alpha # the pane in this terminal; Ctrl+] leaves it running
wraithgrid stop # stop every agent
Name a pane by its id or its title. Inside a pane, $WRAITHGRID_PANE holds its own id, so an
agent can split itself or prompt another pane. attach works over ssh with ssh -t.
new and split need the window open. The command is the app's own binary: wraithgrid on
Linux packages, the AppImage itself, or /Applications/Wraithgrid.app/Contents/MacOS/Wraithgrid
on macOS. On Windows the output does not appear in a console yet.
A project can run its panes on another computer: add it under Settings → Machines (an
ssh host from ~/.ssh/config, or user@host; Test checks it), then pick it under
Runs on when you create the project, or right-click an empty project → Run on …. Panes start there with that computer's claude (or other CLI),
folders and account logins; the sidebar shows the machine's name next to the project.
wraithgrid on PATH (the .deb, .rpm,
pacman or AUR packages do this), and ssh that logs in without a password prompt (a key or an
agent). Wraithgrid runs ssh -T <host> wraithgrid host-stdio; nothing else listens there.| Action | Keys |
|---|---|
| Search panes and commands | Ctrl+Shift+P |
| New chat / pane | Ctrl+Shift+N |
| Close pane | Ctrl+Shift+W |
| Zoom pane / back to grid | Ctrl+Shift+Z |
| Move focus left / up / right / down | Ctrl+Alt+Arrow |
| Switch project | Ctrl+Shift+1 … 9 |
| Show / hide the git changes | Ctrl+Shift+D |
| New line in claude | Shift+Enter |
| Zoom the whole app in / out | Ctrl+= / Ctrl+- |
| Reset the zoom | Ctrl+0 |
| Copy / paste in a terminal | Ctrl+Shift+C / V |
| Paste an image (screenshot) | Ctrl+V |
| All shortcuts | Ctrl+Shift+/ |
| Close a dialog | Esc |
Every other key, including Ctrl+C, Esc and the arrow keys, goes to the terminal.
Settings → Keyboard shortcuts rebinds search, new pane, close pane, zoom, git changes and
the shortcuts sheet: press Change, then the new chord. It needs Ctrl (⌘ on macOS) with
Shift or Alt, so plain Ctrl chords stay with the terminal; chords already in use (focus
arrows, project digits, copy/paste, claude's undo) are refused.
Settings, accounts and projects live in config.json (see
Platform notes for the path). Changes are saved automatically. If the file is ever
unreadable, Wraithgrid moves it to config.bad-<timestamp>.json and starts fresh. Wraithgrid
never saves terminal content.
Settings (tabs: General, Chat, Appearance, Agents & CLIs, Advanced, Keyboard, About) covers:
claude binary: auto-detected from PATH, with an optional override; the other CLIs
are taken from PATH unless you set a path under Other agent CLIs~/.claude (CLAUDE.md, settings, skills, plugins) with every account, or not~/.wraithgrid/themes, see docs/THEMES.md), following the OS light/dark setting, accent color and terminal color paletteclaude mods (plugins that change claude's own screen: side panes, a band above the prompt, status lines, toasts, commands) run inside each pane. The Mods screen (plug icon in the top bar, or the command palette) covers the rest:
claude plugin list. A switch enables or disables a mod in every account that has it;
Add to all accounts appears where some lack it. Update and Uninstall (asks
twice) do the same for every account. Click a mod's name to open its repository.~/.wraithgrid/mods/<name> and
added to your mod folders, where Update pulls its newest version. The catalog merges the marketplaces of all your claude accounts.owner/repo or an https address) to
every account, or remove one from all of them.CLAUDE_CODE_PLUGIN_DIRS) and claude reloads it when its files change.preferredNotifChannel in claude's settings is ghostty, iterm2 or
kitty. Pictures a mod draws show as their text description.git clone from GitHub) and mod installs run
only when you click them.$XDG_RUNTIME_DIR, or your temp folder on macOS), or
a named pipe on Windows, and every connection must present a random token kept in a file
only you can read. There is no network listener. The wraithgrid command is refused until
you turn on Settings → Command line. Other machines are reached only through your own
ssh.~/.claude is the only time Wraithgrid writes
into account config dirs, and it only places links and renames what was in the way. It never
reads the files. Logins (.credentials.json, .claude.json) are never linked.claude plugin command
to list, install and switch mods and to add a marketplace; Wraithgrid does not open the plugin files. A pane's program can put
text on the clipboard but can never read it back.Requirements
host-rs/, with the C
linker it uses:
sudo pacman -S --needed gccsudo apt install gccsudo dnf install gccxcode-select --install).rpm on another distro: rpmbuild (rpm-tools on Arch, rpm on
Ubuntu). The pacman package needs bsdtar (libarchive-tools on Ubuntu).bun install # installs deps (no native Node modules to build)
bun run dev # builds the Rust host, then runs with hot reload
bun run dist:linux:portable # all Linux packages, built in Docker on Ubuntu 22.04
bun run dist:win # Windows installer (run on Windows)
bun run dist:mac # macOS .dmg and .zip, Apple Silicon and Intel (run on a Mac)
Bun runs install scripts only for the packages in trustedDependencies in package.json
(electron, esbuild); bunfig.toml keeps a flat node_modules for electron-builder.
The Rust host links against the build machine's glibc. A package built on a rolling distro
(Arch, current Fedora) only runs on distros at least as new. dist:linux:portable builds on
Ubuntu 22.04 (glibc 2.35) inside Docker, so one set of packages runs on Ubuntu 22.04+,
Debian 12+, Kali, Fedora and Arch. scripts/test-linux-packages.sh then installs each package
in clean containers of those distros and checks it starts. The GitHub Actions workflow in
.github/workflows/build.yml does the same builds, plus the Windows installer on a Windows
runner.
| Script | What it does |
|---|---|
bun run dev | electron-vite dev server with the app |
bun run build | production build into out/ |
bun run typecheck | tsc over the main/preload and renderer projects |
bun run lint | ESLint and a Prettier check |
bun run test | Vitest unit tests |
bun run test:e2e | builds, then runs the Playwright Electron smoke test |
bun run dist | packages for the current OS |
bun run dist:linux | AppImage, .deb, .rpm and pacman package, on this machine |
bun run dist:linux:portable | the same, built in an Ubuntu 22.04 container (needs Docker) |
bun run dist:win | NSIS installer for Windows |
bun run dist:mac | .dmg and .zip for macOS, arm64 and x64 (run on a Mac) |
Pushing a version tag publishes a GitHub release (.github/workflows/release.yml). The
workflow checks that the tag matches package.json, runs the tests, builds the Linux packages
(on Ubuntu 22.04), the Windows installer and the macOS apps (arm64 and x64), then attaches all of them and a
SHA256SUMS.txt to the release.
bun pm version patch -m "chore: release %s" # or minor / major; bumps package.json, commits, tags v1.0.1
git push --follow-tags
A tag with a suffix, such as v1.1.0-beta.1, is published as a pre-release.
MIT © cachewraith
| Pick up where you left off | Panes you prompted continue their conversation when Wraithgrid restarts (claude --continue, codex resume --last…). Right-click a pane's header to turn it off. |
| Search & notifications | Ctrl+Shift+P finds any pane, project or command. A desktop notification tells you when a pane you aren't looking at finishes or needs approval. |
| Shared CLAUDE.md & skills | Every account uses your ~/.claude CLAUDE.md, settings, skills and plugins, or each keeps its own. |
| Mods | Draws what claude mods draw; the Mods screen lists your accounts' mods as one, turns them on or off, and loads your own mod folders in every pane. |
| In-app updates | A desktop notification tells you once when a new version is released; Settings → About downloads it, restarts into it and keeps each version's release notes. |
| Agents keep running | Close the window or quit and the agents carry on in a background process; the next launch shows them again, screen and all. Off until you choose it on first close. |
| Command line | wraithgrid lists panes, types into them, waits for them, reads them, opens new ones and attaches a terminal, for scripts or for agents in other panes (opt-in). |
| Other machines | A project can run its panes on another computer over ssh; they keep running there when you disconnect. |
| Survives restarts | Workspaces, layouts, accounts and folders come back on the next launch. |
| Themes | Five built-in themes that differ in type, shape and depth, an in-app editor with live preview and contrast checks, community themes from GitHub (gallery list, template), your own theme files (format), follow the OS light/dark, accents, terminal palettes. |
| Native everywhere | macOS 12+ (Apple Silicon and Intel), Windows 10/11 and Linux (Ubuntu, Debian, Kali, Fedora, Arch) on X11 or Wayland, including Hyprland and sway. |
| Private by design | No telemetry. The renderer is sandboxed and reaches the system only through a validated IPC surface. |
cmd.exe& | < > ^ % "claude.exe~/.config/wraithgrid/config.json on Linux,
~/Library/Application Support/wraithgrid/config.json on macOS and
%APPDATA%\wraithgrid\config.json on Windows. Account folders default to
~/.wraithgrid/accounts/ (%USERPROFILE%\.wraithgrid\accounts\ on Windows).CLAUDE.mdsettings.jsonskills/plugins/agents/commands/~/.claude…wraithgrid-backup and put
back when you switch to Each account its own.claude reads these files when it starts: use Restart claude panes after
switching.~/.claude.Ctrl+V (or
Ctrl+Shift+V) in a pane. Wraithgrid saves it under your temp folder (wraithgrid-paste,
cleared after a day) and pastes its path: claude attaches it as an image, codex gets
the plain path, and the other CLIs get an @path reference. With no image on the clipboard, Ctrl+V works as before.
On macOS, Ctrl+V goes straight to the CLI, which reads the image itself.Ctrl+Shift+D, to
see what changed in that pane's folder since the last commit, file by file. Drag the
panel's left edge to resize it (saved); double-click the edge to reset. Below the diff,
write a message and press Commit all (Ctrl+Enter), then Push and Pull
request (opens the GitHub or GitLab page for the branch); both ask first. Pull
fetches and pulls with your git's own merge/rebase setting (it asks first over uncommitted
changes). The History tab shows every branch and tag as a commit graph; click a commit
for its files and diff. Closing the last
pane on a worktree asks whether to remove its folder; the branch is kept.
Switch branch by right-clicking the branch label (or clicking the branch in the Changes
panel, or Switch branch… in the pane's menu or Ctrl+Shift+P): type to filter your
branches, newest first, and remote ones you don't have yet, or type a new name to create it.
Uncommitted changes come along; git refuses if they would be overwritten and says why.
Every pane on that folder sees the new branch.