Website review
This review may include AI-generated content and is not individually verified. Domain, certificate and other facts come from the observed data on this page.
What is Haystack?
Haystack is a pre-production verification tool that tests every code change against a copy of your real production environment before customers see it. Rather than relying on hand-written tests, it learns actual customer journeys from production traffic, works out which of those journeys a given change could affect, and replays them against isolated forks of your infrastructure.
How it works, in practice
- It reads the diff and maps the change's "blast radius" — the services, code paths and customer journeys it can reach.
- It snapshots your services and their data (databases, caches, queues, object storage) and forks that snapshot once per case, so each case runs in a real environment rather than a mock.
- Each environment is seeded into a different state — a workspace over its seat limit, a pending invite, a just-changed role — and every case runs both with and without the change, so differences can be attributed to the change itself.
- Failures come back with before/after screens, changed network calls and events that stopped firing, and the environment stays live so you can inspect it.
- Results can be fed back to a coding agent via an MCP server, which fixes, re-runs and iterates until nothing fails.
Who it's for and the trade-off
This suits teams whose riskiest bugs are silent ones — a request returns 200, nothing throws, the test suite is green, but a permission or data-flow assumption has quietly broken. The worked example on the site is exactly that shape: a frontend stopped sending a member's role, the access API defaulted a missing role to editor, and anyone with a pending invite could edit or delete workspace content.
The trade-off is that this is early-stage software taking on a small number of teams, so it's a fit for teams willing to adopt a new step in their workflow rather than a drop-in tool with a long track record. If your changes are mostly isolated and well covered by existing tests, the value is lower; if you ship changes that cross service and permission boundaries, the case is stronger.
Next step
Start with one change you'd normally be nervous about — ideally something touching auth, permissions or shared data — and check whether the cases Haystack derives from your traffic match the journeys you actually care about. That tells you quickly whether it's worth wiring into your normal loop. You can request early access or a demo at Haystack.
How does Haystack catch bugs that my existing test suite misses?
Haystack's answer is that it stops asking you to invent test cases and instead replays the journeys your real customers already take, then runs each one against a forked copy of production with and without your change.
The mechanism, per the product's own description:
- Blast radius from the diff. Haystack reads the code change and works out which production journeys it can reach. In the worked example on the site, a permissions refactor touching two files reached 3 services and 27 code paths, producing 14 cases worth running, mapped in about five seconds. You don't author those cases.
- A fork of production per case. Services plus their data — Postgres, Redis, queues, object storage — are snapshotted and forked once per case. Fourteen copies in 26 seconds, described as real environments rather than mocks, isolated from production.
- Seeded states, not clean ones. Each environment starts in a different condition: a workspace over its seat limit, an unaccepted invite, a member whose role just changed.
- Differential execution. Every environment runs twice, with and without the change, so a difference is attributable to the change rather than to environment noise.
- Failure evidence you can inspect. The before/after screen, the network calls that changed, and the events that stopped firing — with the environment left open.
The gap this targets is the silent failure. The site's example: a frontend stopped sending a member's role, the access API read a missing role as editor, and anyone with a pending invite could edit or delete anything in the workspace. No exception, every request returned 200, and the test suite passed. That is the class of bug a suite of hand-written assertions and mocks tends to miss, because the suite tests the cases someone thought of, in an environment where the data and side effects were arranged deliberately.
Who gets the most from it: teams with meaningful production traffic whose journeys are already varied, and teams already delegating fixes to a coding agent — the failing case is fed back in an actionable form, and the loop repeats until nothing fails. Teams with thin traffic, or systems where forking the data layer isn't practical, will get less out of the blast-radius and replay steps.
A practical next step: before adopting anything, pick one recent production incident that your suite passed. Ask whether the failing path was reachable from a diff and visible in real traffic. If yes, that's your evaluation case. Start with the CLI command haystack verify, and see Haystack for its flags and the early-access signup.
How do I set up Haystack with my existing infrastructure and CI pipeline?
Haystack is set up around two integrations: your infrastructure (so it can snapshot and fork real services) and your CI pipeline (so haystack verify runs per change). The page describes the mechanics — blast-radius analysis, forked production snapshots, paired runs with and without the change, and an MCP server for a coding-agent loop — but it does not publish a step-by-step onboarding guide. Treat the steps below as a practical order of operations, not a documented setup sequence.
What the product actually does
- Reads a code diff and maps the affected cases from real production journeys, not hand-written scenarios.
- Snapshots services and their data (Postgres, Redis, queues, object storage) and forks that snapshot once per case — described as real environments, not mocks, isolated from prod.
- Runs each case twice, with and without the change, so differences are attributable to the change.
- Returns failures with before/after screens, changed network calls and stopped events, and feeds the failing case back to your coding agent via MCP.
A sensible setup order
- Connect infrastructure first. Identify the services and data stores your changes typically touch. Haystack needs to snapshot and fork these, so start with one service and its database rather than the whole estate.
- Let production traffic define the cases. The value comes from real journeys, so give it enough traffic history to learn from before you judge coverage.
- Run
haystack verifylocally on a known change. Pick a recent change that caused a quiet production issue and see whether Haystack surfaces it. This is the fastest way to calibrate trust. - Move it into CI as a required check. The natural trigger is a pull request: verify the diff, publish the run results, and block merge on failures.
- Add the agent loop last. Once failures are reliable, wire the MCP server so your coding agent can fix, re-run, and iterate.
CI decision criteria
| Situation | Reasonable approach |
|---|---|
| Small team, one main service | Run haystack verify on PRs against that service only |
| Multiple services with shared data | Expand snapshots service by service; watch fork time as case count grows |
| High-risk changes (auth, permissions, billing) | Treat as blocking; require a clean verify before merge |
| Low-risk changes (copy, styling) | Run in report-only mode to keep pipeline time down |
Practical cautions
Forking production per case is powerful but has a cost dimension the page does not quantify — the worked example shows 14 environments and a 26-second fork, which suggests pipeline time scales with blast radius. Budget for that before making it a hard gate on every commit.
Because Haystack is described as early and taking on a small number of teams, expect onboarding to involve direct contact rather than self-serve docs. Start with Haystack early access, and have one representative service and its data store ready to connect.
Can Haystack's MCP server let my coding agent fix failures automatically?
Yes. Haystack's MCP server feeds failing cases back to your coding agent in an actionable form, so the agent can fix, re-run and loop until nothing fails. That's the intended workflow, not just a read-only integration.
H3 How the loop works
- Haystack forks a copy of production per affected case and runs each case twice: with and without your change.
- Failures arrive with the before/after screen, changed network calls and events that stopped firing.
- The failing case goes to your agent via the MCP server; the agent edits code, re-runs
haystack verify, and repeats.
H3 What to check before trusting it
- Whether your agent can actually reproduce the failure locally: Haystack's environments are real forks, not mocks, so the fix is validated against the real thing rather than a simulation.
- Whether the loop has a stopping rule. "Keeps going until nothing fails" is useful, but set a cap on iterations and require a human review before merge for changes touching auth, permissions or data deletion.
- Whether the failure output is specific enough for your agent. The worked example — a frontend dropping a member's role, the access API defaulting a missing role to editor, and a pending invite gaining edit and delete rights — is the kind of quiet, 200-returning bug that a good agent can act on once it sees the changed network calls.
H3 A concrete scenario You refactor permissions across two files. Haystack maps the blast radius to 3 services and 27 code paths, narrows it to 14 cases, forks 14 environments, and runs each with and without the change. One case fails: a pending-invite user can now delete workspace content. Your agent gets that case, patches the role default, re-runs, and the case passes. You review the diff and the before/after evidence.
Next step: ask what the MCP server exposes — can the agent trigger a re-run itself, or does it only receive failures? That determines how autonomous the loop really is. See Haystack for the MCP server and agent-loop details.
What does a Haystack verification run actually show me when something breaks?
A Haystack verification run shows you the concrete evidence of what changed, not just a pass/fail signal. According to the page, failures come with the screen before and after, the network calls that changed, and the events that stopped firing. The forked environment stays live, so you can open it and inspect the state directly.
The run is built around real customer journeys rather than invented test cases. Haystack reads your diff, works out which journeys the change can reach, and forks a copy of production infrastructure once per case. Each environment is seeded into a distinct state — a workspace over its seat limit, an invite nobody accepted, a member whose role just changed — and every case runs twice, with and without your change. The difference between the two runs is what surfaces as a failure.
H3 What the output looks like in practice
- Blast radius: which services and code paths the change touches, and how many cases are worth running. The page's worked example maps a two-file permissions refactor to 3 services, 27 code paths, and 14 cases in about five seconds.
- Failing case detail: the before/after screen, the changed network calls, and the events that stopped firing.
- A live environment: you can open the forked copy and explore it yourself rather than reading a log.
- An agent-ready report: the failing case goes back to your coding agent in a form it can act on, so it can fix, re-run, and iterate.
The value is clearest for quiet failures. In the page's example, a frontend stopped sending a member's role, and the access API treated a missing role as editor — so anyone with a pending invite could edit and delete anything in the workspace. Nothing threw, every request returned 200, and the test suite passed. A verification run would show the changed network call and the before/after screens that expose the gap.
A useful next step: before your next risky refactor, pick the change with the widest blast radius and check whether your current tests would catch a silent behavior change like the missing-role case. If not, that is the run to try first. Haystack is early and taking on a small number of teams, so early access is at Haystack.
How do I get early access to Haystack and what does onboarding involve?
Early access to Haystack is by application, not self-serve signup. The site says the product is early and taking on a small number of teams, with an early-access signup and a demo booking as the two entry points on Haystack. Expect a conversation before you get hands-on, rather than an instant account.
What onboarding appears to involve
Onboarding centers on connecting Haystack to your production environment so it can learn your real customer journeys from live traffic, then snapshot your services and their data stores. From the page evidence, that means:
- Reading your code diffs to work out which cases a change can reach.
- Snapshotting services plus Postgres, Redis, queues and object storage, then forking that snapshot per case.
- Seeding each environment into a different state so edge cases get exercised.
- Running each case twice, with and without the change, and reporting the differences.
A practical way to prepare
Before you apply, pick one service with clear traffic and a recent change that caused a quiet production problem — the kind where nothing threw and requests still returned 200. That gives you a concrete first case to test the value against, and a way to judge whether the replayed journeys match what your users actually do.
Who it suits, and the trade-off
This fits teams with meaningful production traffic, several services and data stores, and an agent-driven fix loop they want to close. If your traffic is thin, or your changes rarely touch shared state across services, the effort of snapshotting and forking environments may not pay off. The site's own example — a permissions refactor reaching 3 services and 27 code paths — shows the kind of change where it earns its place.
User reviews (0)