Documentation

Outrightly Docs

Everything you need to configure stack monitoring, set up alerts, and integrate Outrightly into your security workflow.

Quick Start

Get Outrightly running in under five minutes. The Free tier gives you 3 monitored stacks and full CVE matching — no card required. Starter and Pro plans add alert channels (email, Slack, webhook).

Your stackpackage.json / go.mod / …Outrightlyparse + version indexCVE databasesNVD · OSV · CISA KEVYour alertemail / Slack / webhook
1

Create an account

Go to outrightly.io/register and sign up with email, Google, or GitHub. Email verification is sent instantly.
2

Add your first stack

From the dashboard, click New Stack and give it a name (for example production-api or frontend). A stack represents one discrete service or application whose dependencies you want to monitor.
3

Import your dependencies

Upload a manifest file such as package.json, requirements.txt, or go.mod. Outrightly parses it automatically and begins monitoring every package against the NVD and OSV advisory databases.
4

Configure your alert channel

Go to Settings → Notifications and configure how you want to be notified. Starter plans get email alerts; Pro adds Slack and custom webhooks. All plans see alerts in the dashboard. Alerts fire the moment a CVE is matched to a package in your stack.

Create Your First Stack

A stack is a named collection of packages representing one service or application. You can have multiple stacks per account, one for each microservice, environment, or team. Outrightly monitors all of them independently and routes alerts based on which stack was affected.

Recommended naming convention: mirror your infrastructure names exactly. If your services are called api-gateway, data-pipeline, and mobile-backend in your deployment config, use those same names here. It makes it easy to route alerts to the right team members.

You can create up to 3 stacks (25 packages each) on the Free tier, 10 stacks (200 packages each) on Starter, and unlimited stacks and packages on Pro.

Understanding Alerts

An alert is generated when a CVE is published (or updated) that affects a package in your stack at the exact version you declared. Outrightly evaluates version range expressions from the NVD and OSV advisory databases and matches them against your pinned versions.

Each alert card includes:

  • CVE ID and a direct link to the full NVD advisory
  • CVSS score and severity classification (Critical / High / Medium / Low)
  • Affected version range and the earliest patched version
  • CISA KEV badge if the vulnerability is actively exploited in the wild
  • The name of the stack and package that triggered the alert
CRITICALKEVCVE-2025-44228production-api · lodash@4.17.20

CVSS score

9.8

Affected

< 4.17.21

Fix version

4.17.21

Ecosystem

npm

Example alert card. Real alerts include a link to the full NVD advisory and one-click dismissal.

CISA Known Exploited Vulnerabilities (KEV) always generate real-time alerts regardless of your severity threshold or frequency settings. These are vulnerabilities confirmed to be actively exploited in the wild.

Manual Entry

Use the package search interface inside the dashboard to add individual packages one at a time. Search by package name, select the ecosystem (npm, PyPI, Maven, etc.), and enter the version you are currently running.

Manual entry is best for a small number of critical packages that do not appear in a standard manifest file, such as infrastructure-level dependencies you manage directly.

File Upload

Drag and drop any of the following manifest files into the stack editor and Outrightly will parse and import all packages automatically. Duplicate packages across files are de-duplicated.

  • package.json, package-lock.json, yarn.lockNode.js / npm / Yarn
  • requirements.txt, Pipfile.lock, pyproject.tomlPython / pip
  • go.mod, go.sumGo modules
  • Cargo.toml, Cargo.lockRust / Cargo
  • pom.xml, build.gradle, build.gradle.ktsJava / Maven / Gradle
  • Gemfile, Gemfile.lockRuby / Bundler
  • packages.config, *.csprojNuGet / .NET
  • composer.json, composer.lockPHP / Composer

Lockfiles (e.g. package-lock.json) are preferred over non-lock manifests because they contain exact resolved versions, which produces more precise CVE matches with fewer false positives.

GitHub Sync

Connect your GitHub account and select a repository. Outrightly reads your dependency manifest files from the default branch and re-syncs daily. Any newly introduced package that has an active CVE triggers an immediate alert without you having to re-upload anything.

GitHub Sync requires only the read:contents scope on the repositories you select. Outrightly never writes to your repository; it reads only manifest and lock files.

⬡

GitHub repo

read:contents scope

→daily sync
📄

Lock files

package-lock, go.sum…

→parsed
⚡

CVE match

triggers alert if found

Supported Ecosystems

Outrightly monitors two broad categories: package ecosystems (language-level dependencies managed by a package manager) and infrastructure software (servers, databases, runtimes, and system-level components tracked directly in the NVD and OSV databases by their CPE identifiers).

Package Ecosystems

Add these by uploading a manifest file or using manual entry with the ecosystem selector.

npmNode.js / JavaScript
PyPIPython
MavenJava / Maven Central
GoGo modules
CargoRust (crates.io)
RubyGemsRuby
NuGet.NET / C#
ComposerPHP
HexElixir / Erlang
PubDart / Flutter
PackagistPHP (Packagist)
SwiftSwift Package Manager

Infrastructure Software

Add these using manual entry: search by the software name and select the version you are running. Outrightly matches against NVD CVEs using CPE (Common Platform Enumeration) identifiers, which cover server software, system libraries, and operating system components just as precisely as package-level dependencies.

Web Servers & Proxies

NginxWeb server / reverse proxy
Apache HTTPApache Web Server (httpd)
HAProxyHigh-availability load balancer
CaddyModern web server
VarnishHTTP accelerator / caching proxy
TraefikCloud-native edge router

Databases

PostgreSQLRelational database
MySQL / MariaDBRelational database
MongoDBNoSQL document database
RedisIn-memory data store
ElasticsearchSearch and analytics engine
SQLiteEmbedded relational database

Containers & Orchestration

DockerContainer runtime
containerdIndustry-standard container runtime
KubernetesContainer orchestration
HelmKubernetes package manager

Cryptography & Security

OpenSSLTLS / cryptography library
OpenSSHSecure shell daemon & client
LibreSSLOpenSSL fork (BSDs)
GnuTLSTLS implementation

Operating Systems & Kernel

Linux KernelCore Linux CVEs (NVD-tracked)
glibcGNU C library
systemdSystem & service manager
sudoPrivilege escalation utility

Message Brokers & Streaming

Apache KafkaDistributed event streaming
RabbitMQMessage broker
ActiveMQMessage broker (Apache)

Cloud & DevOps Tooling

TerraformInfrastructure as code
AnsibleConfiguration management
JenkinsCI/CD automation server
GitVersion control (CVEs affect server-side too)

Don't see a tool you use? Any software with a CVE record in NVD can be monitored. Use manual entry and search by its exact vendor/product name as listed at nvd.nist.gov.

Alert Channels

Configure notification channels in Settings → Notifications. Available channels depend on your plan. Alert delivery is the primary differentiator between tiers.

Free

✓Dashboard
·Email
·Slack
·Webhook

Starter

✓Dashboard
✓Email
·Slack
·Webhook

Pro

✓Dashboard
✓Email
✓Slack
✓Webhook
DashboardFree+
CVE alerts appear in the Outrightly dashboard. All plans get dashboard alerts with no configuration required.
EmailStarter+
HTML alert sent to your account email. Includes CVE details, affected package, severity badge, and a one-click link to the advisory.
SlackPro
Incoming webhook to a Slack channel of your choice. Shows severity colour, CVE ID, affected stack and package, and a direct link to the alert.
WebhookPro
HTTP POST to any endpoint you control. JSON payload with full alert details. Useful for routing to custom systems, ticketing tools, or SIEM.

Severity Thresholds

Set a minimum CVSS severity in Settings → Notifications. Alerts below this threshold are suppressed and stored silently in your alert history.

LowCVSS 0.1 to 3.9
MediumCVSS 4.0 to 6.9
HighCVSS 7.0 to 8.9
CriticalCVSS 9.0 to 10.0

CISA KEV alerts always bypass the severity threshold. Actively exploited vulnerabilities generate notifications regardless of CVSS score.

Frequency Settings

Choose how often you want to be notified. This setting controls non-Critical alerts. Critical severity and CISA KEV alerts always fire immediately, regardless of this setting.

  • Real-time: alert fires the moment a matching CVE is published.
  • Hourly digest: all matches in the last hour are batched into one message.
  • Daily digest: one summary email per day, sent at 08:00 in your timezone.

AI Security Analysis

Every CVE detail page includes an AI Security Analysis panel. Click the button below the NVD description to expand a three-section breakdown specific to that vulnerability.

Description

Plain-English explanation of what the vulnerability is, which component is affected, and under what conditions it triggers, extracted from the actual NVD advisory text, not a template.

Impact

Concrete consequences if the vulnerability is exploited: what an attacker gains, what data or systems are at risk, and how severe the real-world outcome is for your users.

Mitigation

Specific remediation steps: the exact version to upgrade to, a workaround if no patch exists, or configuration changes that reduce exposure. Upgrade commands are included where available.

Analysis is generated by Claude using the actual NVD description and advisory details, not a generic template. Results are cached per CVE so repeat visits are instant. When an API key is not configured, the fallback extracts the component name, affected functions, and trigger conditions directly from the NVD text.

Remediation Workflow

When a CVE alert fires for your stack, open a remediation record to track the fix from discovery to closure. Each record moves through five stages:

Open

Alert received, not yet triaged

Investigating

Team is assessing the impact

Patching

Fix is in progress or in review

Testing

Patch deployed to staging

Mitigated

Fix confirmed in production

Each stage transition is timestamped automatically. You can attach notes at any stage, useful for recording the patch PR number, the engineer who owns it, or a reason for deferral. All team members on your workspace can see the current status.

Remediation records are available on paid plans. Open a record directly from any alert card in the dashboard.

Team Workspaces

Invite teammates to your Outrightly workspace and share stacks, alerts, and remediation records across the whole team. Each member is assigned one of three roles:

AdminFull access: invite members, create and delete stacks, manage billing, configure integrations, and close remediations.
MemberCan create stacks, add packages, manage alerts, and update remediation workflow stages. Cannot invite members or change billing.
ViewerRead-only: can view stacks, alerts, and remediation status but cannot make changes. Useful for stakeholders and auditors.

Go to Settings → Teamto invite members by email. Invitees receive an email with a link to join the workspace. You can change a member's role or remove them at any time.

Team Workspaces are available on the Pro plan. The Starter plan supports a single account with no team sharing.

CI/CD Integration

CI/CD integration is available on the Pro plan using the API. You can query the CVE feed from any pipeline step to check for new high-severity vulnerabilities.

Native CI steps (GitHub Actions, GitLab CI) are on the roadmap and not yet available. The approach below uses the REST API directly, which works in any CI environment.

Query the CVE feed from a pipeline

Generate an API token from Settings → API Keys and use it to call the feed API. The example below queries recent critical CVEs:

bash
# Example: fetch recent critical CVEs from the Outrightly feed
curl -s "https://outrightly.io/api/v1/feed?severity=critical&limit=20" \
  -H "Authorization: Bearer $OUTRIGHTLY_API_KEY"

# Returns a JSON array of CVE objects with id, severity, cvss, summary, published_at

Store your API key as a CI secret, never in source code. Full API documentation is in the API section below.

Slack Integration

Go to Settings → Notifications → Slack and paste your Slack Incoming Webhook URL. Create one at api.slack.com/apps.

Each alert posts a structured message to your channel:

json
{
  "text": "Critical CVE matched in *production-api*",
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "*CVE-2025-44228* | CVSS 9.8 | :red_circle: Critical\n*Package:* lodash@4.17.20 (npm)\n*Affected:* < 4.17.21 | *Patch:* 4.17.21\n*Stack:* production-api"
      }
    }
  ]
}

PagerDuty & Other On-Call Tools

Outrightly does not have a native PagerDuty integration today. The recommended approach is to configure a Pro-tier webhook and route it to PagerDuty, OpsGenie, or any on-call tool via a Zapier or Make.com automation. The webhook payload includes all the data you need: CVE ID, CVSS score, severity, affected stack and package, and a link to the alert detail page.

Native PagerDuty and OpsGenie integrations are on the roadmap. If these are important for your team, let us know at team@outrightly.io — it helps us prioritize.

Webhooks

Configure a webhook endpoint in Settings → Notifications → Webhook. Outrightly sends a POST request to your endpoint with the following JSON body:

json
{
  "event": "alert.created",
  "alert": {
    "id": "alrt_01jxyz...",
    "cve_id": "CVE-2025-44228",
    "severity": "critical",
    "cvss_score": 9.8,
    "package": "lodash",
    "ecosystem": "npm",
    "affected_version": "4.17.20",
    "fixed_version": "4.17.21",
    "stack": {
      "id": "stk_01jxyz...",
      "name": "production-api"
    },
    "is_kev": false,
    "created_at": "2025-07-08T14:22:01Z"
  }
}

Every request includes an X-Outrightly-Signature header: an HMAC-SHA256 of the raw request body signed with your webhook secret. Verify this header before processing the payload.

javascript
const crypto = require('crypto')

function verify(body, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(body)
    .digest('hex')
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  )
}

API Authentication

API access is available on the Pro plan. Generate an API key from Settings → API Keys and include it as a Bearer token in the Authorization header. Keep your key secret and never commit it to source control.

bash
curl https://outrightly.io/api/v1/feed \
  -H "Authorization: Bearer YOUR_API_KEY"

The v1 API currently exposes the CVE feed and individual CVE records. Endpoints for programmatic stack management are planned.

CVEs API

Get CVE feed

Returns recently published or updated CVEs. Supports filtering by severity.

bash
# Get recent CVEs (all severities)
GET /api/v1/feed

# Filter by severity
GET /api/v1/feed?severity=critical
GET /api/v1/feed?severity=high

# Response: array of CVE objects
[
  {
    "id": "CVE-2025-44228",
    "severity": "critical",
    "cvss": 9.8,
    "summary": "...",
    "published_at": "2025-07-08T14:00:00Z",
    "is_kev": false
  }
]

Get a single CVE

Returns full details for a specific CVE by ID.

bash
GET /api/v1/cves/CVE-2025-44228

# Response
{
  "id": "CVE-2025-44228",
  "severity": "critical",
  "cvss": 9.8,
  "summary": "...",
  "description": "...",
  "published_at": "2025-07-08T14:00:00Z",
  "is_kev": false,
  "affected": [ ... ]
}

Additional query parameters and response fields are documented inline in the response. If you need something specific not shown here, email team@outrightly.io.