Why Notifications Matter
The Long-Running Task Notification System gives clients a way to receive webhook notifications for task state changes and artifact generation while the task keeps running in the background. It follows the A2A Protocol specification for push notifications.| Polling long-running tasks | Bindu push notifications |
|---|---|
| Client must keep asking for task status | Server pushes updates as task state changes |
| Long-running jobs waste time waiting between polls | Notifications arrive when work actually changes |
| Artifact delivery depends on another fetch cycle | Artifact events can be sent as soon as they are generated |
| Server restarts can break the client’s tracking flow | Persisted webhook configs let notifications resume |
| Every client implements its own workaround | One notification model works across tasks and agents |
This is for tasks that outlive normal request timeouts. If a task may run for minutes,
hours, or days, a webhook is usually a better fit than holding the connection open or
polling every few seconds.
How Bindu Notifications Work
Persistent
Webhook configurations survive server restarts when
long_running=true.Flexible
Webhooks can be registered inline during task creation or later through a separate
RPC endpoint.
Practical
Supports task-level webhooks and an agent-level global fallback.
The Lifecycle: Registration, Execution, Delivery
Registration
A client creates a task and includes webhook configuration, or registers the webhook
later through a dedicated RPC method.The two supported registration paths are:
- Inline during
messages/send - Separate RPC registration through
tasks/pushNotification/set
long_running=true, the webhook configuration is persisted so it survives
restarts.Execution
Once the task is scheduled,
ManifestWorker executes it and generates artifacts as
usual. The notification path sits alongside execution, not in place of it.- Task Creation — client sends task with webhook configuration
- Registration —
MessageHandlersregisters webhook (persists iflong_running=true) - Execution —
ManifestWorkerexecutes task - Notification —
PushNotificationManagersends events to webhook
Quick Start
Enable Push Notifications in Agent Manifest
Send Task With Webhook
Implement Webhook Receiver
If the agent does not declare
"push_notifications": True, the rest of the setup does
not help. The capability has to be enabled first.Notification Events
Status Update Event
Sent when task state changes (submitted → working → completed / failed).
submitted · working · input-required · auth-required · completed · failed · canceled
Artifact Update Event
Sent when artifacts are generated.Status events tell the client where the task is. Artifact events tell the client what
the task produced.
Registration Paths
Inline Registration
Recommended. Register the webhook during
messages/send so it is ready before the
task starts.Separate RPC Registration
Useful when the webhook must be added or updated after the task already exists.
Method 1: Inline registration
Method 1: Inline registration
Register the webhook when creating the task.Advantages: single API call, no race conditions, webhook ready before task starts.
Method 2: Separate RPC registration
Method 2: Separate RPC registration
Register the webhook after task creation.Advantages: can update webhook mid-task, useful for dynamic workflows.
Disadvantages: two API calls, possible race condition for fast tasks.
Persistence and Fallback
Persistence Across Restarts
Whenlong_running=true, the webhook config is saved to the database and reloaded on startup:
Global Webhook Fallback
- Task-specific webhook (highest priority)
- Global webhook (fallback)
- No webhook (no notifications)
API Reference
RPC Methods
PushNotificationConfig
Security
Server Side: Sending Notifications
Validate webhook URLs to prevent SSRF:Client Side: Receiving Notifications
Verify the bearer token on every request:event_id:
Troubleshooting
Webhook not receiving notifications
Webhook not receiving notifications
Check that push notifications are enabled in the manifest:Query the registered webhook config:Test the webhook endpoint directly:
Webhooks lost after restart
Webhooks lost after restart
Ensure
long_running=true is set in the configuration:Duplicate notifications
Duplicate notifications
Track
event_id to deduplicate on the receiver side:Authentication failures
Authentication failures
Verify the token format matches exactly: