A native macOS Claude Code session manager. Run and organize multiple Claude Code agents side by side, each in its own card, each rooted in its own project folder — with a built-in git panel, diff viewer, and inline file editor so you rarely need to leave the window.
If you're looking for a terminal manager, a Claude agents manager, or a way to run several Claude Code sessions in parallel without juggling terminal tabs, this is that tool.
Running several Claude Code agents at once usually means several terminal tabs or windows, each unlabeled, each requiring a cd before you remember which project it's in. Terminal Cards turns that into a grid: one card per agent, each card pinned to a working directory, each showing live git status for that directory, live in a resizable panel you can pop open without breaking focus.
- Grid of terminal cards — each card is a real interactive shell that launches
claudeon start (falling back to a plain shell if Claude Code exits or isn't installed), so it behaves like a normal terminal you can alsocd, run tests, or tail logs in. - Per-card working directory — pick a folder per terminal via the folder picker; sessions never share a
cwd. - Git changes panel — toggle a per-card panel showing modified/added/deleted/renamed/untracked files, with a colorized diff view and a branch switcher (see current branch, list local branches, switch with one click).
- Inline file editor — double-click any changed file to edit and save it in place, with syntax highlighting (Swift, Python, JS/TS, JSON, Go, Rust, C/C++, Shell, HTML, CSS, YAML, Markdown) and unsaved-changes protection.
- Session restore — quitting and relaunching offers to restore every terminal card in the exact folder it was in before, not just a blank default.
- Grouping — cmd-click card title bars to select several, then group them with a shared color stripe for quick visual grouping of related agents.
- Keyboard-first —
Cmd+Nnew terminal,Cmd+Wclose focused terminal,Cmd+1–Cmd+9jump to a card, configurable grid column count.
- macOS 13.0+
- Xcode (for building)
- Claude Code installed and on your
PATH(each card runsclaudeon start; without it, the card just opens as a plain shell)
Homebrew:
brew tap HABIBKAGHAS/tap
brew install --cask terminal-cardsOr download the prebuilt app from the latest release.
Either way, see First launch (unsigned build) below — this is not yet notarized with an Apple Developer ID, so Gatekeeper needs a one-time manual approval.
Terminal Cards is currently distributed without an Apple Developer ID (no $99/yr notarization yet), so macOS Gatekeeper will flag it as being from an "unidentified developer" or say it's "damaged" on first launch. The app isn't damaged — this is just what unsigned apps look like to Gatekeeper, and it applies whether you installed via Homebrew or downloaded the zip directly (Homebrew does not strip the quarantine flag for unsigned casks). To open it:
- Right-click the app → Open → confirm, or
- Go to System Settings → Privacy & Security, scroll to the blocked-app notice, and click Open Anyway, or
- Run:
xattr -cr /Applications/TerminalCards.app
git clone https://github.com/HABIBKAGHAS/Terminal-Manager.git
cd Terminal-Manager
./init.shinit.sh installs XcodeGen (via Homebrew) if needed and generates TerminalCards/TerminalCards.xcodeproj. Then either open that project in Xcode and hit Run, or build from the command line:
xcodebuild -project TerminalCards/TerminalCards.xcodeproj -scheme TerminalCards -configuration Debug -destination 'platform=macOS' buildxcodebuild -project TerminalCards/TerminalCards.xcodeproj -scheme TerminalCards -destination 'platform=macOS' testTerminalCards/
project.yml # XcodeGen spec — source of truth for the .xcodeproj
Sources/TerminalCards/
TerminalCardsApp.swift # App entry point
ContentView.swift # Top-level layout, toolbar, session restore prompt
TerminalGridView.swift # Card grid layout
TerminalCardView.swift # Single card: terminal + git panel split
TerminalHostView.swift # Embeds the actual PTY-backed terminal (SwiftTerm)
TerminalSession(Manager).swift
GitService.swift # Shells out to `git` for status/diff/branch/checkout
GitChangesPanel/ViewModel.swift
DiffDetailView.swift
FileEditorView/Service.swift # Inline editor with save/discard
SyntaxHighlighter.swift # Lightweight per-language token colorer
CodeEditorView.swift # NSTextView wrapper driving the highlighter
Tests/TerminalCardsTests/
The Xcode project itself (TerminalCards.xcodeproj) is generated by XcodeGen from project.yml and isn't committed — always run xcodegen generate (or ./init.sh) after pulling changes that touch project.yml or add/remove source files.
Issues and PRs welcome. If you're adding a source file, remember to regenerate the Xcode project first: cd TerminalCards && xcodegen generate.



