Skip to content

Cortex Swarm: Upgrading the Traditional IT Operations with Agentic AI

An idea piece: how Digital Workplace Operations teams are structured today, where agentic AI is heading, and how a five-agent swarm can replace the follow-the-sun model — same SLA, 24×7 coverage, multilingual by default, with a hash-chained audit trail any G500 internal-audit team can verify in one click.

By Ajay Walia · May 24, 2026 · 27 min read

Share: LinkedIn
Cortex Swarm
REPLACING THE FOLLOW-THE-SUN MODEL · 2026
AJAY WALIA · DIGITAL WORKPLACE OPERATIONS · MAY 2026

Every employee depends on a Workplace Operations team they will never meet. It is the team that resets their MFA when they fly to a new country, recovers their shared mailbox when it stops syncing, pushes the Intune policy that lets them install a piece of software, and decides at 3am whether a regional O365 Or Exchange outage warrants paging a human.

This piece is about three things, in order:

  • First — how those teams are actually structured today, how they function day-to-day, and the structural problems they carry.
  • Second — where agentic AI sits in 2026, and where the field is heading over the next two to three years.
  • Third — how a small swarm of specialised agents can replace this team tier-for-tier, what efficiencies that produces, and the new set of challenges it creates in return.
The org chart is the answer. The five tiers that make a DWP team work for humans are the same five seams that make it work for agents.
5Autonomous agents
L1 → SDM
~137FTE mirrored
across all tiers
24×7Single team
no shift roster
1-clickAudit verify
any ticket
Part 1 · Structure

How Digital Workplace Operations Teams Are Structured Today

A DWP team exists because every employee uses IT every day, and someone has to keep that working. For a Global 500 with 10,000–100,000+ employees, the work is too broad, too multilingual, and too time-zone-spanning for an in-house team. Almost without exception, it is outsourced to a Tier-1 IT services firm — TCS, Infosys, Wipro, Accenture, HCLTech, Cognizant — running a 24×7 follow-the-sun roster across multiple delivery centres.

The Scope — What Actually Sits Under "Workplace"

The label undersells the breadth. A typical DWP contract covers seven functional areas, each with its own runbooks, its own vendors, and its own escalation paths.

Identity

Who you are — joiner / mover / leaver, password, MFA, SSO, entitlements

Access

What you can use — catalogs, licenses, groups, approvals

Productivity

Outlook, Teams, M365, OneDrive, SharePoint

Endpoint

Laptops, peripherals, network, Intune compliance, patching

Applications

Line-of-business app support, vendor liaison

Infrastructure

Connectivity, VPN, cloud health, capacity

Change & Governance

RFCs, CAB, RCAs, SLA reporting, customer comms

The Five-Tier Hierarchy

To deliver against this scope at scale, providers build a five-tier hierarchy. Each tier exists because of what the tier below it can't or shouldn't do. Tickets enter at the bottom and move upward only when scope, authority, or evidence demands it.

REPORTING LINES, RESPONSIBILITY, AND VOLUME
<!-- SDM -->
<rect x="340" y="58" width="140" height="44" rx="4" fill="#1a2744" stroke="#c9a227" stroke-width=".9"/>
<text x="410" y="76" text-anchor="middle" font-size="10" fill="#e8cc6a" font-family="Georgia,serif">SDM</text>
<text x="410" y="90" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">Service Delivery Manager · ~2 FTE</text>
<!-- Architect -->
<rect x="340" y="128" width="140" height="44" rx="4" fill="#1a2744" stroke="#c9a227" stroke-width=".9"/>
<text x="410" y="146" text-anchor="middle" font-size="10" fill="#e8cc6a" font-family="Georgia,serif">Architect</text>
<text x="410" y="160" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">Design Authority · ~3 FTE</text>
<!-- L3 -->
<rect x="340" y="198" width="140" height="44" rx="4" fill="#1a2744" stroke="#c9a227" stroke-width=".9"/>
<text x="410" y="216" text-anchor="middle" font-size="10" fill="#e8cc6a" font-family="Georgia,serif">L3 Engineering</text>
<text x="410" y="230" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">Senior Engineers · ~12 FTE</text>
<!-- L2 -->
<rect x="200" y="268" width="420" height="44" rx="4" fill="#0f1a30" stroke="#c9a227" stroke-width=".9"/>
<text x="410" y="286" text-anchor="middle" font-size="10" fill="#e8cc6a" font-family="Georgia,serif">L2 Specialists</text>
<text x="410" y="300" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">M365 · Intune · Exchange · ServiceNow · ~40 FTE · 2 shifts</text>
<!-- L1 -->
<rect x="80" y="338" width="660" height="48" rx="4" fill="#0a1020" stroke="#c9a227" stroke-width="1.2"/>
<text x="410" y="358" text-anchor="middle" font-size="11" fill="#c9a227" font-weight="700" font-family="sans-serif">L1 Service Desk</text>
<text x="410" y="374" text-anchor="middle" font-size="8.5" fill="#9a8a6a" font-family="sans-serif">~80 FTE · 3 follow-the-sun shifts · handles ~80% of all ticket volume</text>
<!-- Reporting lines -->
<line x1="410" y1="172" x2="410" y2="198" stroke="#c9a227" stroke-width=".8" stroke-opacity=".55" stroke-dasharray="3,2"/>
<line x1="410" y1="102" x2="410" y2="128" stroke="#c9a227" stroke-width=".8" stroke-opacity=".55" stroke-dasharray="3,2"/>
<line x1="410" y1="242" x2="410" y2="268" stroke="#c9a227" stroke-width=".8" stroke-opacity=".55" marker-end="url(#dwparr)"/>
<line x1="410" y1="312" x2="410" y2="338" stroke="#c9a227" stroke-width=".8" stroke-opacity=".55" marker-end="url(#dwparr)"/>
<!-- Side annotations -->
<text x="500" y="80" font-size="8" fill="#9a8a6a" font-family="sans-serif">↔ owns the customer relationship</text>
<text x="500" y="150" font-size="8" fill="#9a8a6a" font-family="sans-serif">↔ owns design + RCA authority</text>
<text x="500" y="220" font-size="8" fill="#9a8a6a" font-family="sans-serif">↔ root cause + change requests</text>
<text x="160" y="290" font-size="8" fill="#9a8a6a" font-family="sans-serif">↔ specialist diagnosis</text>
<text x="40" y="360" font-size="8" fill="#9a8a6a" font-family="sans-serif" font-weight="600">FRONT LINE</text>
<text x="410" y="408" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif" font-style="italic">Tickets enter at L1 and escalate upward only when scope, authority, or evidence demands it.</text>
</svg>

The exact FTE counts vary with employee population and contract scope. The shape — heavy at the base, narrowing to a point — is universal.

Part 2 · Function

How They Actually Function Day-to-Day

Three forces govern day-to-day operation: time zones, ticket flow, and knowledge. Understanding all three is what makes the rest of the piece make sense.

Time Zones — the Follow-the-Sun Roster

Coverage is achieved by handing tickets between geographies as the sun moves. A ticket opened in Sydney at 4pm local rolls over to Manila, then to Mumbai or Hyderabad, then to Krakow or Sofia, then to a US east-coast hub. Three or four formal shift handoffs per day, every day, forever.

A 24-HOUR DAY ACROSS THREE GEOGRAPHIES
<!-- 24-hour ring -->
<circle cx="410" cy="170" r="120" fill="#0a1020" stroke="#c9a227" stroke-width=".6" stroke-opacity=".45"/>
<circle cx="410" cy="170" r="98" fill="none" stroke="#c9a227" stroke-width=".3" stroke-opacity=".3"/>
<text x="410" y="62" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">00:00 UTC</text>
<text x="540" y="174" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">06:00</text>
<text x="410" y="296" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">12:00</text>
<text x="280" y="174" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">18:00</text>
<!-- APAC sector (0-8 UTC) -->
<path d="M 410 170 L 410 50 A 120 120 0 0 1 514 230 Z" fill="#1a2744" fill-opacity=".55" stroke="#c9a227" stroke-width=".4"/>
<text x="478" y="120" text-anchor="middle" font-size="10" fill="#e8cc6a" font-family="Georgia,serif">APAC</text>
<text x="478" y="134" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Manila · Sydney</text>
<text x="478" y="145" text-anchor="middle" font-size="7" fill="#9a8a6a" font-family="sans-serif">08:00 – 18:00 local</text>
<!-- EMEA sector (8-16 UTC) -->
<path d="M 410 170 L 514 230 A 120 120 0 0 1 306 230 Z" fill="#162038" fill-opacity=".55" stroke="#c9a227" stroke-width=".4"/>
<text x="410" y="240" text-anchor="middle" font-size="10" fill="#e8cc6a" font-family="Georgia,serif">EMEA / India</text>
<text x="410" y="254" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Mumbai · Krakow · Sofia</text>
<text x="410" y="265" text-anchor="middle" font-size="7" fill="#9a8a6a" font-family="sans-serif">08:00 – 18:00 local</text>
<!-- AMER sector (16-24 UTC) -->
<path d="M 410 170 L 306 230 A 120 120 0 0 1 410 50 Z" fill="#111830" fill-opacity=".55" stroke="#c9a227" stroke-width=".4"/>
<text x="342" y="120" text-anchor="middle" font-size="10" fill="#e8cc6a" font-family="Georgia,serif">AMER</text>
<text x="342" y="134" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Atlanta · Dallas</text>
<text x="342" y="145" text-anchor="middle" font-size="7" fill="#9a8a6a" font-family="sans-serif">08:00 – 18:00 local</text>
<!-- Handoff markers -->
<circle cx="410" cy="50" r="5" fill="#c9a227"/>
<circle cx="514" cy="230" r="5" fill="#c9a227"/>
<circle cx="306" cy="230" r="5" fill="#c9a227"/>
<!-- Right-side notes -->
<text x="660" y="80" font-size="9" fill="#c9a227" font-family="Georgia,serif">Three handoffs / day</text>
<text x="660" y="100" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Open tickets transfer at each</text>
<text x="660" y="112" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">geographic boundary</text>
<text x="660" y="140" font-size="9" fill="#c9a227" font-family="Georgia,serif">Context lost at each handoff</text>
<text x="660" y="160" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Notes summarised, not</text>
<text x="660" y="172" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">replayed in full</text>
<text x="660" y="200" font-size="9" fill="#c9a227" font-family="Georgia,serif">Weekend &amp; holiday gaps</text>
<text x="660" y="220" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Coverage thins where</text>
<text x="660" y="232" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">no region is in business hours</text>
</svg>

Ticket Flow — Entry, Triage, Escalation, Closure

Every employee interaction is a ticket. Most enter via chat or self-service portal, a smaller share through phone or email. From entry, the path is the same: triage at L1, attempt resolution, escalate if the agent at the current tier cannot solve it within authority and budget, then close.

TICKET LIFECYCLE — THE COMMON PATH
<!-- Entry sources -->
<g transform="translate(40,80)">
<rect width="100" height="34" rx="3" fill="#0a1020" stroke="#c9a227" stroke-width=".7"/>
<text x="50" y="15" text-anchor="middle" font-size="7.5" fill="#e8cc6a" font-family="sans-serif">CHAT / PORTAL</text>
<text x="50" y="27" text-anchor="middle" font-size="7" fill="#9a8a6a" font-family="sans-serif">~70% of entries</text>
<rect y="44" width="100" height="34" rx="3" fill="#0a1020" stroke="#c9a227" stroke-width=".5" stroke-opacity=".5"/>
<text x="50" y="59" text-anchor="middle" font-size="7.5" fill="#e8cc6a" font-family="sans-serif">PHONE</text>
<text x="50" y="71" text-anchor="middle" font-size="7" fill="#9a8a6a" font-family="sans-serif">~20%</text>
<rect y="88" width="100" height="34" rx="3" fill="#0a1020" stroke="#c9a227" stroke-width=".5" stroke-opacity=".5"/>
<text x="50" y="103" text-anchor="middle" font-size="7.5" fill="#e8cc6a" font-family="sans-serif">EMAIL / OTHER</text>
<text x="50" y="115" text-anchor="middle" font-size="7" fill="#9a8a6a" font-family="sans-serif">~10%</text>
</g>
<line x1="145" y1="118" x2="195" y2="118" stroke="#c9a227" stroke-width=".7" marker-end="url(#tfarr)"/>
<!-- Triage -->
<g transform="translate(200,98)">
<rect width="105" height="44" rx="3" fill="#162038" stroke="#c9a227" stroke-width=".9"/>
<text x="52" y="20" text-anchor="middle" font-size="9" fill="#e8cc6a" font-family="Georgia,serif">L1 Triage</text>
<text x="52" y="34" text-anchor="middle" font-size="7" fill="#9a8a6a" font-family="sans-serif">Categorise · prioritise</text>
</g>
<line x1="310" y1="120" x2="360" y2="120" stroke="#c9a227" stroke-width=".7" marker-end="url(#tfarr)"/>
<!-- Resolution attempt -->
<g transform="translate(365,98)">
<rect width="120" height="44" rx="3" fill="#162038" stroke="#c9a227" stroke-width=".9"/>
<text x="60" y="20" text-anchor="middle" font-size="9" fill="#e8cc6a" font-family="Georgia,serif">Resolve in tier</text>
<text x="60" y="34" text-anchor="middle" font-size="7" fill="#9a8a6a" font-family="sans-serif">SOP · KB · tools</text>
</g>
<!-- Branch up: escalate -->
<line x1="425" y1="98" x2="425" y2="60" stroke="#c9a227" stroke-width=".7" marker-end="url(#tfarr)"/>
<g transform="translate(380,30)">
<rect width="90" height="34" rx="3" fill="#1a2744" stroke="#c9a227" stroke-width=".7"/>
<text x="45" y="15" text-anchor="middle" font-size="8" fill="#e8cc6a" font-family="Georgia,serif">Escalate</text>
<text x="45" y="27" text-anchor="middle" font-size="7" fill="#9a8a6a" font-family="sans-serif">L1 → L2 → L3</text>
</g>
<text x="442" y="80" font-size="6.5" fill="#9a8a6a" font-family="sans-serif">~20%</text>
<!-- Branch right: close -->
<line x1="487" y1="120" x2="550" y2="120" stroke="#c9a227" stroke-width=".7" marker-end="url(#tfarr)"/>
<g transform="translate(555,98)">
<rect width="95" height="44" rx="3" fill="#0a1020" stroke="#c9a227" stroke-width=".9"/>
<text x="47" y="20" text-anchor="middle" font-size="9" fill="#e8cc6a" font-family="Georgia,serif">Close</text>
<text x="47" y="34" text-anchor="middle" font-size="7" fill="#9a8a6a" font-family="sans-serif">Notify · KB tag</text>
</g>
<text x="510" y="115" font-size="6.5" fill="#9a8a6a" font-family="sans-serif">~80%</text>
<!-- Loop back from escalate to resolve at higher tier -->
<path d="M 470 47 Q 540 47 540 100" fill="none" stroke="#c9a227" stroke-width=".6" stroke-opacity=".5" stroke-dasharray="3,2"/>
<text x="615" y="55" font-size="7" fill="#9a8a6a" font-family="sans-serif" font-style="italic">Higher tier owns it now,</text>
<text x="615" y="67" font-size="7" fill="#9a8a6a" font-family="sans-serif" font-style="italic">same flow recurses</text>
<!-- Bottom strip: SLA clock -->
<rect x="40" y="170" width="740" height="40" rx="3" fill="#080810" stroke="#c9a227" stroke-width=".4" stroke-opacity=".4"/>
<text x="410" y="188" text-anchor="middle" font-size="8.5" fill="#c9a227" font-family="Georgia,serif">SLA CLOCK runs continuously · pauses only on AWAITING_USER · resumes on every state change</text>
<text x="410" y="202" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Time to acknowledge · time to resolve · time to communicate — measured per priority (P1–P4)</text>
</svg>

Knowledge — Runbooks, KBs, and Tribal Memory

Each tier owns a knowledge base scoped to its authority. L1 has SOPs for ~40 standard scenarios. L2 holds vendor documentation, Intune policy templates, and Exchange runbooks. L3 holds architecture decision records, past postmortems, and vendor escalation contacts. The Architect carries the long-term design library; the SDM holds SLA templates, comms playbooks, and historical breach reports.

A great deal also lives intribal memory— the senior engineer who happens to remember that a similar incident last August was caused by a CA policy. That memory walks out the door every time someone resigns.

Part 3 · Challenges

What's Structurally Wrong With This Model

Nothing in the model is broken; it just isn't designed for the kind of demand it now carries. The pain points below are not the fault of any one team — they are consequences ofhowthe model is built. Each tier carries some version of every one of them.

01

Shift Gravity

  • Three follow-the-sun shifts every 24 hours
  • Context is summarised, not replayed, at every boundary
  • Onshore-offshore split hides inefficiency in plain sight
02

Quality Variance

  • Varies by shift, by tenure, by individual
  • SLA breaches cluster on weekends and holidays
  • The customer never sees an even service level
03

Attrition Tax

  • 20–35% annual attrition at L1, lower but real higher up
  • 4–8 weeks of training before a new hire is productive
  • Tribal knowledge leaves with every resignation
04

Inelastic Capacity

  • A 2× ticket spike cannot be staffed in < 24 hours
  • Patch-Tuesday outages routinely take SLA hits
  • Surge headcount is a fiction; surge overtime is what actually happens
05

Audit Friction

  • Reconstructing what happened on a ticket takes weeks
  • Chat logs, ticket history, and admin-tool actions live in different systems
  • G500 internal-audit reviews drag on for months
06

Language & KB Silos

  • Multilingual coverage means hiring native speakers locally
  • Knowledge bases drift between tiers, regions, and locales
  • New runbooks are rarely peer-reviewed for quality

The Headcount Paradox

Stack the team by volume and headcount and the same shape appears every time: an inverted pyramid where the tier carrying the most repetition is also the tier carrying the most people, the most attrition, and the lowest unit-economics. The next two parts argue this is exactly the part the next wave of agentic AI can credibly absorb.

WHERE THE PEOPLE AND THE TICKETS SIT
<polygon points="410,46 468,80 352,80" fill="#1a2744" stroke="#c9a227" stroke-width=".8"/>
<text x="410" y="68" text-anchor="middle" font-size="8" fill="#e8cc6a" font-family="sans-serif">SDM · ~2 FTE · 10% touches</text>
<polygon points="352,82 468,82 500,118 320,118" fill="#162038" stroke="#c9a227" stroke-width=".8"/>
<text x="410" y="105" text-anchor="middle" font-size="8.5" fill="#e8cc6a" font-family="sans-serif">ARCHITECT · ~3 FTE · 5% touches</text>
<polygon points="320,120 500,120 536,158 284,158" fill="#111830" stroke="#c9a227" stroke-width=".8"/>
<text x="410" y="144" text-anchor="middle" font-size="9.5" fill="#e8cc6a" font-family="sans-serif">L3 · ~12 FTE · 4% tickets</text>
<polygon points="284,160 536,160 576,202 244,202" fill="#0e1528" stroke="#c9a227" stroke-width=".8"/>
<text x="410" y="187" text-anchor="middle" font-size="10.5" fill="#e8cc6a" font-family="sans-serif">L2 · ~40 FTE · 15% tickets</text>
<polygon points="244,204 576,204 630,262 190,262" fill="#0a1020" stroke="#c9a227" stroke-width="1.1"/>
<text x="410" y="234" text-anchor="middle" font-size="12.5" fill="#c9a227" font-weight="bold" font-family="sans-serif">L1 · ~80 FTE · 3 SHIFTS · 80% tickets</text>
<text x="410" y="250" text-anchor="middle" font-size="8.5" fill="#9a8a6a" font-family="sans-serif">most volume · most repetition · highest attrition</text>
<rect x="60" y="282" width="700" height="30" rx="4" fill="#111122" stroke="#c9a227" stroke-width=".5" stroke-opacity=".5"/>
<text x="410" y="302" text-anchor="middle" font-size="9.5" fill="#c9a227" font-family="Georgia,serif" font-style="italic">Headcount and decisions are concentrated exactly where they are easiest to automate.</text>
</svg>
Part 4 · State of the Art

Where Agentic AI Sits in 2026

Two years ago, "AI agent" meant a chatbot with a system prompt. In 2026 it means something specific: a model that can decompose a goal, call tools to gather evidence, maintain state across turns, and stop when the work is done. The shift is real, and it is what makes the rest of this piece possible.

A Six-Year Capability Ramp

Each year since 2020 has unlocked a layer of capability that wasn't there the year before. The cumulative effect is what now allows specialised agents to do specialist work, not just general chat.

LLM CAPABILITY · CUMULATIVE LAYERS · 2020 → 2026
<!-- Year ticks -->
<g font-size="8" fill="#9a8a6a" font-family="sans-serif" text-anchor="middle">
<text x="110" y="258">2020</text>
<text x="220" y="258">2021</text>
<text x="330" y="258">2022</text>
<text x="440" y="258">2023</text>
<text x="550" y="258">2024</text>
<text x="660" y="258">2025</text>
<text x="770" y="258">2026</text>
</g>
<!-- Capability stacking bars -->
<g>
<rect x="92" y="200" width="36" height="40" fill="#1a2744" stroke="#c9a227" stroke-width=".4"/>
<rect x="202" y="180" width="36" height="60" fill="#1a2744" stroke="#c9a227" stroke-width=".4"/>
<rect x="312" y="158" width="36" height="82" fill="#1a2744" stroke="#c9a227" stroke-width=".4"/>
<rect x="422" y="128" width="36" height="112" fill="#1a2744" stroke="#c9a227" stroke-width=".4"/>
<rect x="532" y="98" width="36" height="142" fill="#1a2744" stroke="#c9a227" stroke-width=".4"/>
<rect x="642" y="74" width="36" height="166" fill="#1a2744" stroke="#c9a227" stroke-width=".4"/>
<rect x="752" y="58" width="22" height="182" fill="#e8cc6a" stroke="#c9a227" stroke-width=".4"/>
</g>
<!-- Layer labels -->
<text x="50" y="80" font-size="8.5" fill="#e8cc6a" font-family="Georgia,serif">Multi-agent</text>
<text x="50" y="92" font-size="7" fill="#9a8a6a" font-family="sans-serif">orchestration</text>
<text x="50" y="115" font-size="8.5" fill="#e8cc6a" font-family="Georgia,serif">Local inference</text>
<text x="50" y="127" font-size="7" fill="#9a8a6a" font-family="sans-serif">30B–70B on laptop</text>
<text x="50" y="148" font-size="8.5" fill="#e8cc6a" font-family="Georgia,serif">Reliable tool use</text>
<text x="50" y="160" font-size="7" fill="#9a8a6a" font-family="sans-serif">structured output</text>
<text x="50" y="178" font-size="8.5" fill="#e8cc6a" font-family="Georgia,serif">Reasoning &amp; RAG</text>
<text x="50" y="190" font-size="7" fill="#9a8a6a" font-family="sans-serif">retrieval-augmented</text>
<text x="50" y="208" font-size="8.5" fill="#e8cc6a" font-family="Georgia,serif">Instruction tuning</text>
<text x="50" y="220" font-size="7" fill="#9a8a6a" font-family="sans-serif">long context</text>
<text x="50" y="234" font-size="8.5" fill="#e8cc6a" font-family="Georgia,serif">Pre-training</text>
<text x="410" y="48" text-anchor="middle" font-size="9" fill="#c9a227" font-family="Georgia,serif" font-style="italic">2026: every layer needed for autonomous tier-aligned agents is in place.</text>
</svg>

What "Agentic" Actually Means

Four ingredients distinguish an agent from a chatbot. Every component is now boring engineering — no novel research required.

ANATOMY OF AN AGENT
<!-- Central agent core -->
<circle cx="410" cy="150" r="58" fill="#1a2744" stroke="#e8cc6a" stroke-width="1.2"/>
<text x="410" y="148" text-anchor="middle" font-size="12" fill="#e8cc6a" font-family="Georgia,serif">Agent</text>
<text x="410" y="164" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">persona + system prompt</text>
<!-- Four ingredients -->
<g transform="translate(140,90)">
<rect width="150" height="60" rx="4" fill="#0a1020" stroke="#c9a227" stroke-width=".7"/>
<text x="75" y="20" text-anchor="middle" font-size="9.5" fill="#e8cc6a" font-family="Georgia,serif">Reasoning</text>
<text x="75" y="34" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Decompose · plan · reflect</text>
<text x="75" y="46" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Why a step, not just what</text>
</g>
<g transform="translate(530,90)">
<rect width="150" height="60" rx="4" fill="#0a1020" stroke="#c9a227" stroke-width=".7"/>
<text x="75" y="20" text-anchor="middle" font-size="9.5" fill="#e8cc6a" font-family="Georgia,serif">Tool Use</text>
<text x="75" y="34" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Structured calls · typed inputs</text>
<text x="75" y="46" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Real-world side effects</text>
</g>
<g transform="translate(140,170)">
<rect width="150" height="60" rx="4" fill="#0a1020" stroke="#c9a227" stroke-width=".7"/>
<text x="75" y="20" text-anchor="middle" font-size="9.5" fill="#e8cc6a" font-family="Georgia,serif">Memory</text>
<text x="75" y="34" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Conversation · KB retrieval</text>
<text x="75" y="46" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">State across turns</text>
</g>
<g transform="translate(530,170)">
<rect width="150" height="60" rx="4" fill="#0a1020" stroke="#c9a227" stroke-width=".7"/>
<text x="75" y="20" text-anchor="middle" font-size="9.5" fill="#e8cc6a" font-family="Georgia,serif">Authority</text>
<text x="75" y="34" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Bounded scope · approvals</text>
<text x="75" y="46" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">When to act vs escalate</text>
</g>
<!-- Connecting lines -->
<line x1="290" y1="120" x2="358" y2="135" stroke="#c9a227" stroke-width=".5" stroke-opacity=".5"/>
<line x1="530" y1="120" x2="462" y2="135" stroke="#c9a227" stroke-width=".5" stroke-opacity=".5"/>
<line x1="290" y1="200" x2="358" y2="170" stroke="#c9a227" stroke-width=".5" stroke-opacity=".5"/>
<line x1="530" y1="200" x2="462" y2="170" stroke="#c9a227" stroke-width=".5" stroke-opacity=".5"/>
<text x="410" y="266" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif" font-style="italic">An agent is a system prompt, a model, a memory, a tool registry, and rules about when to call which.</text>
</svg>

Three Independent Shifts That Made This Credible

Each on its own is interesting. Together, they remove the standard objections G500 buyers raise to bringing AI inside the perimeter.

30B–70Bopen-weight paramsTool-calling · reasoningMulti-step planningModel Capability
<text x="410" y="98" text-anchor="middle" font-size="22" fill="#c9a227" font-family="Georgia,serif">Local</text>
<text x="410" y="116" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">on-device inference</text>
<text x="410" y="138" text-anchor="middle" font-size="8.5" fill="#e8dcc8" font-family="sans-serif">No data leaves building</text>
<text x="410" y="152" text-anchor="middle" font-size="8.5" fill="#e8dcc8" font-family="sans-serif">Compliance objection gone</text>
<text x="410" y="178" text-anchor="middle" font-size="8" fill="#c9a227" font-family="Georgia,serif" font-style="italic">Inference Economics</text>
<text x="635" y="98" text-anchor="middle" font-size="22" fill="#c9a227" font-family="Georgia,serif">100%</text>
<text x="635" y="116" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">safety-pass target</text>
<text x="635" y="138" text-anchor="middle" font-size="8.5" fill="#e8dcc8" font-family="sans-serif">Semantic grading</text>
<text x="635" y="152" text-anchor="middle" font-size="8.5" fill="#e8dcc8" font-family="sans-serif">Adversarial eval cases</text>
<text x="635" y="178" text-anchor="middle" font-size="8" fill="#c9a227" font-family="Georgia,serif" font-style="italic">Eval Discipline</text>
</svg>

A Capability Map by Tier — Ready Now vs Emerging

This is not a roadmap; it is an honest read of what's possible today. "Ready" means the prompt, tool set, KB and eval pattern are known. "Emerging" means the approach is understood but still being measured.

L1 · Ready Now

Front-Line Desk

  • Identity verification · password / MFA / unlock
  • Catalog software install + approval
  • Outlook / Teams diagnostics
  • Printer · peripheral pairing
  • KB retrieval + grounded response
L2 · Ready

App Specialist

  • App log structured analysis
  • Service health diagnostic
  • Intune compliance + push
  • Mailbox + M365 admin actions
  • Hypothesis-test workflows
L3 · Emerging

Senior Engineer

  • Infrastructure root-cause
  • AD attribute engineering
  • Kusto / log-analytics
  • Change request authoring
  • Emergency change application
Architect · Emerging

Design Authority

  • Change review against ADR library
  • P1 RCA authoring
  • Pattern-vs-one-off classification
  • Capacity-review triggers
  • Design-impact assessment
SDM · Emerging

Delivery Manager

  • Customer comms drafting
  • SLA dashboard + breach alerts
  • War-room convene flow
  • Weekly briefing generation
  • Status update cadence
Part 5 · Trajectory

Where Agentic AI Is Heading — Next 2–3 Years

The trajectory of the last six years points in a clear direction: from a single model answering a single question, toswarmsof specialised agents collaborating on bounded problems under an orchestrator they cannot themselves modify.

FROM SINGLE MODEL TO SPECIALISED SWARM
<!-- Stage 1: LLM -->
<g transform="translate(90,80)">
<circle r="32" fill="#0a1428" stroke="#c9a227" stroke-width=".8"/>
<text y="4" text-anchor="middle" font-size="11" fill="#e8cc6a" font-family="Georgia,serif">LLM</text>
<text y="56" text-anchor="middle" font-size="8" fill="#c9a227" font-family="sans-serif" font-weight="700">2020–2023</text>
<text y="72" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Single model</text>
<text y="84" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Chat completion</text>
</g>
<line x1="130" y1="110" x2="195" y2="110" stroke="#c9a227" stroke-width=".7" marker-end="url(#evarr)"/>
<!-- Stage 2: Agent -->
<g transform="translate(245,80)">
<circle r="34" fill="#0a1428" stroke="#c9a227" stroke-width=".9"/>
<text y="4" text-anchor="middle" font-size="11" fill="#e8cc6a" font-family="Georgia,serif">Agent</text>
<text y="56" text-anchor="middle" font-size="8" fill="#c9a227" font-family="sans-serif" font-weight="700">2023–2024</text>
<text y="72" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">+ Tools + Memory</text>
<text y="84" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Single task loop</text>
</g>
<line x1="287" y1="110" x2="352" y2="110" stroke="#c9a227" stroke-width=".7" marker-end="url(#evarr)"/>
<!-- Stage 3: Multi-agent -->
<g transform="translate(404,80)">
<circle r="36" fill="#0a1428" stroke="#c9a227" stroke-width="1"/>
<text y="0" text-anchor="middle" font-size="10" fill="#e8cc6a" font-family="Georgia,serif">Multi-</text>
<text y="12" text-anchor="middle" font-size="10" fill="#e8cc6a" font-family="Georgia,serif">agent</text>
<text y="56" text-anchor="middle" font-size="8" fill="#c9a227" font-family="sans-serif" font-weight="700">2024–2026</text>
<text y="72" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Planner + executors</text>
<text y="84" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Verifier loops</text>
</g>
<line x1="448" y1="110" x2="513" y2="110" stroke="#c9a227" stroke-width=".7" marker-end="url(#evarr)"/>
<!-- Stage 4: Specialised Swarm -->
<g transform="translate(573,80)">
<circle r="38" fill="#1a2744" stroke="#e8cc6a" stroke-width="1.4"/>
<text y="0" text-anchor="middle" font-size="10" fill="#e8cc6a" font-family="Georgia,serif">Specialised</text>
<text y="12" text-anchor="middle" font-size="10" fill="#e8cc6a" font-family="Georgia,serif">Swarm</text>
<text y="56" text-anchor="middle" font-size="8" fill="#e8cc6a" font-family="sans-serif" font-weight="700">2026 →</text>
<text y="72" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Role-aligned agents</text>
<text y="84" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Bounded authority</text>
</g>
<line x1="619" y1="110" x2="694" y2="110" stroke="#c9a227" stroke-width=".7" marker-end="url(#evarr)"/>
<!-- Stage 5: Enterprise -->
<g transform="translate(740,80)">
<circle r="32" fill="#0a1428" stroke="#c9a227" stroke-width=".6" stroke-dasharray="3,2"/>
<text y="4" text-anchor="middle" font-size="9" fill="#9a8a6a" font-family="Georgia,serif">Enterprise</text>
<text y="56" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif" font-weight="700">2027 →</text>
<text y="72" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Cross-function</text>
<text y="84" text-anchor="middle" font-size="7.5" fill="#9a8a6a" font-family="sans-serif">Swarm-of-swarms</text>
</g>
<text x="410" y="218" text-anchor="middle" font-size="9" fill="#c9a227" font-family="Georgia,serif" font-style="italic">Cortex Swarm sits at the fourth stage. The fifth is what this pattern unlocks once it's proven inside one function.</text>
</svg>

Three Bets About the Next 24 Months

Bet 01

Specialisation beats generalisation

One large general agent doing everything is brittle. Five small role-aligned agents — each with its own persona, tools, and KB — are more reliable, more debuggable, and more auditable.

Bet 02

The orchestrator is the operating system

Frameworks like LangChain / LangGraph / Autogen are scaffolding. Production systems will hold their durable value in a bespoke orchestrator that owns state, audit, identity, and policy — not in any library it depends on.

Bet 03

Compliance becomes the product

The agent that wins inside a regulated enterprise is not the one with the highest benchmark — it's the one whose every action a G500 internal-audit team can replay in one click.

Part 6 · The Cortex Swarm

How a Five-Agent Swarm Replaces the Five-Tier Team

A Japanese silver mirror reflecting five human silhouettes as five glowing agent crests — the mirror principle made literal
The mirror principle — the agent inherits the role the human already plays.

The idea is structurally simple.Don't reinvent the team. Mirror it.One agent per tier. Distinct persona, tools, knowledge base, and authority. The org chartisthe system architecture.

If a human L2 specialist refuses to apply a config change without log evidence, the L2 agent does the same. If the Architect won't approve a change without checking the ADR library, neither does the Architect agent.

Human Team ↔ Agent Swarm — Tier for Tier

HUMAN TEAMCORTEX SWARM
<!-- Pairs -->
<g font-family="Georgia,serif">
<!-- SDM -->
<rect x="80" y="56" width="240" height="44" rx="3" fill="#0a1020" stroke="#c9a227" stroke-width=".7"/>
<text x="200" y="74" text-anchor="middle" font-size="10" fill="#e8cc6a">SDM · 2 FTE</text>
<text x="200" y="88" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">Customer voice · SLA · war room</text>
<line x1="320" y1="78" x2="470" y2="78" stroke="#c9a227" stroke-width=".6" stroke-opacity=".5" marker-end="url(#mirarr)"/>
<rect x="480" y="56" width="240" height="44" rx="3" fill="#1a2744" stroke="#e8cc6a" stroke-width=".9"/>
<text x="600" y="74" text-anchor="middle" font-size="10" fill="#e8cc6a">SDM Agent</text>
<text x="600" y="88" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">Same persona · same tools · always on</text>
<!-- Architect -->
<rect x="80" y="112" width="240" height="44" rx="3" fill="#0a1020" stroke="#c9a227" stroke-width=".7"/>
<text x="200" y="130" text-anchor="middle" font-size="10" fill="#e8cc6a">Architect · 3 FTE</text>
<text x="200" y="144" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">Design authority · ADRs · RCAs</text>
<line x1="320" y1="134" x2="470" y2="134" stroke="#c9a227" stroke-width=".6" stroke-opacity=".5" marker-end="url(#mirarr)"/>
<rect x="480" y="112" width="240" height="44" rx="3" fill="#1a2744" stroke="#e8cc6a" stroke-width=".9"/>
<text x="600" y="130" text-anchor="middle" font-size="10" fill="#e8cc6a">Architect Agent</text>
<text x="600" y="144" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">Pattern-vs-one-off · ADR-gated</text>
<!-- L3 -->
<rect x="80" y="168" width="240" height="44" rx="3" fill="#0a1020" stroke="#c9a227" stroke-width=".7"/>
<text x="200" y="186" text-anchor="middle" font-size="10" fill="#e8cc6a">L3 · 12 FTE</text>
<text x="200" y="200" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">Root cause · changes · vendor escalation</text>
<line x1="320" y1="190" x2="470" y2="190" stroke="#c9a227" stroke-width=".6" stroke-opacity=".5" marker-end="url(#mirarr)"/>
<rect x="480" y="168" width="240" height="44" rx="3" fill="#1a2744" stroke="#e8cc6a" stroke-width=".9"/>
<text x="600" y="186" text-anchor="middle" font-size="10" fill="#e8cc6a">L3 Agent</text>
<text x="600" y="200" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">Same diagnostics · proposes change request</text>
<!-- L2 -->
<rect x="80" y="224" width="240" height="44" rx="3" fill="#0a1020" stroke="#c9a227" stroke-width=".7"/>
<text x="200" y="242" text-anchor="middle" font-size="10" fill="#e8cc6a">L2 · 40 FTE</text>
<text x="200" y="256" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">App / platform · log-driven diagnosis</text>
<line x1="320" y1="246" x2="470" y2="246" stroke="#c9a227" stroke-width=".6" stroke-opacity=".5" marker-end="url(#mirarr)"/>
<rect x="480" y="224" width="240" height="44" rx="3" fill="#1a2744" stroke="#e8cc6a" stroke-width=".9"/>
<text x="600" y="242" text-anchor="middle" font-size="10" fill="#e8cc6a">L2 Agent</text>
<text x="600" y="256" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">Reads logs · hypothesis-test · bounces back</text>
<!-- L1 -->
<rect x="80" y="280" width="240" height="44" rx="3" fill="#0a1020" stroke="#c9a227" stroke-width="1.1"/>
<text x="200" y="298" text-anchor="middle" font-size="10" fill="#c9a227" font-weight="700">L1 · 80 FTE · 3 shifts</text>
<text x="200" y="312" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">Front-line desk · password · catalog · printer</text>
<line x1="320" y1="302" x2="470" y2="302" stroke="#c9a227" stroke-width="1" marker-end="url(#mirarr)"/>
<rect x="480" y="280" width="240" height="44" rx="3" fill="#1a2744" stroke="#e8cc6a" stroke-width="1.4"/>
<text x="600" y="298" text-anchor="middle" font-size="10" fill="#e8cc6a" font-weight="700">L1 Agent · always on</text>
<text x="600" y="312" text-anchor="middle" font-size="8" fill="#9a8a6a" font-family="sans-serif">Same persona · 25 tools · escalates on rule</text>
</g>
<text x="410" y="348" text-anchor="middle" font-size="8.5" fill="#9a8a6a" font-family="sans-serif" font-style="italic">Each pair shares the same persona, scope and authority. The agent inherits the role; the orchestrator inherits the rules.</text>
</svg>

One Orchestrator. Five Agents. Clean Seams.

The architecture is deliberately conservative. The model proposes; the orchestrator and adapters decide whether the proposal executes. Bespoke ~250-line orchestrator. No LangChain. No LangGraph. No Autogen.

FRONTENDORCHESTRATORAGENTSTOOLSADAPTERSINFERENCEWeb PortalNext.js 15 · Tailwind · shadcn/ui · Chat · Ticket Explorer · SDM DashboardOrchestrator (bespoke ~250 lines)State machine · Identity gate · Audit emission · Output validation · Budget enforcementAgent Registryl1 · l2 · l3 · architect · sdm · planner/verifier (P3) · voice/i18n (P4-5)Tool Registry (~60 tools)Identity · Access · Productivity · Endpoint · Observability · Change · CommunicationsAdapter LayerITSM · Identity · Endpoint · Catalog · Approval · Obs · Change · Comms · Voice (mock | real)Sidecars: ChromaDB+BGE-M3 · SHA-256 audit chain · State machine · BudgetsSQLite (P1) → Postgres (P2+) · per-role namespaceLM Studio @ 127.0.0.1:1234/v1Qwen3-Coder-Next (P1) · Larger models for L3/Architect in P2-3

The Five Agents — in Detail

L1 · Phase 1
Service Desk
replaces ~80 FTE · 3 shifts · 80% tickets
"Polite. Fast. Scripted. Resolves common categories. Never speculates on root cause."
  • Password / MFA / unlock · Catalog install · Printer · Outlook/Teams basics
  • 25 tools without further approval; mutating tools pass the identity gate
  • Escalates after 2 failed attempts; infra/outage/security always escalate
  • Target SLA: TTA < 5 min · TTR < 30 min
IdentityAccessProductivityEndpoint
L2 · Phase 2
App Specialist
replaces ~40 FTE · 2 shifts · 15% tickets
"Specialist. Methodical. Demands diagnostics before acting. Reads logs."
  • App log analysis · Intune compliance + push · Exchange diagnostics
  • Hypothesis-test workflows — escalates only after evidence is gathered
  • Rejects wrongly-escalated tickets back to L1 with structured rationale
  • Target SLA: TTA < 30 min · TTR < 4 hrs
M365IntuneExchangeServiceNow
L3 · Phase 2
Senior Engineer
replaces ~12 FTE · day + oncall · 4% tickets
"Root-cause focused. Drives change requests. Consults Architect for design-impacting fixes."
  • AD/Identity engineering · Kusto/log-analytics · Emergency change application
  • Authors RCA stubs — Architect finalises
  • Consults Architect for design-impacting changes
  • Target SLA: TTA < 2 hrs · TTR < 24 hrs
AD EngineeringInfrastructureChange MgmtSecurity
Architect · Phase 3
Design Authority
replaces ~3 FTE · 5% touches
"Asks 'is this a one-off or a pattern?' Advises and gates — not a doer."
  • Approves/rejects change requests against the ADR library
  • Authors P1 RCAs · pattern-vs-one-off classification · capacity reviews
  • May veto L3-proposed changes
  • Target SLA: Design review ≤ 2 biz days · RCA ≤ 5 days
ADR LibraryChange ReviewRCACapacity
SDM · Phase 3
Delivery Manager
replaces ~2 FTE · 10% touches
"Customer-facing. SLA-driven. Calm under pressure. Owns comms cadence."
  • SLA dashboard · customer comms · war-room convening · weekly briefing
  • Cannot make technical decisions — can demand them by SLA-bound deadline
  • Can convene a war room without prior approval
  • Target SLA: Customer comms < 1 hr (P1) · weekly briefing every Friday
SLA GovernanceCustomer CommsWar RoomWeekly Briefing

Five Collaboration Patterns

Five patterns cover every interaction between the five agents. Escalation is just the first.

Escalation

L1 → L2 → L3 with filtered conversation history per tier scope. The higher tier sees only what's relevant to its authority.

Bounce-back

L2 or L3 → L1 with structured de-escalation rationale. Cycle detection prevents loops.

Design gate

L3 → Architect via propose_change_request; result returns via respond_to_l3.

War-room

SDM forces L3 + Architect to sync on a single ticket thread under stricter time budgets.

Internal escalate

SDM → SP leadership (humans) on systemic breach patterns — humans re-enter the loop only when patterns demand it.

A Representative Ticket — End to End

Scenario: "Team shared mailbox stopped syncing." A representative ticket traversing all five agents under a formal 13-state machine.

STATE MACHINE TRACENEW → TRIAGED → DIAGNOSING → AWAITING_L2 → DIAGNOSING(L2) → AWAITING_L3 → DIAGNOSING(L3) → AWAITING_APPROVAL → ACTING(L3) → VERIFYING → RESOLVED👤EMPLOYEEFiles chat: "Team shared mailbox stopped syncing"L1DESK AGENTTriages → Productivity/Mailbox. Beyond L1 SOPs. Callsescalate_to_l2()L2APP SPECIALISTInspects Exchange logs. Tenant-level drift detected. Callsescalate_to_l3()L3SENIOR ENGINEERQueries AD + tenant. CA policy change = root cause. Callspropose_change_request()ARCHARCHITECTReviews ADR library. Approves:approve_change(conditions=["monitor_7d"])L3RESOLVED — L3 APPLIES · L1 CLOSES · SDM LOGSChange applied. Sync verified. Employee notified. Hash-chained audit emitted for full lifecycle.WHAT THIS PROVES→ Every tier did exactly its scope — no overreach→ Architect gated without executing→ SDM never intervened (SLA healthy)→ State machine refused backward transitions→ G500 audit team replays from single ticket ID→ Every tool call, KB hit & state change logged

A P1 Incident — 5 Minutes, No Human Paged

Region-wide Exchange Online failure. The swarm runs the entire war-room cycle while humans are asleep.

T+0DETECTOR14 failuresin 60 secsP1 createdT+15sSDMWar roomL3+Arch synccomms/15minT+45sL3CA policyidentifiedpropose rollbackT+90sARCHITECTADR reviewApproves5% sampleT+5minRESOLVEDApplied &verifiedComms sentHumans receive the post-incident notification — they were never paged at 3am.
Part 7 · Efficiency

What Changes — and Why It Compounds

None of the gains below are individually surprising. The point is that all seven happen simultaneously, on the same architecture, against the same SLAs that already exist on the contract.

DimensionToday (Human Team)With Cortex Swarm
Coverage3 follow-the-sun shifts with formal handoffsSingle team, always on. No handoffs. No context lost between geographies.
CapacityInelastic. 2× spike can't be staffed in < 24hElastic by definition. 10× spike = 10× concurrent agent instances.
QualityVaries by shift, tenure, individualEven. Same prompt, same KB, same eval bar everywhere.
SpeedP1 page → human awake → diagnose: 30–60 minP1 detect → diagnose → propose → approve → apply: 5 min.
LanguagesEach language needs native-speaker hiringEN/HI/DE on the same agent. Locale bundle is a config file.
AuditReconstruct from chat + ticket + admin logs over weeksOne ticket ID → hash-chained replay of every tool call and state change.
KnowledgeWalks out with every resignation. 4–8 weeks to rebuild.Persistent. KB is versioned. Prompts and tools are reviewed in PR.

The Compounding Effect

Speed compounds with capacity (faster resolution × elastic concurrency = shorter incident windows). Audit compounds with quality (every action is replayable, so every regression has a fix that ships in a single PR rather than a memo). Language compounds with coverage (one swarm serves every region in every supported language at the same SLA).

The org chart was never the bottleneck. The bottleneck was the shift roster underneath it.
Part 8 · New Challenges

The Honest List — What Could Go Wrong

The model is not free. It trades a familiar set of operational problems for a less familiar set of socio-technical ones. Each one below is real; each one has a specific mitigation already wired into Cortex Swarm.

ChallengeWhat It Looks LikeMitigation
Trust gapEnd users distrust "the bot". CIOs distrust autonomy.Phase-gated rollout. Human approval on every mutating tool until evals plateau. Audit replay UI for skeptical buyers.
Audit scrutinyRegulators want to know "what did the model decide and why?"Hash-chained SHA-256 audit. Every tool call, KB chunk, and state change is replayable in one click via /audit/verify.
Prompt injectionAdversarial input tries to make the model exfiltrate or escalate.Six layered defences: directive precedence, <data>-tagged inputs, identity gate, Pydantic validation, rate limits, output filter.
Model driftA new model version regresses on something nobody noticed.52 eval cases as a CI gate. Semantic grading on resolution, tool-correctness, grounding, citation. make evals fails the build.
Long-tail edge casesRare scenarios the agent has never seen.Escalation patterns. Out-of-scope intent triggers escalate_out_of_scope() to the next tier or to a human.
Change managementHumans whose roles dissolve. SP commercial models built on FTE counts.The hardest one. Honest position: agents replace tier responsibilities, not the function. Senior staff move to swarm operations, KB curation, and eval authoring.
Cost & scalingInference cost grows with ticket volume.Local inference (LM Studio + Qwen3-Coder-Next) keeps marginal cost low. Bigger models reserved for L3/Architect on rare paths.
Failure modes"Right tool, hallucinated reasoning." Confident wrong answers.Formal 13-state machine. Mutating tools callable only in ACTING. RESOLVED reachable only from VERIFYING.

Six Security Defences in Depth

01

System-prompt directive

SECURITY DIRECTIVE at highest precedence — cannot be overridden by user input.

02

Input/output normalisation

<user_message> and <tool_output> treated as DATA, never instructions.

03

Identity-gate decorator

Orchestrator blocks cross-user mutations even if the model forgets to check.

04

Tool input validation

Pydantic + allow-lists. Schema mismatches rejected before execution.

05

Per-session rate limit

Max 30 tool calls / 10 min · 50 chat turns / hour — prevents runaway loops.

06

Output filter

Leaked-secret patterns stripped before reaching the UI layer.

Nihonga-style illustration of five agent crests bound by gold cord — guardrails as composition
Authority is bounded by composition: the model proposes, the orchestrator and adapters dispose.
Part 9 · Delivery

Six Phases Over ~12 Months

Phase 1 ships in 5 weeks. Each later phase is a drop-in module gated on an explicit trigger — not an arbitrary date.

Phase 01 · Now · ~50h
Foundation
  • L1 agent · EN chat
  • Stub L2/L3 · mock backends
  • State machine + 52 evals
  • Hash-chained audit
Trigger: Building now
Phase 02 · ~35h
Specialist Tiers
  • Full L2 + L3 agents
  • Real ServiceNow / AD / Intune
  • Real OIDC SSO
  • KB pruning via evals
Trigger: First pilot signed
Phase 03 · ~45h
Planning Architecture
  • Architect + SDM agents
  • Planner / Executor / Verifier
  • SDM dashboard + war-room
Trigger: Eval data shows plateau
Phase 04 · ~25h
Multilingual
  • HI + DE locale bundles
  • Per-locale KB ingest
  • KB provenance + trust tiers
Trigger: External KB integrated
Phase 05 · ~20h
Voice
  • Sarvam (EN/HI) · Azure (DE)
  • ElevenLabs alternate
  • Browser mic + playback
Trigger: Demand-driven
Phase 06 · ~12h
Multi-Tenant
  • Tenant ID propagation
  • Branded shells per tenant
  • Per-tenant SLA dashboards
Trigger: Second client signed
~12 MONTHS · TRIGGER-GATED · EACH PHASE IS A DROP-IN MODULEP15 weeksP2pilot+P3plateauP4multilingualP5voiceP6multi-tenant
Closing

The Org Chart Was Always the Answer

Every senior engineer who has ever worked in IT operations recognises the five-tier shape. It's the shape that emerges every time, in every geography, in every sector, because the responsibilities map cleanly onto the kinds of decisions a team needs to make. That same shape is exactly what makes a swarm legible: each agent does what the role already does, no more, no less, and the rest of the building knows where to send its ticket.

The interesting work over the next year is not adding more agents. It is sharpening the seams between them — better identity gates, better KB provenance, faster audit replays, tighter eval cases — so that what runs in production is a system anyone in IT operations can trust without having to also be an AI specialist.

5Agents
L1 · L2 · L3 · Arch · SDM
~137FTE mirrored
across all tiers
24×7Single team
no shift roster
1-clickAudit verify
any ticket
· · ·

Ajay Walia · Digital Workplace Operations · May 2026
LinkedIn: /in/ajaywalia

Ajay Walia

About the Author

Ajay Walia

AI {IT Architect} focusing on local-first multi-agent AI engineering, zero-data-egress systems. Ideator, Creator and Executor on Curious Bit.

Don't stop now

Keep Reading