An AI-native software delivery workflow, wrapped around the tracker you already use.
Jira, Linear or GitHub Projects beside Claude Code, Codex and GitHub, on one Kanban board. Pick a card, code it with an agent, review the PR, ship it. One screen.
Screens show fixture data only. Source in docs/media/motion, rendered with npm run demo:gif.
Most engineering teams run their delivery from an issue tracker, whether that is Jira, Linear or GitHub Projects. Coding agents have made the writing part fast, but the loop around it is still slow: find the ticket in the tracker, open a terminal for Claude Code or Codex, switch to GitHub to review, go back to the tracker to move the card. Every hop costs the thread you were holding, and none of these tools know about each other.
Deck's answer is a Kanban board that is also your terminal, your review queue and your orchestrator:
- Bring your own tracker. Jira, Linear or a GitHub Project, picked in Settings. Each one is an adapter behind the same board, so every feature below works the same whichever you connect.
- Start from the card. Every issue on the board can launch a Claude Code or Codex session bound to that ticket, in the right repository. The agent's live status shows on the card.
- Move the card, move the ticket. Drag between columns and Deck fires the matching transition in your tracker. The board syncs in the background, so a slow tracker stays out of your way.
- Review where you code. Pull requests waiting on you arrive as a queue with the diff, checks and linked ticket. Approve and the next one loads.
- Orchestrate the whole loop. Ask Deck what needs attention and it can start agents, put one on a broken PR, or file the next issue. Every answer sees your sessions, your PR inbox and your board.
- Search everything you ever asked. One palette over live sessions and the full chat history of Claude Code and Codex, so the answer from last week is a ⌘K away.
Summon it with ⌥ Space. Code, review and orchestrate without leaving the screen.
- Agent sessions: launch or resume Claude Code and Codex, see live status in the sidebar, and search your local conversation history across both.
- Vertical tabs with search, rename, attention filters, Git status and keyboard navigation. A single "Continue your last session" suggestion appears for activity within the last 15 minutes; older sessions stay searchable.
- Splits and panes: resizable nested splits, find in terminal, export, multiline input, and a local file explorer with text editing and Markdown preview.
- Zen and Presentation on every page, WebStorm style. Both go fullscreen and hide the chrome; Presentation also enlarges the terminal font and zooms the other pages by the same ratio.
Your board as a Kanban view inside Deck, mirroring Jira, Linear or a GitHub Project. Cards carry the agents that have touched them; opening a card shows the issue, its sessions and its pull requests, and starts a new Claude Code or Codex session on it. Dragging a card to another column fires the matching transition in the tracker, optimistically, with the sync catching up in the background.
Deck's orchestrator, front and centre. Every question gets the live sessions, your PR inbox and the synced board as context. Through Deck's own MCP tools it can:
- start Claude or Codex agents in Deck terminals, answer or steer running ones, and read their transcripts
- put an agent on a broken PR
- search the tracker's backlog and create issues, only after you agree
The rail lists what needs you and every live session. The sidebar badge counts it. Make it the start page from its header or Settings → General.
Every pull request waiting on your review, one at a time like a mail client. Each shows the linked issue, the overview, the diff and a pinned agent helper (a). Approve or request changes and the queue moves on. n / p step through without leaving. Review threads collapse to one line like GitHub's, and resolved or outdated threads start collapsed.
Opt-in, off by default. Once enabled in Settings → General, Deck starts a fix agent in the repo's local checkout when CI fails or a PR of yours gets merge conflicts, once per push. The agent stops with the diff and waits for your approval before pushing unless you let it push unattended.
Five built-in themes, live custom JSON themes, and local plugins that contribute themes, commands, agent prompts and Markdown panels. See the extension guide and the starter plugin.
Download the latest .dmg for your Mac (Apple Silicon or Intel) from the releases page and drag Deck into Applications.
The builds are not notarized with Apple yet, so macOS will refuse to open the app the first time. Clear the quarantine flag once:
xattr -cr /Applications/Deck.appFirst run. Deck opens on a short setup for the thing it is built around: the summon hotkey. Pick the keystroke, choose whether it drops down as a quake panel over the top of the screen, and press it once to see it work. Skipping is fine, and Settings → General → run setup again brings it back.
git clone https://github.com/fishuke/deck.git
cd deck
npm install
npm run devRequirements. Node 22 or newer.
Install and authenticate claude and/or codex separately. Pick the default agent in Settings → General; new-session menus and PR review screens let you choose either.
Live status hooks. Use the sidebar's live-status controls to install hooks for each provider. For Codex, trust Deck's installed hooks in Codex's /hooks interface. Deck preserves existing hooks and does not bypass agent permissions. The hook server accepts local connections only.
History. Indexed from ~/.claude/projects, plus $CODEX_HOME/sessions and archived_sessions (default ~/.codex). Codex subagent transcripts and internal environment messages are excluded from results.
GitHub and the board. Pull request tools use the gh CLI. The board mirrors Jira, Linear or a GitHub Project (pick one in Settings) and syncs in the background once configured. Each tracker is an adapter behind the same board interface (src/main/board/).
| Shortcut | Action |
|---|---|
| ⌥ Space | Summon or hide Deck |
| ⌘K | Search sessions, history, commands, settings, themes and repositories |
| ⌘T / ⌘W | New / close terminal |
| ⌘⇧T | Reopen the last closed tab |
| ⌘⇧N | New tab running the default agent |
| ⌘N | New window |
| ⌘1–⌘9 | Switch terminal |
| ⌘B | Toggle sidebar |
| ⌘⌥1 ⌘⌥2 ⌘⌥3 ⌘⌥4 | Terminal / Board / Agent / Reviews |
| ⌘D / ⌘⇧D | Split right / down |
| ⌘F | Find in terminal |
| ⌘J | Toggle multiline input |
| ⌘⇧Enter | Toggle Zen view |
| ⌘⇧P | Toggle Presentation view |
| Esc | Exit Zen / Presentation from the terminal |
Drag pane dividers to resize; arrow keys resize a focused divider and double-click resets it. Presentation controls adjust text size and switch sessions, and exiting restores your split layout.
npm run typecheck # both tsconfig projects
npm test # unit tests on Electron's Node runtime
npm run test:ui # Electron smoke test with fixture sessions, screenshots in artifacts/ui
npm run test:pty # native PTY input/output, replay, metadata and termination
npm run demo:gif # render docs/media/deck.gif and deck.mp4 from docs/media/motion (needs ffmpeg)
npm run install:app # build and install /Applications/Deck.app from this checkoutUsing Deck while working on it. npm run dev runs as its own channel, Deck Dev: separate name, dock tile, database, settings and PTY socket, and it listens on port 47801 instead of 47800. So the Deck you use all day can stay open while dev restarts on every save. Its settings start from the defaults, so give it its own summon hotkey. Agent hooks are installed once globally and carry the port of the terminal they run in, so each channel sees its own sessions.
Tests use Electron's Node runtime to match the native SQLite ABI. The UI smoke test opens an isolated window with fixture sessions and never launches paid agents or touches your real sessions. Run it in a desktop environment.
Stack: Electron, React, Tailwind, xterm.js, SQLite, Hono.
Deck is evolving toward an everyday terminal replacement. It implements the local terminal UI and agent workflows above. It does not include cloud collaboration or compatibility with other terminals' extension formats.
Issues and pull requests are welcome. Keep changes small and focused, run the checks in Development, and add a test alongside any new behaviour. Extension authors should start with the extension guide.
