Honest comparison
Knock sends notifications across many channels. Its agent toolkit can send the approval message, and you build the rest from webhooks and your own pending state. With Pushary, your agent asks, your user taps Approve or Deny on their phone, and your code gets the answer. If nobody answers in time, the action does not run.
Both can put an approval in front of a person. The choice is about which half you want to own. With Knock, delivery is handled and the approval loop is yours: your code receives a webhook and resumes the paused tool. With Pushary, the loop is the product. One call sends the question, waits for the answer and returns it. No answer in time counts as no, and every answer is saved.
Knock's requiresHumanInput defers the tool call and hands the resume to your webhook handler. The pending state, matching each answer to its question, and the retry logic all live in your code. Pushary's decisions.ask() waits and returns the person's answer as the result of the call. For a wait longer than one call, Pushary keeps the request, and with a callback URL it sends the answer to your server as a signed webhook. So when a deploy lands mid-approval, your code picks the run back up instead of starting over.
Whether an unanswered Knock approval blocks the agent depends on code each team writes for itself. In Pushary, a request nobody answered is never a yes. When the time runs out, your code gets approved: false, the action does not run, and the expiry is saved next to the question.
Asking your users, and not only your team, needs their phones. In Knock, an approval recipient is a pre-identified Knock user with channel data in place, and phone push means your own mobile app with your own APNs or FCM credentials. With Pushary there is no app to ship. Your user opens your connect link once and installs the free Pushary app or turns on browser notifications. They need no account and no payment. Each notification starts with your product's name.
For product notifications, Knock is strong: one workflow engine across email, in-app feeds, push, SMS, Slack and Teams, with templates, batching, preferences and engagement tracking. It also has a real free developer tier and enterprise plans. If you need to send a lot of product messages reliably on many channels, use Knock. Pushary does not try to be that. It sends agent notifications and asks for answers.
| Feature | Pushary | Knock |
|---|---|---|
| One call that asks a person and returns the answerCORE | ||
| No answer means no, with no code of your own | ||
| Your users connect their phone with a linkCONNECT | ||
| Push approvals to a phone without shipping your own app | ||
| Every decision kept as a record you can look up by id | ||
| Approval helpers for the Vercel AI SDK | ||
| Signed webhook when a person answers | ||
| Email, SMS and in-app feed channels | ||
| Templates, batching, digests, preference center | ||
| High-volume notifications across channels | ||
| Pricing | Partner $99/mo, public and self-serve | Free Developer tier, Starter from $250/mo |
Competitor rows reflect Knock's public docs and pricing page as of October 2026. Their toolkit is in beta and evolving, so check their docs for current state.
Yes. Knock's Agent Toolkit has a requiresHumanInput helper that routes a tool call into a Knock workflow and sends an actionable message. Their docs call the interaction inherently asynchronous. The agent gets a waiting-for-input result right away. When the person responds, Knock fires a webhook to your app, and your code resumes the tool call. You build the webhook endpoint, the pending state and the resume logic. Pushary does that loop in one call. decisions.ask() waits for the answer and returns it, and if nobody answers in time, the answer is no.
In Pushary, the action does not run. If nobody answers in time, decisions.ask() returns not approved. Pushary keeps the request on its side, so a restart on yours does not lose it. Knock's docs for this feature show no timeout or deny-on-silence default, so what happens on expiry is left to the code you write around the webhook.
Yes, in different ways. Knock sends push notifications through your own mobile app, using your own APNs or FCM credentials and device tokens, and SMS through your provider. Pushary brings the phone side itself. Your user opens your connect link once and installs the free Pushary app or turns on browser notifications. Requests then arrive as a push in the app or in the browser. You ship no app and manage no push credentials.
Knock exposes its helpers for asking a person on its Vercel AI SDK adapter, with the toolkit in beta as a TypeScript package as of October 2026. Pushary has published adapters for the Vercel AI SDK, LangGraph, Mastra, the OpenAI Agents SDK, Eve and the Claude Agent SDK in TypeScript, and for LangGraph, CrewAI, the OpenAI Agents SDK, Pydantic AI and Haystack in Python. LangChain, Hermes and OpenClaw call the core SDK directly, and any MCP client can use the hosted MCP server.
When the job is product notifications: high volumes across email, in-app feeds, push, SMS, Slack and Teams, with templates, batching, digests and a preference center. Knock is excellent at that. If you already run it, its agent toolkit lets approvals ride your existing workflows. Pick Pushary when the job is a decision: the agent must stop, a specific person must answer on their phone, no answer must mean no, and the answer must be saved.
Connect each user once with a link. Then ask before the risky step, and your code waits for Approve or Deny. No answer means no, and every answer is saved. Works with the Vercel AI SDK, LangGraph, CrewAI, Mastra, the OpenAI Agents SDK, Eve, Hermes and MCP.
Start free