AI Engineering · Developer Tools
AgentDeck, One Place to Answer Your Coding Agents
Coding agents stop and wait for a yes. With several running, the question sits in whichever terminal tab asked it, and you find out ten minutes later. The other failure is clicking yes without reading.
- My role
- Solo project, built with Claude Code as the coding agent. I set the rules it had to follow, chose the designs, and tested every build on my own PC and phone.
- When
- Oct 2026 · public beta
Request 1 of 3
You decide
An agent needs a yes
Claude Code wants to run a command. Without AgentDeck, that question waits in whichever terminal tab asked it. Here it drops from the island at the top of the screen. Answer it there, or on the phone.
Your PC
webshop wants to run a command
Medium riskRuns npm test
npm testClaude Code · waiting 0s
Your phone
My PC
webshop
Claude Code
Can I run a command?
npm testHistory
Nothing yet. Answer the request above.
2
agents covered: Claude Code and Codex
122
automated tests in the 0.18 release
115 MB
memory when idle, 1.2% CPU while agents work
0
network calls of its own until you switch one on
Approach
A small Windows app that brings every agent's permission requests, questions and finished turns to one island at the top of the screen. It rates each request's risk before you see it, and you answer there or from an Android app, over Wi-Fi or an encrypted relay.
Results
Version 0.18 is a public beta: a 5 MB installer for Windows and an Android app. It covers the two agents I use, idles at 115 MB of memory, and ships with 122 automated tests that run on every push. What it has not had is other people. I have no usage numbers, because it collects none. The result I can vouch for is my own: I stopped finding questions that had been waiting in a terminal tab, and the hardest bug taught me to put the reason on the screen instead of guessing.
Three rules I did not let myself break
It may never block an agent
If AgentDeck is closed, crashed or slow, Claude Code and Codex behave as if it was never installed. A request nobody answers goes back to the terminal after 9 minutes.
Agents cannot approve themselves
Two keys. The one on disk, which an agent's hooks use, can only ask. The one that answers lives in the app's memory, so nothing an agent can read is able to say yes.
Nothing leaves the PC unless you switch it on
No telemetry and no account. The phone's relay is off by default, and when it is on it carries frames sealed between the phone and the PC that it cannot read.
One bug, start to finish
Notifications worked on the test phone and not on mine. This is how that went, working with Claude Code, including the part where the first guess was wrong.
- 01The symptom. A request showed up in the phone app the moment I opened it. On a locked phone, no notification ever came.
- 02Stop guessing. The path has four parts: PC, relay, Google's push service, phone. I made the relay log one plain line per outcome. The first one read: this phone hasn't registered for notifications. So the PC and the relay were fine.
- 03Reproduce it somewhere I can see. On an Android emulator the same build registered and showed the notification. The code worked. Something about my phone did not.
- 04Put the reason on the screen. The app swallowed the error, so I added a Notifications line to its settings that says On, or the exact reason it is not. On my phone it said MISSING_INSTANCEID_SERVICE. It is a Huawei: no Google Play services, so Google's push can never reach it.
- 05The fix is a second way in. On phones without Google, the app now keeps one quiet connection to the relay and shows the notification itself. Phones with Google keep using Google's push. I tested it on the emulator with Google services switched off, then on the Huawei.
- 06And the bug behind the bug. The new settings line said Connecting forever while notifications arrived. Commands sent from the page to the Android side are looked up in camelCase, and mine were snake_case, so four of them had never run. That included the one that asks Android for permission to notify.
The first guess was timing: that the notification had been sent while the app was still open. The relay's log line ruled that out in one test.
Not proven yet
- It is a public beta. I use it myself, but I have no usage numbers, because it collects none.
- The installer is not code-signed yet, so Windows shows a warning before it runs.
- Windows only on the PC side, Android only on the phone. The iPhone app is not built.
- The relay is one Cloudflare Worker on my own account. It has had one user's traffic, not load.
Next on the list: Allow and Deny inside the notification itself, and telling an already-paired phone about the relay so that turning it on later needs no second scan.
Technical highlights
- 01One Rust core for sessions, approvals, risk rating and history; the island is a Tauri window talking to it over a local WebSocket
- 02Two agents with different hook mechanics behind one interface, including Codex hooks that run inside its sandbox
- 03Risk is rated before you see a request: the card says why, high risk needs a 0.8 s hold and critical 1.5 s
- 04Every frame to the phone is sealed with a key only the phone and the PC hold; the relay is a Cloudflare Durable Object that passes what it cannot read
- 05Two notification paths: Firebase where Google Play services exist, a foreground service with its own connection where they do not
- 06Each reader of an agent's files checks the format first: if an update changes it, that one feature turns off with a plain message
Under the hood
Stack
Related case studies
AI Engineering · Agents
AI Agents Toolkit for Index Operations
46
reusable skills across 5 agents, in daily use
AI Engineering · Agents
Aloi, a Market Research Agent that Checks its Figures
27/28
eval questions passed with no figure missing from the fetched data (one run)
AI Engineering · RAG
Index Methodology RAG Assistant
81.9%
accuracy on 94 held-out questions (95% CI 73–88%)