Changelog

What we shipped recently.

Receipts, not promises. Releases are published to GitHub and mirrored here within an hour.

  1. sdk-typescript-v0.9.0

    v0.7.0: LangChain.js callback handler adapter

    Adds a first-class LangChain.js integration. Wire it into any LangChain runnable and every LLM invocation and tool call flows into Mesedi with no changes to your agent code beyond attaching the handler.

    LangChain

    • `MesediLangChainCallbackHandler` extends LangChain's

    BaseCallbackHandler. Attach an instance to any runnable's callbacks: slot; LangChain propagates it to every nested runnable automatically.

    • Wrap your entry function with mesedi.wrap() (which owns the

    execution boundary) and the handler emits llm_call and tool_call events for the LLM and tool invocations inside.

    • Extractors handle LangChain's Serialized + LLMResult shape

    churn across versions: kwargs.modelid[]name → fallback chain for model identification; text vs message.content vs multi-modal blocks for response text; tokenUsage / token_usage / usage / newer usage_metadata for token counts.

    • Truncation budgets match the Python langchain adapter and every

    other TS adapter, so backend detectors see one unified event stream regardless of source.

    • Fail-open per-method try/catch; outside a wrap() execution the

    handler silently no-ops.

    • Docs: https://mesedi.ai/docs/integrations/langchain

    Compatibility

    • Node 18+ minimum.
    • New optional peer dependency: `@langchain/core >= 0.3.0 < 0.5.0`.

    Customers who never import mesedi/integrations/langchain never pay the install cost.

    • Existing wrap() / tool() call sites and the LangGraph, OpenAI

    Agents, Vercel AI SDK, and Mastra adapters keep working without modification.

  2. sdk-python-v0.7.0

    What's Changed

    • deps(deps): bump google.golang.org/grpc from 1.83.1 to 1.83.2 in /backend in the go_modules group across 1 directory by @dependabot[bot] in https://github.com/mesedi-ai/mesedi/pull/39

    Full Changelog: https://github.com/mesedi-ai/mesedi/compare/sdk-python-v0.6.0...sdk-python-v0.7.0

  3. Verification pack, 2026-09-08

    Verification pack, 2026-09-08

    You are being asked to check our work, not to trust it. This release holds a real export from Mesedi's production checkpoint chain, the report our verifier produced for it, and the instructions to reproduce that verdict yourself, offline, from source you build.

    What is claimed

    Mesedi records what AI agents did and publishes an hourly Merkle fingerprint of that record to rekor.sigstore.dev, a log Mesedi does not control. The claim: the record in export.json (75 hourly checkpoints, 12 agent executions across two hours, 73 provably intact quiet hours) is complete and unaltered, and removing or editing even one entry after publication is detectable by you, without trusting us or our server.

    Reproduce the verdict

    1. Download export.json and confirm its hash:

    shasum -a 256 export.json

    Expected:

    42ca3bea131d0ef44fbf7efc1403a7cb79c2c80a9f553431a3dd046dfa93930a

    2. Build the verifier from source at the exact commit this release tags. Do not accept a binary from us:

    git clone https://github.com/mesedi-ai/mesedi.git cd mesedi && git checkout fb5161b314c7 cd backend && go build ./cmd/mesedi-verify

    3. Run it and compare against report.txt in this release:

    ./mesedi-verify /path/to/export.json

    4. Then try to break it. Remove an execution, edit one, reorder hours, splice in a genuine Rekor entry from an unrelated source. The claim is that the verifier catches all of it, and the claim is only worth something once someone with no stake has tried.

    Stated limits

    The report's own "what this report does not show" section is part of the deliverable. In particular: 3 of 74 hour-to-hour growth steps predate proof capture and carry none, split-view protection awaits witness cosignatures reaching Sigstore's trusted root, and a passing report means the record is intact, not that the AI was right.

    Findings of any size are welcome: robert@verdifax.com, or reply on the sigstore-dev thread this release is linked from.

    Asset hashes

    d13c7b6d2cf1f723e0cd30a341f147315e29e8c421af441ca011a97123ab3ef4 verification-pack-2026-09-08.tar.gz 42ca3bea131d0ef44fbf7efc1403a7cb79c2c80a9f553431a3dd046dfa93930a export.json

  4. sdk-typescript-v0.8.0

    v0.7.0: LangChain.js callback handler adapter

    Adds a first-class LangChain.js integration. Wire it into any LangChain runnable and every LLM invocation and tool call flows into Mesedi with no changes to your agent code beyond attaching the handler.

    LangChain

    • `MesediLangChainCallbackHandler` extends LangChain's

    BaseCallbackHandler. Attach an instance to any runnable's callbacks: slot; LangChain propagates it to every nested runnable automatically.

    • Wrap your entry function with mesedi.wrap() (which owns the

    execution boundary) and the handler emits llm_call and tool_call events for the LLM and tool invocations inside.

    • Extractors handle LangChain's Serialized + LLMResult shape

    churn across versions: kwargs.modelid[]name → fallback chain for model identification; text vs message.content vs multi-modal blocks for response text; tokenUsage / token_usage / usage / newer usage_metadata for token counts.

    • Truncation budgets match the Python langchain adapter and every

    other TS adapter, so backend detectors see one unified event stream regardless of source.

    • Fail-open per-method try/catch; outside a wrap() execution the

    handler silently no-ops.

    • Docs: https://mesedi.ai/docs/integrations/langchain

    Compatibility

    • Node 18+ minimum.
    • New optional peer dependency: `@langchain/core >= 0.3.0 < 0.5.0`.

    Customers who never import mesedi/integrations/langchain never pay the install cost.

    • Existing wrap() / tool() call sites and the LangGraph, OpenAI

    Agents, Vercel AI SDK, and Mastra adapters keep working without modification.

  5. sdk-python-v0.6.0

    What's Changed

    • deps(deps): bump google.golang.org/grpc from 1.83.0 to 1.83.1 in /backend in the go_modules group across 1 directory by @dependabot[bot] in https://github.com/mesedi-ai/mesedi/pull/38

    Full Changelog: https://github.com/mesedi-ai/mesedi/compare/sdk-python-v0.5.5...sdk-python-v0.6.0

  6. sdk-typescript-v0.7.3

    v0.7.0: LangChain.js callback handler adapter

    Adds a first-class LangChain.js integration. Wire it into any LangChain runnable and every LLM invocation and tool call flows into Mesedi with no changes to your agent code beyond attaching the handler.

    LangChain

    • `MesediLangChainCallbackHandler` extends LangChain's

    BaseCallbackHandler. Attach an instance to any runnable's callbacks: slot; LangChain propagates it to every nested runnable automatically.

    • Wrap your entry function with mesedi.wrap() (which owns the

    execution boundary) and the handler emits llm_call and tool_call events for the LLM and tool invocations inside.

    • Extractors handle LangChain's Serialized + LLMResult shape

    churn across versions: kwargs.modelid[]name → fallback chain for model identification; text vs message.content vs multi-modal blocks for response text; tokenUsage / token_usage / usage / newer usage_metadata for token counts.

    • Truncation budgets match the Python langchain adapter and every

    other TS adapter, so backend detectors see one unified event stream regardless of source.

    • Fail-open per-method try/catch; outside a wrap() execution the

    handler silently no-ops.

    • Docs: https://mesedi.ai/docs/integrations/langchain

    Compatibility

    • Node 18+ minimum.
    • New optional peer dependency: `@langchain/core >= 0.3.0 < 0.5.0`.

    Customers who never import mesedi/integrations/langchain never pay the install cost.

    • Existing wrap() / tool() call sites and the LangGraph, OpenAI

    Agents, Vercel AI SDK, and Mastra adapters keep working without modification.

  7. sdk-typescript-v0.7.2

    v0.7.0: LangChain.js callback handler adapter

    Adds a first-class LangChain.js integration. Wire it into any LangChain runnable and every LLM invocation and tool call flows into Mesedi with no changes to your agent code beyond attaching the handler.

    LangChain

    • `MesediLangChainCallbackHandler` extends LangChain's

    BaseCallbackHandler. Attach an instance to any runnable's callbacks: slot; LangChain propagates it to every nested runnable automatically.

    • Wrap your entry function with mesedi.wrap() (which owns the

    execution boundary) and the handler emits llm_call and tool_call events for the LLM and tool invocations inside.

    • Extractors handle LangChain's Serialized + LLMResult shape

    churn across versions: kwargs.modelid[]name → fallback chain for model identification; text vs message.content vs multi-modal blocks for response text; tokenUsage / token_usage / usage / newer usage_metadata for token counts.

    • Truncation budgets match the Python langchain adapter and every

    other TS adapter, so backend detectors see one unified event stream regardless of source.

    • Fail-open per-method try/catch; outside a wrap() execution the

    handler silently no-ops.

    • Docs: https://mesedi.ai/docs/integrations/langchain

    Compatibility

    • Node 18+ minimum.
    • New optional peer dependency: `@langchain/core >= 0.3.0 < 0.5.0`.

    Customers who never import mesedi/integrations/langchain never pay the install cost.

    • Existing wrap() / tool() call sites and the LangGraph, OpenAI

    Agents, Vercel AI SDK, and Mastra adapters keep working without modification.

  8. sdk-python-v0.5.5

    Full Changelog: https://github.com/mesedi-ai/mesedi/compare/sdk-python-v0.5.4...sdk-python-v0.5.5

  9. sdk-python-v0.5.4

    Full Changelog: https://github.com/mesedi-ai/mesedi/compare/sdk-python-v0.5.3...sdk-python-v0.5.4

  10. sdk-typescript-v0.7.1

    v0.7.0 — LangChain.js callback handler adapter

    Adds a first-class LangChain.js integration. Wire it into any LangChain runnable and every LLM invocation and tool call flows into Mesedi with no changes to your agent code beyond attaching the handler.

    LangChain

    • `MesediLangChainCallbackHandler` extends LangChain's

    BaseCallbackHandler. Attach an instance to any runnable's callbacks: slot; LangChain propagates it to every nested runnable automatically.

    • Wrap your entry function with mesedi.wrap() (which owns the

    execution boundary) and the handler emits llm_call and tool_call events for the LLM and tool invocations inside.

    • Extractors handle LangChain's Serialized + LLMResult shape

    churn across versions — kwargs.modelid[]name → fallback chain for model identification; text vs message.content vs multi-modal blocks for response text; tokenUsage / token_usage / usage / newer usage_metadata for token counts.

    • Truncation budgets match the Python langchain adapter and every

    other TS adapter, so backend detectors see one unified event stream regardless of source.

    • Fail-open per-method try/catch; outside a wrap() execution the

    handler silently no-ops.

    • Docs: https://mesedi.ai/docs/integrations/langchain

    Compatibility

    • Node 18+ minimum.
    • New optional peer dependency: `@langchain/core >= 0.3.0 < 0.5.0`.

    Customers who never import mesedi/integrations/langchain never pay the install cost.

    • Existing wrap() / tool() call sites and the LangGraph, OpenAI

    Agents, Vercel AI SDK, and Mastra adapters keep working without modification.

  11. sdk-python-v0.5.3

    Full Changelog: https://github.com/mesedi-ai/mesedi/compare/sdk-python-v0.5.2...sdk-python-v0.5.3

  12. sdk-python-v0.5.2

    Full Changelog: https://github.com/mesedi-ai/mesedi/compare/v0.1.0...sdk-python-v0.5.2

  13. v0.1.03 weeks ago

    v0.1.0 — Initial public release

    First public availability of Mesedi. Ships as MIT source (Self-Hosted) and hosted service (Cloud Hobby, Cloud Team, Cloud Production, Cloud Enterprise).

    Failure-class detectors (20)

    Cost + performance: context_overflow, token_waste, cost_velocity.

    Reliability: crashes, tool_failures, validator_failures, tool_schema_drift, provider_incident, infrastructure_throttled.

    Multi-agent: cascading_failure, coordination_deadlock, drift.

    Loops: semantic_loop, loops.

    Human-in-the-loop: hitl_timeout, hitl_rejection_spike.

    Security: prompt_injection, data_leakage, sandbox_escape, grounding_failure.

    Several classes carry sub-signatures rather than being separate classes: loops folds in identical-call, similar-call, step-count, and time-budget detection; drift covers lexical drift and new-model drift; prompt_injection matches six named attack patterns (jailbreak/DAN, ignore-instructions, role-override, system-prompt inject, instruction-tag, developer-mode).

    Each detector produces a stable signature that clusters recurring failures into a single group. First-occurrence webhook notification; per-project tunable thresholds; custom RE2 pattern support on the security detectors.

    SDKs

    • Python (mesedi on PyPI). @wrap and @tool decorators,

    AsyncShipper, auto-instrumentation for Anthropic / OpenAI / Cohere / Gemini / Ollama (sync, async, streaming), hard-halt with local budgets + SSE remote channel, LangGraph and OpenAI Agents adapters, optional [langchain] / [crewai] extras.

    • TypeScript (mesedi on npm). Feature parity with Python.

    mesedi/integrations/vercel_ai adapter for Vercel AI SDK's generateText.

    • gzip request compression on both SDKs (backend decompresses

    transparently).

    • Payload truncation with per-project tool_return_value_max_bytes

    caps.

    Cross-tenant provider signal

    provider_incident clusters cross-tenant errors from a single LLM provider so a customer can tell "the provider is having problems" vs "my code broke." Canonical error class vocabulary (rate_limited, quota_exhausted, internal_error, service_unavailable, timeout, invalid_api_key, client_error, unknown) mapped uniformly across all four providers. retry_after extracted onto the event where the provider returns it.

    RAG grounding

    Ragas, Promptfoo, and Vectara HHEM grounding evaluators supported via SDK helpers. Threshold config surfaces as PerEvaluatorFloors in the grounding_failure detector so different evaluators can use different sensitivities.

    Dashboard

    Failure-group + execution surfaces with AI root-cause analysis (Anthropic Haiku on Hobby and Team — pay-per-use on Hobby, 200 included per period on Team; a more capable model with 2,000 included per month on Production and Enterprise). Per-project settings for detector thresholds, custom security patterns, DLP severity policy, HITL fire modes. Audit log (Cloud Team and above). Per-project billing cap with configurable ceiling.

    Instrumentation & telemetry

    OpenTelemetry parallel emission. Human-in-the-loop lifecycle with timeout, rejection, and approval events. Multi-agent handoff tracking with agent-name propagation.

    Foundations

    FOUNDATION discipline: pre-audit + post-audit + 5-line audit trail required on every commit, enforced via a commit-msg git hook. CI drift check (tools/check-tier-constants.sh) asserts every tier constant + feature claim in the dashboard matches the backend enforcement site.

  14. sdk-python-v0.5.1

    Full Changelog: https://github.com/mesedi-ai/mesedi/compare/sdk-python-v0.5.0...sdk-python-v0.5.1

  15. sdk-python-v0.5.0

    What's Changed

    • deps(deps): bump golang.org/x/crypto from 0.51.0 to 0.52.0 in /backend in the go_modules group across 1 directory by @dependabot[bot] in https://github.com/mesedi-ai/mesedi/pull/20

    Full Changelog: https://github.com/mesedi-ai/mesedi/commits/sdk-python-v0.5.0

  16. sdk-typescript-v0.7.0

    v0.7.0 — LangChain.js callback handler adapter

    Adds a first-class LangChain.js integration. Wire it into any LangChain runnable and every LLM invocation and tool call flows into Mesedi with no changes to your agent code beyond attaching the handler.

    LangChain

    • `MesediLangChainCallbackHandler` extends LangChain's

    BaseCallbackHandler. Attach an instance to any runnable's callbacks: slot; LangChain propagates it to every nested runnable automatically.

    • Wrap your entry function with mesedi.wrap() (which owns the

    execution boundary) and the handler emits llm_call and tool_call events for the LLM and tool invocations inside.

    • Extractors handle LangChain's Serialized + LLMResult shape

    churn across versions — kwargs.modelid[]name → fallback chain for model identification; text vs message.content vs multi-modal blocks for response text; tokenUsage / token_usage / usage / newer usage_metadata for token counts.

    • Truncation budgets match the Python langchain adapter and every

    other TS adapter, so backend detectors see one unified event stream regardless of source.

    • Fail-open per-method try/catch; outside a wrap() execution the

    handler silently no-ops.

    • Docs: https://mesedi.ai/docs/integrations/langchain

    Compatibility

    • Node 18+ minimum.
    • New optional peer dependency: `@langchain/core >= 0.3.0 < 0.5.0`.

    Customers who never import mesedi/integrations/langchain never pay the install cost.

    • Existing wrap() / tool() call sites and the LangGraph, OpenAI

    Agents, Vercel AI SDK, and Mastra adapters keep working without modification.

  17. sdk-typescript-v0.6.0

    v0.6.0 — Mastra adapter + accumulated provider, framework, and reliability work

    First public TypeScript SDK release since v0.2.0. If you were on v0.2.0, upgrading to v0.6.0 gives you everything below in one step.

    Framework adapters

    • Mastra. MesediExporter for @mastra/observability. Wire it

    into your Observability({ exporters: { mesedi: new MesediExporter() } }) and Mastra agent runs, workflow runs, LLM calls, tool calls, and workflow steps flow into Mesedi with no changes to your agent code. Docs: https://mesedi.ai/docs/integrations/mastra

    • Vercel AI SDK. mesedi/integrations/vercel_ai for generateText.
    • LangGraph. MesediLangGraphHandler +

    instrumentLangGraph() one-call setup. Node-level checkpoint events + sub-graph agent-handoff detection.

    • OpenAI Agents SDK. MesediRunHooks implementing the

    RunHooks interface — checkpoints on agent enter/exit, agent-handoff events, and tool-call events.

    LLM provider auto-instrumentation

    • Anthropic, OpenAI, Cohere, Gemini, Ollama. instrument*()

    functions patch each provider's client to emit llm_call events for sync, async, and streaming calls. Exceptions are mapped to Mesedi's canonical error-class vocabulary (rate_limited, quota_exhausted, internal_error, service_unavailable, timeout, invalid_api_key, client_error, unknown).

    • Vertex AI Gemini surface covered separately for teams using

    the Vertex client instead of the direct Gemini SDK.

    • retry_after header extraction on rate-limit responses so your

    own retry logic can honor the provider's throttling window.

    RAG grounding evaluators

    Emit eval_score events with the shape Mesedi's grounding_failure detector expects, from these three evaluators:

    • Ragas (mesedi/integrations/ragas)
    • Promptfoo (mesedi/integrations/promptfoo)
    • Vectara HHEM (mesedi/integrations/vectara)

    Per-evaluator threshold configuration on the backend so different evaluators can use different sensitivities without cross-contamination.

    Human-in-the-loop

    • requestHumanIntervention() / waitForHumanDecision() /

    submitHumanDecision() primitives for the full HITL request / response cycle.

    • human_intervention event captures the ask + the decided answer

    when the human's decision lands.

    • Execution lifecycle rework adds a paused state with paused-time

    accounting so long HITL waits don't inflate an execution's duration_ms.

    Multi-agent

    • emitAgentHandoff(from, to, kind, taskSummary) for cross-agent

    task delegation.

    • Ergonomic surface: wrap({ agentName }) at the entry point and

    handoffs auto-fill fromAgent.

    Cost + reliability

    • gzip request compression on every event batch above 1 KB.
    • Payload truncation with a configurable per-event cap. Longest

    string fields are smart-truncated to fit, with marker fields so downstream readers know what happened.

    • Cost-per-tenant attribution: pass tenant_id on wrap() and

    cost rolls up correctly on the dashboard's cost-by-tenant report.

    • Infrastructure event emission for HTTP 429, circuit-breaker

    trips, and hard-quota exhaustion. Consumed by the infrastructure_throttled detector on the backend.

    Failure signature quality

    • Granular signatures for tool_failures and validator_failures

    so recurring failures cluster more tightly.

    • Structured return_value field on tool_call events with a

    schema-preserving coercion pass and a per-project size cap.

    Security

    • Regex ReDoS + URL-substring fixes across the SDK's built-in

    security helpers (CodeQL sweep).

    Compatibility

    • Node 18+ minimum.
    • Zero required runtime dependencies (as before). Optional peer

    dependencies for @mastra/core, @mastra/observability, and ai (Vercel AI SDK).

    • Existing v0.2.0 wrap() / tool() call sites keep working

    without modification.

  18. sdk-typescript-v0.2.0

    Full Changelog: https://github.com/mesedi-ai/mesedi/compare/mesedi-curl-v0.1.0...sdk-typescript-v0.2.0

  19. sdk-python-v0.2.03 months ago

    sdk-python-v0.2.0

    Full Changelog: https://github.com/mesedi-ai/mesedi/compare/mesedi-curl-v0.1.0...sdk-python-v0.2.0

  20. mesedi-curl-v0.1.03 months ago

    mesedi-curl-v0.1.0

    Full Changelog: https://github.com/mesedi-ai/mesedi/commits/mesedi-curl-v0.1.0

  21. sdk-python-v0.1.04 months ago

    sdk-python-v0.1.0

    Full Changelog: https://github.com/mesedi-ai/mesedi/commits/sdk-python-v0.1.0