TokenDeck – Coding Agents Usage Management Consol Stigg released TokenDeck, a free desktop app for macOS 12+ and Windows 10/11 that maps Claude Code, Codex and OpenCode sessions onto a Stream Dock N3 deck's six screen keys, three metal buttons and three knobs, letting users jump to the session that needs attention and see how much of their 5-hour and weekly usage limits they have consumed. The app runs from the menu bar or system tray, connects to the deck over USB, requires no account and collects no telemetry, and installs via a curl script or unsigned disk images and an unsigned Windows .exe that trigger macOS quarantine and SmartScreen warnings. TokenDeck adds its hooks and status line to ~/.claude/settings.json with a backup, and on macOS requires Accessibility and Automation permissions so the deck can bring windows to the front. Token Deck is the free desktop app for the deck in the After Tokens box: a Stream Dock N3 with six screen keys, three metal buttons and three knobs. It puts your Claude Code, Codex and OpenCode sessions on the keys and takes you to the one that needs you. It also sets the model, effort and permission your next session starts with, and shows how much of your 5-hour and weekly limits you've used. It runs on macOS and Windows, lives in the menu bar the system tray on Windows and talks to the deck over USB. There's no account and no telemetry. Download: usage.stigg.io https://usage.stigg.io io.stigg.io/usage , the address printed on the box and the deck, leads there · All releases https://github.com/stiggio/token-deck/releases macOS 12 or later, on Apple silicon or Intel. Paste this into Terminal: /bin/bash -c "$ curl -fsSL https://usage.stigg.io/install.sh " The script https://github.com/stiggio/token-deck/blob/main/site/install.sh downloads the build for your Mac from the latest release, checks its SHA-256, quits Token Deck if it's running, installs it in /Applications or ~/Applications when /Applications isn't writable and opens it. It doesn't use sudo . Token Deck isn't notarized by Apple yet. The install command works anyway, because curl doesn't mark the download as quarantined. The disk images Apple silicon https://github.com/stiggio/token-deck/releases/latest/download/TokenDeck-mac-arm64.dmg , Intel https://github.com/stiggio/token-deck/releases/latest/download/TokenDeck-mac-x64.dmg are quarantined, so macOS refuses to open the app or says it's damaged. After you drag it to Applications, run this and open it again: xattr -d com.apple.quarantine "/Applications/Token Deck.app" Windows 10 or 11, 64-bit. Download and run TokenDeck-win-x64.exe https://github.com/stiggio/token-deck/releases/latest/download/TokenDeck-win-x64.exe . The installer isn't code-signed yet, so SmartScreen says "Windows protected your PC": choose More info , then Run anyway . If the deck maker's StreamDock or VSD Craft app is running, quit it before you plug in the deck. Only one program can use the deck at a time. The first time Token Deck starts, it offers three steps. You can skip any of them and do it later in the app's window, which opens from the menu bar or tray icon: Claude Code and the macOS permissions are on its This Mac page, and starting at login is on its About page. 1. Connect Claude Code. Token Deck adds its hooks and status line to ~/.claude/settings.json , next to anything you already have, and keeps a backup details claude-code . 2. On macOS, grant Accessibility and Automation, so the deck can bring windows to the front. 3. Start Token Deck at login. The three metal buttons under the keys pick the mode, and the deck remembers the last one. | Button | Mode | What the keys show | |---|---|---| | Left | Agents agents | Claude Code, Cursor, Codex, OpenCode, Amp and Devin | | Middle | Sessions sessions | Your live Claude Code, Codex and OpenCode sessions, newest first | | Right | Models & Usage models--usage | Your 5-hour and weekly usage, then up to five models | Hold the middle button to open your own modes your-own-modes . Turning a knob shows a short message across the top row of keys for 5 seconds, like SONNET NEXT SESSION . Key presses are ignored while a message is showing. NOT AVAILABLE means the agent can't do what you asked; NONE INSTALLED means none of Claude Code, Codex or OpenCode is installed. Press a key to go to that agent's latest session or window, or to open it if it isn't running. A dim key means the app isn't installed. Claude Code opens in the Claude desktop app when you have it, and in Terminal otherwise. Amp's key opens VS Code, and Devin's opens app.devin.ai https://app.devin.ai . The left and right knobs act on the last of Claude Code, Codex or OpenCode whose key or session you pressed, or the first one installed. | Control | Turn | Press | |---|---|---| | Big knob | Hop between the open agent windows | Back to the previous window | | Left knob | The model your next session starts with | Back to the agent's default model | | Right knob | The effort your next session starts with | Back to the agent's default effort | Each key is one recent session, newest first. The dot shows what it's doing, and the ring shows how full its context window is. Only Claude Code reports context, so Codex and OpenCode sessions get a dashed ring. | Dot | Status | |---|---| | Blue | Working | | Coral, with a frame around the key | Needs your approval | | White | Waiting for your reply | | Gray | Idle | | Lime | Done | Press a key to jump to that session's window, and Models & Usage then shows that session's agent. Token Deck finds the exact tab in Terminal, iTerm2 and Ghostty, the right window in VS Code and Cursor, or the session in the Claude desktop app; for other terminals it brings the app forward. For Codex and OpenCode it looks for the terminal running the agent in that session's folder, and a Codex session without one opens in the Codex app. A finished Claude Code session that isn't running anymore reopens in Terminal, in its own folder, with claude --resume . When there's no window to go to, the deck shows FAILED . On Windows, Token Deck brings Windows Terminal forward, without picking the tab. | Control | Turn | Press | |---|---|---| | Big knob | The next or previous six sessions | The next page with a session that needs you | | Left knob | Filter by agent | All agents | | Right knob | Filter by status: all, working, needs you, idle, done | All statuses | OpenCode sessions show up while opencode serve is running Token Deck looks at http://127.0.0.1:4096 and uses OPENCODE SERVER PASSWORD if you set one . OpenCode 2.x is found through its own service file. The deck never approves a tool call. Pressing a session that needs approval takes you to its window, and you decide there. Models & Usage shows one agent at a time; the left knob switches between Claude Code, Codex and OpenCode. The first key shows how much of that agent's 5-hour 5H and weekly 7D limits you've used. Press it to see the exact numbers and reset times in the app's window. The other keys are up to five of its models, with the current one in lime. Press a model and your next session starts on it. | Control | Turn | Press | |---|---|---| | Big knob | Effort | Ultracode on or off Claude Code | | Left knob | Agent | Back to the agent of the last session you opened | | Right knob | Permission: READ , ASK , AUTO , FULL | Apply it | Turning the right knob only previews a permission level; nothing changes until you press it a press before any turn just shows TURN FIRST , and FULL waits until you confirm it in a dialog on the computer. Model, effort and permission changes go into the agent's own settings file and apply from your next session, and the deck confirms each one, like SONNET NEXT SESSION or HIGH EFFORT . Sessions that are already running keep what they started with. Where the usage numbers come from: - Claude Code reports them in its status line on Pro and Max plans, after a session's first reply. - Codex reports them through codex app-server when you're signed in with ChatGPT. Token Deck asks once a minute. - OpenCode doesn't report limits, so the key shows -- . The deck shows the last reading it got for up to 24 hours, then -- , and drops a window as soon as its reset time passes. On Windows, Claude Code's status line isn't installed yet, so its usage and context don't show there. The models come from each agent: Claude Code's model list Opus, Sonnet, Haiku and Fable until it has one , the models Codex offers you, and OpenCode's configured model followed by its providers' models. Reorder them on the app's Models page. What each permission level writes: | Deck | Claude Code permissions.defaultMode | Codex sandbox mode , approval policy | OpenCode 1.x permission | |---|---|---|---| | READ | plan | read-only , on-request | edit ask , bash ask | | ASK | default | workspace-write , on-request | edit allow , bash ask | | AUTO | auto | workspace-write , never | edit allow , bash allow | | FULL | bypassPermissions | danger-full-access , never | edit allow , bash allow | Claude Code's effort levels are low , medium , high and xhigh . Codex offers whichever levels the selected model supports. Token Deck writes Claude Code's as modelSettings.