
An agent might call a tool wrongly, describe a failed test as a success, or fail to actually finish a task it promised in the conversation, and when the trace is long it is hard to find the cause. flow-1, released by Laminar on October 2, 2026, is a model trained to investigate these agent run traces. Inside the Laminar Signals agent, it looks at spans one by one and records the problems it finds and the evidence as structured results.
On Laminar's own benchmark of 523 traces, flow-1's Detection F1 was .835. That was higher than GPT-6-sol (high) at .816, but Claude Opus 5 (high) recorded .890. So read this result as a comparison on that benchmark and that Signals agent setup. It doesn't mean flow-1 is on par with every GPT-6 model.
flow-1 investigates the trace and gathers evidence
Unlike putting a whole trace into an ordinary chat model and just asking whether there is an error, flow-1 investigates using the tools the Signals agent has. It first reads a trace preview and the instructions the user specified, searches for the spans it needs, and then opens the full text of those spans to check the surrounding context and evidence. The result is generated to match the JSON schema you define. If there are no findings, it doesn't create an event.
Laminar says it trained this investigation process with reinforcement learning in the same tool environment as the real Signals agent. It learned the flow of choosing which spans to look at, gathering evidence, and judging whether that evidence supports a finding. So the heart of the product feature is less the name of a single model and more the way the agent runs, including trace search and span reading.
The data Signals pulls out of traces is saved as events. Similar events are grouped into clusters to show recurring failure types, and you can also analyze them with SQL on the signal_events table. Depending on conditions it can send in-app, email, or Slack notifications, so you can connect individual trace findings to regression evals or product operations.
Results from the 523-trace benchmark
Laminar compared by analyzing 523 tricky agent traces across several kinds of work, including coding, legal, customer support, and CRM, with the same Signals agent. The per-model figures from the announcement are as follows.
| Model | Detection F1 | Description F1 | Precision | Recall |
|---|---|---|---|---|
| flow-1 | .835 | .741 | .817 | .853 |
| Claude Opus 5 (high) | .890 | .848 | .847 | .938 |
| Claude Sonnet 5 (high) | .835 | .773 | .826 | .844 |
| GPT-6-sol (high) | .816 | .728 | .703 | .974 |
| GPT-6-luna (high) | .795 | .638 | .727 | .878 |
In this table, flow-1 is higher than GPT-6-sol on detection F1 and equal to Claude Sonnet 5. Opus 5 showed the highest score. Laminar describes sol as tending to flag more traces and add noise, and flow-1 as looking at the evidence to pick out valid problems. But this is a single in-house benchmark published by the vendor, so it doesn't guarantee performance on other trace setups or in your production environment.
Pricing and the scope of the "23x" cost comparison
The flow-1 pricing Laminar published is $0.05 per million input tokens, $0.01 for cached input, and $0.30 for output. The comparison table it published separately does not compare model token rates alone. It includes the cost of running the Signals agent and every retrieval step, and it is run statistics from analyzing traces with under 100k total LLM tokens.
| Model | Traces processed per $1 | Cost per trace |
|---|---|---|
| flow-1 | 888 | $0.0011 |
| Claude Opus 5 | 7 | $0.149 |
| Claude Sonnet 5 | 12 | $0.086 |
| GPT-6-sol | 38 | $0.026 |
| GPT-6-luna | 668 | $0.0015 |
So the comparison the announcement's text and table make is that, for traces under 100k tokens and on the basis of whole Signals run cost, flow-1 processes 888 per dollar and GPT-6-sol 38, a difference of about 23x. We haven't mixed the "1/20th" wording in the announcement's title with the roughly 23x in the body and table as if they were the same figure. Laminar also says flow-1 is 25% cheaper than luna while detecting and explaining failures better. Pricing and credits can change, so check the current terms on the official pricing page before you adopt it.
Creating a new analysis rule in Signals
Signals takes as input the traces to analyze, a prompt describing what to look for, and a JSON schema that defines what to record in the result. New Laminar projects come with a default Failure Detector Signal, which, per the docs, classifies tool errors, API errors, logic errors, repetition, wrong tool choice, and timeouts in traces over 1,000 tokens.
- Send your agent traces to your Laminar project and open Signals in the sidebar. Look at the default detector results first, then choose + Signal.
- Decide the Signal name, prompt, and JSON schema. In the prompt, be specific about the failure to find or the content to extract, and in the schema specify the fields to leave in the event.
- Choose the trigger as the end of a trace's root span or the end of a specific span. You can filter by total token count, status, span name, or tag, with AND conditions. The default total-token filter is over 1,000.
- If needed, specify sampling to run on only 5 to 95% of matching traces, and create it. That reduces the chance of a broad condition running on every trace.
- Check run status and cost in Runs, and structured results and links to the original traces in Events. Look at recurring types in Clusters, and connect in-app, email, and Slack notifications in Alerts.
- Review the results on representative traces and refine the rule. For existing data, you can analyze it again by setting a period or search criteria under Backfill in Settings.
To create a Signal from the CLI, after finishing lmnr-cli setup in your project, you can run it like this. The default trigger is the end of the root span, the default filter is total tokens over 1,000, and the mode is real-time.
npx lmnr-cli@latest signal create "Refund requests" \
--prompt "Detect when the user asks for a refund. Extract the reason they gave." \
--schema '{"properties":{"reason":{"type":"string","description":"Refund reason"}}}'Self-hosted deployments may need an LLM profile configured, and Laminar Cloud uses a separate credential path. For the latest procedure and input formats, see the Signals Quickstart and the Signals CLI docs.
Real cases and problems it can miss
Laminar's announcement includes contract review, coding agent, and code review cases. In one contract redline, the parties agreed to a 105-day film release window but the schedule still said 90 days. All three models found the mismatch, and flow-1 also connected the point that the issues list had marked the document "conformed clean." In another contract, flow-1 let the omission of a required AI governance clause pass, and two GPT-6 models found it.
In a coding case, not all tests passed, but the agent attributed the failures to a pre-existing problem and reported the work as done. flow-1 and sol flagged the mismatch between the explanation and the logs, and luna missed it. On the other hand, in a code review, a change from yaml to pyyaml was not a real error, and flow-1 and sol judged it fine. luna produced a finding with weak evidence. In a case where the milestone totals in a contract redline and a memo differed by $20 million, flow-1 and sol found the total error, and luna focused on a different inconsistency and missed the key difference.
These cases show problems that are easy to miss from a trace alone, like a wrong completion report or contradictions between documents, but they don't mean exhaustive review or zero false positives. Laminar also published examples of the limits of failure detection. In real operations, review important findings together with misses, and tune your representative traces and alert criteria.
Read alongside Google AX Agent Executor, which covers an AI agent runtime, MiroFish, which simulates interactions among multiple actors, and Jevgrep, a search tool for coding agents, you can compare different layers of building, observing, and improving agents.
Robert's flow-1 video and X posts
The Laminar announcement was written by Robert Kim on October 2, 2026. The X posts below supplement the blog's video links and related explanations. The X account shown is Robert, @skull8888888888.
Source: X @skull8888888888
Source: X @skull8888888888
Source: X @skull8888888888
Source: X @skull8888888888
Source: X @skull8888888888
Source: X @skull8888888888
The main sources are the Laminar flow-1 announcement, the Signals introduction docs, the Laminar overview, and the official pricing and CLI docs.
