VIAcode · Agentic IT Architecture · 2026 Internal reference
Azure made conversational

How Agentic IT is built
— and why it is built that way.

A multi-tenant SaaS platform where IT operators chat with AI agents that understand their Azure, Microsoft 365, and vBox infrastructure, suggest improvements, and execute operations through natural language. This reference walks the system from a thirty-second overview down to the specific files and lines where decisions live.

Start with the system map → Browse by feature

Read order

The site is structured so you can read top-down. Each section starts with a high-level page and drills into the parts that matter. Cross-links point sideways when a concept first appears in one section but is owned by another.

The thirty-second picture

A user opens a chat. The browser opens a WebSocket carrying the JWT in the Sec-WebSocket-Protocol header. The API receives the user message and hands it to a SmartOrchestrator that asks a planner LLM to choose between a single generalist run and a fan-out of specialist agents. Whichever path runs, tokens stream back over the same socket; the agent calls tools — built-in Azure helpers, MCP-mediated cloud tools, file artifacts — and any destructive write is gated by a user-approval card. When the turn ends, memory and traces are persisted asynchronously.

The five core ideas

If you only have a coffee break, take these:

Smart routing
A planner LLM decides every turn between a single generalist agent and N specialist agents that fan out in parallel and then get synthesized. → §03·Agent system
Approval gates
Every destructive tool call is routed through an in-memory ApprovalGate. The user clicks approve/reject in the chat before anything mutates a cloud resource. → §07·Approvals
MCP everywhere
External integrations (vBox, Jira, Outlook, Teams, SharePoint, Azure CLI, Web search, Documents, Schedule, Price calculator) are uniform Model-Context-Protocol tools served by one MCP gateway service. → §05·MCP service
Snake-case JSON
The whole HTTP surface uses snake_case; repositories return Dictionary<string, object?> rather than typed DTOs, so JSON shapes can evolve without migrations. → §03·Data layer
No DB migrations
Schema is created via EnsureCreatedAsync() at startup; new columns are added by inline ALTER TABLE … ADD COLUMN IF NOT EXISTS statements in Program.cs. → §06·Schema & tenancy

How to navigate this site

If you are new, start at §01 — Product and read forward. If you are diving for one specific thing, the feature catalog indexes capability → code path.