Every night at 03:47 local, TITAN pulls the latest version of every library that every agent uses, applies security + patch + minor bumps, imports all 26 agents, runs the full health check, and only promotes the new environment if everything still works. If a single agent fails to import, the whole upgrade rolls back to last night’s known-good snapshot — automatically, before anyone notices.
On the 1st of every month at 04:17, the monthly cadence handles major version bumps one at a time with the same smoke-test gate, plus an optional Claude-powered breaking-change review. Packages that have rolled back before get flagged in the self-learning store so the next cycle treats them with extra caution.
Version feed sources: PyPI + NVD (CVE scoring) + CISA KEV (exploit-in-the-wild priority) + your own learning store. See the 36-feed compliance auto-updater for the full list.
python -m core.agent_version_updater --upgrade-security runs.pip freeze saved to data/version_upgrades/active_freeze.txt (plus 7-day rolling .bak). This is the rollback anchor.requirements.txt. Cross-reference against NVD + CISA KEV. Build the target list: security_urgent / patch / minor / major.pip install --upgrade. Write new candidate_freeze.txt.core.health_check --quick. Timeout 180s. Any failure = abort.pip install -r active_freeze.txt to restore. Append to audit.log.LAST_RUN_REPORT.md regenerates with per-agent import status, last 10 runs, rollback-prone packages, and next-step commands.ANTHROPIC_API_KEY). Stronger smoke test. Rollback-prone flagging.pip freeze snapshot. If the post-upgrade smoke test fails, we pip install -r that snapshot to restore the previous environment exactly.learning.json. Next cycle treats it with extra caution (smaller step, LLM review even on minor, one-at-a-time promotion). The platform gets smarter every month.ANTHROPIC_API_KEY is set, Claude Haiku 4.5 scans the changelog + release notes for breaking API changes before we apply a major bump. Result is cached in the learning store. Offline / AIRLOCK deployments fall back to text-diff heuristics — never blocks the upgrade.data/version_upgrades/audit.log as JSONL. Tamper-evident record for your own audit + post-mortems.pip as subprocess. No extra packages to install, nothing to upgrade in the updater itself. Works the day you clone the repo.Four independent evidence surfaces — pick whichever fits your workflow.
| What you want | Where to look | Command |
|---|---|---|
| Quick “is it running” check | data/version_upgrades/state.json — last_daily_utc / last_major_utc timestamps | python -m core.agent_version_updater --status |
| Human-readable last-run report | data/version_upgrades/LAST_RUN_REPORT.md | python -m core.agent_version_updater --report |
| Full jsonl audit (every action ever) | data/version_upgrades/audit.log | tail -n 50 data/version_upgrades/audit.log |
| Exact library versions currently active | data/version_upgrades/active_freeze.txt | cat data/version_upgrades/active_freeze.txt |
| Which agents are healthy right now | --status returns agent_health map (all 26) | python -m core.agent_version_updater --status |
| Rollback-prone package list | data/version_upgrades/learning.json | Shown in --report output |
| What’s scheduled right now | Windows: Task Scheduler library → TITAN_Daily_Upgrade / TITAN_Monthly_Major_Upgrade. Linux: crontab -l or systemctl list-timers | N/A |
# TITAN AI - Version Self-Upgrader - Last Run Report _Generated: 2026-04-23T08:47:14+00:00_ ## Schedule status - Last daily (security+minor) run: `2026-04-23T03:47:12+00:00` - Last monthly (major) run: `2026-04-01T04:17:08+00:00` - Last rollback: `never` ## Last 5 runs | Mode | When (UTC) | Targets | Promoted | Rolled back | |--------|----------------------|---------|----------|-------------| | daily | 2026-04-23T03:47:12Z | 12 | true | false | | daily | 2026-04-22T03:47:11Z | 4 | true | false | | major | 2026-04-01T04:17:08Z | 3 | 3 | 0 | | daily | 2026-04-21T03:47:10Z | 7 | true | false | | daily | 2026-04-20T03:47:09Z | 9 | true | false | ## Rollback-prone packages (0) _none - clean streak._ ## Agent health (live import check) - Total agents tracked: 29 - Healthy (imports cleanly): 29 - Failing: 0 | Agent | Import | |----------|--------| | aml | ok | | audit | ok | | banking | ok | | bastion | ok | | code | ok | | comply | ok | | conduit | ok | | ... (all 26 listed) ...
Run once on any customer's server after install. Writes platform-specific scheduler files to docs/scheduler/. You choose which one to wire in.
python -m core.agent_version_updater --install-schedule
Produces:
docs/scheduler/crontab.txt — Linux/macOS cron entries (daily + monthly + feed update)docs/scheduler/install_windows_tasks.ps1 — elevated PowerShell script to register 3 Windows Scheduled Tasksdocs/scheduler/systemd.txt — systemd service + timer units for server deploymentspython -m core.agent_version_updater --status # last-run timestamps + per-agent health (all 26) python -m core.agent_version_updater --report # human-readable LAST_RUN_REPORT.md python -m core.agent_version_updater --check-only # dry-run; what WOULD change (no install) python -m core.agent_version_updater --upgrade-security # daily cadence now python -m core.agent_version_updater --upgrade-major # monthly cadence now (one-at-a-time) python -m core.agent_version_updater --upgrade-all # daily + major back-to-back python -m core.agent_version_updater --rollback # revert to last-known-good freeze python -m core.agent_version_updater --list-pending-major # majors queued for monthly channel python -m core.agent_version_updater --install-schedule # write scheduler files to docs/
LAST_RUN_REPORT.md telling you which package rolled back and why — handle it at your pace, not at 3am.
.gov/.mil or the authoritative landing page of a standards body. TITAN pays $0. No licensing issue. No “will I get in trouble” concern — these are the feeds every credible security tool uses, by design. Full list: compliance-feeds.html.
requirements.txt.LAST_RUN_REPORT.md. No 3am pages. No stale CVEs. No “oh, we forgot to upgrade that”.