Continuous monitoring
The free scanner tells you what's deprecated right now. Monitoring remembers your dependency inventory and emails you when a new deprecation hits it - so you don't have to re-scan to find out.
Free during early access; will be $99/mo. The local scanner stays free forever.
Setup (about two minutes)
- Sign in at arol.ai/signin (creates your account).
- Create a token at arol.ai/dashboard/tokens. Copy it once - plaintext is shown only at creation.
- Report from a local scan or CI:
npx arol-ai@latest scan --report <token>
In CI, prefer a secret over a flag:
AROL_REPORT_TOKEN=<token> npx arol-ai@latest scan
The workflow that arol-ai init generates already passes AROL_REPORT_TOKEN
through - adding that secret in your repo's Actions settings is the only CI
step. You can also paste a token at arol-ai init's prompt; it stores it in
.git/arol-token (git never commits that path).
Token resolution order: --report flag, then AROL_REPORT_TOKEN, then the
repo's saved token. No token means nothing is ever uploaded.
--report-name <name> overrides the repo name shown in the dashboard (default:
the scanned directory's name).
What gets uploaded
Exactly what --json prints, plus a repo name and the CLI version:
- Findings metadata - dataset entry ids, file paths, line numbers, matched identifier text
- Dependency inventory - package names and declared versions from your manifests (npm, pip, go.mod, …)
- Scan summary - counts, dataset origin, timestamps
It never includes file contents, environment variables, source code, or
anything --json doesn't show. To audit a payload before enabling reporting:
npx arol-ai scan --json
Reporting is fail-soft: an unreachable endpoint warns on stderr and does not
change the scan result or exit code. --offline wins over a present token -
zero network means zero upload. Full network rules:
Privacy & network.
What the dashboard shows
| Surface | Meaning |
|---|---|
| Findings | Deprecations the latest scan detected in your code (file + line) |
| Sunsets | Upcoming shutdown dates across your monitored repos |
| Notifications | Emails when a new dataset entry matches your inventory - even if you haven't re-scanned yet |
| Repos | Each reported project and its latest inventory / findings |
Findings come from code usage. Notifications come from inventory matching when the public dataset gains a new entry. Both matter; they answer different questions ("what breaks in this checkout?" vs "did something new land on my stack?").
How notifications work
When the Arol dataset updates:
- New entry ids are diffed against ones already seen.
- Each new entry's SDK package names are matched against every repo's latest reported inventory.
- Matches become one email per user and a notification row in the dashboard (at-most-once per repo + entry).
Honest limits of the MVP:
- Only entries that name SDK packages can match an inventory. Pattern-only detections (e.g. raw query params with no package) won't trigger a notification until a scan finds them in code.
- Edits to an existing entry (sunset date moved, scope widened) do not re-notify - only brand-new entry ids do.
- The first time the notification pipeline runs for the live dataset, it seeds silently so you don't get a backlog of historical emails.
Turning it off
- Remove
AROL_REPORT_TOKENfrom CI secrets (or stop passing--report). rm .git/arol-tokenif you saved one viainit.- Revoke the token in the dashboard - further reports with that token are rejected.
Scans without a token keep working exactly as before: local-only, free forever.
Rendered from docs/monitoring.md in the arol repository - edits there ship here.