Introduction

Symvion v0.3 is a production-grade AI orchestration platform designed for enterprise groups. It provides the isolation, observability, and safety required to manage AI agents across multiple business entities like Insurance, Asset Management, and Trustees.

Key Philosophy: Symvion acts as the "FastAPI for AI Agents", providing a structured runtime that separates business logic (agents/tools) from infrastructure (caching, logging, isolation).

Configuration

Symvion is configured via the TenantConfig model. In a multi-entity group, each entity (e.g., Insurance) has its own config.

config = TenantConfig(
    tenant_id="insurance",
    llm_provider="openai",
    llm_config={"model": "gpt-4-turbo"},
    logging=LoggingConfig(file_path="audit.log")
)

Core Runtime

The Symvion class is the main entry point. It manages history, memory, and graph execution for a specific tenant.

Multi-Entity Usage

For an insurance sub-entity, you initialize a runtime that is isolated to their specific agent registry and memory store.

runtime = Symvion(config)
response = await runtime.chat(
    tenant="insurance", 
    message="Check my policy status"
)

Agents & Lifecycle

Agents inherit from BaseAgent and gain access to production hooks.

class InsuranceAgent(BaseAgent):
    async def before_execute(self, context, data):
        # Audit: Log who is accessing the policy
        logger.info("POLICY_ACCESS", context, user=data['user'])

    async def execute(self, context, data, tools):
        # Logic here
        return {"agent_response": "..."}

JSON Logging

Symvion v0.3 features a structured logging system that outputs machine-readable JSON to stderr or a configurable file. This is essential for enterprise log aggregation (e.g., ELK, Datadog).

Sample Log Structure

{
  "timestamp": "2026-04-16T05:21:42Z",
  "event": "TOOL_CALLED",
  "tenant_id": "insurance_sub",
  "request_id": "811a90d8-...",
  "tool_name": "fetch_policy",
  "args": {"id": "POL-99"}
}

Enabling Multi-Entity Logging

Configure each entity to log to their own audit file for easier compliance checks.

config = TenantConfig(
  tenant_id="asset_mgmt",
  logging=LoggingConfig(
    file_path="asset_mgmt_audit.log",
    show_json=True,
    level="INFO"
  )
)

LangSmith Tracing

Symvion v0.3 supports LangSmith out-of-the-box. Every agent execution, tool call, and routing decision is traced with full parent-child relationships.

How to Enable

Simply set your environment variables. Symvion will automatically detect them and instrument the underlying LangGraph.

export LANGSMITH_TRACING=true
export LANGSMITH_API_KEY=your_key_here
export LANGSMITH_PROJECT=symvion-ai-v0.3
Enterprise Tip: Use the request_id from the JSON logs to find the corresponding trace in LangSmith for deep debugging of specific customer interactions.

Tools & Safety

Tools are independent functions registered in a tenant's ToolRegistry. They are automatically wrapped in a ToolSafetyWrapper.

Decoupled Invocation

# Inside an agent
record = await tools.invoke("db_query", context, {"id": 123})

Multi-Tenant Factory

The SymvionFactory manages thousands of concurrent runtimes. It efficiently caches compiled graphs, ensuring that "Asset Management" and "Trustees" run on separate, isolated instances without performance overhead.