CLI
teire scan runs Teire's own engine on a folder or any public GitHub repository and prints every change that reaches your code, with its lines. teire check turns that into a CI gate.
npx teire-cli scanThe package is teire-cli on npm. Run it with npx without installing it globally, or install it once and use the teire command:
npm install -g teire-cli
teire scanTo try it on a repository you haven't cloned, give its owner/name or URL. Teire downloads that commit as one archive into a temporary folder, scans it and deletes it:
npx teire-cli scan meridianlabs-ai/inspect_aiThis is a real run on teire-dev/examples/ai-web, with the path shortened:
Teire …/demo-ai-web
npm 5 direct + 75 transitive · 8 files · 7.0 s
APIs: OpenAI
Deadlines
2026-04-30 Node.js 20 reached end of life on 2026-04-30 passed · affected
2026-10-23 gpt-4.1-nano shutdown passed · affected
Affected (2)
● gpt-4.1-nano shutdown priority 1 · 2 sites
models/openai
test/openai-stand-in.ts:14
src/summarize.ts:13
● Node.js 20 reached end of life on 2026-04-30 1 site
runtime/node
package.json:8
1 more change checked, none reaching your code (--all lists them)
Notes
4 model mention(s) not traced through wrappers or registries (Nemotron does this when TOKENFACTORY_API_KEY is set)A group holds every change one pull request would fix, so a provider's retirements share a line: o1-preview shutdown and 9 more. The date beside it belongs to the change the title names. Product code is listed before tests and fixtures. In a terminal the current step shows on one line while the scan runs; a large repository takes a minute or two.
The scan makes the same engine calls as the Teire worker. Its findings match the dashboard once TOKENFACTORY_API_KEY is set, which lets Nemotron trace wrapped model IDs, for a repository with no organisation config. Packages are diffed and located on your machine. API and model changes come from Teire's public catalog. For a provider the catalog hasn't read yet, the CLI reads that provider's pages itself, through the same quote gate.
Commands
| Command | What it does |
|---|---|
teire scan [target] [--json] [--all] | Scan a folder (default: the current one), or a public GitHub repository as owner/name or its URL. --all also lists changes outside your installed versions |
teire check [target] [--fail-on affected|deadline|any] [--within 90] | Exit 1 when the gate fails |
teire explain <change-id> [target] [--json] | One change: summary, replacement, migration notes and the quoted sources. A package change ID is read from a scan of target |
teire changes [--provider p] [--ecosystem e] [--kind k] [--subject s] [--json] | The public catalog. For a provider with a built-in reader whose changes the catalog doesn't hold yet, its pages are read on the spot |
teire mcp | Serve the same tools to coding agents over stdio. See MCP |
For coding agents, install the Teire Agent Skill with npx skills add teire-dev/teire --skill teire-cli. It guides the CLI workflow; the MCP server exposes Teire's read-only scan and catalog tools directly to an agent.
Gating CI
--fail-on | Fails when |
|---|---|
affected (default) | any change reaches your code |
deadline | an affected change has a date within --within days (default 90), or already past |
any | anything is affected, needs a person, or must be checked by hand |
Exit codes: 0 passed, 1 the gate failed, 2 a usage error or anything that went wrong. The same run with teire check --fail-on deadline --within 60 ends:
teire check: 2 changes fail the "deadline" gatename: teire
on: [pull_request, push]
jobs:
deadlines:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 22 }
- run: npx -y teire-cli check --fail-on deadline --within 60
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}What it needs
Node.js 22 or newer. npm and Ruby need nothing else, because TypeScript and Prism are bundled. A missing toolchain becomes a note saying what to install, such as "go is not installed: install Go (https://go.dev/dl) or set TEIRE_GO". The other ecosystems are then still scanned.
| To read | Needs |
|---|---|
| Python packages | uv, which supplies Python 3.12 and the pinned griffe and jedi. Without uv, a Python 3.11 or newer already installed gets a virtual environment with the same pins, made once in ~/.cache/teire |
| Go modules | Go (TEIRE_GO for a specific binary) |
| Rust crates | cargo install cargo-semver-checks --version 0.51.0 --locked |
| Maven and Gradle | Java 17 or newer (TEIRE_JAVA); japicmp is downloaded once and checked against its SHA-1 |
| Variable | Effect |
|---|---|
GITHUB_TOKEN | Higher GitHub rate limits for release notes, advisories and spec history |
TOKENFACTORY_API_KEY | Nemotron traces model IDs through wrappers and registries, and reads discovered providers' pages |
TAVILY_API_KEY | Searches for the notices of an API host neither the catalog nor the built-in readers cover |
TEIRE_URL | Another Teire deployment (default https://teire.vercel.app) |
A package the repository doesn't pin is listed but not compared, and the notes count it: a Gemfile with no Gemfile.lock, or a Maven dependency whose version comes from a parent POM or BOM outside the repository. A diff that can't be computed (a release with no wheel, a download that timed out) becomes a "check by hand" item with its reason; the rest of the scan carries on.
teire.yml is honoured for ignore, ecosystems, paths, ignorePaths, upgrades.cooldownDays and sources.
What the CLI doesn't do
It reports and gates. It doesn't fix or open pull requests: fixes run in Teire's sandboxes, through the GitHub App or a dry run.
Contributing to the catalog
Add a provider Teire can read, or a change it missed, through a pull request. CI checks it against the same schema Teire uses, and a merged record is live on the next deploy.
MCP server
Give a coding agent Teire's scan and catalog, so it checks the repository it is editing and looks up a provider's deprecations before it writes code against them.