Skip to content

Repository files navigation

SolidStack logo

Terminal Cards

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.

Why

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.

Features

  • Grid of terminal cards — each card is a real interactive shell that launches claude on start (falling back to a plain shell if Claude Code exits or isn't installed), so it behaves like a normal terminal you can also cd, 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-firstCmd+N new terminal, Cmd+W close focused terminal, Cmd+1Cmd+9 jump to a card, configurable grid column count.

Requirements

  • macOS 13.0+
  • Xcode (for building)
  • Claude Code installed and on your PATH (each card runs claude on start; without it, the card just opens as a plain shell)

Install

Homebrew:

brew tap HABIBKAGHAS/tap
brew install --cask terminal-cards

Or 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.

First launch (unsigned build)

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

Building from source

git clone https://github.com/HABIBKAGHAS/Terminal-Manager.git
cd Terminal-Manager
./init.sh

init.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' build

Running tests

xcodebuild -project TerminalCards/TerminalCards.xcodeproj -scheme TerminalCards -destination 'platform=macOS' test

Project structure

TerminalCards/
  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.

Contributing

Issues and PRs welcome. If you're adding a source file, remember to regenerate the Xcode project first: cd TerminalCards && xcodegen generate.

Pictures from the app

Main View: image

Small git review panel with branch management: image

Terminals Grouping: image

License

MIT

About

Native macOS app for running and managing multiple Claude Code agent sessions side by side, each in its own terminal card with a built-in git panel and file editor.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages