SuluvAI — Agentic Business Process Framework with Graph Engine, Agent Orchestration & Process Engine
Project description
SuluvAI
Agentic Business Process Framework — pure Python, zero required dependencies, hexagonal architecture.
Use only the level of complexity you need:
Level 1: SuluvAgent ← standalone agent + LLM + tools. No graph needed.
Level 2: GraphRuntime ← multi-agent orchestration with nodes + edges
Level 3: ProcessDefinition ← full business process management (BPM)
Installation
pip install suluvai
With LLM backends:
pip install suluvai[openai] # OpenAI
pip install suluvai[anthropic] # Anthropic
pip install suluvai[gemini] # Google Gemini
pip install suluvai[llm] # All LLM backends
Quick Start
Level 1 — Standalone Agent
from suluv.core import SuluvAgent, AgentRole, suluv_tool
@suluv_tool
async def check_pan(pan: str) -> dict:
"""Verify a PAN number."""
return {"valid": True, "name": "Ramesh Kumar"}
agent = SuluvAgent(
role=AgentRole(name="kyc-officer"),
llm=OpenAIBackend(model="gpt-4o"),
tools=[check_pan],
)
result = await agent.run("Check PAN ABCDE1234F")
Level 2 — Multi-Agent Graph
kyc_node = AgentNode(agent=kyc_agent)
credit_node = AgentNode(agent=credit_agent)
graph = GraphDefinition()
graph.add_node(kyc_node)
graph.add_node(credit_node)
graph.add_edge(kyc_node, credit_node, condition=lambda r: r.success)
runtime = GraphRuntime(event_bus=InMemoryEventBus())
result = await runtime.execute(graph, input="Process loan", context=ctx)
Level 3 — Business Process
process = ProcessDefinition(name="nbfc-loan", version="1.0")
process.add_variable("customer_id", type=str, required=True, immutable=True)
process.add_variable("loan_amount", type=float, required=True)
process.add_decision_table("eligibility", DecisionTable(
inputs=["income", "cibil_score", "age"],
rules=[
Rule(when={"income": ">500000", "cibil_score": ">700"}, then="AUTO_APPROVE"),
Rule(when={"income": ">300000", "cibil_score": ">650"}, then="MANUAL_REVIEW"),
Rule(default=True, then="REJECT"),
],
))
process.add_stage(ProcessStage(
name="kyc", agent=kyc_agent,
sla=SLA(duration=4, unit="business_hours", calendar=india_calendar),
compensation=reverse_kyc_hold,
))
result = await process.run(
input={"customer_id": "C123", "loan_amount": 500000},
context=ctx,
)
The 3 Pillars
| Pillar | What It Does | Key Features |
|---|---|---|
| Agent System | AI agents that reason, use tools, and follow policies | ReAct loop, tool ownership, guardrails, 4-tier memory, cost tracking, structured output |
| Graph Engine | Orchestrates agents and nodes in directed graphs | 16 node types, fan-out/join, middleware, retry/skip/fallback, cancellation, streaming |
| Process Engine | Full business process management | Decision tables, forms, SLAs with business calendars, saga compensation, signals, correlation, work assignment, analytics |
Process defines WHAT to do → Graph Engine decides HOW to run it → Agents do the WORK.
Architecture
Hexagonal / Ports & Adapters
18 port ABCs with pluggable adapters — swap implementations without changing business logic:
- LLMBackend — OpenAI, Anthropic, Gemini (or bring your own)
- EventBus — publish/subscribe for node coordination
- StateStore — persist execution state for resume
- AuditBackend — compliance and audit trail
- MemoryBackend — short-term, long-term, episodic, semantic
- HumanTaskQueue — claim/release/delegate for human-in-the-loop
- RulesEngine — decision tables and scoring matrices
- BusinessCalendar — working hours, holidays, timezone-aware SLAs
- And 10 more...
All ports ship with in-memory adapters — no external infrastructure needed to get started.
16 Graph Node Types
| Node | Purpose |
|---|---|
AgentNode |
AI reasoning with tools |
ToolNode |
Direct function execution |
HumanNode |
Human decision / approval |
RouterNode |
Conditional branching |
LoopNode |
Iterative refinement |
MapNode |
Parallel for-each |
GatewayNode |
N-of-M join (e.g., 2-of-3 approval) |
DelayNode |
Timed wait |
SubgraphNode |
Nested graph composition |
TriggerNode |
Webhook / cron / event initiation |
DecisionNode |
Business rules evaluation |
FormNode |
Structured data collection |
SignalNode |
Business signal catch/throw |
CompensationNode |
Saga rollback |
TimerNode |
Calendar-aware scheduled wait |
ProcessNode |
Embedded business workflow |
Process Engine Features
- Decision Tables — DMN-style rules, updatable without redeployment
- Forms — field types, conditional visibility, validation, sections
- SLAs — measured in business hours with escalation chains
- Compensation — saga pattern with reverse-order rollback
- Signals — react to external events (fraud alerts, document uploads)
- Correlation — route events to the correct process instance
- Work Assignment — round-robin, least-loaded, manual claim, skill-based
- Analytics — cycle time, SLA compliance, bottleneck detection
Requirements
- Python 3.11+
- No required dependencies (LLM backends are optional extras)
License
MIT
Developed by SagaraGlobal
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 suluvai-0.2.0.tar.gz.
File metadata
- Download URL: suluvai-0.2.0.tar.gz
- Upload date:
- Size: 58.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8069b991fbd993e525a6ed9953c4605f308ead3aabf5aeaf1f81229fbabd7379
|
|
| MD5 |
22dcde06cb78299e65cd175c686804b9
|
|
| BLAKE2b-256 |
a39d474727888e2ddc48d99ecd12a1951a47748955960613ad5949e25cb712ae
|
File details
Details for the file suluvai-0.2.0-py3-none-any.whl.
File metadata
- Download URL: suluvai-0.2.0-py3-none-any.whl
- Upload date:
- Size: 97.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb62d25b79a3d19737f3d30772e070d9224684a0ab9ddca0238f927f46a4c714
|
|
| MD5 |
2249552704e948e156670b3288a41ac3
|
|
| BLAKE2b-256 |
420b94cc8b3827ecf7da4db6b74edb7f7a1bffcd9e06d34637e37248606ade31
|