fleet-prime-agent
Week of August 17 — Fleet Prime Agent
New features
Fleet Prime Agent — self-improving RLM agent with persistent sessions and a standalone web UI Fleet Prime Agent is a new product in the Qredence suite. Prime Agent runs as a daemon-backed agent with persistent IPython-backed sessions, subagent spawning viarlm, and a standalone Qredence web UI. Sessions support branching, tool cards render every tool call inline, and streaming chat flows through the typed AgentSessionEvent / ChatStreamEvent / AgentMessage contracts. See Introduction to Fleet Prime Agent and Getting started.Bring-your-own provider and model selection
Prime Agent’s AI layer abstracts providers so you can pick your provider and model per session, including OAuth sign-in for hosted providers and MCP servers for extending the tool surface. See Providers and models, OAuth, and MCP.Coding agent with CLI, interactive mode, skills, and extensions
The bundled coding agent ships a CLI, an interactive mode, a skills system, extensions, and a refinement loop, all backed by a session runtime that persists conversation and IPython state across runs. Trigger refinement or sign-in with slash commands (/refine, /login). See Slash commands, Sessions and branching, and the coding agent overview.Daemon protocol and web API
Prime Agent exposes a daemon protocol for local integrations and a web API for the standalone UI, both documented with request/response shapes and streaming semantics. See Daemon protocol and Web API.Installer and release pipeline
A one-shot installer sets up the runtime, and the release pipeline publishes signed builds for the daemon, CLI, TUI, and web surface. See Installer and Release pipeline.fleet-rlm
Week of August 15 — Fleet-RLM 0.7.0
New features
Policy-controlled MLflow tracing across profiles Fleet now wires MLflow tracing directly fromconfig/fleet.toml policy: managed profiles export to a Databricks destination, and interactive profiles export to the supervised local MLflow server that fleet cli runs on 127.0.0.1:5001. At app boot the runtime applies set_tracking_uri, set_experiment, and mlflow.dspy.autolog() from the resolved policy, then opens a fail-soft fleet_turn root span on every live Turn. Managed profiles read FLEET_MLFLOW_EXPERIMENT_NAME, FLEET_MLFLOW_TRACE_CATALOG, FLEET_MLFLOW_TRACE_SCHEMA, FLEET_MLFLOW_TRACE_TABLE_PREFIX, and FLEET_MLFLOW_TRACING_SQL_WAREHOUSE_ID; benchmark profiles keep tracing off. See Observability and Configuration reference.Operator-facing traceId on Turns
Live Turns now carry a traceId on the existing SSE messageMetadata, on TUI run status, and on durable assistant UI metadata, so operators can jump from a Turn straight to its DSPy trace without new SSE chunk types or Turn-path coupling. Export remains fail-soft — a broken tracing destination never fails a Turn.Updates
- DSPy pinned to
3.3.0. The native Fleet RLM integration is migrated from3.3.0b1to the final DSPy3.3.0release, preservingmax_iterationswhile adapting to DSPy’s finalized construction and caller-owned interpreter contract. Native Turns, live per-iteration observation, recursive children, and deterministic test composition retain their event and cleanup behavior. Fleet no longer projects a second token-leveldspy.streamifyprotocol. See DSPy integration. fastapi[standard]bumped to==0.141.1. Takes the 0.140.x dependency-solver memory refactors and SSE/streaming endpoint fixes. Schema generation is byte-identical for the routed API surface, soopenapi.yamland the pi-tui generated types are unchanged.- Daytona SDK bumped to
==0.202.0. Picks up the Daytona event-subscription expiry-worker fix and the 0.201.0/0.202.0 SDK additions with no code changes.httpx2is re-locked at2.9.1. - Provider/profile matrix aligned with
config/fleet.toml. Interactive profiles (daytona,daytona-recursive) use OpenCode Go with 16,000-token roles; managed and benchmark profiles use the Databricks AI Gateway with 8,000-token roles. The profile matrix and.env.exampleresolve credentials from the selected policy instead of assuming one provider. - Bounded no-progress repair in the Daytona interpreter. A repeated identical interpreter action that makes no progress now returns one bounded repair message (“Repeated interpreter action produced no progress…”) instead of terminating the Turn immediately. Only a second consecutive identical repeat raises
RunNoProgressError. Empty and oversized intermediate code keep their direct repair messages, and any different action resets the counter. Models gain one bounded recovery step on repetitive loops before the Turn is stopped. - Required pi-tui install step.
uv syncdoes not install the terminal client’s Node dependencies. Runpnpm --dir tools/fleet-tui install --frozen-lockfilebeforefleet cli. See Install fleet-rlm.
qredence-plugins
Week of August 10 — Qredence Plugins catalogue
New features
Qredence Plugins — dual-target plugin catalogue for Claude Code and OpenAI Codex Qredence Plugins is a new catalogue of plugins that install into both Claude Code and OpenAI Codex from a single marketplace. Each plugin gives a coding agent a focused operating mode: auditing repo readiness, optimizing evaluation harnesses, building research wikis, or orchestrating issue-driven work. Add the marketplace withclaude plugin marketplace add https://github.com/Qredence/qredence-plugins or codex plugin marketplace add https://github.com/Qredence/qredence-plugins, then install the plugin you want. See Introduction to Qredence Plugins and the quickstart.Four installable plugins in the initial catalogueharness-engineering— audits repo legibility, scaffolds durable repo docs, and adds validation lanes and drift controls so agents work with stronger guardrails.meta-harness— scaffolds a workspace, validates candidateharness.pyfiles, and runs outer-loop search across prompt, retrieval, parsing, and memory strategies.rlm-wiki— wraps Fleet-RLM with a Daytona-backed markdown wiki that ingests URLs, files, PDFs, and transcripts and answers questions from compiled knowledge.symphony— reference Symphony service that polls Linear issues, creates per-issue workspaces, and runs Codex app-server sessions governed by a repositoryWORKFLOW.md.
development— bundlescross-examinefor plan stress-tests,data-viz-rendererfor HTML and SVG charts, andskill-evaluatorfor scoring local skills.legal— ships thetos-clause-scannerskill for consumer-perspective review of Terms of Service, user agreements, and privacy policies.autoresearch-dspy— ratchet-style autonomous experiment loops on DSPy 3.1.3 anddspy.RLM, with confidence-aware classification scoring via the GEPAConfidenceAdapter.
gepa-omni
Week of August 3 — GEPA Omni follow-ups
Updates
GEPA Omni now targets any OpenAI-compatible Chat Completions endpoint Both the GEPA proposer and the native Omni agent runner (AutoResearch, Meta-Harness, and Best-of-N) now speak a single OpenAI-compatible Chat Completions boundary instead of provider-specific paths, so you can point Omni at any Chat-Completions-compatible model — including the Neon AI Gateway or your own hosted OSS model — without patching the plugin. Fleet Pi compatibility is preserved, token budgets and staged workspace payloads are validated per proposal, and concurrent proposals stay isolated. See the GEPA Omni quickstart and API reference.Bug fixes
- Interactive setup gate for missing model and base URL. The
gepa-omni-skillnow prompts once through the skill surface whenOMNI_MODELorOMNI_BASE_URLis missing, keeps the prompted values process-scoped, and never asks for API keys inside chat — keys must still come from the environment or your secret manager. Non-interactive preflight behavior is unchanged, so CI runs still fail fast on missing config. See GEPA Omni quickstart and Gotchas.
gepa-omniskillsfleet-reasoner
Week of August 3 — Three new products
New features
GEPA Omni — Agent Plugins 1.0 optimizer for any scorable text artifact GEPA Omni packages the GEPA Anything optimization stack as an Agent Plugins 1.0 plugin. Write an evaluator that scores a candidate and explains why it failed, and Omni’s two-phase workflow runs three exploration engines (GEPA, AutoResearch, Meta-Harness) in parallel before handing the best candidate to a fresh continuation engine. Install through the Codex marketplace withcodex plugin marketplace add Qredence/gepa-omni and invoke the shipped gepa-omni-skill on prompts, programs, configurations, schemas, SQL, regex, plans, or agent instructions. See Introduction to GEPA Omni.Qredence Skills — 62 Figma agent skills installable with skills.sh
Qredence Skills is a curated catalogue of practical Figma design and product skills for AI agents. Each skill is a single SKILL.md with a trigger description and an evidence-backed workflow, grouped by job across accessibility, design systems, components and code mapping, layout, prototyping and motion, and more. Install with npx skills@latest add qredence/skills, pick the skills and target agents, and invoke by name or task description. See Introduction to Qredence Skills.Fleet Reasoner — Qlaw reasoning engine on DSPy 3.3.0
Fleet Reasoner (qlaw-dspy) re-implements Qlaw as a compilable, evaluable program on DSPy 3.3.0. Every layer is a typed dspy.Module: seven optimizable lenses (SemanticInterpreter, Decomposer, OntologyArchitect, TrajectoryStrategist, Critic, GroundingEnricher, Explainer), a single ReasoningEngine module for the Selection → Routing → Invocation → Expansion → Critic loop, and a multi-turn dspy.ReActV2 chat agent with lenses-as-tools. Ships with a FastAPI + SSE server, a tldraw web frontend, and per-lens trainsets so every tier is MIPROv2 / BootstrapFewShot / GEPA optimizable and Refine-validated. See Introduction to Fleet Reasoner.fleet-pi
Fleet Pi — Named OpenAI-compatible instances
New features
Multiple named OpenAI Chat Completions providers per user Each user can now save several OpenAI-compatible Chat Completions endpoints in parallel — for example one instance for OpenCode Zen and another for Nebius — instead of overwriting a single BYOK slot. Each instance carries its own display name, base URL, model ID, and API key, and shows up as a distinct row in the config panel and the model picker. Deployed chat encrypts them in Postgres; local anonymous chat persists them in a gitignored.fleet/providers.json file store. The default OCC slot still exists and still takes precedence over the platform Neon AI Gateway. See Named OpenAI-compatible instances.Updates
- Named instances work in local anonymous chat. Fleet Pi now picks the storage backend at runtime: Postgres
pi_user_providersfor signed-in deployed users, and a per-project.fleet/providers.jsonfile store for local anonymous chat. OCC-family instances may point athttp://localhoston local dev surfaces (useful for Ollama or LM Studio); deployed chat keepshttps://enforced at both save time and runtime registration. - Broken named OCC instances surface as “Not configured”. If a named instance’s stored API key can’t be decrypted or its base URL fails the safety checks, Fleet Pi now skips registration with a warning diagnostic and marks the row as Not configured in Settings — the model picker no longer advertises endpoints that would fail at request time. See Named OpenAI-compatible instances.
- Daytona sandbox sync stays on the default OCC slot. Additional named OpenAI-compatible instances live in the chat runtime’s provider store and are not injected into the user’s Daytona sandbox. Sandbox tool calls needing one of those endpoints go through the chat runtime, not directly from the container. See Provider credentials in the sandbox.
fleet-pi
Week of July 27 — Fleet Pi
New features
Neon AI Gateway as the default authenticated chat backend Signed-in users on deployed environments now get working chat immediately after login — no BYOK required. Fleet Pi routes authenticated chat through the Neon AI Gateway as the platform OpenAI-Chat-Completions backend, withqwen35-122b-a10b enabled as the primary model and gpt-oss-120b also available. Local dev and anonymous chat still default to Google Gemini (gemini-3.5-flash). See Neon AI Gateway.BYOK takes precedence over the platform Gateway
Users who save their own OpenAI-Chat-Completions provider in the in-app config panel continue to hit their own endpoint. Legacy OCC records are only migrated to the platform Gateway shape when the Gateway is active and the user has not brought their own credentials. See BYOK precedence.Updates
*.neon.techhost allowlist on the Gateway URL. Fleet Pi normalizes the Gateway base URL to a single/v1suffix and rejects any host that does not resolve to*.neon.tech, so a misconfigured variable can never route chat to an untrusted origin. See URL shape.- Gateway credentials scrubbed from the process environment.
NEON_AI_GATEWAY_BASE_URLandNEON_AI_GATEWAY_TOKENare captured into process memory once at boot and then deleted fromprocess.env, so agent shell tools cannot read the token by inspecting environment variables at runtime. - Tightened deployment readiness gate.
pnpm verify-deployment-readinessnow validates thatNEON_AI_GATEWAY_BASE_URLis a well-formed, allowlisted Gateway URL — not just present. Deploys fail closed on a malformed or off-allowlist value instead of silently shipping broken chat. See Readiness gate.
fleet-rlm
Week of June 29 — Fleet-RLM 0.6.2
New features
Bring-your-own-key (BYOK) LLM provider profiles Hosted deployments runningAUTH_MODE=neon can now bind their own planner and delegate LLM credentials per tenant/user. API keys are encrypted at rest with Fernet under FLEET_SECRET_ENCRYPTION_KEY, and responses only ever return has_api_key plus a masked preview — plaintext keys never cross the API surface, and the runtime does not mutate the process environment to route requests. See Configuration — Auth modes and HTTP API — LLM provider profiles.Per-workspace encrypted Daytona credentials
PATCH /api/v1/runtime/settings under AUTH_MODE=neon now persists each workspace’s DAYTONA_* keys as encrypted workspace_runtime_settings ciphertext instead of returning 403 forbidden. Chat and runtime paths resolve the per-user Daytona config first and fall back to the server-level env only if none is set. Non-Daytona keys remain local-only. See HTTP API reference.LiteLLM custom-provider opt-in hint
Two new environment variables — DSPY_LM_CUSTOM_PROVIDER and DSPY_DELEGATE_LM_CUSTOM_PROVIDER — let OpenAI-compatible bare-model endpoints pass an explicit custom_llm_provider hint to LiteLLM. The runtime no longer force-sets custom_llm_provider="openai" for every bare model with an api_base, so Anthropic and other non-OpenAI providers stop receiving OpenAI-format requests. See Configuration — Required: LLM.PATCH /api/v1/runtime/settings reports skipped keys
Responses now include a skipped field listing masked-round-trip keys that were intentionally not persisted, so clients can distinguish updated keys from ignored no-op saves.Updates
- FastAPI pinned to
==0.139.0. Installs are reproducible on the current validated FastAPI release instead of floating forward against a>=0.138.2floor. litellmpolicy hardened. LiteLLM is installed only as DSPy’s transitive dependency;[tool.uv].override-dependenciesstill pinslitellm>=1.87.0to close 7 documented CVEs. A parse-time invariant test fails iflitellmis ever re-added to direct deps or removed from the override pin.- Neon multi-tenant migrations.
llm_role_bindingsis now UUID-PK’d and scoped bytenant_id/user_id/workspace_id; theworkspace_runtime_settingsunique constraint is tightened to(tenant_id, workspace_id)so the settings upsert is tenant-aware. - README rewritten around the actual routed surfaces (
/app/workspace,/app/optimization,/app/volumes,/app/settings) and the currentmake/pnpmvalidation lanes.
Bug fixes
- Legacy XOR-encrypted profile ciphertext keeps decrypting. After rotation, the runtime tries
FLEET_SECRET_ENCRYPTION_KEY,DEV_JWT_SECRET, andchange-mein turn until a stored row decrypts — old rows are no longer bricked by rotating in a real Fernet key. - No cross-tenant BYOK leak from the connectivity probe.
POST /runtime/tests/lmno longer mutates the sharedLmDeps.planner_lmsingleton; the per-user planner is invoked directly, so a smoke test can never swap another user’s in-flight chat onto a foreign BYOK LM. - Decrypt failures are observable.
GET /api/v1/runtime/settingslogs when a storedDAYTONA_API_KEYfails to decrypt (without leaking the value), and the PATCH path treats an empty incoming value for a key with an existing stored credential as a no-op — a failed GET can no longer enable an empty save that wipes the stored key.
fleet-rlm
Week of June 17 — Fleet-RLM 0.6.0
New features
Workbench sidepanel with Trajectories, Graph, and Volume tabs A workspace-local collapsible sidepanel now sits alongside the chat.Trajectories renders the session trace timeline, Graph renders a React Flow parent/child span view backed by persisted MLflow/debug spans, and Volume embeds a searchable Daytona volume tree with resizable desktop split and inline file preview. Chat stays the primary surface; the sidepanel starts closed and can resize up to 75% of the workspace width. See Concepts — Observability.Per-trace performance summaries
The session trace debug contract now carries span durations, token counts, output sizes, selected-skill metadata, and adapter fallback signals per trace. The sidepanel can diagnose slow or noisy RLM runs directly from the same durable trace lookup used by the timeline and graph.Active skill injection into the sandbox
Selected scaffold-skill markdown is injected as a sandbox variable for RLM turns, document turns, and workspace turns — the REPL sees the skill without stuffing full instructions into every model prompt.Bounded RLM action-generation token budget
Operators can cap the action-prompt token budget separately from REPL output truncation. The effective budget is exposed in runtime settings metadata and attributed on every trace so slow turns can be traced back to their action-generation configuration.Updates
- GEPA is now the only supported public optimizer. MIPROv2 was removed from the unified optimization pipeline. CLI, API, manifests, and the Optimization UI all target one optimizer contract. See the CLI reference.
- Unified
RuntimeEventstreaming. Runtime, persistence, and Web UI consumers now share one typed streaming contract for execution start, step, and completion frames — the public Workbench frame shapes are unchanged. - Hardened session trace lookup.
TrajectoriesandGraphnow populate from live session traces after a message completes, even before the frontend has a durable session id — trace lookup resolves both durable chat-session ids and runtime websocketexternal_session_idvalues. - Frontend feature-module reorganization. Feature entrypoints are now the public boundary; routes and layout consume stable feature contracts and import-boundary linting blocks deep coupling. shadcn-style primitives were migrated from Radix wrappers to Base UI primitives while preserving the existing button, tooltip, popover, dialog, menu, scroll-area, and toggle contracts.
- Compact local chat-history persistence. Local storage now stores session previews and durable session ids instead of full rendered transcripts, so quota failures never break chat saves.
- RLM action generation compacted. Long REPL histories are compacted before action generation and driven through
JSONAdapter, so long-running sessions spend fewer tokens on prior tool output and avoid avoidable chat-adapter fallback retries.
Removed
- MIPROv2 public optimizer surface. Review bundles, CLI flags, and API requests no longer advertise a second optimizer.
- Retired Tool UI helpers. Option-list and shared action helpers were removed after Agent Elements became the canonical tool-rendering path.
Notes
GET /api/v1/optimization/runs/compareremains API-ready; the Compare tab UI is deferred to v1.1.
fleet-pi
Week of June 11 — Fleet Pi 0.5.0
New features
hax-design consolidationpackages/ui is renamed to packages/hax-design and is now the single source of truth for agent-elements, OpenUI, Fleet Pi chat surfaces, shadcn primitives, and shared Pi protocol types. apps/web routes are thinner, and the config panel is split into focused modules. Forks must update imports from @workspace/ui to @workspace/hax-design. See Project structure.Google Gemini as the default LLM provider
The default model is now gemini-3.5-flash through Pi’s google provider. Extensions receive mode-aware context (ctx.mode, getSystemPromptOptions()). Amazon Bedrock remains available via AWS credentials — set provider and model in .pi/settings.json or environment variables if you need it. See Configuration.Neon Postgres session mirror
Setting FLEET_PI_CHAT_DATABASE_URL mirrors Pi session entries, run events, tool executions, and file mutations into Neon tables prefixed with pi_. JSONL remains the source of truth and mirror failures never break streaming. Apply migrations with pnpm chat:migrate. See Configuration and Runtime SDK integration.Web access tools in Agent mode
The new pi-web-access package wires web_search, fetch_content, and code_search into Agent mode end-to-end. See Chat modes.Updates
- Memory recall improvements. Workspace memory content is now enriched and retrieval is prompt-aware for better long-session context.
- Question bar UX. New
usePendingQuestionBarhook andsuppressQuestionToolprop onAgentChatfor cleaner Plan-mode question handling. - Security and reliability. Critical and high-severity issues fixed and vulnerable transitive dependencies patched.
- Documentation. Comprehensive docs added for the UI package, configuration, data models, dependencies, and security posture.
Breaking changes
- Import path rename:
@workspace/ui→@workspace/hax-design(package directory:packages/ui→packages/hax-design). - Default LLM provider changed from Amazon Bedrock to Google Gemini.
- New optional environment variables for the chat mirror:
FLEET_PI_CHAT_DATABASE_URL,FLEET_PI_CHAT_MIGRATION_DATABASE_URL.
fleet-rlm
Week of June 11 — Fleet-RLM 0.5.50
New features
MIPROv2 as an optional offline optimizer The unified offline optimization pipeline now accepts MIPROv2 alongside the default GEPA backend. Pass--optimizer miprov2 to fleet-rlm optimize, or send "optimizer": "miprov2" in the body of POST /api/v1/optimization/runs. CLI, API, MLflow run metadata, and review bundles share the same runner, so existing GEPA tooling keeps working unchanged. See the DSPy integration guide and the CLI reference.Native dspy.RLM large-input support
Large documents and workspace context now ship to the sandbox through DSPy’s upstream SandboxSerializable contract. Use LargeDocument or WorkspaceContext from fleet_rlm.runtime.sandbox_types on a signature input field, and dspy.RLM injects the payload into the REPL as a native Python dict while the LM only sees a short preview. Custom signatures that previously relied on Fleet-maintained variable-mode wrappers should switch to these types. See DSPy integration.Updates
- DSPy pinned to
3.3.0b1. Fleet now depends on the upstream DSPyRLMandSandboxSerializablecontracts directly; the local DSPy monkeypatch modules have been removed. Programs that build modules throughfleet_rlm.runtime.moduleskeep working without changes. - Unified
dspy.streamifychat streaming. Direct, tool-using, and recursive RLM turns now share one WebSocket replay path withresponse-first DSPy signatures. The public Workbench WebSocket frame shapes are unchanged — existing clients require no updates. See Observability — WebSocket execution events. - Centralized DSPy observability callback registration. MLflow and PostHog callbacks are now registered once through a shared registry that stays lazy, deduplicated, and visible to worker-thread DSPy contexts. Optional observability stays optional — no configuration changes are required.
Removed
- Variable-mode wrappers and local DSPy patch modules. Retired together with archived optimization/history frontend clients and legacy bare WebSocket frame parsing. The supported surface is the generated OpenAPI client and the canonical WebSocket event envelope.
fleet-rlm
Week of May 23 — Fleet-RLM 0.5.40
New features
Canonical API error envelope across all HTTP and WebSocket routes Every error response on/api/v1/* now returns the same { code, message, detail } JSON shape, including FastAPI validation errors and unknown-route 404s served by Starlette. Branch on the stable code field instead of parsing message. See HTTP and WebSocket API.Volume access security boundaries
GET /api/v1/runtime/volume/tree and /api/v1/runtime/volume/file now enforce explicit canonical roots and return 403 forbidden for paths outside them. The tree endpoint accepts a new max_entries parameter (default 200, max 1000) and reports max_depth, max_entries, and entries_returned so clients can tell when a listing was clipped. File previews include sha256, encoding (utf-8, utf-8-lossy, or binary), and a binary flag so you can deduplicate or short-circuit on non-text files. See Volume access boundaries.Offline-only DSPy module flag
GET /api/v1/optimization/modules entries now carry an offline_only field (default true) so optimization UIs know which modules can only be tuned through the offline endpoints, not from live traffic.Updates
- Health probe shape clarified.
GET /healthnow returnsstatus: "live"instead ofok: true. The legacyokfield has been removed. (HTTP API reference) - Readiness 503 carries component state.
GET /readynow returns the sameReadyResponsebody on503, so monitoring probes can read which component is missing or degraded from a failing response. The redundantplanner_configuredfield was removed — readplannerinstead. - Sandbox environment variables are redacted. The
env_varsfield on sandbox responses no longer surfaces raw secret values. - Recursive RLM delegation, DSPy signatures, and streaming contracts redesigned around clearer service boundaries while preserving the public Workbench WebSocket frame shapes.
- Daytona VFS and evidence substrate redesigned with explicit security boundaries between child workspaces, mounted volumes, and evidence staging. See Daytona runtime.
- CLI now emits structured errors matching the canonical API envelope. See the CLI reference.
Removed
- Memory API retired.
/api/v1/memory*is no longer part of the supported HTTP surface. Memory item browsing has been removed from the API navigation and OpenAPI schema. Clients that depended on listing memory items should migrate to the session endpoints under/api/v1/sessions/*.
fleet-rlm
Week of May 20
Updates
Fleet-RLM — decoupled WebSocket streaming runtime Turn execution no longer runs inline with the WebSocket handler. Each user message is processed in a background task that builds its own agent context and publishes execution events through a shared event emitter. The same emitter fans out frames to every subscriber on/api/v1/ws/execution and /api/v1/ws/execution/events, so a dropped or reconnected client no longer cancels the turn. No client changes are required — frame shapes are unchanged. See Observability and HTTP and WebSocket API.Fleet-RLM — Entra JWKS cache and joserfc token validation
AUTH_MODE=entra now uses joserfc instead of PyJWT for token verification and ships with a built-in JWKS cache (5-minute TTL) that falls back to the last-known keyset if Entra’s JWKS endpoint is unreachable. Bearer-token validation, tid/aud/iss enforcement, and tenant admission behavior are unchanged. See Deployment.Bug fixes
- Final assistant text no longer duplicated in replay. The terminal trajectory step now omits the planner’s intermediate thought, so reopening a session replays the assistant’s final response once instead of twice. (Sessions and persistence)
- Frontend WebSocket parser prefers
step.outputfor final frames. Execution-step envelopes withkind: "final"now surface the actual response text instead of the internal label.
fleet-rlmfleet-pi
Week of May 12 – May 19
New features
Fleet-RLM 0.5.3 — backend-driven runtime settings The Settings page now renders typed runtime options and diagnostics directly from backend descriptors, so available configuration always matches what the server actually supports. See Configuration reference.Fleet-RLM — “About this instance” panel A new Settings panel surfaces the running service version, environment, and feature flags so you can confirm exactly what’s deployed before filing an issue. Powered by the new/api/v1/info endpoint in the HTTP API reference.Fleet-RLM — MLflow observability and auto-assessment
MLflow span processors now emit richer trace metadata, and you can wire scorer schedules to run automated assessment loops over completed sessions. See Observability.Fleet Pi — Daytona sandbox integration
Pi chat modes can now invoke Daytona sandbox tools end-to-end, with webhook and client support added to the web surface and improved startup memory recall. See Chat modes and Runtime SDK integration.Updates
- Session titles auto-derive from the first user message when no title is set, so conversations get human-readable labels without manual renaming. (fleet-rlm)
- Workbench UI polish — refined sidepanel controls, event display, and composer prompt overhead for a cleaner workspace.
- Runtime stack alignment — Fleet-RLM is now tested and published against Daytona 0.176, DSPy 3.2.1, Pydantic 2.13.4, SQLModel 0.0.38, Psycopg 3.3.4, Typer 0.25.1, and Uvicorn 0.47.0. Update your environment to match — see Installation.
- Fleet-RLM 0.5.31 patch release with a synced OpenAPI schema for frontend and SDK consumers.
Bug fixes
- History page restored. Conversation titles and transcript replay now show correctly when the durable session store only contains placeholder rows — the History view falls back to local conversation history instead of rendering opaque IDs.
- Resilient analytics initialization. PostHog callback registration no longer fails in threaded environments; it retries under a settings lock when needed.
- Hardened recursive delegation. Remote document context, degraded child execution metadata, and chunk-document aliases are handled more defensively, so partial failures surface clearly instead of returning stale evidence. See Recursive RLM.
- Frontend dependency security patches applied to address Dependabot alerts.