Attention Deck turns your Stream Deck+ into a local inbox for AI coding agents. When a task finishes, fails, or needs your attention, it appears on the deck so you can respond without repeatedly checking agent windows.
Early alpha: the main notification and navigation workflow works and has been tested on a physical Stream Deck+ on Windows. Installation is still developer-oriented, and some Codex actions need more real-world testing before release.
Attention Deck helps answer four questions at a glance:
- Which task needs me?
- Why is it waiting?
- How long has it been waiting?
- What can I safely do next?
It is most useful when you run several agent tasks at once and want to keep working while they run in the background.
Codex or another local tool
-> sends an attention update
-> Attention Deck organizes it
-> the Stream Deck+ shows a card
-> you open, snooze, dismiss, approve, or deny it
The current Windows prototype can:
- show local task notifications on a Stream Deck+;
- rank and select the tasks that need you most;
- show active and recently handled tasks;
- open supported tasks, snooze them, or dismiss them locally;
- keep the local inbox after a restart;
- show a review card when an ordinary Codex turn finishes, using an optional Codex hook; and
- receive carefully limited approval requests from Codex tasks started through its own connection.
Still in progress:
- testing sleep and wake behavior;
- fully qualifying exact task opening and live Codex approvals;
- creating a friendly installer and signed releases; and
- adding Claude Code and OpenClaw integrations.
Add Attention Key to all eight keys and Attention Dial to all four dials.
- Top four keys: show the highest-priority cards. Press one to select it.
- Bottom four keys: OPEN, APPROVE, DENY or DISMISS, and SNOOZE.
- Dial 1: move between cards.
- Dial 2: read more of the explanation.
- Dial 3: choose an available action or snooze duration.
- Dial 4: switch between NEEDS ME, ACTIVE, and RECENT. Press it to return to NEEDS ME.
Selecting or opening a card does not mark the task complete. Approval and denial require a 750 ms hold and only appear when Attention Deck can verify the exact live request.
You will need:
- Windows 10 or later;
- Stream Deck software 7.0 or later;
- a Stream Deck+;
- Node.js 20 or later; and
- Codex CLI with
app-serversupport if you want to try the Codex adapter.
Install the project, run its checks, build it, and link it to Stream Deck:
npm ci
npm run check
npm test
npm run build
npm run validate
npx streamdeck link com.preflightstack.attention-deck.sdPlugin
npx streamdeck restart com.preflightstack.attention-deckAfter placing the eight keys and four dials in a Stream Deck+ profile, create a test card:
npm run attention -- emit --project "Demo" --state INPUT --title "Choose an option" --summary "This is a local Attention Deck test." --session "readme-demo"The development service listens only on 127.0.0.1:17893. It creates a private authentication token in the current Windows user's local application-data directory; the token is not stored in this repository.
Attention Deck includes an optional Codex Stop hook. When a main Codex turn finishes, the hook creates a display-only REVIEW card.
Build and link the plugin first. Then merge the Windows hook definition into %USERPROFILE%\.codex\hooks.json. If the file does not exist, you can copy the example as-is. Open /hooks in Codex afterward to review and trust the new hook.
The hook does not copy your prompts, transcript, assistant response, or approval permissions. See the Codex hook guide for complete setup, testing, and removal instructions.
Attention Deck can show completion notifications from normal Codex desktop tasks, but it usually cannot approve requests owned by the Codex desktop app. Those requests belong to a private Codex connection.
In that situation, Attention Deck directs you back to Codex instead of guessing. APPROVE and DENY are enabled only when the plugin receives and still owns the exact live request through its own Codex connection.
- Communication stays on your computer and requires a private token.
- Ordinary notification senders cannot add commands, approval buttons, or arbitrary links.
- Every action is checked again at the moment you press it.
- Changed, expired, or disconnected requests are locked instead of retried automatically.
- Snoozing or dismissing a card changes only your local inbox; it does not pretend the agent finished.
Read SECURITY.md for the full trust model and DATA_HANDLING.md for details about local data and privacy.
The README intentionally keeps the overview simple. Deeper design details live here:
At a high level, local tools send authenticated updates to a small local service. That service validates, organizes, and saves the inbox. The Stream Deck plugin reads the inbox and displays only the actions that are safe for the selected card.
- Finish sleep/wake, exact OPEN, and live Codex approval testing.
- Add installer and profile tooling, screenshots, and signed releases.
- Add more agent integrations behind the same safety model.
Issues and focused pull requests are welcome. Read CONTRIBUTING.md before proposing a provider integration or changing the action security model.
Attention Deck is available under the MIT License. See ACKNOWLEDGMENTS.md and THIRD_PARTY_NOTICES.md for project influences and bundled dependency notices.
Attention Deck is not affiliated with or endorsed by OpenAI or Elgato. Codex, OpenAI, Elgato, and Stream Deck are trademarks of their respective owners.