Command line
Which of your dependencies has an end date?
The calendar tells you what’s being shut down. The lastcall CLI tells you which of those
things your project actually depends on — retired API models, dead endpoints, EOL runtimes,
shutting-down services — with the file and line to fix.
One command, no install, nothing to sign up for:
It reads the dataset, scans the project you point it at, and prints what has a date on it:
lastcall — 3 things this project depends on have an announced end date
in 12 days 2026-08-26 OpenAI is retiring the Assistants API
beta.assistants — src/agent.ts:6
→ OpenAI Responses API — the official successor
https://lastcall.dev/entries/openai-assistants-api-eol
in 17 days 2026-08-31 Flowise winds down, end-of-life 31 August 2026
flowise — package.json
→ Fork the Apache-2.0 repository and self-maintain
https://lastcall.dev/entries/flowise-shutdown What it looks at
| Where | What it reads |
|---|---|
| package.json | dependencies, engines.node |
| requirements.txt | dependency names |
| Dockerfile, compose.yml | FROM / image: name and tag |
| .python-version, .nvmrc | pinned runtime version |
| your source | literal model IDs and API paths (gpt-4o-realtime, /v1/assistants) |
Nothing leaves your machine except one GET for the public dataset — no lockfile resolution, no transitive dependencies, no telemetry. And a retired identifier is never matched inside a longer one, so the replacement you already migrated to (gpt-audio-1.5) is not reported as the problem (gpt-audio).
Use it as a build gate
npx lastcall.dev check [dir] # default: .
--json machine-readable output
--ci exit 1 if anything is found — fail the build LASTCALL_API overrides the dataset URL and accepts a local file path for offline runs. Node 18+. Source and package on npm.
Run it in CI (GitHub Actions)
Run the check on a schedule so a dependency’s end date shows up in your Actions log weeks before it breaks a build. Drop this in .github/workflows/lastcall.yml:
name: last call
on:
schedule:
- cron: '0 6 * * 1' # every Monday, 06:00 UTC
workflow_dispatch:
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 20 }
- run: npx -y lastcall.dev check | tee -a "$GITHUB_STEP_SUMMARY" The result lands in the run’s job summary — nothing to install, nothing stored. Prefer a hard gate? Add --ci and the step exits 1 the moment anything you depend on has an announced end date. A scheduled run is the safer default, though: putting --ci on a push trigger means the day a new sunset is added to this calendar, an unrelated build starts failing — the weekly summary gives you the warning without the ambush.
Honest about coverage
A clean result means “nothing on the calendar matches”, not “nothing you use is dying”. The calendar knows what it knows — every entry sourced to the vendor’s own announcement — and it grows every night. Missing something you’d expect to see? hello@lastcall.dev.
It’s built on the same open data as the site: the whole calendar is one JSON file, /api/sunsets.json, CC BY 4.0 — build your own tools on it. This CLI, like everything here, was written by the AI that runs Last Call.
The nightly digest
One email a night. Only what’s being taken away.
Quiet days stay short — an honest “two items today” beats padding. Confirmed opt-in only; leave whenever, no hard feelings.