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.
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.
wisprops judgeFigures from the scripted run (node bin/wisprops.js judge): the real agent and rules with a fast clock.
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.
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.
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.
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.
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.
Everything you need on call.
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.
- 🙌 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.
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.
Pick how you want to try it.
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 →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
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
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.