product · collector

Wytness Collector

No-SDK capture. A container you run that turns the Microsoft Foundry and Copilot Studio telemetry you already have into signed, PII-tokenised audit events — and, with Radar sources, discovers the AI services your logs show but nobody registered.

Some agents will never call an SDK — a Copilot Studio bot a business team built, a Foundry deployment owned by another department. Their activity already lands in Application Insights and Log Analytics. The Collector polls those stores, converts each row into a Wytness event, signs and tokenises it inside your own boundary, and ships it to the same Ledger, Registry, and Shield views as everything else. Point the same container at your identity, proxy or vendor usage logs and it also runs Radar: discovery of the AI services those logs show, landed in Registry for review.

how it works

Poll. Map. Sign. Ship.

One container, running wherever you run containers. Your keys and source credentials never leave it.

poll

Reads new Microsoft Foundry tracing and Copilot Studio telemetry rows from Log Analytics on a cadence, resuming from a persisted cursor.

map

Converts each row into a Wytness event with a deterministic ID, so re-reads and replays never duplicate.

sign + tokenise

Signs with your Ed25519 key and tokenises PII inside the container — the same customer-held-key crypto the SDK uses. Wytness never sees your keys or source credentials.

ship

POSTs signed envelopes to your ingest endpoint. Delivery outages dead-letter to the volume and replay automatically; duplicates collapse server-side.

app.wytness.ai · collectors
every source's poll health, per instancea silent source is flagged, not missed ✓

the honest part

A different guarantee, labelled as one

SDK events attest an action at the moment it happened. Collected events prove the log content is untouched since pickup — a real guarantee, deliberately labelled below the SDK's and never conflated with it. The dashboard and every Evidence Pack show which tier each event carries.

 SDKCollector
Code on your agent's runtime~3 lines0 — a container beside it
Ed25519 signing with your key✓ at the action✓ at pickup
PII tokenised inside your boundary✓✓
Proves the action at the moment it happened✓—
Proves the log untouched since pickup✓✓
AGT hash chain ingested✓—
Assurance tier shown to auditorssigned at actioncollected

your boundary

Credentials stay yours

The Collector authenticates to your Log Analytics workspaces with credentials you configure in the container or mount from your vault — Wytness never stores them. Signing and PII tokenisation happen before anything leaves your network, with the same customer-held keys the SDK uses.

Use a dedicated API key and a dedicated signing keypair for each collector so its activity is attributable and revocable on its own. Instances register themselves, send heartbeats, and surface per-source errors and silence warnings on the Collectors page in your dashboard.

inside your boundary

log analytics creds
→ your container only
vendor admin keys
→ your container only
ed25519 signing key
→ your container only
pii tokenisation keys
→ your container only
signed envelopes
→ shipped
discovery hits, day counts
→ shipped — raw logs never
unmatched pattern classes
→ shipped only with your consent

wytness radar

The same container also discovers.

Add a discovery source and the Collector reads it for the fingerprints of AI services — day-bucketed inside the log store, so raw rows never leave it. Discovery emits observations, never events: a finding says something ran, not what it did.

entra_signin

Entra sign-in logs exported to Log Analytics. Which service principals and apps authenticated to AI services — read with a workspace-scoped reader, never a tenant-wide directory role.

proxy_law

A proxy export in Log Analytics — Zscaler and Netskope presets, or your own column mapping. The traffic nobody registered.

openai_usage · anthropic_usage

The vendor's org-admin usage report. Every key and project on the account, with usage. Needs an org-admin key; nothing else.

Findings land in Registry as unreviewed rows with a Radar badge. Source shapes and the optional pattern contribution are in the reference.

run it

One container. One volume.

The volume persists the poll cursor and the dead-letter file, so restarts never re-ship or lose events.

terminal
docker run -d --name wytness-collector \
--restart unless-stopped \
--memory=512m --cpus=1 \
-v wytness-collector-state:/var/lib/wytness-collector \
-e WYTNESS_API_KEY=... -e WYTNESS_ENDPOINT=... -e WYTNESS_SIGNING_KEY=... \
-e WYTNESS_PII_PUBKEY=... -e WYTNESS_PII_SECRET=... \
-e COLLECTOR_SOURCES='[...]' \
ghcr.io/wytness-ai/wytness-collector:0.2.0

Source configuration, resilience behaviour, and every environment variable are in the Collector reference.

availability

Business and up

 StarterGrowthBusinessEnterprise
Wytness Collector——✓✓
Wytness Radar (discovery sources)——✓✓

Capture the agents you didn't build.

Foundry and Copilot Studio activity in the same audit trail as everything else — and the AI services your logs show but nobody registered.

the code path: Built on AGT · the surfaces it feeds: Ledger · Registry · Shield

We set no cookies. Sign-in and preferences use essential first-party browser storage only — no tracking, advertising, or third-party analytics. Privacy Policy