Console: desk cost CSV for month-end close
Usage export now includes desk, project, route family (GPT or Gemini), and residency region on every row. Finance can close the month without a warehouse join. See Usage.
Weekly releases from January 2024 through Eridian 3.0. The public record of the control plane: majors, minors, and patches.
100 releases · January 2024 to September 2026
24 releases
Usage export now includes desk, project, route family (GPT or Gemini), and residency region on every row. Finance can close the month without a warehouse join. See Usage.
Deletion is a control action. Retention clocks, legal hold, and dual-control purge now share the same signed record as the original inference. Expired objects emit retention.elapsed. Holds block purge until the second operator clears them.
Deliveries whose timestamp skew exceeds 300 seconds are now rejected and retried. Consumers must verify v1 HMAC before acting. See Webhook signing.
@eridian/sdk now stamps Idempotency-Key on mutating inference and governance calls unless you pass one. Retries reuse the same key for 24 hours. See Idempotency.
Eval runs export a signed PDF plus JSON: suite version, dataset pin, GPT and Gemini scores, pii_leak, and the actor who promoted the template. Built for a model-risk committee that will not open a notebook. See Evaluations.
Added iban to the default PII entity list for EU-West. Masks persist into the audit event as entity counts, not values. Existing projects can opt out via pii_config.entities.
Enterprise tenants can export a dated examiner pack: policy version, route, redaction proof, approvers, and retained output. Packs are residency-pinned and SHA-256 checksummed. See Evidence export.
sdk-go now cancels the upstream stream when the caller context ends. Partial tokens are not written to the cache. See Go SDK.
Semantic cache keys omitted region on a subset of Dubai pins after a 2.17 rollout. EU and US keys were never mixed. We invalidated the affected me-central-1 entries and included region in the key schema. Hit rate in Dubai returned to baseline within six hours.
Templates marked high_risk now return 403 dual_control_required with an approval_id until a second operator approves. Ordinary POST /v1/inference is unchanged. See Dual control.
List endpoints document starting_after, ending_before, and has_more with copy-paste examples for keys, audit events, and eval runs. See Pagination.
Enterprise can pin Customer Data at rest and primary inference to af-south-1. GPT and Gemini are in the pool. Fail-closed is the default. Johannesburg covers the African morning overlap with Dubai. See Regions.
quality_floor is now versioned with the routing policy. Edits require dual control on Enterprise. Fallback events below the floor emit route.quality_breach. See Routing.
Incident banners in the console link to the matching runbook, the last approval, and the region that served the call. See Runbooks.
eridian-sdk retries now preserve X-Eridian-Region and X-Eridian-Residency-Pin. A fail-closed pin no longer silently retargets US-East. See Python SDK.
The Eridian Terraform provider waits on dual-control gates during apply. eridian_approval can be referenced from CI. Changing allowed_models still requires a second operator. See Terraform.
GPT in EU-West returned 503s for 14 minutes. Fallback to Gemini held for eligible policies. Two legal workflows paused on dual control. No prompts were written outside eu-west-1. Customer notice went out at 16:40 UTC.
Desks can now set a monthly hard_stop independent of the project ceiling. Crossing it returns 429 budget_exceeded and emits budget.exceeded. Raises above the desk threshold require dual control. See Budgets.
Eridian 3.0 is the governance release. Dual control, eval gates, Terraform, evidence export, and residency fail-closed are first-class objects, not add-ons. Routing policy is a versioned control. GPT and Gemini remain the production families. Breaking: cache_config.scope global is removed; use region or project.
Keys with an expiry emit key.expiring_soon fourteen days out, then daily. The console lists last_used_at. Prefix remains eridian_sk_. See API keys.
ap-east-1 is generally available for Enterprise residency pins. Inference and cache stay in region when inference_pin is true. GPT and Gemini are in the pool. See Regions.
Gemini long-context is now selectable via family gemini where the order form authorizes it. Do not pin provider SKU strings. Version rolls appear on the audit event as eridian.provider_revision.
New Enterprise projects default inference_pin and fail_closed to true. A region disagreement returns 403 residency_violation. It does not silently re-route. See Regions.
Every inference.completed event now includes eridian.route (gpt or gemini) and eridian.provider_revision. Committees can reconstruct which revision served a live matter. See Audit log.
40 releases
Owners can export project members, roles, and last SSO assertion. The file is an audit artifact, not a convenience dump. Changes to governance:manage still require dual control.
Webhook subscriptions can now include approval.approved, approval.rejected, and policy.updated. Delivery is at-least-once for 24 hours. See Webhooks.
UAE PDPL mapping is now attached to the project residency record for Dubai pins. Customer Data at rest and primary inference stay in me-central-1 when inference_pin is true. The DPA subsection is dated 15 December 2025.
New eval suites include pii_leak by default. A non-zero score blocks template.publish when evals_required is true. See Evaluations.
Provider eridian-ai/eridian manages projects, routing policies, budgets, residency, and webhooks. Terraform does not send prompts to GPT or Gemini. See Terraform.
Risk now has a read-only committee view: policy version, eval pack, open approvals, and residency pin. No prompt text. Built for second-line review, not for operators.
A GPT region returned 503s for 11 minutes. Fallback held. Two legal workflows paused on dual control. No cache writes during the window. Customer incident report published the same day.
Changing project residency or raising a budget above the desk threshold now requires a second authenticated operator on Enterprise. The proposer cannot approve. See Dual control.
sdk-go honors Retry-After on 429 budget_exceeded and 429 rate_limited. It does not retry 403 residency_violation or dual_control_required.
API keys can now be budget-scoped and project-scoped at creation. governance:manage keys still require dual control in production. See API keys.
global cache scope now clamps TTL at 24 hours. Entries still include project and org in the key. Default scope remains project.
SDK pages now share the same first-call example: create a project, pin a region, run inference with model auto. See SDKs.
Fixed a 500 when structured_output schemas contained nested arrays deeper than two levels. Parse retries still cap at three.
Every delivery includes X-Eridian-Signature (t, v1). Secrets are shown once at create. Rotate via POST /v1/webhooks/:id/rotate. See Webhook signing.
The inference chart now overlays p50, p95, and p99 for the selected project and region. Colors match the rest of the console: violet, sky, mint.
Responses include X-RateLimit-Limit, Remaining, and Reset. Burst is per project, not per key. See Rate limits.
A consumer restart in May delayed inference.completed deliveries. We added duplicate-suppression on X-Eridian-Delivery-Id and a console backlog gauge. No events were dropped in the original window.
error.code is now a closed catalog: model_unavailable, residency_violation, dual_control_required, budget_exceeded, and the existing auth codes. See Errors.
Browser clients abort the inference stream when the document is hidden for more than 30 seconds. Server-side cache writes are skipped for aborted streams.
POST /v1/projects now accepts region, inference_pin, and cache_scope. Changing region after data exists still requires a later dual-control gate. See Projects.
Added `ip_address` to the default PII entity list. IP addresses are now detected and masked by default. Existing customers can opt out via `pii_config.entities`. Also fixed a bug where `structured_output` with nested arrays caused a 500 error.
The On-Call Assistant is now generally available. Your on-call engineer can query logs, check dashboards, and suggest mitigations in natural language. The assistant is powered by the Eridian inference pipeline and has full access to your observability stack. Available on all Enterprise tiers.
Added `global` cache scope. Cached responses can now be shared across projects within an organization. This is useful for multi-project deployments where the same prompts are used across teams. Opt in via `cache_config.scope: "global"`. Default remains `project`.
You can now define custom routing policies. Define your own cost/latency/quality weights, model preferences, and fallback chains. Policies are stored per-project and can be overridden per-request via `routing_policy`. See the Routing docs for the full reference.
The Regulatory Mapping feature is now generally available. Map your contracts to GDPR, SOX, Basel III, and MiFID II. The pipeline identifies which clauses are affected by which regulation and flags potential gaps. Available on all Enterprise tiers.
Eridian 2.0 is our biggest release yet. The full inference orchestration layer is now available: semantic caching, multi-model routing, RAG pipeline, PII redaction, structured output parsing, full-stack observability, and enterprise governance. Plus three new verticals: Eridian Dev, Eridian Legal, and Eridian Ops. This is the release that makes Eridian a platform, not a tool.
Hybrid (vector + BM25) scores are now clamped to [0, 1] before fusion. Technical queries no longer drown semantic hits on long statutes.
Added hybrid search (vector + BM25) to the RAG pipeline. Improves retrieval quality for technical queries where keyword matching outperforms semantic similarity. Configurable via `rag_config.search_mode: "hybrid"`. Default remains `"semantic"`.
OTLP export now forwards tenant-supplied authorization headers to the collector. Traces still exclude prompt text on ZDR projects.
Added automatic retry for structured output parsing. If the model's response doesn't match your JSON schema, Eridian retries up to 3 times with a corrective prompt. Reduces parse failure rate from 4.2% to 0.3% in our benchmarks.
Tightened account-number detectors against IBAN-like strings in EU-West. False positive rate on legal corpora dropped from 1.8% to 0.4% in the eval set.
Added OpenTelemetry OTLP export. Your Eridian inference traces can now be exported to any OTLP-compatible backend (Jaeger, Grafana Tempo, Datadog, Honeycomb). Configure via `observability.otlp_endpoint`.
Codebase Q&A now verifies Bitbucket webhook signatures before re-indexing. Failed signatures are dropped and logged as ingest.rejected.
Codebase Q&A is now generally available. Ask your codebase questions in natural language. Our RAG pipeline indexes your repo, retrieves relevant code, and generates grounded answers. Supports GitHub, GitLab, and Bitbucket.
Fallback events now always include the family that failed and the family that served. Empty model fields on route.fallback are closed.
Added configurable fallback chains. Define up to 5 fallback models per routing policy. If the primary model is down, over budget, or returns an error, the routing engine automatically fails over to the next model in the chain. Full observability for each fallback event.
POST /v1/inference accepts messages and input as aliases during the 90-day window. input is documented as deprecated. Removal date: 12 May 2025.
Eridian 1.0 is our first stable release. The core inference orchestration layer is GA: unified schema, multi-model routing, semantic caching, PII redaction, full-stack observability, and enterprise governance. Plus Eridian Dev (code completion, code review, test generation). We've processed 800B+ tokens in beta. Time to go GA.
Login now rejects SSO assertions with skew above 120 seconds. Customers with drifting IdP clocks were failing open. They now fail closed.
Prompt templates are now first-class objects with versions. Production traffic pins a version. Drafts cannot serve until a later eval gate exists.
36 releases
Type I is complete. Type II observation window starts January 2025. The report is not a marketing PDF. Request it from the security page.
A December reindex wrote 1536-d vectors into a 768-d collection for one customer. Queries failed closed. We rebuilt the collection and added a dimension check before upsert.
Cmd/Ctrl+K now switches projects in the console. The palette lists project id, region, and pin status.
Public docs now cover Bearer keys, X-Eridian-Project, and POST /v1/inference. See Quickstart.
Routing policies may include Llama and Mistral behind GPT and Gemini. Documented production families remain GPT and Gemini.
Customers can define a two-step fallback: GPT then Gemini, or the reverse. Each hop is logged. There is no quality_floor yet.
4xx and 5xx responses now include request_id (axm_req_...). Support asks for that id before anything else.
Semantic cache default TTL is 3600 seconds. Customers that set 30 days were retaining completions past the stated window. We clamped and notified.
The console shows request rate, p99, cache hit ratio, and cost by family. It is not yet an OTLP exporter.
Signing now uses t + '.' + body bytes. Earlier builds hashed JSON with unstable key order. Rotate secrets after upgrade.
sdk-go requires context.Context on inference. Background context is not implied.
Go client plus webhook signatures. Events in this cut: inference.completed and budget.warning. See Webhooks.
Dubai pins now record KMS key id and region on the residency object. This is evidence for PDPL reviews, not a new region.
Uploaded PDFs with ruling tables no longer split mid-row. Chunk ids are stable across re-upload of the same hash.
Customers can pin to me-central-1 (Dubai) for PDPL-aligned processing. RAG upload, chunk, and retrieve land in the same pin. GPT and Gemini are offered in-region.
@eridian/sdk ships both ESM and CJS. Node 18 is the floor.
We stopped sending unsigned webhook bodies. Tenants must complete signing onboarding or poll the audit log.
TypeScript client for POST /v1/inference. Webhook endpoints accepted HTTPS URLs; signatures land in 0.9.0.
structured_output now resolves local $ref. Remote $ref is rejected.
inference.completed includes actor (user or service key). Anonymous keys are retired.
Audit log is queryable for 30 days. Structured output parsing is opt-in via response_format. Failures return 422 parse_failed, not a 200 with a string.
Password login is off for named institutions. SSO is the path. Break-glass remains a hardware-backed owner key.
eridian-sdk retries 503 and 429. It does not retry 401, 403, or 422.
First Python client and a read-only console: keys, request log, cost by day. No self-serve upgrades.
If PII redaction fails open, we do not write the completion to the semantic cache. Fail-open is removed.
X-Eridian-Region is set on every EU-West completion. Clients that ignored it were mixing US and EU logs. Parse the header before you join regional telemetry.
eu-west-1 is available to customers with a GDPR processing record. Semantic cache is similarity-based, project-scoped, and off by default.
US SSN patterns no longer mask CUSIPs in risk memos. Eval set updated. False positives on the gold set fell from 3.1% to 0.6%.
Inference endpoints reject TLS 1.1. Corporate proxies that pinned 1.1 were cut over the same week.
Names and US SSNs are masked by default. us-east-1 is the first published region. Prompts are not used to train GPT or Gemini.
Burst is 60 requests per minute per key. 429 includes Retry-After. This is the launch rate limit, not the later catalog.
Gemini joins GPT in the routing pool. Family ids are gpt and gemini. Do not send provider SKU strings.
auto selects GPT or Gemini per request using latency and availability only. There are no custom weights yet. Pinning a family is supported.
API keys use eridian_sk_. Secrets are hashed at rest. The full token is shown once.
Streaming uses SSE. The final event includes usage. Incomplete streams are not billed as complete.
Eridian opens in Dubai. One POST /v1/inference schema, Bearer keys, and a GPT route. First customers are named, NDAed, and on us-east-1 only.