mrkeyoor.com_
Thu 17 Sept 00:50 UTC
AI Toolsevaluationupdated 01 Sept 2026

haystack review

Haystack is a Python framework for assembling document search, model calls, and tool-using agents into explicit pipelines. It tackles the glue code around AI applications while letting developers see and control how data moves between each step.

+44stars / 7d
Verdict

Our Haystack run installed 71 packages in 27 seconds, but pytest ended with 112 failures and 88 errors, many tail entries naming unavailable PDF and PowerPoint modules. Use it when a Python application has enough retrieval, routing, and agent logic to justify an explicit pipeline framework. Budget a separate integration test image and hosting layer; choose a provider SDK for one model call or DSPy when prompt optimization is the main job.

We ran it

Lab card: what happened when we ran haystackScreenshot of haystack (haystack.deepset.ai)
Install✓ · 27s71 packages · 135 MB
Build✓ · 4s
Tests✗ · 32s208 passed · 112 failed · 2 skipped · 88 errors of 408 (pytest)
Known vulns0(pip-audit)
Repo10737 files~146,225 lines of source · 93.7 MB · 33 CI workflows · tests dir

Answers from our run

Does haystack build from source?

Dependencies installed in 27 seconds (71 packages), and the build succeeded in 4 seconds. We cloned commit b7e1dd8 into a clean Debian container with 3 CPUs and no project-specific setup.

Do haystack's tests pass?

Not all of them: 208 of 408 passed and 112 failed when we ran the project's own test command (pytest), with 88 collection errors. Some failures need services or credentials a bare container does not have.

Does haystack have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use haystack?

Contributors expecting the base install to run the whole upstream suite: our sandbox ended with 112 failed tests and 88 collection or setup errors, while the log tail named missing pdfminer and pptx modules.

What are the alternatives to haystack?

LangChain, LlamaIndex, DSPy. Our Haystack run installed 71 packages in 27 seconds, but pytest ended with 112 failures and 88 errors, many tail entries naming unavailable PDF and PowerPoint modules.

Setup3/527-second core install; the full suite needs more extras
Docs5/5Guides, tutorials, recipes, telemetry, and upgrades are documented
Community5/526,000+ stars with a September 1 push and active issue work
Maturity4/5v3.1.0 is active, though our full test run did not pass

Discussed on

  1. hnHaystack 1.0 – open-source NLP framework to build NLProc back end applications109 points
  2. hnSemantic Search for FAQs with Haystack12 points
  3. hnBuild with LLMs for production with Haystack – has 10k stars on GitHub5 points
  4. hnShow HN: Haystack – Production-Ready LLM Framework4 points
  5. hnShow HN: Quick prototyping search pipelines with Haystack and Streamlit3 points

Who it’s for

Python teams building retrieval-augmented search or question answering over their own documents.
Agent developers who need visible routing, tool calls, memory, hooks, and usage tracking.
Platform engineers who expect to change model, retriever, or document-store providers over time.
Teams willing to choose, pin, and test the integration packages used by each pipeline.

Who it’s NOT for

Contributors expecting the base install to run the whole upstream suite: our sandbox ended with 112 failed tests and 88 collection or setup errors, while the log tail named missing pdfminer and pptx modules.
Operators wanting HTTP or MCP serving inside the core package: the README directs both jobs to the separate Hayhooks project.
Safety-sensitive teams whose human reviewer must see every final tool argument before approval: open issue #12060 reports that state-injected values can be added after the displayed approval prompt.
Teams requiring native, deterministic recording and replay of full pipeline runs: open issue #11836 requests that capability and describes current runs as ephemeral.
TypeScript-only teams: Haystack's core package, component API, and contributor tooling are Python.

Setup reality

Our sandbox installed 71 packages in 27 seconds and used 135 MB. The build succeeded in 4 seconds. Tests failed after 32 seconds: 208 passed, 112 failed, 2 skipped, and 88 collection or setup errors. Pip-audit found 0 known vulnerabilities.

The core package installs with pip and does not need a secret by itself. A useful pipeline still needs the model, document store, and search services you select, along with their credentials or local runtimes. Converter support adds format-specific packages.

Python 3.10 or newer is required. The test environment declared at commit b7e1dd8 includes pdfminer.six and python-pptx; the failing log tail says those modules were unavailable in our run. REST and MCP deployment use the separate Hayhooks project, and component telemetry is enabled unless you opt out.

Python 3.10 pipelines keep each step visible

Haystack requires Python 3.10 or newer and represents an AI application as connected components. A pipeline can retrieve documents, rank them, build a prompt, call a model, route the result, and write data back to a store. Branches, loops, synchronous runs, asynchronous runs, and streaming use the same component model. That explicit graph is useful when a response must be traced to a retriever or when one provider needs replacing without rebuilding the application around it.

commit b7e1dd8 was a substantial checkout: 10,737 files, about 146,225 source lines, and 93.7 MB before installation. The size makes sense once converters, evaluators, agents, pipeline state, tracing, tools, and shared data types live under one roof. It also sets expectations. Haystack is infrastructure for a team that wants an application framework; a 20-line script calling one hosted model will gain concepts without solving a proportionate problem.

The 27-second install covers the core, not every integration

Our base install succeeded in 27 seconds, added 71 packages, and occupied 135 MB. Building the package took another 4 seconds. Those are approachable numbers for trying the framework, and the README's pip install haystack-ai command is accurate for the core. The plain package does not promise every model, store, or file parser. Haystack keeps much of that breadth in optional packages and a separate integrations repository.

A useful deployment needs decisions that the 71-package install cannot make. Hosted model components need the corresponding provider account and credentials. Local models need their own runtime and files. Retrieval needs a document store or search backend selected for the application. PDF, PowerPoint, Word, spreadsheet, and message conversion can add parser packages. Pin the extras that match the graph, because a passing core import says little about the exact ingestion path users will exercise.

What happened when we ran it

Our sandbox installed Haystack in 27 seconds and built it in 4 seconds on 3 CPUs with 8 GB of RAM. The checkout used commit b7e1dd8 inside a fresh unprivileged Debian container running Python 3.12, with no secrets. Installation and build both succeeded. The full pytest step did not: it returned exit code 1 after 32 seconds, so the quick package result should not be mistaken for a clean contributor setup.

Pytest reported 208 passed, 112 failed, 2 skipped, and 88 collection or setup errors. The tail repeatedly shows PDFMinerToDocument tests raising an ImportError for pdfminer, followed by PPTXToDocument tests raising an ImportError for pptx. The same tail includes direct ModuleNotFoundError messages for pdfminer. It does not identify the cause of every failure or error, so we cannot turn those final lines into a broader diagnosis.

The declared test environment at b7e1dd8 lists pdfminer.six and python-pptx alongside other converter dependencies. That confirms the full suite expects more than the base runtime, while the log only confirms that those 2 modules were unavailable during our run. Pip-audit found 0 known vulnerabilities among the installed packages. The repository also had 33 CI workflow files and a tests directory, although no Dockerfile was present in the checkout.

Haystack 3.1.0 leaves HTTP and MCP serving to Hayhooks

Haystack v3.1.0 provides the orchestration library, while the current README sends REST API and MCP serving to Hayhooks, a separate project. That boundary is easy to miss when evaluating a framework described as production ready. The pipeline can run synchronously or asynchronously and stream tokens, but an operator still has to package the application, expose it, secure the route, manage worker lifecycles, and connect logs or traces.

Version 3.1.0 adds experimental context compactors, token counters, and AgentTool for wrapping one agent as a tool for another. Its upgrade notes also reserve an exit_reason state key and change snapshot input shape. A process-wide HAYSTACK_UNSAFE_DESERIALIZATION setting can disable pipeline and tool deserialization checks; the release notes warn that one untrusted artifact can then execute code. Keep that switch off for inputs your team did not create and review.

Open issues expose gaps in approval and replay

Haystack 3.1.0 has human approval hooks, but open issue #12060 reports an important visibility gap for tools that receive values from agent state. The approval view can show model-supplied arguments, then the execution path injects additional values later. The issue asks for an opt-in mode that displays the fully materialized call and labels each argument's source. Until that exists and is verified, sensitive tools need an application-level check immediately before execution.

For a 10,737-file framework, reproducible pipeline failures matter. Open issue #11836 requests native recording, deterministic replay, run diffs, and aggregated usage because an executed run currently leaves no first-class replay artifact. Haystack has tracing, snapshots, and breakpoints, but the issue explains why those pieces do not provide full record-and-replay behavior. Teams with strict reproduction requirements must add their own capture system or an external diagnostics service.

A September 1 push supports a high community score

GitHub recorded a last push on September 1, 2026, more than 26,000 stars, and more than 100 combined issues and pull requests when fetched. The latest release was v3.1.0 on August 24, and the recently updated queue contained both bug reports and fixes under review. Our checkout also had 33 CI workflow files. The combined open total includes pull requests and must not be read as a count of confirmed bugs.

Haystack is a sensible choice once retrieval and agent behavior need a shared structure that several engineers can inspect. Our 27-second install makes a trial cheap; the 112 failed tests and 88 errors require a production-like test image during adoption. Start with the smallest graph that represents the real workflow, pin its providers and converters, and confirm the exact tool arguments and documents that cross each boundary.

Alternatives

ProjectWhat it isPick it when
LangChain gh↗A Python framework for agents and model applications with a large integration ecosystem.pick this instead when LangGraph, Deep Agents, or LangChain's provider integrations already match the rest of your stack.
LlamaIndex gh↗A data-focused framework for ingestion, indexing, retrieval, and document agents.pick this instead when document ingestion and indexing are the center of the application and you prefer its split core-and-integrations packaging.
DSPy gh↗A framework for programming model behavior and optimizing prompts or weights from examples.pick this instead when measured output optimization matters more than assembling a broad graph of retrievers, converters, and services.

Sources

  1. Haystack repository and README
  2. Haystack pyproject at commit b7e1dd8
  3. Haystack v3.1.0 release notes
  4. Issue 12060: fully materialized tool-call approval
  5. Issue 11836: pipeline recording and replay request
  6. LangChain repository
  7. LlamaIndex repository
  8. DSPy repository

More ai tools reviews

eve · MemOS · LongCat-Video · Concat · DLSS5-Feeder · Concat · the whole board →