Symvion AI Runtime
A multi-tenant AI orchestration framework powered by LangGraph.
Core Capabilities
Symvion provides a clean, modular Python package that supports:
- Multi-tenant orchestration with isolated contexts
- Dynamic agent registration via APIs (stating payloads and expected responses schemas)
- Abstracted Tool/function calling
- Observability hooks and state routing via LangGraph
- HITL / controlled GenUI pauses via
interrupt_before_tools+resume_stream(package protocol; no HTTP layer)
Installation
# From the pypi
pip install symvion
Example Usage
import asyncio
from symvion import Symvion, TenantConfig
async def main():
config = TenantConfig(tenant_id="acme_corp")
runtime = Symvion(config=config)
runtime.register_agent({
"name": "task_orchestrator",
"description": "Orchestrates general tasks and queries",
"system_prompt": "You are a helpful task orchestrator. Help the user with their request.",
"input_schema": {
"type": "object",
"properties": {"task_description": {"type": "string"}}
},
"output_schema": {
"type": "object",
"properties": {"action_plan": {"type": "string"}, "is_complete": {"type": "boolean"}}
},
"tools": []
})
response = await runtime.chat(
tenant="acme_corp",
agent_name="task_orchestrator",
payload_data={"task_description": "Organize my daily schedule and send notifications."}
)
print("Response:")
print(response)
if __name__ == "__main__":
asyncio.run(main())
HITL / controlled GenUI (package protocol)
Symvion can pause before selected tools so a portal or widget can render a form, approve, edit args, reject, or supply a client-side result — then resume the same session.
Allowlist only. Pass interrupt_before_tools=["render_signup_form"] (or set TenantConfig.interrupt_before_tools). Empty list = off. Backend/MCP tools not on the list keep auto-running. Tools marked with mark_client_tool(...) always interrupt.
from symvion.tools.hitl import mark_client_tool
async for event in runtime.chat_stream(
tenant="acme_corp",
message="Open the Signup form",
session_id="thread-1",
interrupt_before_tools=["render_signup_form"],
):
if event["type"] == "tool_start":
... # inspectors see this before interrupt
if event["type"] == "interrupt":
# event: tool, call_id, args, ui
...
if event["type"] == "done" and event["status"] == "interrupted":
break
async for event in runtime.resume_stream(
tenant="acme_corp",
session_id="thread-1",
resume={"action": "provide_result", "result": {"symbol": "XYZ", "shares": 100}},
):
print(event)
Resume actions: approve | edit (with args) | reject | provide_result (with result).
Stream events: token, agent_start, tool_start, interrupt, tool_end, metadata, done (success | interrupted), error.
Checkpointer note
Graphs compile with an injectable LangGraph checkpointer. The default is process-local MemorySaver — fine for package tests and single-process demos. Multi-replica or Coronation production should pass a durable checkpointer into Symvion(config, checkpointer=...).
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 symvion-0.4.8.tar.gz.
File metadata
- Download URL: symvion-0.4.8.tar.gz
- Upload date:
- Size: 238.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8fcaec8346136ca06deb3e30c483933835ee14e05d97d44ca15fd74b66bf792e
|
|
| MD5 |
e3eac8b4359fb22938b97c2aaff213f2
|
|
| BLAKE2b-256 |
d2813e8f534bbbc7edf738892bc951e910781007dec7e96826b51b3f3005eeed
|
File details
Details for the file symvion-0.4.8-py3-none-any.whl.
File metadata
- Download URL: symvion-0.4.8-py3-none-any.whl
- Upload date:
- Size: 91.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8711c75bcc184aa7ab55432bb186ee14f587c9c8ab7efa104ca0698d084f850e
|
|
| MD5 |
390f1f5aa62adbc80cdea419ff3ca3e0
|
|
| BLAKE2b-256 |
90275667bab0012aae286cb18b73327ddcfb9ade956cc6eed378aec3e8c54132
|