AIDB 7.7.0 release notes v7

Released: 30 Sep 2026

AIDB 7.7.0 introduces built-in OpenTelemetry (OTel) observability: AIDB can now trace its own function calls, background workers, and SQL query execution, and store or forward that data as standard OTel traces, logs, and metrics. See Observability and Configuring AIDB parameters to get started.

The release also adds an MCP endpoint that serves AIDB's tool catalog to external MCP clients (see MCP endpoint), agent purposes that govern which Postgres role an agent's tool calls run as and record every enforcement decision (see Agents), and semantic knowledge base relationships and curation so text-to-SQL agents can join tables correctly (see Semantic knowledge bases).

AIDB 7.7.0 includes the following enhancements, changes, and bug fixes:

TypeDescription
EnhancementMCP endpoint: A new edb-endpoints server, shipped in the AIDB package and supervised by a background worker, serves the tool catalog to external MCP clients over streamable HTTP. Enable it with edb.endpoints_mcp_enabled = on. tools/list returns the live Tools Hub catalog read as the connecting Postgres role, and tools/call dispatches catalog tools through aidb.run_tool(), so Postgres grants decide what each client can run. See MCP endpoint.
EnhancementBuilt-in execute_sql tool over MCP: The endpoint provides a built-in execute_sql tool that runs a SQL statement as the connecting role. Result cells are rendered from their binary wire values, so output doesn't depend on session settings such as DateStyle, IntervalStyle, or bytea_output. See Result encoding for execute_sql.
EnhancementOpenTelemetry client: AIDB now emits traces, logs, and metrics for its own function calls and background workers as OpenTelemetry data. Write it to a queryable table, forward it to a collector, or send it to the server log — see Configuring AIDB parameters — OpenTelemetry tracing for the available destinations.
EnhancementAgent Hub and Tools Hub tracing: Agent and tool calls are now traced with gen_ai.* semantic-convention attributes plus custom aidb.* attributes (agent purpose, status, task and message IDs, MCP server name, transport, and session ID). See Observability — Traced attributes.
EnhancementBroader function coverage: OTel spans were extended to pipeline CRUD and execution, semantic knowledge base CRUD and search, model inference and maintenance, data processors, and volume operations.
EnhancementSQL query tracing: Traced calls now capture the SQL they execute in a db.query.text span attribute. Bound parameter values are included only when aidb.otel_capture_query_parameters is enabled.
EnhancementPostgreSQL session correlation: Every trace's root span now carries a db.postgresql.session_id attribute matching Postgres's own %c log_line_prefix format, so a trace can be correlated with the corresponding server log lines.
EnhancementStorage format: The database client can write trace, log, and metric payloads as JSON, raw OTLP protobuf, or both, controlled by aidb.otel_client_storage_format. aidb_otel.{traces,logs,metrics} split their old single data column into payload_json/payload_binary accordingly.
EnhancementGrouping indexes: aidb_otel.traces and aidb_otel.logs gained promoted, indexed columns for trace/span IDs, the PostgreSQL session, conversation, and MCP session identifiers, and the allowed/denied outcome of each purpose-enforcement decision, so you can filter and group without parsing the payload columns. See Observability — Schemas.
EnhancementExporter background worker: Forwards pending aidb_otel.* rows to an external OTLP/HTTP collector on a periodic tick, with per-row retry and backoff. Disabled by default; configure with aidb.otel_exporter_enabled and the related aidb.otel_exporter_* parameters.
EnhancementRetention cleaner background worker: Deletes aidb_otel.* rows older than a configurable retention window. Disabled by default; configure with aidb.otel_cleaner_enabled and the related aidb.otel_cleaner_* parameters, or trigger a pass immediately with aidb.run_otel_retention_cleanup().
Enhancementaidb_governance role: A new role, separate from aidb_users, for read-only access to aidb_otel.* and the manual retention cleanup function. It can also read the agent roster metadata in aidb.agents and aidb.purpose_registry, and it's the role that manages purposes. See Managing audit access.
EnhancementAgent purpose registry: A new aidb.purpose_registry view maps a named purpose to the Postgres role it runs as. Members of aidb_governance manage purposes with aidb.create_purpose(name, role, description), aidb.update_purpose(), and aidb.delete_purpose(); deletion is a soft retirement. An agent's purpose is resolved to its role at invocation time, so repointing a purpose takes effect on every agent that holds it, and an agent holding a retired purpose is refused rather than silently run as the caller.
EnhancementPurpose decision records: Every tool SQL execution run under a purpose-resolved role emits exactly one purpose_decision span with aidb.agent.decision.* attributes, including a decision_id that's also embedded in the error a denied caller receives. Denials are classified as role_not_found, not_role_member, engine_privilege_denied, or the new escalation_blocked (a SET ROLE, RESET ROLE, or similar attempt to step past the governed role). Pre-validation failures and the agent's SQL are included in the record. See Recording purpose-enforcement decisions.
EnhancementSemantic KB relationships, routes, comments, and query history: Semantic knowledge bases now store relationships between tables and columns, so text-to-SQL agents can look up how to join them instead of guessing from column names. Relationship candidates can be proposed, reviewed, and accepted; comments can be proposed and curated; and past queries can be imported as query history. See Relationships and Curation.
EnhancementSemantic KB audit log: Semantic KB operations are now recorded in a durable, extension-owned audit table that captures the operation, caller kind (Agent Hub, MCP, or direct), actor, and Agent Hub correlation IDs. Retention is controlled by the new aidb.semkb_audit_retention parameter (default 30 days).
EnhancementNew native tools: The Tools Hub gains catalog_list_sequences, catalog_list_extensions, explain_query (returns a statement's query plan without executing writes), and analyze_db_health (checks index health, connection count, vacuum and wraparound risk, sequence exhaustion, replication status, cache hit ratios, and unvalidated constraints, filtered by the caller's privileges). analyze_db_health is also callable directly as aidb.analyze_db_health(). See Native tools.
EnhancementEnable or disable model reasoning: The thinking inference option now turns extended reasoning on or off for llamacpp_generate, anthropic_messages, openai_responses, and OpenAI-compatible chat-completion providers such as NIM and OpenRouter, instead of only controlling <think> tag handling in the response.
EnhancementKubernetes Secret credentials: aidb.create_model() accepts a new credentials_k8s_secret argument, and aidb.import_mcp_tools() accepts headers_k8s_secret, to read credentials from a Kubernetes Secret mounted into the pod at use time. The new aidb.k8s_secret_allowed_path_prefix parameter restricts which paths can be read.
EnhancementLarge Object source columns: Table sources accept an aidb.lo (Large Object) column anywhere a BYTEA column is accepted, for example for image or OCR pipelines. A bare oid column is rejected. A missing or inaccessible Large Object fails just that row instead of aborting the whole batch.
Enhancementllama.cpp embedding prefixes: llamacpp_embeddings models accept query_prefix and document_prefix config options, so asymmetric embedding models (for example, nomic-embed-text) apply the prefix each side expects when embedding queries and documents.
EnhancementIntermediate destinations visible in pipeline views: A step's intermediate_destination configuration is now surfaced in the options column of aidb.pipelines, where it was previously stripped after creation.
ChangeAgents declare a purpose instead of a role: aidb.create_agent() and aidb.update_agent() take a purpose argument in place of role, and the aidb.agents.role column is replaced by purpose. The upgrade creates one purpose per distinct existing role and backfills it, so existing agents keep running as the same role. Role membership is no longer checked when the agent is created or updated; it's checked when the agent is invoked.
ChangeStricter create_model config validation: aidb.create_model() now validates config against the provider's schema and rejects unknown fields instead of silently dropping them. For local providers, the model config field is renamed to hf_model to make clear it names a Hugging Face repository; model still works but logs a deprecation warning.
Bug fixUpgrade from 7.5.0 repaired: Upgrading from 7.5.0 failed with cannot change name of input parameter "limit" on the semantic KB search functions. The upgrade script now drops and recreates them, preserving their grants.
Bug fixSemantic KB on mixed-case and dotted identifiers: The DDL event handler crashed on tables or columns with quoted identifiers such as "MyTable" or names containing a dot. Names are now resolved from the catalog instead of parsed from the object identity string.
Bug fixBackend crash from worker-thread logging: A log message emitted from a local-inference or MCP worker thread could abort the backend with postgres FFI may not be called from multiple threads. Off-thread messages are now buffered and replayed on the backend thread.