Pen TestingCloud PostureShadow-AI discoveryCI/CDContinuous PlatformReportsIdentity & accessAgent Trust Fabric
Shadow-AI discovery

Find the AI nobody registered.

Find AI assets across the surfaces you can actually see, and state honestly what you cannot. Discovery never auto-registers anything — every result is a candidate an operator confirms.

Start a scan Read the docs
5 surfaces
repos, one repo, cloud, external and a public link
25 repos
scanned per org run by default, and the cap is reported
Zero
auto-registered — a candidate is only ever confirmed by a person
Inventory GET /api/shadow · candidate identity is surface|target
One deduped inventory, with its coverage stated
All discovery runs merge into one inventory with a combined coverage banner and a lifecycle. A re-run never duplicates, and a confirmed or dismissed candidate keeps its ruling.
Candidates
acme/support-agent repos · LLM-SDK signal
bedrock:agent/claims-intake cloud · managed service
llm.acme.dev:11434 external · Ollama exposed
Coverage
{ "repos_scanned": 25, "repos_total": 41, "repos_skipped": 16,
  "cloud": "operator-enabled", "external": "operator-enabled" }
Never a claim that no other AI exists Confirm or dismiss
The sweep

Four surfaces in range, and the two that need an operator.

Repos across a connected GitHub org in range
A single repo in range
One public link, turned into targets in range
Managed AI services in your clouds operator-enabled
Exposed model endpoints, externally operator-enabled
Anything outside the sweep is reported as coverage, not silence — 25 of 41 repos scanned means 16 skipped, and it says so.
How discovery works
01
Look where you can see
Repos across a connected GitHub org, managed AI services in your clouds, exposed model endpoints on your external surface, and a single public URL turned into scannable targets.
02
Say what you missed
Every run reports its coverage — repos scanned, total, and skipped — so the cap is visible. Coverage is never presented as proof that nothing else exists.
03
Confirm, or dismiss
Confirming registers the candidate as a Continuous asset. Dismissing marks it not-AI, known, or ignored. Nothing enters your inventory on its own.

Five surfaces, and what each one finds.

Cloud and external live enumeration is operator-gated
Surface
What it finds
Endpoint
Repos (S1)
AI-powered repos (LLM-SDK signals) across a connected GitHub org or account
POST /api/discover/org
One repo
Whether a single repo is AI-powered
POST /api/discover/repo
Cloud (S2)
Managed AI services — Bedrock agents, knowledge bases and throughput, SageMaker endpoints, Lex bots, Comprehend
POST /api/admin/cloud-ai-discover
External (S3)
Exposed AI surfaces — Ollama, vLLM/TGI, OpenAI-compatible endpoints, Gradio — from probe results
POST /api/admin/external-ai-discover
Public link
One public URL turned into scannable targets
POST /api/discover

Cloud and external take an agentless inventory or probe results and map them deterministically to candidates. Their fully automated live enumeration is operator-gated.

See what AI is already running in your estate.

Run discovery