Skip to main content

A Python library for building agentic, notification-driven workflows with pluggable adapters, policy-aware handlers, and scalable integration interfaces.

Project description

🚀 Agentic-Notify

PyPI version Documentation License: MIT

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 ApprovalHandler safely 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_id for resumable, safe workflows.
  • Dynamic Policy Engine: A middleware barrier that checks dynamic user-profiles and boundaries before any action is ever triggered.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agentic_notify-0.1.1.tar.gz (15.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agentic_notify-0.1.1-py3-none-any.whl (26.9 kB view details)

Uploaded Python 3

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

Hashes for agentic_notify-0.1.1.tar.gz
Algorithm Hash digest
SHA256 2662b312794d4de3def4b834c28db4eeedb5c24c7ba9f63ab5d59851e688ff91
MD5 1c1db81610e69b98776de30a13d0c958
BLAKE2b-256 5d7bfeae3f455adeb6d5f5bcb8a82117d147356d277bb4f843573f95526d24ce

See more details on using hashes here.

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

Hashes for agentic_notify-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8469feec7d66cb1077d9b3b2e7b41762fc6202e3245ad2a21d044ea736316652
MD5 dfb96887ca9dc4ec9296c7a98126e8ac
BLAKE2b-256 40e6cfc04bb486480de1cc808094927cf70e0c338a2f51ebaa4299d28d874ccd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page