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
- uv
- Git
Clone and Install
Section titled “Clone and Install”The repository root is a virtual Python workspace. From the repository root, install and verify every workspace member with the committed lock:
git clone https://github.com/superlinked/sie.gitcd sie
uv python install 3.12uv lock --checkuv sync --frozen --all-packagesProject Structure
Section titled “Project Structure”sie/├── packages/│ ├── sie_sdk/ # Python SDK│ ├── sie_server/ # GPU inference server│ ├── sie_gateway/ # Rust inference gateway│ ├── sie_config/ # Config control plane│ ├── sie_server_sidecar/ # Rust worker sidecar│ ├── sie_telemetry/ # Telemetry facade│ ├── sie_audio_prep/ # Audio preprocessing│ ├── sie_mcp/ # MCP server│ └── sie_ts_sdk/ # TypeScript SDK├── integrations/ # Framework and vector-store adapters│ ├── sie_langchain/ # LangChain adapter│ ├── sie_llamaindex/ # LlamaIndex adapter│ ├── sie_chroma/ # Chroma adapter│ └── ... # See integrations/ for the full set├── deploy/│ ├── helm/ # Kubernetes Helm charts│ └── k8s/ # Raw Kubernetes manifests└── examples/ # Example apps and notebooksRunning Tests
Section titled “Running Tests”Tests run via pytest against the committed lock:
uv run --frozen --project . --no-sync pytest -c pyproject.tomlTest 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”Formatting and linting use ruff, and type checking uses ty; both are configured in the root pyproject.toml. SIE 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. The short version:
- 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 the model’s task declarations to its config YAML
- 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
uv run --frozen --project . --no-sync pytest -c pyproject.toml - 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.