Terminal Deck

Download

Terminal Deck 0.1.2 for macOS 12 or newer on Apple Silicon, and for Windows 10 or newer on x64. Neither build is signed, which adds one step the first time you open it.

Both buttons resolve to whatever the newest release is at the moment you click, so neither can quietly hand you an old build. Today that means terminaldeck-0.1.2-arm64.dmg for macOS and terminaldeck-0.1.2-x64-setup.exe for Windows, which also has a portable executable that runs without installing. The checksums and every earlier build are on the releases page.

Requirements

Exactly these. Nothing else is assumed about your machine.

macOS 12 or newer, Apple silicon
One arm64 disk image. There is no Intel build: macOS 27 dropped Intel Macs entirely, and an Intel slice could not be tested on any machine here.
Windows 10 or newer, x64
An installer and a portable executable. There is no ARM build: Windows on ARM runs the x64 one under emulation, not natively. The installer has now been run on Windows 11 (10.0.26200) x64: it installs, and the app launches. 0.1.2 cannot start a session there — it reports every agent CLI as missing even when they are installed, and New Session fails. Both faults are fixed on a branch and neither fix is in a release yet, so this download is worth having only if you want to watch it start. Linux has no target configured at all.
An agent CLI
At least one of Claude Code, Codex CLI or Gemini CLI — installed and already signed in. Terminal Deck does not install them, and it never asks you for a login or an API key: the agent signs you in itself, in the terminal.
git
Only for the git panel. Everything else works without it.
The gh CLI
Only for the GitHub panel, which runs your own authenticated gh. brew install gh on macOS, winget install GitHub.cli on Windows, if you want it.
Node 22 or newer
Only to build from source. A downloaded build has no Node requirement.

On first launch the app checks what is actually on your machine and, if no agent is usable, shows you what it found rather than an empty window. Settings → Setup repeats that check at any time and prints the literal probe it ran, so a missing tool tells you the command as well as the conclusion.

Installing on macOS

  1. Download and open the disk image

    Take the macOS build above — terminaldeck-0.1.2-arm64.dmg — and open it. Inside is Terminal Deck.app. It is an Electron app, so the unpacked bundle is around 300 MB.

  2. Move it to Applications

    Drag Terminal Deck.app into /Applications. Running it from ~/Downloads works, but Applications is where macOS expects it and where you will find it again.

  3. Open it the first time with right-click → Open

    Right-click (or Control-click) the app, choose Open, and then click Open again in the dialog that appears. After that first launch, double-clicking works normally and you never see the dialog again.

    Double-clicking it the first time will fail with a message about an unidentified developer, or about the app being damaged. Nothing is damaged — see below for why.

  4. If macOS refuses anyway

    Recent macOS versions sometimes will not offer the Open button at all. Open System Settings → Privacy & Security, scroll to the security section, and click Open Anyway next to the message naming Terminal Deck. That button appears only after you have tried to open the app once.

Why an unsigned build needs that step

Signing an app requires a paid Apple Developer identity, and notarising it requires uploading each build to Apple. This build has neither — identity: null is set in the packaging config, deliberately and visibly. macOS attaches a quarantine flag to anything downloaded from the internet, and Gatekeeper refuses to launch a quarantined app that is not signed and notarised.

Right-click → Open is Apple’s own override: it shows the same warning with an Open button, and accepting it records your decision for that specific app. It is not a workaround for a broken build; it is the documented way to say “I know where this came from”. If you would rather not take that on trust, build from source below — then the binary is one you produced on your own machine, and no quarantine flag is ever set.

Installing on Windows

Windows 10 or newer, x64. The installer and SmartScreen steps below have been walked through on Windows 11 x64; the app installs and opens. What it cannot do yet once it is open is in Requirements above — read that before you spend 108 MB on it.

  1. Run the installer

    terminaldeck-0.1.2-x64-setup.exe asks where to put the app and installs it for your account only, so it does not need an administrator password. terminaldeck-0.1.2-x64-portable.exe is the same build as a single file that runs without installing anything — take that one if you would rather not write to Program Files at all.

  2. Click past SmartScreen

    Windows shows a blue Windows protected your PC panel with only a Don’t run button visible. Click More info, then Run anyway. The portable executable is warned about the same way, every time you move it to a new machine.

  3. Bring your own agent CLI

    Same as on macOS: Terminal Deck runs Claude Code, Codex CLI or Gemini CLI, and installs none of them. Install and sign in to at least one first, or the first launch has nothing to show you.

Why SmartScreen warns

Signing a Windows build needs a code-signing certificate issued by a commercial authority against a verified identity, renewed yearly. This build has none, so SmartScreen has no publisher to name and no signature to look up a reputation for, and it hides the run button behind More info rather than refusing outright. That is Microsoft’s own override, the same shape as the right-click step on macOS: it is how you say you know where the file came from.

The one check you can make yourself is the checksum. SHA256SUMS.txt on the releases page lists the SHA-256 of every file in the release; Get-FileHash in PowerShell prints the one you downloaded. If you would rather not take any of it on trust, build from source below.

Building from source

The repository is the whole product. Node 22 or newer, and about two minutes.

Run it in development

git clone https://github.com/asadev/terminaldeck.git
cd terminaldeck
npm install
npm run dev

npm run dev starts Electron with a hot-reloading interface. Main-process changes need a restart; interface changes do not.

Package a real .app

npm run pack:mac   # unpackaged .app, fastest to smoke-test
npm run dist:mac   # the disk image: dmg + zip, arm64

pack:mac leaves release/mac-arm64/Terminal Deck.app; dist:mac writes the .dmg and .zip into release/. Both run npm run build first. Because you built it locally it carries no quarantine flag, so it opens on a double-click with no Gatekeeper step at all.

Do not run npm run build while npm run dev is serving. They share the out/ directory, and the build overwrites what dev is running out from under it. Stop dev first.

Checks

npm test          # vitest
npm run typecheck # both tsconfigs

What this build does not do

Worth knowing before you install rather than after.

  • Updating in place is macOS only. The mac build checks the release feed, and Settings → About offers the new version, downloads it, verifies its SHA-512 and swaps the app — nothing installs without you asking for it. That path has been run end to end on macOS, up to the relaunch. On Windows the check is wired to electron-updater's installer and has never been exercised, and the portable executable is a loose file nothing can replace for you: on either, treat a new version as a fresh download from this page.
  • Neither build is signed — no Apple notarisation, no Windows code-signing certificate — which is the whole reason for the right-click step and the SmartScreen panel above.
  • The Windows build launches but cannot yet run a session. It is produced natively in CI, and it has now been installed and opened on Windows 11 x64 — which is how two faults that make 0.1.2 unusable there were found: agent CLIs are all reported missing, and New Session fails. Fixes are open on a pull request, unreleased. Fourteen test files still fail on Windows. Linux has no target configured.
  • Session sharing, translations and split panes are not built yet. The first two are absent entirely; split panes have layout code in the repository that nothing in the app renders, so the chords for it do nothing.
  • Cost, chat and session search read Claude Code transcripts. Codex and Gemini sessions run perfectly well; those three panels simply have nothing to read for them.