TeireDocs
ChangesScanDashboardTry Teire
GuideEcosystems & APIsNemotron on Token FactoryBuild
ChangesScanDashboard
Try Teire
What Teire doesQuickstartHow Teire worksAnatomy of a Teire PRThe life of a Teire PR

Use it

Public scan and dry runDashboardAsk Teire@teire commandsConfiguration (teire.yml)dependabot.ymlPrivate registries

Help

TroubleshootingCompared with Dependabot and Renovate
Guide

Configuration (teire.yml)

One optional file decides what Teire upgrades, how many PRs it opens, which checks it runs and what it reads. Every key has a default, and a mistake never stops a scan.

A key, from the file to the next scan. The optional .github/teire.yml is checked against the schema, a mistake falling back to its default; the organisation's teire-config fills the gaps; the next scan reads every key resolved.
  1. .github/teire.ymloptional
  2. checked
  3. Schemaa mistake → its default
  4. fills the gaps
  5. Organisationteire-config defaults
  6. every key resolved
  7. Next scanreads it
Where each setting comes from.

Teire keeps no settings of its own. Everything lives in the repository, in the first of these files that exists:

teire.yml

.github/teire.yaml, teire.yml and teire.yaml at the root work too.

An organisation can share defaults in a repository named teire-config, as teire.yml or .github/teire.yml. Values resolve repository → organisation → defaults:

  • Objects merge key by key.
  • The ignore and sources lists add up: the organisation's first, then the repository's.

Models, endpoints and keys can't be set from a repository.

The defaults

The Configure Teire pull request adds this file:

.github/teire.yml
# yaml-language-server: $schema=https://teire.vercel.app/schema.json
# Teire configuration. Every key is optional; these are the defaults.
# Reference: https://teire.vercel.app/docs/config
upgrades:
  majors: true # open upgrade PRs across major versions
  plainBumps: true # open verified upgrades with no code change (last in the queue)
  cooldownDays: 7 # wait this long after a release before proposing it
schedule: daily # daily and on pushes that change dependencies or code; weekly, push (pushes only) or off
pullRequests:
  limit: 5 # open Teire PRs at most
  perHour: 2 # new Teire PRs per hour at most
dashboardIssue: true

The first line points editors that use the YAML language server at /schema.json. They complete keys and flag mistakes as you type.

Every key

Read from the same schema the worker validates with:

KeyTypeWhat it does
ecosystemsobjectTurn an ecosystem (or API-host checks, `apis`) off for this repo; all are on by default.
ecosystems.npmboolean
ecosystems.pypiboolean
ecosystems.mavenboolean
ecosystems.goboolean
ecosystems.cargoboolean
ecosystems.rubygemsboolean
ecosystems.apisboolean
pathsstring[]Only scan these paths (globs).
ignorePathsstring[]Never scan these paths (globs).
ignorestring[]Change ids, packages (`openai`, `npm:openai`) or providers (`provider:groq`) to ignore.
upgradesobject
upgrades.majorsbooleanOpen PRs for new majors (default true).
upgrades.plainBumpsbooleanOpen PRs for upgrades with no located break (default true).
upgrades.cooldownDaysintegerSkip versions younger than this many days.
upgrades.allowstring[]Only upgrade these packages.
upgrades.denystring[]Never upgrade these packages.
upgrades.prereleasestring[]Packages whose pre-releases Teire proposes (`react`, `npm:react`, or `*` for all).
upgrades.distTagsobjectnpm packages that follow a dist-tag instead of `latest` (`{ next: canary }`).
upgrades.versioning"auto" | "increase" | "widen"auto (the default): a published library's ranges widen to admit the new version, an app's move to it. increase: always move. widen: always widen.
schedule"push" | "daily" | "weekly" | "off"When to rescan: daily (the default) or weekly, plus every push that touches dependencies or code; push = pushes only; off = no automatic scans.
verifyobject[]Commands that replace the detected ones, per workspace.
verify[].workspacestringProject directory, `.` for the root.
verify[].installstring
verify[].typecheckstring
verify[].teststring
pullRequestsobject
pullRequests.limitintegerOpen Teire PRs at most (default 5).
pullRequests.perHourintegerNew Teire PRs per hour at most (default 2).
pullRequests.labelsstring[]Extra labels on every Teire PR.
pullRequests.commitMessageobject
pullRequests.commitMessage.prefixstring
pullRequests.targetBranchstringBase branch for PRs (default: the repo's default branch).
dashboardIssuebooleanKeep the Teire Dashboard issue (default true).
fixes"automatic" | "ask" | "off"automatic (the default): a fix starts when a change reaches your code. ask: nothing new is written until someone asks (Fix now, @teire fix). off: findings are listed, nothing is fixed.
securityFixes"automatic" | "ask"automatic (the default): a security fix starts on its own, even when fixes are ask. ask: security fixes wait for a person too. fixes: off turns these off as well.
sourcesobject[]Changelogs or API specs Teire should read for a host or package.
sources[].hoststring
sources[].packagestring
sources[].changelogUrlstring
sources[].specUrlstring

Examples

.github/teire.yml
upgrades:
  plainBumps: false        # only upgrades that change your code, and security fixes
  deny: [react, react-dom] # never these
pullRequests:
  limit: 2
  labels: [dependencies]
ignore:
  - provider:stripe        # don't report Stripe API changes

When the file has a mistake

The file is read leniently:

  • A key with the wrong type falls back to its default.
  • An unknown key is reported.
  • The valid parts of a list or object are kept.

A mistake never stops a scan. Problems show up in three places:

  • a Teire config check run on the scanned commit, with an annotation on each bad line,
  • Config problems (defaults used) in the Dashboard issue,
  • the reply to @teire config, which also shows where every value came from.

A problem reads like .github/teire.yml line 3: upgrades.cooldownDays Too big: expected number to be <=90, or line 4: foo unknown key "foo".

When changes take effect

Teire stores the resolved file with each scan. Push the change to the default branch: a push that touches teire.yml triggers a scan. @teire rescan works too.

@teire commands

Comment on any issue or pull request to rescan, fix, ignore, rebase, explain or pause. Teire answers in the thread and links the live run.

dependabot.yml

Teire reads your existing dependabot.yml and honours it, so moving from Dependabot changes nothing you already decided. teire.yml wins where both say something, and Teire says so.

On this page

The defaultsEvery keyExamplesWhen the file has a mistake