Run many claude CLI sessions side by side, each with its own account and project folder.
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 claude CLI as-is. For each pane it sets CLAUDE_CONFIG_DIR to that
account's folder, so every account keeps its own login, settings and history. Wraithgrid never
reads, copies or proxies anything inside those folders.
| Many accounts at once | Personal, work and client accounts run side by side, each with its own login, settings and history. |
| Flexible layouts | 1, 2 side by side, 2×2 or 3 columns. Drag dividers to resize, drag headers to swap, zoom any pane. |
| Workspaces | Keep separate sets of panes and switch between them with Ctrl+Shift+1…9. |
| Folders & icons | Group accounts into sidebar folders by drag and drop, and give accounts and workspaces an emoji icon. |
| Live pane status | Each pane shows whether claude is running (animated), idle or waiting for your approval. |
| Shared CLAUDE.md & skills | Every account uses your ~/.claude CLAUDE.md, settings, skills and plugins, or each keeps its own. |
| Update alerts | A desktop notification tells you once when a new version is released. |
| Survives restarts | Workspaces, layouts, accounts and folders come back on the next launch. |
| Themes | Dark, light or system, five accent colors, and terminal palettes such as Dracula, Nord and Tokyo Night. |
| Native everywhere | 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. |
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 |
Every release includes a SHA256SUMS.txt for verifying downloads.
Note
You also need the claude CLI. Wraithgrid
finds it on your PATH (including the native installer's ~/.local/bin and npm's global
folder). You can also set its path in Settings.
Platform notes: tiling compositors, launchers, AppImage, Windows
- Hyprland, sway, i3 and other tiling compositors. Wraithgrid detects them. The title bar
then only has a close button, since the compositor owns sizing and there is no minimize, and
the minimum window size drops to 640×420 so the window fits a tile. It runs as a native
Wayland client with the app id
wraithgrid, for window rules such as:windowrulev2 = workspace 3, class:^(wraithgrid)$ - Started from a launcher. A Hyprland
exec, a.desktopentry or a dock often starts apps without your shell'sPATH. Wraithgrid then asks your login shell for it once at startup (like VS Code does), soclaude,nodeand the toolsclauderuns are found. Your shell rc can checkWRAITHGRID_RESOLVING_ENVIRONMENT=1to skip slow setup during that call. - AppImage on Ubuntu 24.04+ and Kali. AppArmor blocks the Chromium sandbox of unpackaged
apps, so prefer the
.deb, which installs an AppArmor profile. The AppImage also needs FUSE 2 (libfuse2t64on Ubuntu 24.04,libfuse2on Debian/Kali,fuse-libson Fedora,fuse2on Arch). - Don't run it as root (for example an old Kali root session). Chromium refuses to start as
root without
--no-sandbox, and turning the sandbox off is not recommended. - Windows. Plain shell panes use PowerShell 7 (
pwsh), then Windows PowerShell, thencmd. The native caption buttons (with snap layouts) sit on the title bar. An npm-installedclaude(claude.cmd) runs throughcmd.exe, so launch args containing& | < > ^ % "are refused; the nativeclaude.exehas no such limit. - Where files live. Config is in
~/.config/wraithgrid/config.jsonon Linux and%APPDATA%\wraithgrid\config.jsonon Windows. Account folders default to~/.wraithgrid/accounts/(%USERPROFILE%\.wraithgrid\accounts\on Windows).
- Add accounts. Open Accounts (sidebar, Manage).
- Add account creates
~/.wraithgrid/accounts/<name>for a fresh login. - Import ~/.claude points an account at an existing config dir so you keep that login. Nothing is copied.
- Add account creates
- Sign in. Press Login on an account. A pane opens running
claudeunder that account. Press Run /login and finish in your browser. The account shows as signed in once the pane prints a successful login, or when you press Mark as signed in. - Open panes. Press New pane (
Ctrl+Shift+N) and pick an account, a folder and optional launch args (--resume,-c). You can also open a plain shell in a folder. - Arrange them.
- Drag the dividers to resize.
- Pick a preset: 1, 2 side by side, 2×2, or 3 columns.
- Drag a pane by its header onto another pane to swap them.
- Zoom a pane with
Ctrl+Shift+Z. - Panes that don't fit a preset stay open but hidden. The +N hidden chip brings them back.
- Workspaces. Keep separate sets of panes (the sidebar, or Manage to create, rename
and delete them) and switch with
Ctrl+Shift+1…9. - One claude setup for every account. By default (Settings → Shared CLAUDE.md and
skills → Overall) every account uses the
CLAUDE.md,settings.json,skills/,plugins/,agents/andcommands/of your normal~/.claude, so your instructions and installed plugins work in every account. Logins and history stay separate per account. Pick Each account its own to turn it off.- An account's own files are not deleted: they are renamed to
…wraithgrid-backupand put back when you switch to Each account its own. - Accounts added later are linked the first time a pane starts for them.
- A running
claudereads these files when it starts: use Restart claude panes after switching. - On Windows, folders are junctions. Files are symlinks with Developer Mode on, otherwise
hard links. Editors that save by replacing the file break a hard link, so edit them in
~/.claude.
- An account's own files are not deleted: they are renamed to
- Folders and icons. In the sidebar, + next to Accounts creates a folder (double-click to rename). Drag an account onto a folder to move it in, or onto the list to take it out. Click an account's badge on the Accounts page, or a workspace's badge in Manage, to give it an emoji icon.
When claude exits, the pane stays open with the exit code and last error line, and a
Restart button. Quitting Wraithgrid ends every pane's processes. On the next launch your
workspaces, layouts, accounts and folders come back and each pane starts claude again.
Conversation history belongs to claude itself: add -c to a pane's launch args to continue
where you left off.
| Action | Keys |
|---|---|
| New 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 workspace | Ctrl+Shift+1 … 9 |
| New line in claude | Shift+Enter |
| Terminal text bigger / smaller | Ctrl+= / Ctrl+- |
| Reset terminal text size | Ctrl+0 |
| Copy / paste in a terminal | Ctrl+Shift+C / 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, accounts and workspaces 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 covers:
- the
claudebinary: auto-detected fromPATH, with an optional override - the default account and the default working directory
- sharing
~/.claude(CLAUDE.md, settings, skills, plugins) with every account, or not - theme (dark, light or system), accent color and terminal color palette
- the terminal font and size
- update checks against GitHub releases, with a desktop notification once per new version (nothing is downloaded or installed for you)
- No telemetry. The only network activity is opening links you click, in your browser (http and https only), and the optional release check, which you can turn off.
- Sandboxed renderer. The UI runs sandboxed with context isolation. It reaches the system only through a fixed, validated IPC surface.
- Account folders are off-limits. Sharing
~/.claudeis 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. - Guarded deletes. Deleting an account's config dir is opt-in, needs confirmation, and only works on the folder that account points to inside your home directory.
Requirements
- Node.js 22.12 or newer, and pnpm 11 (
corepack enablepicks the pinned version) - A C++ toolchain for the
node-ptynative module:- Arch:
sudo pacman -S --needed python make gcc - Ubuntu, Debian, Kali:
sudo apt install python3 make g++ - Fedora:
sudo dnf install python3 make gcc-c++ - Windows: Visual Studio Build Tools with "Desktop development with C++", and Python 3
- Arch:
- To build a Fedora
.rpmon another distro:rpmbuild(rpm-toolson Arch,rpmon Ubuntu). The pacman package needsbsdtar(libarchive-toolson Ubuntu).
pnpm i # installs deps and rebuilds node-pty for Electron
pnpm dev # run with hot reload
pnpm dist:linux:portable # all Linux packages, built in Docker on Ubuntu 22.04
pnpm dist:win # Windows installer (run on Windows)If pnpm i asks you to approve build scripts, allow electron, esbuild and node-pty. The
repository's pnpm-workspace.yaml already lists them under allowBuilds.
Why the portable build?
node-pty compiles 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.
All scripts
| Script | What it does |
|---|---|
pnpm dev |
electron-vite dev server with the app |
pnpm build |
production build into out/ |
pnpm typecheck |
tsc over the main/preload and renderer projects |
pnpm lint |
ESLint and a Prettier check |
pnpm test |
Vitest unit tests |
pnpm test:e2e |
builds, then runs the Playwright Electron smoke test |
pnpm dist |
packages for the current OS |
pnpm dist:linux |
AppImage, .deb, .rpm and pacman package, on this machine |
pnpm dist:linux:portable |
the same, built in an Ubuntu 22.04 container (needs Docker) |
pnpm dist:win |
NSIS installer for Windows |
Releasing
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) and the Windows installer, then attaches all of them and a
SHA256SUMS.txt to the release.
npm version patch -m "chore: release %s" # or minor / major; bumps package.json, commits, tags v1.0.1
git push --follow-tagsA tag with a suffix, such as v1.1.0-beta.1, is published as a pre-release.
MIT © cachewraith



