book an evals working session with us

Changelog

What’s new in Neatlogs

New features, improvements, and fixes — shipped regularly.

Updates
  1. Write detections in codeSeptember 7, 2026
  2. Review traces with AI evaluatorsJuly 27, 2026
  3. Replay an agent run step by stepJuly 1, 2026
  4. See cost, latency, and errors across every runJune 16, 2026
  5. Triage in Your EditorMay 29, 2026
  6. Import Your Traces from LangSmith and BraintrustMay 28, 2026
  7. Ask your trace data anythingMay 1, 2026
  8. Keep sensitive data out of your tracesApril 12, 2026
  9. Version your prompts like codeMarch 5, 2026
  10. Instrument multi-turn conversationsJanuary 20, 2026
  11. Collaborate on traces with your teamDecember 10, 2025
  12. See exactly what your AI agent didNovember 18, 2025
  13. Catch issues before your users doNovember 5, 2025
  14. Zero-config observability for every frameworkOctober 22, 2025

September 7, 2026

Write detections in code

Regex and thresholds are great for common patterns. But sometimes the thing you care about is more specific.

Write detections in code

How it works

You can now write custom function detections in neatlogs. Pick a target, write a function, and return a boolean. Your code runs against a snapshot of every span or trace in scope, and anything that returns true gets flagged.

Use it for checks that need your own logic, like marking traces where cost, latency, metadata, and span content combine in a way simple rules can’t express. You can also train a classifier on your own labeled spans and run it across your traces as a detection, giving you another way to catch patterns that are easier to recognize than hard-code.

Release notesv1.17.0Custom function detectionsSeptember 2026

Write detection logic in code and run it across every span or trace in scope.

  • EnhancementCost analytics by metadata: Group trace cost by any metadata key, so you can see spend by customer, feature, model, or any other tag you send.
  • EnhancementBroader PII redaction: Server-side redaction now covers every supported span kind.
  • FixedMore reliable trends and evals: Detection trends and evals now handle large repeated query arrays more gracefully.

July 27, 2026

Review traces with AI evaluators

Every trace can now be reviewed automatically, not just the ones your team has time to open.

How it works

Build custom AI evaluators with your own rubric and verdict schema. Use an LLM judge for a fast one-pass review, or an agent judge when the evaluation needs to inspect span data, call tools, or check external context first.

Agent judges can use connected integrations, custom MCP servers, or allowlisted HTTP fetches during review.

Test an evaluator against a real trace in the playground, then assign it per question alongside your human reviewers.

Evals now live at /evals, with old /feedback links redirecting automatically. Trace and span eval results are also exposed to agents querying over MCP, so evaluation outcomes can feed back into debugging and investigation workflows.

Read the AI Evaluators docs

July 1, 2026

Replay an agent run step by step

Session Replay turns a run into a player you can step through, watching the agent's structure unfold, where time went, and what each step decided, in order.

A span tree shows the shape of a run, but not how it played out. Replay lets you move through it in sequence, where it branched, where it stalled, what each step decided, which is usually faster than reading a static tree when you're trying to understand behavior.

A persistent shell wraps every replay: transport controls, a structure graph, a timeline that exposes concurrency and idle gaps, and an inspector for the selected step. Switch the center between a narrative Story walkthrough and a proportional Tree-plus-gantt view. It runs on your live traces or bundled demo architectures, and reads the same span data as Traces, so anything your instrumentation captures shows up with no extra setup.

Read the Session Replay docs
Release notesv1.15.0Session ReplayJuly 2026

Play an agent run back step by step: structure, timeline, and decisions, as a guided replay.

  • FeatureSession Replay player on the Sessions page: step or play through a run
  • FeatureStructure graph, timeline, and inspector views, plus a narrative Story walkthrough
  • FeatureRuns on live traces or bundled demo architectures (parallel fan-out, ReAct, delegation, multi-turn)

June 16, 2026

See cost, latency, and errors across every run

Analytics rolls all your traces into one dashboard, so you watch cost, latency, error rates, and detection trends across your whole system instead of one run at a time.

A single trace tells you what happened in one run: it won't tell you that p95 latency crept up this week or which model is quietly driving your bill. Analytics gives you that aggregate view and groups recurring failures together, so a regression shows up as a trend instead of a surprise.

The dashboard is built from widgets you can show, hide, and reorder, a KPI strip, cost breakdown by model or workflow, tool latency, error clusters, and detection trends. One filter bar scopes everything by time range, workflow, model, tool, or detection, and every number drills straight back into the traces behind it, since it's all computed from the same span data.

Read the Analytics docs
Release notesv1.9.0AnalyticsJune 2026

Aggregate dashboards for cost, latency, errors, tools, and detection trends across all your traces.

  • FeatureAnalytics dashboard: KPI strip, cost breakdown, tool latency, error clusters, and detection trends
  • FeatureConfigurable widgets you can show, hide, and reorder
  • FeatureOne filter bar scopes the whole dashboard by time, workflow, model, tool, or detection
  • FeatureDrill from any aggregate straight into the individual traces behind it

May 29, 2026

Triage in Your Editor

Stop alt-tabbing between Neatlogs and your code. Push a triage result to Cursor or Claude Code and keep debugging without losing context.

Triage in Your Editor

Continue investigations in your editor

Go from root cause to code fix without rebuilding context.

Finding the root cause is only half the job. The actual fix happens in your editor. Instead of switching tools and reconstructing the investigation, you can continue from where it left off.

Send any triage result directly to Cursor or Claude Code. The handoff includes the root cause, supporting evidence, affected traces, and recommended fixes, so your AI coding assistant has the context it needs from the start.

How to use Triage in Your Editor
Release notesv1.4.0Triage in Your EditorMay 2026

Stop context switching. When you find a bug in Neatlogs, push your investigation directly into Cursor or Claude Code. See the trace context, root cause, and suggested fix without leaving your editor. Neatlogs is no longer just a dashboard, it's part of your coding loop.

  • FeatureClick 'Send to IDE' and your triage result opens in Cursor or Claude Code with full trace context
  • FeatureReal-time streaming: watch investigation summaries, root causes, and code suggestions arrive as you debug
  • FeatureIDE-native preview cards show span details, error stacks, and suggested fixes at a glance
  • FeatureOne-click deep dive: jump from your editor back into Neatlogs to explore related traces
  • FeatureOptimized streaming pipeline eliminates jank and reduces latency for multi-turn debugging sessions

May 28, 2026

Import Your Traces from LangSmith and Braintrust

Your traces are yours. If you're on LangSmith or Braintrust and curious about Neatlogs, migrate your trace history in minutes. No data loss. No manual work.

Import Your Traces from LangSmith and Braintrust

Bring your trace history with you

Evaluating a new observability platform shouldn't mean starting from an empty dashboard.

Neatlogs can now import traces from LangSmith and Braintrust, so you can explore your existing workloads from day one.

Imported data includes traces, spans, metadata, attributes, cost information, and source attribution for every trace. We also filter out low-signal infrastructure spans, making it easier to focus on your agents rather than the underlying framework.

Whether you're evaluating Neatlogs or planning a migration, your existing history comes with you.

Migration Guide
Release notesv1.3.0Unified Trace ImportMay 2026

Bring your existing traces into Neatlogs without friction. We've built native importers for LangSmith, Braintrust, and Raindrop that preserve full trace fidelity, automatically calculate costs, and intelligently surface only the traces that matter. Your data stays accurate. Your workflow stays simple.

  • FeatureImport traces from LangSmith and Braintrust with full provenance and cost attribution, no data loss, no manual mapping
  • FeatureRaindrop integration to bridge bookmarks and saved articles into your trace library
  • EnhancementSmart filtering removes noise (pure HTTP calls) and promotes root agent workflows to the surface
  • EnhancementImport history with one-click rollback if you need to undo a migration
  • EnhancementTenant-aware tagging ensures imported data lands in the right project automatically

May 1, 2026

Ask your trace data anything

AI Search is now on neatlogs. Describe what you're looking for in plain English and we'll find the matching traces, no filter-building required.

Search your traces in plain English

Ask questions about your traces without writing filters or queries.

AI Search understands natural language, whether you're looking for a specific failure or investigating patterns across multiple traces. Use Fast mode for quick lookups or Pro mode for deeper investigations across spans and traces.

You can ask questions like:

• Show me traces where the agent failed to call a tool
• Find runs from last week where token count exceeded 10,000
• Which model generated the most errors today?

AI Search also remembers context within a session, so you can ask follow-up questions naturally without repeating yourself.

Read the AI Search docs

April 12, 2026

Keep sensitive data out of your traces

PII Redaction is now available on neatlogs. Two layers: mask before export from your process, redact before storage on the backend.

Keep sensitive data out of your traces

Keep sensitive data out of your traces

Protect sensitive information without sacrificing observability.

You can now redact PII before it leaves your application or before it's written to storage in Neatlogs. Built-in detection covers common entities like names, email addresses, phone numbers, and financial information, and you can choose which span types are affected.

Client-side redaction gives you complete control over what gets sent to Neatlogs, while server-side redaction uses Presidio to automatically identify and remove sensitive data before it's stored.

neatlogs.init(
    api_key=...,
    workflow_name="support-agent",
    pii_enabled=True,
    pii_span_types=["LLM", "TOOL", "RETRIEVER"],
)
Read the PII Redaction docs
Release notesv1.2.0PII RedactionMay 2026

Two-layer PII protection: client-side masking before export and server-side Presidio redaction before storage. Configure entity types, operators, and affected span types from Settings.

  • FeatureServer-side Presidio redaction: detects and redacts names, emails, phone numbers, and addresses before storage
  • FeatureClient-side masking via mask parameter in neatlogs.init() or per-span on @span and trace()
  • Featurepii_enabled and pii_span_types parameters in neatlogs.init() for programmatic control
  • FeatureTeam-level configuration in Settings > PII Redaction: entity types, operator (replace / mask / redact), span types

March 5, 2026

Version your prompts like code

Prompt management is now on neatlogs. Every edit creates a new version. Promote to production with a label change, no redeploy needed.

Version your prompts like code

Manage prompts without redeploying

Update prompts independently of your application code.

Store prompts in Neatlogs and fetch them at runtime instead of hardcoding them. Test changes in the Playground before promoting them to production, keep a complete version history, and roll back instantly if needed.

If you're already using Langfuse, you can import your existing prompts from Experiments → Prompts → Import.

prompt = neatlogs.get_prompt("system-prompt", label="production")
compiled = prompt.compile(user_name="Alex")
Read the Experiments docs
Release notesv0.9.0Experiments: Prompts & PlaygroundFebruary 2026

Version-controlled prompt storage with production and staging labels. Test prompt changes in the Playground sandbox before shipping to production.

  • FeaturePrompt versioning: every edit creates a new version with full history and one-click rollback
  • FeatureLabels (production, staging) for fetching the right version at runtime via neatlogs.get_prompt()
  • FeaturePlayground sandbox: test prompt changes against live model calls before deployment
  • Featureneatlogs.get_prompt(), update_prompt(), save_as_version(), list_prompts() SDK methods
  • FeatureImport prompts from Langfuse via Experiments > Prompts > Import

January 20, 2026

Instrument multi-turn conversations

Sessions are now on neatlogs. Group every turn of a chatbot or multi-turn workflow under a single session, one parameter change.

Instrument multi-turn conversations
neatlogs.init(
    api_key=...,
    workflow_name="support-chatbot",
    auto_session=True,
)
Read the Sessions docs
Release notesv0.8.0Sessions for multi-turn appsJanuary 2026

Group traces from the same conversation under a single session. One parameter change instruments chatbots, voice assistants, and any multi-turn workflow.

  • Featureauto_session=True in neatlogs.init(): generates a session ID at startup and attaches it to every trace automatically
  • Featuresession_id parameter for supplying your own identifier when you manage conversation state externally
  • FeatureSession timeline view in the dashboard grouping all turns from the same conversation

December 10, 2025

Collaborate on traces with your team

Comments are now on neatlogs. Pin context directly to any span, highlight what you're referencing, and tag the right person, without leaving the trace.

Collaborate on traces with your team

Discuss traces where the work happens

Keep feedback attached to the trace instead of scattered across chat messages and issue trackers.

Comment directly on any output, failed tool call, suspicious span, or attribute. Every comment stays attached to the exact part of the trace you're discussing, making it easy to review findings and collaborate without losing context.

Use @mentions to bring teammates into the conversation and reactions to keep discussions organized.

Read the Comments docs
Release notesv0.7.0Leave comments directly on tracesDecember 2025

Debugging context now stays attached to the exact span, output, or tool call your team is reviewing.

  • FeaturePin a comment to any span, highlight the specific content you’re referring to, and tag teammates with @mentions when you need another set of eyes
  • FeatureComments are team-wide, persist across sessions, and support reactions for quick acknowledgement
  • EnhancementDiscuss agent behavior right where it happened instead of moving screenshots into Slack or losing context in side threads

November 18, 2025

See exactly what your AI agent did

Traces are the core of neatlogs. Every agent run is captured as a full span tree, LLM calls, tool invocations, retrievals, with inputs, outputs, timing, and cost.

See exactly what your AI agent did

Understand every agent run from end to end

See the complete execution path behind every request.

Neatlogs captures each agent run as a trace, showing the full span hierarchy, execution order, and where time was spent. Inspect prompts, completions, token usage, costs, timing, and other metadata for every span.

Whether you're debugging failures or investigating performance, traces give you the context you need to understand what happened.

neatlogs.init(
    api_key=os.environ["NEATLOGS_API_KEY"],
    workflow_name="customer-support",
    instrumentations=["langchain", "chromadb"],
)

@neatlogs.span(kind="WORKFLOW")
def handle_request(user_input: str) -> str:
    ...
Read the Traces docs

November 5, 2025

Catch issues before your users do

Detections are now on neatlogs. Rules that run against your traces automatically and flag the spans that match, no manual scanning.

Catch issues before your users do

Automatically flag runs that need attention

Surface important runs without manually inspecting every trace.

Create detections using regex patterns, numeric conditions, built-in PII detection, or semantic classifiers. Matching runs are automatically labeled in the traces list, and you can filter by detection type to quickly review related issues.

Read the Detections docs
Release notesv0.6.0Flag important spans automaticallyNovember 2025

neatlogs can now run rules across your traces and mark the spans that match, so you can spot issues without opening every run one by one.

  • FeatureCreate regex detections for exact patterns, condition detections for numeric thresholds like total_tokens > 8000 or latency_ms > 5000, and classifier detections for semantic checks that look at meaning instead of exact text.
  • FeatureDetection badges now appear on the traces list, so you can scan runs at a glance and filter the entire list by detection type in one click.

October 22, 2025

Zero-config observability for every framework

You can now instrument OpenAI, Anthropic, LangChain, CrewAI, and a dozen vector databases on neatlogs with a single init call, no decorators, no wrappers.

Zero-config observability for every framework

Instrument your AI stack with a single configuration option

Capture LLM calls, tool invocations, retrievals, and more without adding manual wrappers.

Pass the libraries you use to instrumentations and Neatlogs automatically instruments supported frameworks and SDKs. Just make sure neatlogs.init() runs before importing any instrumented library.

neatlogs.init(
    api_key=os.environ["NEATLOGS_API_KEY"],
    workflow_name="rag-pipeline",
    instrumentations=["openai", "langchain", "chromadb"],
)
See all supported libraries
Release notesv1.0.0Expanded library supportMarch 2026

Added Anthropic, Azure AI Inference, Amazon Bedrock, Google GenAI, and LiteLLM to auto-instrumentation. CrewAI and LangGraph support with first-class prompt template binding.

  • FeatureAnthropic, azure_ai_inference, bedrock, google_genai, and litellm added as instrumentation keys
  • FeatureCrewAI support via neatlogs.bind_templates() and neatlogs.register_crewai_task()
  • Featurelanggraph instrumentation key for graph-level span capture
  • FeatureMCP_TOOL span kind for tools invoked via Model Context Protocol
  • Featureinstructor and guardrails added as supported instrumentation libraries
  • EnhancementSpan deduplication handles overlapping spans when two instrumentation layers cover the same call
Earlier releases9
Release notesv1.1.0Log CaptureApril 2026

Capture logs as structured spans alongside your traces. Three mechanisms: neatlogs.log(), stdlib logging auto-capture, and stdout capture, all opt-in.

  • Featureneatlogs.log(msg_template, level, data): structured log messages with keyword arguments stored as span attributes
  • Featurestdlib logging auto-capture inside active spans at or above log_level (default WARNING)
  • Featurecapture_stdout=True on @span and trace() to capture print() output
  • Featurecapture_logs parameter in neatlogs.init() to enable globally
  • EnhancementDebug mode now echoes captured logs to stderr in real time
Release notesv1.5.0TypeScript SDKJune 2026

Instrument TypeScript and Node.js agents with the same one-call setup as the Python SDK.

  • Featureneatlogs for TypeScript/Node: call init() once and your LLM and agent calls are traced automatically
  • FeatureSame trace, span, and session model as the Python SDK, so the dashboard works identically across languages
  • FeatureRuns in Node and edge runtimes
Release notesv1.6.0Go SDKJune 2026

Trace Go LLM and agent apps without hand-rolling spans.

  • Featureneatlogs Go SDK: initialize once and capture LLM calls, tool invocations, and workflow spans
  • FeatureContext-based span propagation that follows Go idioms
  • FeatureFeeds the same trace view as the Python and TypeScript SDKs
Release notesv1.7.0Browser SDKJune 2026

Send traces straight from front-end web apps, no backend proxy required.

  • FeatureZero-dependency browser client for tracing client-side LLM and agent calls
  • FeatureBatches and ships spans directly to Neatlogs from the browser
Release notesv1.8.0Prompt templates in every traceJune 2026

See which prompt template and variable values produced each run.

  • FeaturePrompt template tracking: the template and the values bound into it are recorded on the span
  • FeatureCompare runs by template to see how a prompt change moved your outputs
Release notesv1.10.0End-user identityJune 2026

Attach your app's end-user to every trace and slice the dashboard by who was affected.

  • FeatureSet an end-user on a trace, then filter and analyze traces by user
  • FeatureAnswer "which users hit this error?" without rolling your own tagging
Release notesv1.12.0Tags & custom span attributesJune 2026

Label traces and enrich spans so filtering and grouping match how you think about your system.

  • FeatureTags: attach labels to any trace for filtering and grouping in the dashboard
  • FeatureCustom neatlogs.* attributes for TOOL, RETRIEVER, RERANKER, GUARDRAIL, and VECTOR_STORE spans
Release notesv1.14.0MCP server for coding agentsJune 2026

Let your coding agent pull trace context, detections, and fix suggestions straight from Neatlogs.

  • FeatureMCP server exposes your traces, detections, and fixes to any MCP-capable coding agent
  • FeatureAn agent picking up a fix can re-hydrate the full investigation that produced it
Release notesv1.16.0More framework integrationsJuly 2026

Auto-instrumentation now covers a wider slice of the agent ecosystem.

  • IntegrationAdded Agno, DSPy, Google ADK, Google Gemini, Vercel AI SDK, Mastra, Pydantic AI, and Strands
  • IntegrationAdded Amazon Bedrock and Vertex AI provider instrumentation
  • EnhancementOne instrumentations= list mixes providers and frameworks in a single init call