Roadmap
What the apps do today, and what is still open.
Done
1 · Foundation
- Native apps: Swift with SwiftUI and AppKit on the Mac, C# with WinUI 3 on Windows
- A session keeper that keeps every session running when the app quits or updates
- Claude Code, Codex CLI and Gemini CLI detection, with your login shell’s
PATH - A strict Content Security Policy on the Mac app’s bundled page
- Voice dictation on the Mac: on-device, or a cloud service with your own key (Groq, ElevenLabs or OpenAI)
2 · Sessions
- Chats and terminals, in one tab strip with browser tabs
- A status dot from the agent’s own hooks, and from its screen when they are silent
- A new-session dialog: where it runs, project, agent, login, and whether to remember it; resume the last session in a folder
- Agents you add yourself, by naming a command
- Model, effort and fast mode beside a running session
- Several logins each for Claude Code and Codex, chosen per session, per folder or as a default, and switchable on a running session
- Split view and swarm view
3 · Usage and context
- A usage bar for the context window and your plan’s limits
- A session inspector — timeline, tokens by model, cache reads and writes, largest requests, tools and failures, compactions
- Search across past Claude Code sessions, from the command palette
- Alerts for context, a session waiting on you, a heavy session, a missing CLI and uncommitted changes (Mac)
4 · Project workspace
- Files and a viewer with syntax highlighting, quick open and a command palette
- Source control, GitHub, MCP servers and hooks
- AI readiness: ten checks, with committed secrets capping the score
- Artifacts: every file or picture a session, an agent or Hoot made
- A project dashboard on the Mac
5 · Hoot, tasks and agents
- Hoot, an assistant for the app itself, with routines
- Tasks and goals, with subtasks, checklists, dependencies and repeats
- Agents with profiles and an org chart
- A Receiver that routes outside events into tasks or sessions
- The Store, and servers over SSH with Docker apps
6 · The browser
- A browser in the window: WebKit on the Mac, WebView2 on Windows, with profiles and isolated tabs
- Mark an element and the session gets its selector
- Device sizes, screenshots with drawing, and a flow recorder
- An agent drives the page through the app’s browser tools, and hands it to you for anything secret
7 · Away from the desk
- Pairing by six-digit code — sixty seconds, single use, dead after five wrong guesses, and it only ever produces a pending device a human approves on the machine itself
- QR codes and pairing links deleted. The QR did not work, and a link is a live bearer secret that has to travel through a messaging app to be useful. Both are gone from every client, along with the camera permissions they needed.
- Our own rendezvous relay at
relay.terminaldeck.dev— both ends dial out, nothing is port-forwarded, and no VPN or other network has to be set up - Noise IK sealed channel, written four times in four languages and byte-identical across all of them, so the relay carries ciphertext it cannot read
- Web version at
terminaldeck.app— sessions, chats, Hoot and a real terminal in a desktop browser, light and dark - Native iPhone client on the App Store — VT100 emulator, key bar and grid, gesture scrolling and selection, automatic reconnect
- Android client on Google Play — offered on the download page
- A host program for a Linux server or WSL, installed by the Mac’s Servers page over SSH or by the one-line installer
- One phone can hold several machines at once, each with its own sealed channel
- Localhost tunnel — reach a dev server on the Mac from the phone, over a raw TCP pipe
- Per-device folder grants, deciding where each paired device may start a session
- Updating in place — on macOS and on Windows both. A card just above Settings offers each new release; the app checks the signed release list and the download before it swaps itself and relaunches.
Not done
9 · Ship
- Notarisation, and a commercial Windows certificate. The packaging is done and macOS signing is done — every release is signed with the project’s Apple Developer ID. What is left is notarisation, which Apple refuses for this account with statusCode 7000, “Team is not yet configured for notarization”, so Gatekeeper still needs the Open Anyway step. On Windows the package is signed with the project’s own certificate, so it needs a one-time trust step; a certificate from a commercial authority would remove it.
- A Mac talking to a Windows PC. Machine-to-machine pairing has been run end to end against the real relay, the real trust store and the real pairing desk — with both ends in one macOS process on loopback, which is where every seam that has broken before lives. Across the internet, between two operating systems, it is the same code and it has not been run.
- Translations. The app is English only.
A Linux window is not on this list because it is not scheduled. Linux is not absent from the product: the headless host above is what makes a Linux server or a WSL distribution a machine your phone and your desktop can open a session on. Windows has its own native app, and every release ships it as one signed x64 package.
Open questions
- How closely the published host should track the desktop. It is on npm and one line installs it, but it is released on its own schedule, so the version the install script gives you can sit behind this release.
terminaldeck --versionsays which one you have.