Contributing
SIE is open-source under the Apache 2.0 license. Contributions are welcome.
Development Setup
Section titled “Development Setup”Prerequisites
Section titled “Prerequisites”- Python 3.12+
- mise for task management
- Git
Clone and Install
Section titled “Clone and Install”git clone https://github.com/superlinked/sie.gitcd sie
# Install mise (if not already installed)curl https://mise.run | sh
# Install dependenciesmise installProject Structure
Section titled “Project Structure”sie/├── packages/│ ├── sie_sdk/ # Python SDK│ ├── sie_server/ # GPU inference server│ ├── sie_router/ # Load-balancing router│ └── sie_ts_sdk/ # TypeScript SDK├── integrations/│ ├── sie_langchain/ # LangChain adapter│ ├── sie_llamaindex/ # LlamaIndex adapter│ ├── sie_haystack/ # Haystack adapter│ ├── sie_crewai/ # CrewAI adapter│ ├── sie_dspy/ # DSPy adapter│ └── sie_chroma/ # Chroma adapter├── deploy/│ ├── helm/ # Kubernetes Helm charts│ └── terraform/ # GCP/AWS Terraform modules└── notebooks/ # Jupyter notebooksRunning Tests
Section titled “Running Tests”# Run tests for a specific packagemise run test packages/sie_sdkmise run test packages/sie_server
# Run integration tests (requires a running SIE server)mise run test integrations/sie_langchainTest Types
Section titled “Test Types”| Type | Requires Server | When to Run |
|---|---|---|
| Unit tests | No | Every PR |
| Integration tests | Yes | When changing SDK/server interface |
| Docker tests | Docker | When changing Dockerfiles |
| GPU tests | GPU worker | When changing inference pipeline |
Code Style
Section titled “Code Style”# Format codemise run lint -f
# Type checkingmise run typecheckSIE uses standard Python formatting and type annotations throughout.
Adding a New Model
Section titled “Adding a New Model”See Adding Models for the full guide. In summary:
- Create a YAML config in
packages/sie_server/models/ - Map to an existing adapter (or write a new one in
packages/sie_server/src/sie_server/adapters/) - Add quality targets with
sie-bench - Submit a PR
Adding a New Integration
Section titled “Adding a New Integration”-
Create the package directory under
integrations/:integrations/sie_myframework/├── src/sie_myframework/│ ├── __init__.py│ └── embeddings.py├── tests/│ ├── test_embeddings.py│ └── test_integration.py└── pyproject.toml -
Implement the framework primitives:
encode()→ framework’s embedding interfacescore()→ framework’s reranker/compressor interfaceextract()→ framework’s tool/extractor interface
-
Use shared test fixtures from
integrations/conftest.py:mock_sie_client— mocked SIEClient for unit testssie_server_url— real server URL for integration tests
-
Add tests and submit a PR
PR Workflow
Section titled “PR Workflow”- Fork the repository
- Create a feature branch:
git checkout -b feature/my-change - Make your changes with tests
- Run
mise run lint -f && mise run typecheck - Submit a pull request
License
Section titled “License”SIE is licensed under Apache 2.0. By contributing, you agree that your contributions will be licensed under the same terms.