Oyzu

Your whole supply chain.One place to see it and steer it.

Coverage across every stage, the evidence behind every release, every agent’s actions and the reach of every vulnerability, in one governed platform.

Watch a release meet your policy.

Every release is built in isolation, checked against the rules you set and signed only when it passes. When something is wrong it is stopped with the reason attached, and the latest scan results are checked again before anything is published.

A release moves through source, build, scan, policy, signing and publishing. In each example a rule stops one threat. A look-alike package stops the build before it starts. An install script that tries to send out a credential stops the build where it is. A library with a flaw attackers already use blocks the release at policy. A flaw listed after the scan is caught when the latest scan results are checked again before publishing. A coding agent that tries to publish on its own waits for a person to approve. Whatever is published carries its evidence on every digest.

Know your posture before an attacker does.

Signals from your source control, CI, registries and clusters roll up into coverage for every stage, with the next most valuable step at the top.

Acme · All projects · Posture

Posture

All projects · 214 components · updated 4 min ago

Last 30 daysExport
Governed builds82%+9 pts in 30 days
Reviewed releases94%+4 pts
Signed artifacts71%+22 pts
Median time to fix3.2 days−1.4 days

Coverage by stage

  1. Workstation34%
  2. Dependencies58%
  3. Agents & code21%
  4. Source & review81%
  5. Build & test46%
  6. Artifacts27%
  7. Release63%
  8. Production40%

Overall coverage, last 12 weeks

80%60%40%20% 63% Wk 1Wk 12

Frameworks evidence coverage, not certification

68%SLSA Build L3
7.4OpenSSF Scorecard
61%NIST SSDF
54%CIS supply chain

Coverage by project and stage

WSDEPAGTSRCBLDARTRELPRDpayments5278349671638870checkout4066229058417552ledger2861188444236938identity3672259362488157search2244127130155229mobile183996627114421
<2525–4950–6970–8485+

Recent changes

  • Branch protection turned off on ledger-api by an admin. Restored after 3 h.
  • Cooling-off period enforced for npm in Payments.
  • 12 workflows in checkout still follow moving tags.
  • GitLab connected: 38 repositories now report signals.

Next best steps

  1. Require review before release6 commits reached main without an approved pull request.Source & review
  2. Pin CI actions by commit37 workflows still follow moving tags.Build & test
  3. Turn on the cooling-off period14 packages were less than seven days old when installed.Dependencies

Every release carries its proof.

Each stage shows what policy checked, who approved and which exact digest moved. Nothing advances on a pipeline’s say-so.

Payments · payments-api · Release 4.18.0

payments-api 4.18.0

Release to production · started 09:41 by J. Park

View planPause rollout
  1. Registered09:41
  2. Policy passed09:42 · 11 rules
  3. Signed09:42 · KMS
  4. Stagingwatch window clear
  5. Production1 of 2 approvals

Rollout watch window 18:42 left

  • us-east100%Healthy
  • eu-west50%Canary
  • ap-south0%Queued

Error rate and latency stay inside policy. The release watcher can hold this rollout; only people can promote it.

Production approval

  • JPJ. ParkPayments leadApproved
  • RSR. SinghSecurityWaiting
Approve as R. Singh

Evidence for sha256:e3a7…41f0

  • ✓Provenance from an accepted builder
  • ✓Pull request #482 approved by J. Park
  • ✓SBOM attached, 312 components
  • ✓CBOM attached, 41 cryptographic assets
  • ✓Scans: 0 critical, 2 low
  • ✓All dependencies past cooling-off

Provenance

  1. Commit 9f2c1abPR #482 · approved · main
  2. Build #7712sealed · 2 workers · engine pinned
  3. Artifactsha256:e3a7…41f0
  4. Signaturepayments-release · KMS
  5. Publishedghcr · ecr

Cryptography (CBOM)

  • AES-256-GCM46%
  • ECDSA P-25622%
  • RSA-204814%
  • SHA-25612%
  • Ed255196%

0 deprecated algorithms. 2 assets flagged for post-quantum migration.

Every artifact, from commit to cluster.

Open any artifact to see its whole chain of custody: the change and reviews it came from, the build that made it, its evidence and signature, where it was published, where it runs right now and everything that has happened to it since.

Checkout · checkout-web · Artifacts · 2.8.0

checkout-web 2.8.0 Held in eu-west

OCI image · sha256:5d0e…a913 · 212 MB · registered today 08:39

Download SBOMCompare with 2.7.4Roll back eu-west

Chain of custody every link verified · 9 records

  1. ChangePR #9288A. Okafor, M. Chen approved
  2. SourceCommit 4be71d2signed · main
  3. BuildHarness #9302accepted builder · engine pinned
  4. Evidence7 recordsSBOM · CBOM · 3 scans · tests
  5. Signaturecheckout-releaseprotected worker · KMS
  6. Publishedghcr · ecrdigests match
  7. Running3 environments1 held by the release watcher

Where it’s running

EnvironmentTrafficPodsSinceStatus
prod · us-east100%24 / 2409:20Healthy
prod · eu-west25%4 / 1609:58Held · errors 3.1%
staging · us-east100%3 / 308:44Healthy
prod · ap-south———Not admitted yet

Published copies

  • ✓ghcr.io/acme/checkout-web:2.8.0
  • ✓123456789012.dkr.ecr…/checkout-web:2.8.0

What’s inside

Base image
distroless/nodejs22 · pinned
Components
486 · 0 critical, 1 high (exception)
Cryptography
22 assets · 0 deprecated
Licenses
MIT 71% · Apache-2.0 22% · other 7%
Provenance
SLSA Build L3
Policy
Production service · revision 14 · 12 of 12 passed

Pulls, last 7 days

Activity

  • Refused an unsigned rebuild tagged 2.8.0 in dev-sandbox: digest does not matchAdmission · dev-sandbox
  • Rollback to 2.7.4 requested, waiting for a personRelease watcher
  • Held eu-west at 25%: error rate 3.1%, limit 1%Release watcher
  • Admitted to prod eu-west after signature and evidence checkAdmission · eu-west
  • Promoted to prod us-east, approved by A. Okafor and R. SinghRelease
  • Staging watch window clearRelease watcher
  • Signed with checkout-releaseProtected publishing worker
  • Policy passed, 12 rulesProduction service · rev 14
  • Registered from Harness build #9302Oyzu

Admission checks

  • USprod · us-eastsignature, provenance, policyAdmitted
  • EUprod · eu-westsignature, provenance, policyAdmitted
  • STstaging · us-eastsignature, provenanceAdmitted
  • DVdev-sandboxunsigned image, same tagRefused

Clusters admit only this exact digest with its evidence. A rebuild under the same tag is a different artifact.

Where is it running? Answered in seconds.

When a flaw is disclosed, one record links the library to every build, artifact and deployment that contains it. Quarantine it everywhere in one move.

Acme · Exposure

Exposure

1 critical advisory · 7 deployments affected

Notify owners
  1. 08:12Disclosed
  2. 08:12Matched to 7 deployments
  3. 08:19Quarantined everywhere
  4. 08:213 fixes opened
  5. 11:405 of 7 patched
Dependencylibxmlz 2.13.1pulled in by xml-sig 0.8
3 componentspayments-apiledger-workerinvoice-web
5 artifactspayments-api@4.17.2payments-api@4.18.0ledger-worker@2.9.0invoice-web@1.40.1invoice-web@1.41.0
7 deploymentsprod · us-eastprod · eu-westprod · ap-southstaging · us-east+3 more

Remediation

5 of 7deployments patched

Mean time to patch: 2 h 51 min

Affected deployments

EnvironmentRunningOwnerStatus
prod · us-eastpayments-api 4.17.2PaymentsPatched
prod · eu-westpayments-api 4.17.2PaymentsPatched
prod · ap-southinvoice-web 1.40.1BillingRolling out
prod · us-eastledger-worker 2.9.0LedgerFix in review
staging · us-eastinvoice-web 1.41.0BillingPatched
Open 3 fixesNotify ownersQuarantine stopped new installs and builds at 08:19. Running deployments stay flagged until patched.

Ask what happened. Get the record, not a guess.

Ask in plain language why a build stopped, what it touched and what else is exposed. Answers cite the audit record, and anything the assistant drafts goes through the same review as your own changes. Enforcement never depends on it.

Ledger · ledger-api · Build #4821

ledger-api build #4821 Stopped by policy

main · merge of PR #311 by M. Chen · stopped 14:02:17

View recordAsk Oyzu
  1. Checkout9f41c0e · 3 s
  2. Dependencies412 resolved · 41 s
  3. Install scriptsstopped · 14:02:17
  4. Testnot run
  5. Registernothing registered

Outbound connection refused build.network.declared-only

Step
npm ci › tiny-env-loader@2.4.1 postinstall
Process
node scripts/setup.js
Destination
203.0.113.48:443 · not declared
Payload
14 environment variables, 2.1 KB, encrypted
Read
AWS_ACCESS_KEY_ID canary CI HOME +11
Decision
Denied at the sandbox boundary · build stopped · Security paged

What changed in this version

  • +New postinstall script, 1 file, obfuscated
  • +New maintainer added 9 h before publish
  • +Reads process.env, opens a socket
  • Published 6 h ago · 2.4.0 was 14 months old

Blast radius

  • ✓No release or cloud credentials in the sandbox
  • ✓Network limited to the npm mirror and Go proxy
  • ✓Canary credential tripped, alert at 14:02
  • ✓No artifact registered, nothing to recall

Every agent, every action, on the record.

Coding agents act for their developer and never above them. Your automation has an owner and expiring grants. Every action is allowed, refused or held, and audited.

Acme · Agent activity

Agent activity

Today · 128 actions · 9 refused · 1 held

All agentsExport audit
Actions today128
Refused97 outside catalog · 2 approvals
Held rollouts1checkout-web · eu-west
Active agents61 grant expires in 9 days

Actions by agent

  • Coding agents · M. Chen50
  • Coding agents · J. Park33
  • dep-updater24
  • Release watcher15
  • sample-remediator7
  • Allowed
  • Refused
  • Held

Agent registry

  • DUdep-updaterowner Platform · read, publish request61 days
  • RWRelease watcherOyzu · hold, request rollbackBuilt in
  • SRsample-remediatorowner SRE · hold, request rollback9 days

Live activity

  • CACoding agentfor M. ChenOpened pull request #491Allowed
  • CACoding agentfor M. ChenInstall json-parse-turbo 1.0.0Refused · not in catalog
  • DUdep-updaterautomation · owner PlatformPublish payments-api 4.18.0Refused · needs approval
  • RWRelease watcherOyzuHeld checkout-web in eu-westHeld · errors 3.1%
  • RWRelease watcherOyzuRequested rollback to 2.7.4Waiting for a person

Set the bar once. Every build meets it.

Pick a build type and say what every build of that kind must have. Rules from the organization baseline carry down and can’t be loosened. A new service gets the whole bar the moment it’s created, without editing a pipeline.

Policies · Build types · Production service

Production service

Build type for 64 projects · builds on the Org baseline

SimulatePublish changes

Build types

  • Org baselineEvery build212
  • Production serviceCustomer-facing services64
  • Regulated · PCICard data, stricter12
  • LibraryShared packages88
  • InfrastructureTerraform, Helm27
  • + New build type

Every Production service build must have

From the Org baseline · can’t be loosened here

  • ✓Provenance from an accepted builder, SLSA Build L3Accepted: your builders
  • ✓No secrets in the code or the artifactAccepted: Gitleaks, GitHub secret scanning
  • ✓SBOM attached and signedAccepted: Syft, CycloneDX

Added for Production service

  • ✓Code review with 2 approvals, including a code ownerAccepted: GitHub, GitLab
  • ✓Static analysis with no high findingsAccepted: Semgrep, CodeQL
  • ✓Container scan with no critical and at most 3 highAccepted: Trivy, Grype
  • ✓CBOM with no deprecated algorithmsAccepted: CycloneDX
  • ✓License check with no AGPL or unknown licensesAccepted: ScanCode

If any of this is missing, the release waits. It never ships without it.

Quality gates

  • Line coverageat least 80%96% of builds pass
  • Mutation scoreat least 60%88% of builds pass
  • p95 latency in load testunder 250 ms93% of builds pass
  • Flaky testsunder 2%99% of builds pass
  • Image sizeunder 300 MB100% of builds pass

Works with every pipeline

  • GHGitHub Actions38
  • JKJenkins14
  • HNHarness8
  • GLGitLab CI4

0 pipeline files changed

Policy decides. Pipelines just run.

Required evidence follows the build type, not the YAML. When a pipeline skips a scan, the release waits for the evidence instead of shipping without it, whichever CI ran it. Oyzu can produce the missing evidence itself, from scanners you accept, against the exact artifact.

Policies · Production service · Evidence coverage

Evidence coverage

Production service · 64 projects · last 7 days

ExportRequest missing evidence
Releases evaluated418+12% on last week
Held for missing evidence2319 resolved, median 38 min
Active exceptions4all expire within 14 days
Shipped without evidence0since enforcement began

Evidence by project

Prov.SecretsSBOMCBOMSASTContainerReviewCoverageGHpayments-api✓✓✓✓✓✓✓✓JKledger-api✓✓✓✓✓!✓✓HNcheckout-web✓✓✓✓…✓✓✓JKfraud-model✓✓✓✓✓✕✓✕GLsearch-indexer✓✓✓✓✓✓✓!GHidentity-svc✓✓✓✕✓✓✓✓
✓ Met✕ Missing! Exception… Running

Gate decisions

418
  • Passed391
  • Held for evidence23
  • Passed with exception4

Held: fraud-model 2.3.0 Jenkins · build #1188

  • ✓Provenance from an accepted builder
  • ✓SBOM and CBOM attached
  • ✓Pull request #77 approved by 2 reviewers
  • ✕Container scan missing the pipeline has no scan step
  • ✕Coverage 71%, below 80% gate set by Production service
Scan sha256:7c19…b2e4 with TrivyRequest exception

Exceptions

  • LAledger-api · container scan5 high allowed until patched base image · R. Singh9 days
  • SIsearch-indexer · coverage 74%legacy module split in progress · A. Okafor3 days
  • CWcheckout-web · DAST windowstaging rebuilt, scan rescheduled · R. Singh12 days
  • IDidentity-svc · CBOMvendor library pending inventory · J. Park14 days

Try a control before you enforce it.

See exactly what a new rule would have stopped last month, and what it would have broken, then switch it on with confidence.

Policy · npm · Simulate: 7-day cooling-off period

Cooling-off period

npm · watching only · simulated on the last 30 days

Edit rule
Installs that would have waited214avg 9 h wait
Builds that would have failed3all with a fix available
Hijacked releases it would have stopped2both pulled by the registry later

Installs held per day, last 30 days

19 · a hijacked release, held

Impact by project

ProjectHeldFailed
payments641
checkout510
ledger382
identity330
search280

Rule

rule    cooling_off
applies npm, all projects
minimum 7 days since publish
except  @acme/* internal packages
mode    watch → enforce

What it would have stopped

  • colorful-logger 3.1.4Hijacked maintainer account. Pulled after 31 h.
  • fast-yaml-lite 1.9.0New install script that read tokens. Pulled after 52 h.
Keep watchingEnforce for Payments

The right thing.
The easy thing.
The default thing.

Want to see how this would look for your organization? We’d like to hear what you’re building.