Skip to content

Releases: Abilityai/trinity

v0.7.0 — PostgreSQL goes to production

23 Jun 17:21
c6a2be5

Choose a tag to compare

v0.7.0 — PostgreSQL goes to production

Released: 2026-06-23 · Tag: v0.7.0 · Previous: v0.6.1
Diff: v0.6.1...v0.7.0

The headline of this release: Trinity now runs on PostgreSQL as the recommended
production database.
SQLite stays the zero-config default for local development
and evaluation, but production instances should move to Postgres. This release adds
the configurable backend, Alembic-managed Postgres migrations, a dated SQLite
end-of-support path, and a gated SQLite→Postgres migration flow shipped in the
Trinity Ops Agent.

Alongside Postgres, v0.7.0 lands a pluggable Codex harness beside Claude Code,
a body of execution-correctness work (fire-and-forget dispatch, status-as-projection),
agent-server inbound-auth hardening, and credential hot-reload rotation.


🐘 PostgreSQL — the theme

  • #300 Configurable database backend — SQLAlchemy Core abstraction over SQLite + PostgreSQL. Set a single DATABASE_URL and both the backend and the scheduler switch over. Selection is non-sticky and non-destructive: comment the variable out and you're back on SQLite on the next restart.
  • #1183 Adopted Alembic for PostgreSQL migrations (dual-track alongside the SQLite bespoke runner; a schema change lands in both until SQLite is retired).
  • #1278 SQLite end-of-support dated 2026-09-01 — PostgreSQL is the forward path for production, with migration notes in the docs.

Migrating an existing SQLite instance? Use the Trinity Ops Agent's
/migrate-to-postgres skill (abilityai/trinity-ops-public) —
a gated validate-then-cutover flow that stands up a parallel Postgres container,
copies and validates your data, then cuts over in a short downtime window. Your
SQLite file is never written, so rollback is always one line.

  • Stand up a new instance on Postgres → docs/POSTGRESQL_SETUP.md
  • Migrate an existing SQLite instance → Ops Agent /migrate-to-postgres
# Opt in to the bundled PostgreSQL container
DATABASE_URL=postgresql://trinity:your-password@postgres:5432/trinity
docker compose --profile postgres up -d

Features

  • #1187 Codex harness MVP — pluggable agentic execution engine alongside Claude Code
  • #1169 Agent runtime data volumes — declared data_paths with snapshot/restore and portable export
  • #1089 Credential rotation via hot-reload, not container recreate
  • #668 Agent deployment compatibility validation — server-side checks with auto-fix offers
  • #1115 Per-schedule performance scorecards on Agent Detail (Overview + Schedules tab)
  • #1116 In-app bug reporting from the floating Help widget (hosted intake → GitHub issues)
  • #1104 Respond to / resolve Operator Queue items over MCP (#1101 follow-up)
  • #1315 WhatsApp outbound media attachments — deliver ChannelResponse.files via Twilio MediaUrl
  • #82 Email verification for admin login (email code + password)
  • #679 Plumb cancel signal into the agent task-runner reply (#671 defense-in-depth)
  • #1095 Transactional agent executions — discard workspace changes unless validated as success (research-gated)
  • #941 Enterprise: audit log dashboard — admin viewer for compliance review (v1: list/filter/detail) + entitlement seam
  • trinity-enterprise#5 (enterprise) Two-factor authentication (2FA) via TOTP

Fixes

  • #1159 🔒 agent-server HTTP API was unauthenticated on the shared agent network (cross-agent credential theft) — now a per-agent HMAC X-Trinity-Agent-Token
  • #1160 Migration runner — close the DROP-rebuild data-loss window + add cross-process serialization
  • #1201 Agent-side timeout (504) no longer drops execution cost/context/tool-call telemetry
  • #858 First-time setup token silently lost — block-buffered print() broke fresh installs
  • #1165 First-time setup token was per-worker — prod (--workers 2) onboarding still ~50% flaky after #858
  • #1199 GET /api/ops/auth-report 500 — SQLAlchemy auto-correlation (v0.6.1 regression)
  • #1200 GET/PUT /api/agents/{name}/capabilities 500 — facade delegation (v0.6.1 regression)
  • #1267 Boot-time NameError in lifespan transport startup (misleading Telegram/WhatsApp error on every boot)
  • #1264 Per-agent GitHub PAT never propagated to an existing container — all pushes failed
  • #1265 Dashboard & timeline took 20s+ to load metrics with 10+ agents
  • #1022 Scheduler wrote status='failed' with empty error on a 30s dispatch timeout
  • #799 SUB-003 auto-switch had no per-agent lock — concurrent 429s raced the restart
  • #1197 Agent creation crashed with an opaque ValueError on non-integer CPU in template resources
  • #1230 Backend Docker healthcheck flapped to "unhealthy" under batch load (10s timeout too tight for 2 workers)
  • #1231 Agent /tmp tmpfs filled and silently broke autonomous git commits — size now configurable
  • #1237 CI: path-filtered required checks bricked unrelated PRs
  • #1260 Fixed test-suite bugs surfaced by the full integration run (fixtures, stale mocks, isolation, flakes)
  • #722 Config validation: 5 critical config issues
  • #767 CB probe executions left open until backend restart inflated failure duration on the timeline
  • #953 Freshly deployed agents reported M .gitignore against origin/main (startup.sh append)
  • #954 Agent Detail panel width jerked when switching to/from the Chat or Session tab (scrollbar gutter)
  • #957 "Failed to generate avatar" now classifies image-gen failures with actionable detail
  • #958 Build Info dialog displayed "unknown" for every field in local development
  • #960 Visual artifact on the Agents list row hover in light theme

Refactors

  • #1083 Fire-and-forget dispatch — a hung turn holds zero backend resource
  • #1082 status-as-projection — schedule_executions.status is never read as authoritative for "is running"
  • #1025 Harden headless drain/finalize — daemon-thread exception capture + finalize snapshot isolation
  • #1027 Split db/schedules.py; replace 15+ param insert signatures with request objects
  • #1088 Unify the failure classifier into one shared package

Breaking Changes

None.

Upgrade Notes

  • Database: PostgreSQL is now the recommended production backend (#300). Opt in with a single DATABASE_URL; SQLite remains the default. SQLite end-of-support is 2026-09-01 (#1278) — migrate with the Ops Agent /migrate-to-postgres skill.
  • #1159 introduces AGENT_AUTH_SECRET (auto-generated by start.sh, like SECRET_KEY). Existing agents do one self-reconciling recreate pass to pick up their injected token.
  • #1187 adds the AGENT_RUNTIME selector (Codex / Gemini / Claude Code); existing agents default to Claude Code.

CLI

trinity-cli auto-publishes 0.2.7 via the main-push path (license → Apache 2.0
#1192; credential + email-send removed from trinity init #1162).


Contributors: Eugene Vyborov, dolho, andrii.pasternak, vybe, obasilakis,
oleksandr-korin, Pavlo Shulin, Oleksii Dolhov, Alex, dependabot, chrisyangxiaoqi,
webmixgamer.