A Python library for building agentic, notification-driven workflows with pluggable adapters, policy-aware handlers, and scalable integration interfaces.
Project description
🚀 Agentic-Notify
Agentic-Notify is an open-source Python SDK for building agentic, notification-driven workflows. It acts as an autonomous orchestration layer that intercepts mobile or web notifications, plans multi-step actions using Large Language Models (LLMs), and executes them deterministically using strict Pydantic schemas.
📖 Full Documentation
Visit the official documentation site at: https://nikhilkanamadi.github.io/agentic-notify/
⚡ The Problem It Solves
Traditional notification systems (like Firebase Cloud Messaging or APNs) are simple delivery pipes. They push a string to your phone, and you must manually open the app to take action.
Agentic-Notify transforms notifications into autonomous workflows. Instead of just displaying "Your flight is delayed," the engine intercepts the notification, uses a Dynamic Policy Engine to check your preferences, queries an LLM Planner, and executes a multi-step workflow (e.g., canceling your Uber, emailing your boss, and setting a native reminder).
📦 Installation
To install the library and the optional backend engine (FastAPI):
pip install agentic-notify[fastapi]
🛠️ Quick Start Guide
The easiest way to understand the architecture is to see it run end-to-end. The library is completely modular. You initialize the Orchestrator, register your Adapters (tools), and define the Workflow JSON graph.
1. Initialize the Engine
import asyncio
from agentic_notify.orchestrator import NotificationOrchestrator
from agentic_notify.storage.memory import InMemoryStore
from agentic_notify.policies.engine import PolicyEngine
storage = InMemoryStore()
policy_engine = PolicyEngine()
orchestrator = NotificationOrchestrator(storage=storage, policy_engine=policy_engine)
2. Register Your Adapters (Tools)
Adapters are standard python classes that execute real-world logic.
from agentic_notify.adapters.notes import NotesAdapter
from agentic_notify.adapters.mock_reminder import MockReminderAdapter
orchestrator.register_adapter(NotesAdapter())
orchestrator.register_adapter(MockReminderAdapter())
3. Define the Agentic Workflow
Using strict Pydantic models, define the graph that the LLM or Routing Engine will follow.
from agentic_notify.schemas.workflow import WorkflowDefinition, WorkflowTrigger, WorkflowStep
workflow = WorkflowDefinition(
workflow_id="wf_e2e_demo",
workflow_name="E2E Notification Handler",
trigger=WorkflowTrigger(type="notification"),
steps=[
WorkflowStep(
id="step_save_note",
kind="adapter",
name="save_note",
input_from={"title": "event.title", "content": "event.body"}
),
WorkflowStep(
id="step_create_reminder",
kind="adapter",
name="create_reminder",
input_from={"task_title": "event.title", "task_text": "event.body"}
)
]
)
orchestrator.register_workflow(workflow)
# Route incoming events with a specific keyword to this workflow
orchestrator.router.add_rule(lambda event: "charge" in str(event.title).lower(), "wf_e2e_demo")
4. Inject a Mock Notification Event
The orchestrator converts raw device payloads into unified NotificationEvent schemas.
mock_payload = {
"event_id": "evt_demo_001",
"source_platform": "ios",
"source_app": "finance",
"title": "Unusual Charge Detected",
"body": "A charge of $500.00 was detected. Please review.",
"received_at": "2026-03-28T12:00:00Z"
}
async def run():
result = await orchestrator.process_event(mock_payload)
print(result)
asyncio.run(run())
🧠 Advanced Features Included
- Pydantic Data Contracts: Zero LLM hallucinations. The engine forces Agentic output into strict JSON schema validation locks.
- Human-in-the-Loop Hooks: The
ApprovalHandlersafely halts execution on high-risk actions (like payments) and suspends state until human authorization is granted. - Durable Postgres Storage: Fully tracks all state execution securely by
tenant_idfor resumable, safe workflows. - Dynamic Policy Engine: A middleware barrier that checks dynamic user-profiles and boundaries before any action is ever triggered.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentic_notify-0.1.1.tar.gz.
File metadata
- Download URL: agentic_notify-0.1.1.tar.gz
- Upload date:
- Size: 15.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2662b312794d4de3def4b834c28db4eeedb5c24c7ba9f63ab5d59851e688ff91
|
|
| MD5 |
1c1db81610e69b98776de30a13d0c958
|
|
| BLAKE2b-256 |
5d7bfeae3f455adeb6d5f5bcb8a82117d147356d277bb4f843573f95526d24ce
|
File details
Details for the file agentic_notify-0.1.1-py3-none-any.whl.
File metadata
- Download URL: agentic_notify-0.1.1-py3-none-any.whl
- Upload date:
- Size: 26.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8469feec7d66cb1077d9b3b2e7b41762fc6202e3245ad2a21d044ea736316652
|
|
| MD5 |
dfb96887ca9dc4ec9296c7a98126e8ac
|
|
| BLAKE2b-256 |
40e6cfc04bb486480de1cc808094927cf70e0c338a2f51ebaa4299d28d874ccd
|