Your agents ask. You decide.

A local inbox for the questions your coding agents need you to answer. Answer from a browser tab or a terminal pane, hours later if you need to, and the agent picks up where it left off.

$ curl -fsSL https://decyde.dev/install | sh

macOS and Linux · Python 3.11+ · no dependencies · MIT

How it works

You run five agents across three projects. One of them needs a call on pricing while you are in a meeting. Instead of the question scrolling away in a terminal you are not watching, it lands in decyde with who asked, what they are working on, the options and their recommendation.

1The agent asks and keeps working
$ decyde ask --agent codex \
  --task "Stripe webhook refactor" \
  --title "Keep webhooks in Edge?" \
  --option "Keep in Edge Functions" \
  --option "Move to Next.js route" \
  --urgency high
Asked as decyde question #12.
2You answer when you get to it
─ needs you ──────────────────
▶ ! #12 codex  Keep webhooks…
  ● #13 claude Pricing tier na…
─────────────────────────────
## options
[1]  Keep in Edge Functions
[2]  Move to Next.js route

#12 > Keep in Edge Functions▌
3The answer reaches the agent
❯ [decyde] Craig answered your
  question #12 ("Keep webhooks in
  Edge?"):

  Keep in Edge Functions

  Run `decyde ack 12`, then continue.

⏺ Keeping the webhooks in Edge
  Functions. Continuing the refactor.
██████╗ ███████╗ ██████╗██╗   ██╗██████╗ ███████╗    craig@studio                     ✓
██╔══██╗██╔════╝██╔════╝╚██╗ ██╔╝██╔══██╗██╔════╝    your agents ask. you decide.              ·   ?
██║  ██║█████╗  ██║      ╚████╔╝ ██║  ██║█████╗  
██║  ██║██╔══╝  ██║       ╚██╔╝  ██║  ██║██╔══╝      open 2  ·  blocking 1  ·  awaiting ack 0     ✗
██████╔╝███████╗╚██████╗   ██║   ██████╔╝███████╗    http://127.0.0.1:7717
╚═════╝ ╚══════╝ ╚═════╝   ╚═╝   ╚═════╝ ╚══════╝
  1:needs you 2   2:answered 9   3:history 31
──────────────────────────────────────────────────────────────────────────────────────────────────
▶ ! #12   codex         4m  Keep webhooks in Edge Functions?                                         
  ● #13   claude       11m  Pricing tier names for the launch page
──────────────────────────────────────────────────────────────────────────────────────────────────
  codex / Codex, billing lane  ·  payments-api (feat/webhooks)  ·  pane w3:p2
  ## question
  Move the Stripe webhooks to a Next.js route or keep them in Supabase Edge Functions?
  ## agent recommends
  Keep: no cold-start difference and one less migration.

   answer   answer in editor   dismiss   ▲ prev   ▼ next 

Turning it on

decyde is off in every agent session until you turn it on, so a quick hands-on session stays the way you are used to. Turn it on when you are about to walk away.

› use decyde. Finish the invoices migration
  and open a PR.

⏺ decyde is on for this session. Asks
  will go to your inbox, not this chat.

…

⏺ Migration and PR are ready. Waiting on
  decyde #31: Drop the old invoices table?

Say "use decyde" to any agent, or decyde on. Claude Code also takes /decyde on. Say "decyde off" to go back to asking in chat.

It sticks for the session. Every ask from then on goes to your inbox, and the agent ends its turn by naming the question it is waiting on.

There is a safety net. In Claude Code, Codex and Grok, if an agent ends its turn on something that reads like an ask without posting it, a hook sends it back once to post it.

What counts as an ask

Anything that needs you before it happens. While decyde is on, these go to your inbox instead of the end of a chat message you might never scroll back to.

A decisionProduct, design, scope, naming, priorities, or a trade-off between options.
A confirmation it will not proceed withoutMerges, deletes, migrations, deploys, sending email or messages, spending money, touching production data.
Something only you can doLogging in, handing over a key, approving in a dashboard, buying something.
A hand-off at the end of a turn"Your call", "want me to…?", "should I…?", "I'll leave it to you", "tell me to run it".

Not asks: the agent's own tool-permission prompts, which keep their usual approval flow; status updates that need nothing from you; questions the agent can answer from the code. decyde is built for agents running with permissions skipped, where nothing else stops to ask you.

Getting the answer back

An agent that has finished its turn will not notice an answer on its own. decyde sends it as soon as you give it, even twelve hours later, through whatever the agent is running in.

Agent runs inHow the answer arrives
Herdr paneTyped in as a new prompt. A busy agent reads it at its next step; an idle one wakes up.
tmux panePasted in the same way, held back only while an approval dialog is on screen.
Claude Code, any terminalSent to the session's own inbox. An idle session wakes up; a busy one reads it at its next step.
Codex, any terminalStarted as a turn in the session that asked, through Codex's own background server, or added to the turn already running.
Grok, any terminalThe agent waits on the answer in the background, and is woken the moment it returns.
Anything elsedecyde check 12 and decyde wait 12.

Answering from your phone

Connect your own Telegram bot and questions follow you out the door. Tap an option and the answer reaches the agent the same way it would from your desk.

decydebot
🔴 Blocking
#12 Keep webhooks in Edge?
codex · Codex, billing lane · payments-api (feat/webhooks)
Move the Stripe webhooks to a Next.js route or keep them in Supabase Edge Functions? RecommendsKeep: no cold-start difference and one less migration.
1. Keep in Edge Functions2. Move to Next.js routeDismiss
Keep them, but add retries
  1. Create a bot. In Telegram, message @BotFather, send /newbot and pick a name. Use a new bot just for decyde; a bot another app already reads won't work.
  2. Connect it. Run decyde telegram setup and paste the token BotFather gives you. A new bot gets decyde's photo and description.
  3. Press Start. Open the link it prints on your phone and press Start. That account becomes the only one that can answer.

Answer how you like. Tap an option, or reply to the message with your own words. /open lists what is still waiting. When a question is answered on your Mac or withdrawn, its message updates and the buttons go away.

Your bot, your machine. decyde reaches out to Telegram and nothing reaches in, so no port opens on your computer. Question text does pass through Telegram while it is connected. decyde telegram off disconnects it.

Local by default

Your questions and answers stay on your machine unless you connect a phone. There is no account, no cloud service and no telemetry. Without a phone connected, the one outbound request is a daily check of the latest version number on GitHub, which you can turn off with decyde config update_check off.

One SQLite fileQuestions and answers live in ~/.decyde. Agents write to it directly, so asking works even when the server is down.
Bound to localhostThe web UI listens on 127.0.0.1 only and refuses requests from other sites.
Python standard libraryNo packages to install, nothing to audit beyond the repo.
Reversible setupdecyde uninstall removes the service, the agent instructions and the hooks it added.
Updates in one commandBoth views tell you when a new version is out. decyde update installs it and refreshes your agents' instructions and hooks.
Answer from your phoneOptional. Connect your own Telegram bot with decyde telegram setup (how). Question text then passes through Telegram.
Open sourceMIT licensed. Read it, fork it, or send a pull request on GitHub.