Skip to main content
EVOKORE// SKILLS / CONTRIBUTING
deepset-ai/haystackmarkdownsha 18667A7272A6

CONTRIBUTING

contribution guide

Contributing to Haystack

We welcome contributions from the community! Whether it is fixing a bug, adding a new feature, or improving documentation, your contribution is valued.

Getting Started

Development Setup

git clone https://github.com/deepset-ai/haystack.git
cd haystack
pip install -e ".[dev]"

Running Tests

# Unit tests
pytest tests/unit

# Integration tests (requires external services)
pytest tests/integration

# Specific component tests
pytest tests/unit/components/generators/

Contribution Areas

Components

Haystack's power comes from its component ecosystem. We welcome new components for:

  • Document converters and preprocessors
  • Embedding models and rankers
  • LLM integrations (new providers, fine-tuned models)
  • Document stores and retrievers
  • Custom evaluation metrics

Integrations

External integrations live in haystack-extras or as standalone packages:

  • New vector database backends
  • Cloud provider integrations (AWS, GCP, Azure)
  • Monitoring and observability tools

Documentation

  • Tutorial improvements and new tutorials
  • API documentation updates
  • Usage examples and best practices

Pull Request Process

  1. Fork the repository and create a feature branch
  2. Write tests for any new functionality
  3. Format code with black and isort
  4. Lint with pylint and type check with mypy
  5. Document new components with docstrings
  6. Submit a PR referencing any related issues

PR Checklist

  • Tests added or updated
  • Documentation updated
  • Changelog entry added
  • All CI checks pass
  • No breaking API changes (or discussed and approved)

Component Development Guide

Each Haystack component follows a standard interface:

from haystack import component

@component
class MyComponent:
    @component.output_types(output=str)
    def run(self, input_text: str) -> dict:
        return {"output": processed_text}

Components must:

  • Declare input and output types
  • Be serializable (for pipeline YAML export)
  • Include comprehensive docstrings
  • Have unit test coverage

Code of Conduct

We follow the Contributor Covenant code of conduct.

License

By contributing, you agree that your contributions will be licensed under the Apache License 2.0.