Changelog
v1.2.2 - 2026-06-23
Observability Analytics Fix
- Fixed
GET /v1/me/analytics/errors500 error: Querying model or tool errors returnedINTERNAL: querying model errorsdue to PostgreSQL rejecting aGROUP BY namethat referenced a column alias. Changed bothmodelErrQueryandtoolErrQueryinanalytics_store.goto use positionalGROUP BY 1.
Dashboard UX
- Contextual Help Sheet: Six pages (Observability Hub, Executions, Conversations, Prompt Registry, Audit Logs, Replay) now show a
Helpbutton in the page toolbar. Clicking it slides in a right-side panel with a tagline, key concepts, a guided tour launcher, and a link to the relevant docs page. - Page-local tours: Each of the six pages now starts a tour scoped to its own steps. Clicking
Touron Executions or Observability no longer redirects to the Ingestion Credentials page. - Tour preload:
driver.jsis eagerly imported on hook mount so the first tour click is instant instead of showing a load delay.
SDK Go v1.0.4 - 2026-06-18
Go SDK (v1.0.4)
- Resolved go get package resolution: Changed Go module path in
go.modtogithub.com/fact0-ai/fact0/sdk/goto align with monorepo subdirectory layout and support correct Go package resolution via git tags.
SDK v1.0.5 / v1.0.3 - 2026-06-14
Python SDK (v1.0.5)
- Fixed event_id preservation: Corrected a bug in the synchronous
AuditClient._validate_eventthat was unconditionally discarding user-suppliedevent_idparameters, which broke custom idempotency keys.
Go SDK (v1.0.3)
- Resolved response body socket leak: Fixed a file descriptor/socket leak inside
client.go’s HTTP retry loop by ensuring the HTTP response body is closed immediately on each attempt rather than being deferred until the enclosing function returns.
v1.2.1 - 2026-06-13
LLM Traces Dashboard Page
- New LLM Traces page added to the dashboard (
/dashboard/llm-traces) and the public demo (/demo/dashboard/llm-traces). - Surfaces model invocation spans with token counts, latency, prompt/completion previews, and model metadata extracted from both native SDK spans and OpenTelemetry GenAI semantic conventions.
Database-Level Audit Immutability (Migration 023)
- Added PostgreSQL trigger function
audit_events_reject_chain_changesthat enforces immutability on all audit event data columns — includingactor_email,resource_name, andmetadata— in addition to the previously protected hash-chain columns. - In re-anchor mode (controlled by the
fact0.reanchor_modesession GUC) onlyhashandprev_hashmay be recomputed; all data columns remain frozen even during re-anchoring. - Run
make migrate-upor apply023_immutable_audit_columns.up.sqlagainst your database to activate.
Share Link Token Reveal UI
- Settings → Share Links now shows a one-time Reveal token button per link.
- The full bearer token (
shr_ULID_SECRET) is fetched on demand and displayed in a masked, copy-to-clipboard field — it is never stored in the browser or sent before the user explicitly requests it.
Bug Fix: JWT Audience Validation Regression
- Reverted an over-strict audience (
aud) check introduced in the previous commit that incorrectly required anaudclaim in every JWT. Better Auth’s JWT plugin sets onlyazp; theaudfield is not emitted. All dashboard sessions were returning401 invalid or expired tokenafter the bad change. Fixed by restoring the originalazp-only allowlist check.
OpenTelemetry Instrumentation
- Added
web/instrumentation.tsto capture Next.js server-side traces via@vercel/otel, routing them to the Fact0 OTLP endpoint for unified trace storage alongside agent telemetry.
Evidence Pack Public Keys
- Ed25519 public keys are now embedded in the manifest of every exported PDF / ZIP evidence pack, enabling recipients to verify the digital signature offline without contacting the Fact0 API.
SDK v1.0.4 - 2026-06-13
Python SDK
- Async telemetry client (
AsyncTelemetryClient): fullyasyncio-compatible telemetry client with an async background worker queue, async execution and span context managers (async with client.telemetry.execution(...) as ex), and properawaitchains throughout. - Fixed generic type annotations:
queue.Queueandasyncio.Queue/asyncio.Taskdeclarations now carry explicit type parameters (Queue[Any],Task[Any]) to satisfymypy --strict. No runtime behaviour change. - Docs:
sdk/python/async.mdxupdated with async telemetry examples and a FastAPI lifespan pattern.
v1.2.0 - 2026-05-31
GDPR-Compliant Full Purge
- Administrative Hard Delete User functionality is now fully integrated into the Founder Console.
- Purges all teammate profiles, owned organization workspaces, api credentials, OTel traces/spans/execution DAGs, and compliance-grade audit logs in a single ACID SQL transaction.
Stripe & SaaS Plan Quotas & Secure Gating
- Hardened multi-tenant subscription enforcements across the Go API and Next.js layers:
- Free: Capped at 1 team seat, 1 active share link, 6 Spotlight AI copilot queries/month, 5 PDF/ZIP evidence exports per month, and 30-day data retention.
- Pro: Capped at 5 team seats, unlimited active share links, unlimited Spotlight AI copilot queries, 50 PDF/ZIP evidence exports per month, and 1-year data retention.
- Team: Capped at 10 team seats, unlimited active share links, unlimited Spotlight AI copilot queries, 200 PDF/ZIP evidence exports per month, and 7-year data retention.
- Enhanced Visual Gating Security: Premium lock screens and glassmorphic blurs are fully deployed on Free tier executions and replays. Sensitive telemetry nodes, spans, and replay frames are physically blocked from server-side fetches on Free accounts, ensuring zero data footprint in browser memory to block DevTools inspection bypasses.
Spotlight AI Copilot History & Conversations
- Conversation History Panel: Integrated a premium glassmorphic history sidebar enabling users to browse and resume all previous chat transcripts persisted in PostgreSQL.
- Multi-Session Management: Added “New Chat” and “Session Switching” buttons to header navigation with dynamic real-time JWT refreshing and session synchronization.
- Dynamic Quota Tracker: Message counts sync immediately in real-time upon AI completion, and quota exhaustion is clearly parsed into polished Upgrade call-to-actions.
Transactional Email Upgrades
- Aligned default transactional email template delivery to
yash@fact0.iowith automatic, direct reply-routing.
SDK v1.0.3 - 2026-06-10
Python SDK
- Relaxed the package dependency version constraint for
requestsfromrequests>=2.31,<3torequests>=2.28,<3to avoid environment version conflicts for downstream packages.
SDK v1.0.2 - 2026-05-26
All SDKs (Python, TypeScript, Go)
- API origin defaults to
https://api.fact0.io- removedFACT0_BASE_URLenv var - Override via
base_url/baseUrl/BaseURLin client config (local dev or private deployments)
v1.1.0 - 2026-05-24
OpenTelemetry Native
Fact0 is now OpenTelemetry native. Send traces from any OTel SDK or Collector with zero code changes.- OTLP/gRPC receiver on port
:4317(IANA-registered default) - OTLP/HTTP receiver at
/v1/otlp/v1/traces - Smart span classification: GenAI semantic conventions (
gen_ai.*) →MODEL_INVOCATION, tool attributes →TOOL_CALL, database/HTTP spans auto-classified - GenAI enrichment: Prompt/completion extraction from span events, token usage, temperature, and model metadata
- Exception enrichment: Full stack traces from OTel exception events
- API key authentication via
Authorizationheader or OTelheadersconfig
Environment variables
FACT0_OTLP_HTTP_ENABLED- enable OTLP/HTTP receiver (default:false)FACT0_OTLP_GRPC_ENABLED- enable OTLP/gRPC receiver (default:false)FACT0_OTLP_GRPC_PORT- gRPC listener port (default:4317)
v1.0.0 - 2026-05-23
Python (fact0-sdk)
- First public release on PyPI as
fact0-sdk(pip install fact0-sdk,import fact0) - Unified client with
auditandtelemetrymodules - Background batching, async client, dead-letter support, LangChain/FastAPI integrations
- PyPI name is
fact0-sdk(notfact0) - the bare name conflicts with an existing package on PyPI
TypeScript (@fact0/sdk)
- Audit + telemetry HTTP clients for Node.js
- Published to npm at
@fact0/sdk@1.0.0
Go (github.com/fact0-ai/fact0/sdk/go)
- Native Go client with audit and telemetry modules
- Retries on 429/5xx, configurable timeouts
Documentation
- Mintlify site at docs.fact0.io
- OpenAPI 3.1 reference for Audit and Telemetry APIs (production server:
https://api.fact0.io)
Environment variables
FACT0_API_KEY; API origin defaults tohttps://api.fact0.io(override via SDK config)