WisprOps Open the console
Built for No Hands: The Wispr Challenge

Say the word.
Production listens.

An on-call agent for developers. It finds why your service broke and who changed what, fixes it with one safe action, checks the fix actually worked, and handles the repeat on its own. You approve each fix out loud with Wispr Flow.

Runs in your browser, no install or account. Every scripted line in the demo is labelled.

The WisprOps board during an incident: checkout-api is down because db_pool changed from 20 to 0 (changed by deploy-bot), and fix 1 waits for approval.
What it does

From alert to a verified fix, without opening a laptop.

Your service fails at night. Instead of a VPN, a dozen dashboards and a guess, you get the cause, one fix, and a check that it held.

15 sapproval to verified fix
0pages for a repeat you've already fixed
12/12safety checks in wisprops judge
0dependencies, cloud accounts, API keys

Figures from the scripted run (node bin/wisprops.js judge): the real agent and rules with a fast clock.

  1. Finds the cause, and who caused it

    Compares the failing service with its last healthy snapshot: a config key that changed, a new release, a broken rule from your runbook, or a process that stopped answering. It names who made the change and keeps only the log lines that matter.

  2. Proposes one fix

    Exactly one, from a short list: restore a key, roll back a release, or restart. It's dry-run first, with what else it could touch.

  3. Waits for a human yes

    Nothing changes until you approve. Say “approve fix one” with Wispr Flow; “yes, do it”, questions and “don't…” change nothing.

  4. Checks the fix held

    Fixed means three healthy checks in a row and the change still in place. Otherwise you're paged, with the reason.

  5. Handles the repeat itself

    Say “grant standing order for seven days” and the same failure is fixed next time without paging you: one service, one failure, one action, with limits.

Features

Everything you need on call.

Add your voice

Typed approvals are refused. Spoken ones go through.

Every fix needs a human yes, and half asleep, “yes, do it” is the riskiest thing you can send to a system that can change production. With Wispr Flow, WisprOps acts only on the exact phrase, dictated in one go, and keeps the words with the change.

typed13 keystrokes
approve fix 1
✖ Refused: keystrokes, not a Wispr dictation.
Wispr Flow11 chars, one burst
Yes, do it.
✖ Not the exact words: “approve fix 1”.
Wispr Flow16 chars, one burst
Approve fix one.
✓ Applied, then verified: db_pool is 20.
Waiting for you…
  • 🙌 No hands mode: pages read aloud, dictations send themselves, “open the audit log” moves the screen.
  • Interrupt the read-back and the fix is withdrawn.
  • Hinglish and Devanagari: “approve fix ek”, “main dekh raha hoon”, “अप्रूव फिक्स वन”. “मत” is never a yes.
  • Set up by voice: describe a service, or dictate “db_pool must stay at 20 or more” to make a rule.
  • Phone: Telegram pages, answered with Flow's keyboard. Approvals stay in the console.
  • Claude Code + Wispr's MCP: files your meeting decisions as runbook notes; can't approve anything.
You sayWhat happens
approve fix oneApplies the proposed fix voice only
undo fix oneReverses it, hands it back to you voice only
grant standing order for seven days, only at nightFix this failure next time without paging voice only
unfreeze productionLets changes run again voice only
I'm on itAcknowledges; your backup isn't paged
what happened? · what changed?The cause, and who changed what
read it backReads the fix aloud
freeze productionStops every change at once
snooze checkout for thirty minutesMaintenance window
note: the deploy bot ran stagingGoes into the postmortem and handoff
what happened last night?Reads the morning handoff
Safety

It can change production, so the limits are written in code.

①

Three actions, nothing else

Restore a key, roll back, restart. Commands are argument lists, never a shell.

②

Dry-run before and during

When it's proposed and again right before it runs. A failed dry run applies nothing.

③

No model decides

Approval is checked in code: the exact phrase, the whole sentence, one Wispr dictation.

④

Fixed means verified

Healthy checks in a row and the change still in place, or it pages you and says why.

⑤

Anyone can freeze

By voice, button or CLI. Only a Wispr dictation unfreezes.

⑥

Bots can't approve

Telegram, MCP, buttons and the demo script always count as typing.

⑦

Blame needs proof

A change is attributed only on an exact key or release match.

⑧

Private by default

Localhost only, signed-in writes, strict CSP, write-only secrets, redacted notes.

What the Wispr check proves: the words arrived as one dictation rather than key by key. Pasted text looks the same, and WisprOps doesn't claim more than that.

Install

Pick how you want to try it.

In the browser

Watch an incident, then answer one

The real agent against a simulated production. Press ▶ Watch it, or Try it yourself with Wispr Flow.

Open the demo →
In a terminal

Twelve checks in ten seconds

A full incident, scripted, with every safety rule checked as it runs.

git clone https://github.com/Dakshhhhh-ops/wisprops
cd wisprops
node bin/wisprops.js judge
On your services

First page in a minute

Describe your service out loud, pick a private ntfy topic, send a test page.

npm install -g github:Dakshhhhh-ops/wisprops
wisprops start
WatchesDockerComposepm2systemdKubernetesHTTPTCP portscheck commandsPagesntfySlackDiscordPagerDutyTelegramAlerts fromAlertmanagerGrafanaUptime Kuma
FAQ

Questions developers ask.

Do I need Wispr Flow to use it?

Not for the core: watching, diagnosis, the change ledger, paging, escalation, standing orders, postmortems and the console all work without it. Wispr Flow is how you approve fixes and work hands-free. Without it, set settings.allowTyped in the config and typed approvals work too, flagged on every record.

Do I need AWS, an LLM or an API key?

No. It's plain Node with no dependencies. The cause comes from evidence (the healthy snapshot, the change ledger, your rules), not from a model's guess. Run it on your machine, a server, or in Docker.

What if it can't explain the failure?

It pages you with the evidence. If a restart is the only option and nothing explains the failure, it's labelled “a best guess, not a root cause”, and never automated.

Can a typed approval ever work?

Only with settings.allowTyped set in the config file, and each one is flagged. It can't be turned on from a browser.

Can Claude, Telegram or a script approve a fix?

No. MCP can read and add notes; Telegram can acknowledge, snooze and freeze. Neither can approve, undo, grant, renew or unfreeze.

Does my code need to change?

No. WisprOps watches from outside (a health URL, a port or a check command) and fixes through the runner you already use.

What does it store?

One local state file: incidents, approval records, standing orders, the change ledger and runbook notes. Notes are saved with emails, numbers and keys redacted.

Get your nights back.

See a full incident in your browser, then point it at something real.