Docs
Concepts
Libraries, Dependencies, Findings, Severity, Decisions — the data model in plain English.
The data model
Audito's data model is small on purpose — five concepts cover the whole product.
Library
A library is the thing you ship: an application, service, or distributable
package. It's the unit you give a name (e.g. web-app) and it owns a list of
dependencies. A library has a source_kind that records how it was added
(manual, package_json, requirements_txt, pyproject_toml, other for
CycloneDX) so the audit feed stays grouped sensibly.
Dependency
A dependency is a single (ecosystem, package, version) triple inside a
library. Ecosystems include npm, pypi, cargo, maven, rubygems, go,
composer, nuget, debian, alpine, plus manual and other. We store
both the version range you declared (version_spec) and the resolved version
the scanner saw (resolved_version) — they often differ for lockfiles vs.
manifests.
Finding
A finding is the join of a dependency and an OSV identifier — "this
package at this version has CVE-…". Findings come from background scans; you
don't create them. Each finding carries a severity, references, and a status
that defaults to open.
Severity
Audito normalizes upstream severity into five buckets:
- CRITICAL — exploit known and trivial; treat as page-worthy.
- HIGH — significant impact; queue for the next maintenance window.
- MEDIUM — meaningful but not urgent.
- LOW — minor or hardening-class issues.
- UNKNOWN — no usable severity from upstream; we surface it but don't weight it in the rollup.
The posture rollup uses these for the colored chips on the dashboard.
Decision
A decision is your triage state on a finding: open (nothing decided),
accepted (acknowledged, won't fix), dismissed (this isn't a real issue
for us), or snoozed (hidden until a date you set). Decisions are scoped to
the workspace owner — a finding has a single decision per (dependency, OSV id) pair, and the inbox only shows what's actually still open by default.
Data flow
manifest / SBOM / manual entry
│
▼
┌──────────┐ background scan ┌─────────┐
│ library │ ──────────────────────▶ │ finding │
└──────────┘ └─────────┘
│ │
▼ ▼
dependencies (rows) decision (open / accepted /
dismissed / snoozed)Imports never wait for a scan: the dependency rows land first, the scanner catches up asynchronously, and the inbox starts populating as findings arrive.