The economy here is that the integration surfaces are generated rather than written. A single `PipelineWrapper` with a run method yields a validated REST endpoint, an OpenAI-compatible streaming chat backend, and an MCP tool — so the same Haystack agent serves a web app, Open WebUI, and Cursor without three adapters. The core tools go one step further and let the client deploy and undeploy pipelines mid-conversation.
A server that turns Haystack pipelines and agents into deployed services. You write a wrapper class with a setup method and a run method; Hayhooks generates the HTTP API, the OpenAI-compatible chat completions endpoint, and — running as an MCP server — an MCP tool per deployed pipeline.
- Each deployed pipeline or agent exposed as an MCP tool, so anything you built in Haystack becomes callable from Cursor or Claude Desktop
- Core tools for controlling Hayhooks itself from the client — read the status of everything deployed, deploy something new, or take it down — `get_all_pipeline_statuses`, `deploy_pipeline`, `undeploy_pipeline`
- A POST endpoint per pipeline with its input arguments auto-validated by a generated Pydantic model
- An OpenAI-compatible `/chat/completions` endpoint with streaming, which is what makes Open WebUI integration work
- A2A support (`pip install "hayhooks[a2a]"`) with auto-generated agent cards, so other agents can discover a pipeline and delegate to it
- An embedded Chainlit chat UI (`pip install "hayhooks[chainlit]"`, then `hayhooks run --with-chainlit`) with streaming, pipeline selection and custom widgets, needing no configuration
- OpenTelemetry tracing (`pip install "hayhooks[tracing]"`) covering deploy, run and undeploy across both REST and MCP, with request-level spans on the MCP transport endpoints and domain spans for `list_tools` and `call_tool`, plus a `/dashboard` UI
- Built-in file upload handling for pipelines that ingest documents
- Both YAML-based and wrapper-based deployment, plus a CLI for pipeline management
Python, and `pip install hayhooks`. `hayhooks run` starts the REST server on port 1416; the MCP server is a separate command, `hayhooks mcp run`, listening on `HAYHOOKS_MCP_HOST` and `HAYHOOKS_MCP_PORT` — `localhost:1417` by default — and serving Streamable HTTP at `/mcp` with SSE also supported. Clients that only speak stdio can bridge through `supergateway`. Deploy a pipeline with `hayhooks pipeline deploy-files`, passing `-n` and a name followed by the wrapper directory. The A2A, Chainlit and tracing features each come from their own extra. Whatever your pipeline itself needs — an OpenAI key for a chat generator, for instance — is on you.
One command — pip install hayhooks[mcp]
