Populating your stack
A project’s stack is the list of vendors and products TechWatchAlert monitors for you. It decides which CVEs become alerts: everything starts here.
Which path should you use?
Section titled “Which path should you use?”| You have… | Path | Alert precision |
|---|---|---|
| A production URL | Detect from a URL | ★★★ vendor and version detected |
| A code repository | Import a manifest | ★★★ exact versions from lockfiles |
| A CycloneDX SBOM | Import an SBOM | ★★★ normalized identifiers |
| None of the above | Search or a preset | ★★ product name only |
The first three fill in a normalized vendor (from a CPE) alongside the product name. That is what rules out same-name products from other vendors: two products called nginx from two different vendors do not trigger the same alerts.
1. Search
Section titled “1. Search”The Add to stack field searches vendors and products at the same time — no need to pick a type upfront, it is shown on each result.
- Results appear from the first character you type — not before: a ranking shown on an empty field has nothing to do with what you are looking for.
- One row per product, with the vendors that publish it underneath. Those labels come from the CVEs, where the same vendor is spelled ten different ways (
redhat,Red Hat, Inc.,redhat.com): they help you recognize the product, but are not used as an alerting criterion. - The known CVE count hints at exposure.
- Keyboard:
↑↓to navigate,Enterto add,,to commit and keep going,Escapeto close,Backspaceon an empty field to remove the last entry. - The ⓘ button next to the field recaps all of this on demand.
Adding a name that is not in the catalog
Section titled “Adding a name that is not in the catalog”The last row of the list always offers “Add “your input””. A product no CVE mentions yet is still perfectly monitorable — it is in fact the only way to be alerted on its first CVE. Those items carry a 0 CVE badge until a CVE cites them; the badge clears itself the day one does.
2. Paste a list
Section titled “2. Paste a list”Paste several names separated by commas, semicolons, tabs or newlines — typing a comma also commits the current entry:
nginx, openssl, postgresql, redisEach name becomes an entry. They are then matched against the catalog automatically to recover the vendor whenever the name matches exactly.
3. Import a manifest or an SBOM
Section titled “3. Import a manifest or an SBOM”Import a file accepts a CycloneDX SBOM (JSON or XML) or a dependency manifest:
| Ecosystem | Recognized files |
|---|---|
| npm | package.json, package-lock.json, npm-shrinkwrap.json |
| PyPI | requirements*.txt, Pipfile.lock, poetry.lock |
| Go | go.mod |
| Composer | composer.json, composer.lock |
| Maven | pom.xml |
| RubyGems | Gemfile.lock |
| Cargo | Cargo.lock |
Limits: 5 MB, 5,000 components.
Versions: only exact ones are kept
Section titled “Versions: only exact ones are kept”A range constraint (^4.17.21, >=2.0, ~1.2) does not say what is actually installed. Recording its lower bound would hide CVEs that do apply — the worst of both worlds. Such components are therefore imported without a version, meaning they are watched across all versions.
In practice: a lockfile (package-lock.json, poetry.lock, Gemfile.lock, Cargo.lock, composer.lock) yields exact versions and therefore precise alerts. A top-level manifest (package.json, composer.json) mostly yields ranges. Prefer the lockfile when you have one.
Review screen
Section titled “Review screen”Nothing is saved before you confirm. Each component shows whether a CVE already cites it and whether it is already in the stack. Components with no known CVE are unchecked by default but selectable — your call on whether they are worth monitoring.
4. Detect from a URL
Section titled “4. Detect from a URL”Detect from a URL reads a page’s headers and HTML to recognize the technologies it serves. It is the fastest path and often the most precise: the signatures return full CPEs, so vendor and version come pre-filled.
Nothing is saved — neither the URL nor the technologies — until you confirm the review screen. For continuous tracking of the same URL, use Monitored URLs instead, which rescans periodically and can feed the stack automatically.
Presets
Section titled “Presets”On an empty stack, six presets lay down an editable starting point in one click: PHP web / LAMP, Node & front-end, Python, Java / JVM, Containers & K8s, Workstation. They do not replace a real inventory, but they beat a blank page.
Tuning the noise
Section titled “Tuning the noise”Two per-item settings, editable at any time from the table:
- Minimum severity — the threshold below which no alert is raised.
Allsurfaces everything,Criticalonly the worst. - Version — empty means all versions. Once set, it rules out CVEs whose affected ranges do not cover it, which cuts noise sharply.
See GET /v1/…/stack to read the stack back from the API.