You have an agent inventory.
It has names, owners, versions, frameworks, maybe even deployment status.
Then someone asks a much harder question:
“How many AI agents are actually running right now?”
That is where the spreadsheet usually stops being useful.
An agent can exist in a registry without running. It can run in a Kubernetes cluster without appearing in the registry. It can be deployed under a generic workload name. And it can disappear from the cluster while its inventory record quietly remains marked as active.
That gap between what you think exists and what is actually running is where shadow AI starts to hide.
For enterprises running AI across Kubernetes, cloud platforms, SaaS applications, and developer environments, an agent inventory and a cluster inventory are two different views of the same estate.
You need both.
Your Agent Inventory Says 87. Kubernetes Says 112.
Imagine an AI platform team has documented 87 agents.
Everything looks tidy.
There is an owner for each agent. Deployment status is recorded. Frameworks are listed. Some agents are tagged as production, others as development.
Then the infrastructure team scans the Kubernetes environment.
They find 112 workloads that appear to contain agent-like applications.
Now there are three numbers:
| View | Count | What it tells you |
|---|---|---|
| Agent inventory | 87 | What the organization believes exists |
| Running cluster workloads | 112 | What infrastructure is actually running |
| Reconciled inventory | 76 | What can be confidently matched and explained |
The 36-workload difference is the interesting part.
Some workloads may be old deployments. Some may be replicas of known agents. Some may be supporting services. But some could be agents that were deployed without ever being registered.
That is the problem with looking at either side alone.
An inventory tells you what you know about. A cluster tells you what is happening.
An Agent Registry and a Cluster Inventory Answer Different Questions
It is tempting to treat your agent registry as the source of truth.
But a registry is only as complete as the process that feeds it.
A cluster, on the other hand, does not care whether an application was properly registered. If a workload is running, Kubernetes can tell you that it exists.
That makes the two views complementary.
| Agent inventory | Running cluster |
|---|---|
| Agent name | Workload name |
| Business owner | Namespace |
| Agent version | Deployment / StatefulSet |
| Framework | Container image |
| Approved status | Pod status |
| Intended environment | Cluster |
| Registered model | Environment variables / configuration |
| Known deployment | Actual running deployment |
The reconciliation process connects these two worlds.
The goal is not to replace your agent inventory with Kubernetes data. The goal is to determine whether every running agent has a known identity and whether every registered agent has a real deployment behind it.
This is the same principle behind good asset management in traditional infrastructure.
You do not want a CMDB that says a server exists when it was decommissioned six months ago.
You also do not want a server running in production that nobody knows about.
AI agents create the same problem, except their deployment footprint can be much harder to recognize.
The Real Problem: Names Rarely Match
Here is where reconciliation gets interesting.
Your inventory might contain:
Claims-Processing-Agent-v3
But the Kubernetes deployment might be:
claims-prod-7c9f6d8d7b
The container could be:
registry.company.com/claims-worker:2026.08.14
And the namespace might simply be:
insurance-prod
Nothing about those four names immediately tells you that they represent the same agent.
That means a simple name comparison will miss real matches.
A useful reconciliation process needs to look at multiple signals:
| Signal | Example | Match strength |
|---|---|---|
| Deployment name | claims-prod | Medium |
| Container image | claims-worker:2026.08 | High |
| Namespace | insurance-prod | Medium |
| Labels / annotations | agent_id=claims-v3 | Very high |
| Repository metadata | Git repo for claims agent | High |
| Environment variables | Model, framework, agent ID | High |
| Owner metadata | Team / service owner | Medium |
| Network or API behavior | LLM / tool calls | Supporting signal |
The more signals you combine, the more confidently you can connect inventory identity to runtime reality.
What Happens When You Find a Mismatch?
Not every mismatch means you have shadow AI.
That distinction matters.
Suppose your inventory lists 100 agents and your cluster scan finds 115 workloads.
Those 15 additional workloads could include temporary test deployments, replicas, infrastructure services, agent components split across multiple workloads, stale resources waiting for cleanup, or genuinely unregistered agents.
Treating all 15 as shadow AI would create noise.
Instead, reconciliation should classify the differences.
A practical reconciliation model
| Result | Meaning | Recommended action |
|---|---|---|
| Matched | Inventory and runtime agree | Keep monitoring |
| Runtime-only | Running but not registered | Investigate |
| Inventory-only | Registered but not running | Verify status |
| Multiple-to-one | Several workloads belong to one agent | Normalize |
| One-to-multiple | One agent spans multiple workloads | Map components |
| Uncertain | Evidence is insufficient | Review manually |
This turns an overwhelming infrastructure scan into an actionable queue.
Runtime-Only Agents Deserve the Most Attention
The most important category is the runtime-only agent.
This is an AI workload that appears to be running but has no corresponding entry in your approved inventory.
Why does that matter?
Because you may not know:
Who owns it?
Which model does it call?
What data can it access?
Was it approved?
How much does it cost?
Can someone shut it down?
A running workload with no accountable identity is not merely an inventory problem.
It is a governance problem.
Lyzr’s OpenController is designed around this broader visibility problem: bringing agents, models, tools, data, and workflows into a common control layer across clouds, frameworks, and runtimes.
The key idea is simple:
You cannot govern an agent you cannot see.
Inventory-Only Agents Matter Too
The opposite mismatch is easier to overlook.
An agent exists in your inventory, but nothing corresponding to it is running.
At first, that sounds harmless.
But stale inventory creates its own problems.
Imagine your registry says:
Customer Support Agent — Production — Active
But the Kubernetes deployment was removed two months ago.
Now your governance team believes the agent is still operating.
That can distort:
- risk assessments
- audit reports
- cost analysis
- ownership records
- incident response
- decommissioning workflows
A trustworthy inventory should therefore answer two questions:
What should exist?
and
What does exist?
Reconciliation is the bridge between them.
Kubernetes Gives You the Runtime View. It Does Not Give You the Whole AI Story.
Kubernetes is excellent at describing workloads.
It can tell you about clusters, namespaces, deployments, pods, images, labels, services, and resource states.
But a Kubernetes object does not automatically tell you:
- whether the workload is an approved AI agent
- what business process it performs
- who owns the agent
- whether the model is approved
- what tools the agent can invoke
- whether the agent has passed evaluation
- what policies should apply to it
That is why AI discovery cannot stop at infrastructure discovery.
You need to connect infrastructure signals with agent-level context.
Lyzr’s AI governance approach focuses on continuous visibility, policy enforcement, risk detection, and auditability across an AI estate.
The infrastructure tells you where something is running.
The agent layer tells you what that thing is allowed to do.
A Better Reconciliation Workflow
You do not need to start by manually comparing two spreadsheets.
A stronger workflow looks like this:
Agent Inventory
↓
Known identities, owners, versions
↓
Runtime Discovery
↓
Kubernetes + cloud + SaaS environments
↓
Identity Matching
↓
Labels + images + metadata + configuration
↓
Reconciliation
↓
Matched | Runtime-only | Inventory-only | Uncertain
↓
Investigation + Governance
The important part is that discovery happens continuously.
A one-time scan gives you a snapshot.
A continuously reconciled inventory gives you a living picture of the agent estate.
What Should Your Reconciled Agent Inventory Contain?
Once you connect inventory and runtime data, the record for an agent becomes much more useful.
Instead of:
| Agent | Owner | Status |
|---|---|---|
| Claims Agent | Insurance Team | Production |
you can build something closer to:
| Field | Example |
|---|---|
| Agent | Claims Processing Agent |
| Owner | Insurance AI Team |
| Version | v3.2 |
| Framework | LangGraph |
| Model | Claude |
| Cluster | Production-EU |
| Namespace | Insurance |
| Deployment | claims-prod |
| Runtime status | Running |
| Last observed | 14:02 UTC |
| Approval | Approved |
| Runtime match | Confirmed |
| Risk status | Low |
Now your inventory is no longer just a list of agents.
It becomes a connection between identity, ownership, governance, and runtime reality.
The Goal Isn’t 100% Matching. It’s Knowing Why You Don’t Match.
This is an important shift.
A mature reconciliation process does not assume every inventory record will perfectly match every cluster workload.
Instead, it makes discrepancies visible and explainable.
For example:
112 runtime workloads discovered
87 registered agents
76 confirmed matches
21 infrastructure or supporting workloads
9 stale inventory records
6 runtime-only candidates
That is much more valuable than simply saying:
“We have 87 agents.”
Now your team knows what it knows — and what it does not know.
That distinction becomes increasingly important as agents spread across Kubernetes, cloud services, SaaS platforms, and developer environments.
From Agent Discovery to Continuous Control
Agent inventory is the starting point.
Reconciliation is what makes the inventory trustworthy.
And governance is what makes that inventory useful.
The progression looks like this:
| Stage | Question |
|---|---|
| Discovery | What AI systems exist? |
| Inventory | Who owns them? |
| Reconciliation | Are they actually running? |
| Governance | What are they allowed to do? |
| Observability | What are they doing now? |
| Control | What happens when something goes wrong? |
That last step is where an agent inventory becomes more than documentation.
With a control layer such as Lyzr OpenController, organizations can move from simply discovering agents to governing agents across environments.
The objective is not to build another spreadsheet.
It is to create a reliable connection between what your organization knows, what infrastructure is running, and what your AI systems are actually allowed to do.
Your Agent Inventory Should Be Able to Survive a Cluster Scan
So, go back to that original question:
“How many AI agents are actually running right now?”
If your answer comes entirely from your agent registry, you may be counting what people remember deploying.
If your answer comes entirely from Kubernetes, you may be counting workloads without understanding their identity or purpose.
The better answer comes from reconciliation.
Your inventory should be able to meet your clusters halfway.
Every known agent should have a runtime story.
Every suspicious runtime should have an identity story.
And every mismatch should have an owner and an explanation.
Because when AI agents are running across your infrastructure, the inventory is only trustworthy when it agrees with reality.
Book A Demo: Click Here
Join our Slack: Click Here
Link to our GitHub: Click Here


