Incident Alerts
Know quickly when a public security incident affects your stack: where, the fix, and the deadline.
These pages describe ShellOrbit as it runs today. Breaking changes to the HTTP API are announced before they ship, and existing request and response shapes stay supported.
Incident Alerts matches public security advisories to what you run and alerts you when one applies, including malicious package releases such as LiteLLM 1.107.0. It is on every plan. It never reads your code, repository, or dependency files and never probes your site: packages count only when you declare them.
What it watches
Everything it knows about is a stack item: a product, a version if known, and where it was seen.
| Source | Stack items |
|---|---|
| Domain scans | The certificate chain; software and versions in Server, X-Powered-By, X-Generator, X-Runtime, X-AspNet-Version; Vercel, Netlify, Cloudflare, Supabase, Firebase |
| SDK runtime report | Node.js and OpenSSL versions of each SDK project |
| Open leak findings | The provider of each leaked key, such as OpenAI or Stripe |
| Your declared stack | Anything you add in the dashboard, including packages by registry, name, and version |
Dismiss a detected item that is wrong: it stops matching and the next scan does not bring it back.
Declare your stack
In Leak Alarm, Incidents, add an item:
| Field | Rule |
|---|---|
| Product | From the list: runtimes, web servers, frameworks (including Log4j, WordPress, Spring), platforms, and vendors (including AWS, TiDB Cloud, Supabase, OpenAI) |
| Version | Optional. Starts with a digit, up to 32 characters: 8.1, 26.12.0 |
| Label | Optional. Up to 60 characters on one line |
A stack holds 200 items, detected and declared together. Add versions: an advisory that names affected versions never matches an item without one.
Packages
Under Add a package, pick the registry (PyPI, npm, Maven, RubyGems, crates.io, Packagist, NuGet, Pub, or Hex), type the name as the registry spells it, and the exact version you run. Maven names are group:artifact.
Paste a list reads lines from requirements.txt, package.json, a Gemfile, Cargo.toml, or Maven coordinates, such as litellm==1.107.0, axios@1.7.2, "express": "4.19.2", or gem 'rails', '7.1.3'. The list is read in your browser; you review it and nothing is saved until you add it. A line without an exact version is skipped.
A package already watched is checked straight away. One nobody had declared before gets its full history within 15 minutes.
Advisory sources
| Source | Gives | Severity |
|---|---|---|
| Node.js release index | Security releases and the fixed version per line | High |
| Go vulnerability database | Standard library and toolchain flaws from the last year | Medium |
| endoflife.date | Node.js, PHP, Go, Python, and nginx lines past end of life, or within 60 days of it | High once ended, medium before |
| Mozilla OneCRL | Distrusted certificate authorities and intermediates | Critical |
| CISA Known Exploited Vulnerabilities | Flaws exploited now, with CISA’s deadline | Makes a listed advisory critical |
| OSV.dev | Malicious releases and high or critical advisories for the packages you declare, on PyPI, npm, Maven, RubyGems, crates.io, Packagist, NuGet, Pub, and Hex | Critical for a malicious release; otherwise as published (high or critical, or exploited per CISA) |
| ShellOrbit | Vendor breaches and urgent issues no feed covers | Per advisory |
Every source is checked every 15 minutes, and OSV.dev’s whole export is read again once a day. ShellOrbit only downloads from them, the OSV.dev export whole rather than by package; nothing about your account, not even a package name, is sent.
How matching works
Matching runs in ShellOrbit’s own AWS account, when an advisory changes and when your stack changes. An advisory matches:
- a version range: the version falls between the first affected and the fixed version, compared part by part as numbers, with pre-releases such as
1.2.0rc1or1.2.0-beta.1before their release; - an exact release: the version is one the advisory lists, as OSV.dev does for malicious releases;
- a release line: the version is on an ended line, so
8.1.34is on8.1; - a product: you use it at any version, as in a vendor breach;
- a certificate: your site’s chain holds a key, or an issuer and serial, the advisory names.
Expect an alert within minutes of an advisory reaching a public feed; feeds can trail the first news by hours. When two advisories are the same incident (one lists the other’s id), each stack item gets one of them.
Alerts and resolving
Each match is a finding with the source Incident: the evidence, the fix, and any deadline. Matches never count toward your monthly events.
| Severity | Where it goes |
|---|---|
| Critical, high | Email to owners, admins, and alert addresses straight away; Slack, Discord, Teams, or any URL from Starter. Once per incident per 24 hours |
| Medium, low | Dashboard, and the weekly digest when it is on |
A match resolves on its own when its evidence goes: a newer runtime is reported, a scan sees the new certificate or no version, you remove or dismiss the item, or the advisory is withdrawn.
Dashboard and API

Leak Alarm, Incidents shows what affects you, every advisory from the last 90 days marked Affected, Not affected, or Not enough data, and your stack. Package advisories appear only where they affect you.
| Request | Does |
|---|---|
GET /v1/leak/incidents | Incidents affecting you, and recent advisories with their state |
GET /v1/leak/incidents/{id} | One advisory and every match, open or resolved |
GET /v1/leak/stack | Your stack |
GET /v1/leak/stack/catalog | Products and package registries you can declare |
POST /v1/leak/stack | Declare: {"product":"php","version":"8.1","label":"billing API"}, or a package as {"product":"pypi:litellm","version":"1.107.0"} |
DELETE /v1/leak/stack/{id} | Remove a declared item, or dismiss a detected one |
Reads work with any API key; writes need read and write. MCP agents use list_incidents, get_incident, and list_stack.
Limits
ShellOrbit alerts only for what it can see: items it detected or you declared, with a version where the advisory names versions. It does not catch every incident.
- No warning for flaws or breaches not yet made public.
- Sees only your verified domains, SDK projects, findings, and declared stack.
- Checks only the packages you declare, never your code or lockfiles; a dependency scanner covers every transitive package.
- Tells you the fix; does not apply it. Not a security operations centre.