Skip to content

Tale v0.2.85

Choose a tag to compare

@larryro larryro released this 23 Jun 06:05
cb33c9b

v0.2.85 — Apps platform, the AI Workforce, and persistent sandbox agents

This is a large release. It introduces a config-driven Apps platform (installable packs that bundle app-scoped agents, workflows, and sandbox-agent steps), the AI Workforce (an agent company with an organigram, task operations, and Discussions), and persistent sandbox agent sessions that run Claude Code with docker-in-sandbox, browser human-takeover, BYO credentials, and rotating token sources. It also ships SSO/identity hardening (generic OIDC claim mapping + PKCE, passkey/2FA controls, server-side idle timeout), a zero-friction guided setup, and a knowledge-platform refactor that moves RAG into the Convex backend behind a dedicated knowledge-db container.

🔒 Security & Identity

  • Generic OIDC claim mapping, role-mapping rules, and PKCE — map arbitrary identity-provider claims to Tale roles and use PKCE for the auth-code flow (#1857)
  • Passkey admin revocation, configurable 2FA-wall enforcement options, and sign-in audit events (#1859)
  • Server-side session idle-timeout enforcement (#1862)
  • Knowledge entries are now written through an approval-gated knowledge_write path (#1866)
  • Audit-log retention and PII-scrub checkpoints are signed with a new TALE_AUDIT_SIGNING_KEY (HMAC-SHA256), making the audit hash chain tamper-evident; the key supports rotation via TALE_AUDIT_SIGNING_KEY_PREVIOUS (#1879)
  • Sensitive form fields are masked in the UI (#1912)
  • Ratcheted the dependency CVE gates from CRITICAL down to HIGH (#1856)

💥 Breaking Changes (operator-facing)

  • The tale-crawler and tale-rag containers are removed. RAG/knowledge processing now runs inside the Convex backend (node-actions), backed by a new dedicated knowledge-db container (ParadeDB: pg_search + pgvector). A new optional KNOWLEDGE_DATABASE_URL (or KNOWLEDGE_DB_NAME, default tale_knowledge) points at it; it defaults to the bundled knowledge-db service and is split out so it can be relocated for data residency (#1907)
  • RAG cross-encoder re-ranking is now API-only. RAG_RERANKING_PROVIDER=local is no longer supported and fails fast — set RAG_RERANKING_PROVIDER=api pointing at an external Cohere/Jina-compatible /rerank endpoint (RAG_RERANKING_API_BASE_URL + RAG_RERANKING_API_KEY) (#1869)
  • Metrics endpoints consolidated. /metrics/crawler and /metrics/rag are removed; scrape /metrics/platform instead. Update any Prometheus scrape config that targeted the old paths

🚀 Features

Apps platform

  • Config-driven Apps platform: installable packs that bundle app-scoped agents, workflows, and sandbox-agent steps, isolated from the global catalog under a composite <app>/<name> slug (#1911)
  • Install/readiness wizard with inline integration-connect, per-agent dependency readiness (managed ↔ BYO), multi-project installs (one app → many projects), and durable task runs (#1927)

The AI Workforce

  • Workforce foundations: task operations, an org organigram, and per-agent logs (#1877)
  • The AI Workforce — an agent company with Discussions and human controllability over what agents do (#1907)
  • Task views split, @-mention descriptions, and per-agent metrics (#1878)

Persistent sandbox agents

  • Persistent agent sessions for Claude Code — a durable, resumable sandbox session per (org, user) (#1872)
  • Sandbox agents can use any connected org integration, with credentials that never enter the container (#1880)
  • Native docker/compose inside a session via configurable runtime tiers (runc/gVisor/sysbox/kata) (#1881)
  • Read-only sandbox observability in chat: a live browser view and a workspace file explorer (#1890)
  • External-agent BYO credentials plus per-user env vars and secrets (#1892)
  • Agent-initiated browser human takeover — an agent can hand the browser to a person (e.g. to solve a CAPTCHA) and resume (#1895)
  • Token sources: broker-fetched pools of rotating LLM credentials for BYO agents, with random pick and 401/429/529 failover (#1930)

External-agent chat

  • External-agent interactive/autonomous modes with incremental answer streaming (#1900)
  • Agent editor: switch an agent between internal/external types, with a folder breadcrumb (#1918)

Automations & workflows

  • Step-by-step debug mode for automations (#1871)
  • Per-step error feedback in the automation test panel (#1870)

Setup & operations

  • Zero-friction setup: guided CLI install, an onboarding wizard, and guided create flows (#1879)
  • Pre-migration volume snapshots and a new tale backup command (#1863)
  • Adaptive chat reliability and blue-green deploy tiers (#1914)
  • Cross-terminal clean-output rework for tale and bun run dev (#1904)

UI & UX

  • Settings full-width sweep, banner alerts, and login-UX refresh (#1910)
  • Refined settings layouts and onboarding-wizard UX (#1903)
  • Interactive PDF links and a branch-aware automation canvas (#1912)
  • Settings migrated to a left-rail sidebar across all pages (#1839)
  • Model capability details in an info popover (#1885)
  • Clearer notifications with locale-safe actor names (#1876)
  • Org deletion moved into the settings danger zone (#1891)

⚡ Performance

  • Single-source chat timeline with reduced render churn (and a fix for the reaped-turn error) (#1906)
  • Cut cross-component round-trips in getOrganizationMember (#1898)
  • Provider request-body mapping and max_completion_tokens for reasoning models (#1905)

🐛 Fixes

  • Per-project task dedup, stopped-run step settling, and sandbox stream-idle recovery (#1929)
  • Surface the raw provider error and stop mislabeling provider param rejections as user errors in chat (#1894)
  • Knowledge-db local-dev wiring and pdfjs extraction in the Convex node runtime (#1902)
  • Stop a long document name from overflowing adjacent columns (#1901)
  • Derive the dev builtin-config catalog from TALE_CONFIG_DIR (#1893)
  • Recover stuck websocket auth on cold start and fix skeleton-mask sizing (#1873)
  • Gate RAG queueing on a shared indexability allowlist (#1853)
  • Route all pdfjs consumers through a shared loader, fixing a DOMMatrix indexing failure during PDF extraction (#1933)

📝 Other

  • Switched raw <table> usage to the shared Table component (#1882)
  • Added a Playwright E2E suite with a mock LLM and CI workflow (#1860)
  • E2E/test tooling, the Opengrep SAST gate, and package cleanup (#1883)
  • Weekly model-catalog sync (#1884)
  • Rewrote the subprocessor tables for EU/EEA AI processing (#1874)
  • Added the /release skill and a Claude Code chat-agent config (#1928)
  • Pruned the remaining standalone crawler/rag service references across compose, docs, README, and CI; the sandbox LLM gateway ships as a first-class llm-gateway service (#1931)
  • Added a regression test verifying the web client passes the Mozilla Observatory security-headers check (#1932)

Upgrade

Run tale upgrade to update the CLI, then tale deploy to apply the new version.

This release contains a multi-step governance data migration and a container topology change — review before deploying:

  • Governance policies move from the database to per-org JSON files (3 migration steps). Steps 1–2 are non-destructive (export to files + split staged DSAR changes into a dedicated table). Step 3 drops the legacy governancePolicies rows and is gated behind explicit operator confirmation during tale deploy; it is reversible (each row is snapshotted before deletion). Run it only after verifying the exported governance files look correct.
  • Knowledge/RAG topology change. The tale-crawler and tale-rag containers are gone; a new knowledge-db container holds the corpus. See the updated container-architecture and data-residency docs before upgrading a deployment with an existing indexed corpus.
  • New audit signing secret. TALE_AUDIT_SIGNING_KEY is auto-generated and written to .env during deploy if missing (the deploy preflight verifies it). Back it up with your other secrets and keep it stable across deploys.
  • If you used local RAG re-ranking, switch RAG_RERANKING_PROVIDER to api (see Breaking Changes).
  • If you scrape metrics, update any scrape config pointing at /metrics/crawler or /metrics/rag to /metrics/platform.
  • The sandbox LLM gateway is now a first-class llm-gateway compose service. Its management-API password (LLM_GATEWAY_ADMIN_PASSWORD) is auto-generated on deploy if missing; set LLM_GATEWAY_ADMIN_USERNAME / LLM_GATEWAY_ADMIN_PASSWORD only to pin your own values.

Contributors

@larryro, @yannickmonney, @AdeolaAdekoya, @Israeltheminer


Full Changelog: v0.2.84...v0.2.85