Skip to main content

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_ipo_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 IPO form",
    session_id="thread-1",
    interrupt_before_tools=["render_ipo_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

symvion-0.4.7.tar.gz (238.5 kB view details)

Uploaded Source

Built Distribution

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

symvion-0.4.7-py3-none-any.whl (91.3 kB view details)

Uploaded Python 3

File details

Details for the file symvion-0.4.7.tar.gz.

File metadata

  • Download URL: symvion-0.4.7.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

Hashes for symvion-0.4.7.tar.gz
Algorithm Hash digest
SHA256 75563d62f0f0dfb58b200e543340c14ae421c1d2fde70316608881ee34e4df11
MD5 0382817f67092cfb0124a9b60625f923
BLAKE2b-256 c27ef8b108698b62b025c27724f2a71fa76679bc2b44ec2250053b5d5c160323

See more details on using hashes here.

File details

Details for the file symvion-0.4.7-py3-none-any.whl.

File metadata

  • Download URL: symvion-0.4.7-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

Hashes for symvion-0.4.7-py3-none-any.whl
Algorithm Hash digest
SHA256 50488ed64878b964f99e9cd7cd7ac2c3d7b60a6df6e2199b33634d0fd9a87d87
MD5 e0c9dbcd403b78172eb2a0a7085b41ec
BLAKE2b-256 c753f702eb6f66fdc718f6e7a2032134fb50aade9bacf58ea8c39fef16da1b2f

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