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_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, client/UI tools only unless trust_hitl_edit) | reject | provide_result (with result).

Security (0.4.10+): provide_result and edit are only accepted for tools marked with mark_client_tool(...) unless you set TenantConfig.trust_hitl_edit (edit on server tools). approve uses the original interrupt args. Request metadata cannot override interrupt_before_tools / user_role / agent_id unless you set the matching trust_client_* flags after verifying the caller. allowed_outbound_hosts and file_sandbox_dir on TenantConfig are applied to claims and MCP clients. See CHANGELOG.md.

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.10.tar.gz (246.3 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.10-py3-none-any.whl (97.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: symvion-0.4.10.tar.gz
  • Upload date:
  • Size: 246.3 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.10.tar.gz
Algorithm Hash digest
SHA256 2ac3d451f2af8576dfa26a0343176b17fb12774220d9a660f65a801c90d8107f
MD5 4a13b65d8a3a1be6a6322858586512cc
BLAKE2b-256 d957f71656c95b04481a98a25110e08269326ce4adc9d637ea6e5fce2efdf9f3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: symvion-0.4.10-py3-none-any.whl
  • Upload date:
  • Size: 97.5 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.10-py3-none-any.whl
Algorithm Hash digest
SHA256 6ee129206f1890a97c59a5606cc4a91d4e684292fdc70270583add553921b0bc
MD5 88bde368a23418f24f884216ca95aa3c
BLAKE2b-256 bf1078c8987fba77160f0b94f1470445393de07516d15843ad7114c3320f52fd

See more details on using hashes here.

Release history Release notifications | RSS feed

0.4.12

2 files

0.4.11

2 files

This release

0.4.10 This release

2 files

Supported by

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