SIE: One OpenAI-compatible server for every model an agent calls
Open-source inference server and production cluster for all the models your agent needs.
At a glance
- What is it?
- SIE is an Apache-2.0 inference server that serves embeddings, reranking, OCR, structured output, content safety, and LLM generation from a single cluster. It trades model isolation for operational simplicity, and the trade-off is worth examining before you adopt it.
- Who is it for?
- Adopt SIE if you run an agent that currently calls several separate model endpoints and you want one OpenAI-compatible API, on-demand model loading, and Kubernetes-native scaling. Do not adopt it if you need a single model with maximum throughput, if you must avoid vendor-specific bundle images, or if your workload mixes OCR and generation on one GPU, since the README requires separate images for those.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 4 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 14, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem: agent tasks each want their own model server
A typical agent does more than call a chat model. It embeds queries, reranks retrieved chunks, converts PDFs to markdown, extracts structured fields, checks content safety, and then runs the planning loop. In most setups, each of those tasks maps to a different model server, each with its own API, its own deployment, and its own scaling rules. SIE collapses that patchwork into one cluster. The README states it serves 100+ models through one API, with endpoints for embeddings, chat completions, completions, and responses, all OpenAI-compatible. The intended user is a team building an agent that needs several model families and does not want to operate five separate services. The pitch is operational consolidation, not raw performance.
How the cluster actually serves models
The repository layout shows a server package under packages/sie_server/models, which defines task-specific model sets. Each task is a small group of swappable models. For search, you get bge-m3, splade-v3, colbertv2, and qwen3-reranker. For document conversion, lightonocr, glm-ocr, mineru, paddleocr-vl, and docling. Structured output uses gliner2, nuner-zero, and qwen3.6-27b. Guard content uses granite-guardian-2b. The agent loop itself runs on qwen3.6-27b. The server loads models on demand and evicts them with an LRU policy, so multiple models can be served simultaneously without preloading everything into memory. The README says each model's first call downloads its weights, and later calls skip the download. This design keeps the memory footprint tied to the working set, not the catalog size. But it also means the first call to a cold model pays a download and load latency that a preloaded server would not.
Getting it running: pip, Docker, and the bundle split
The quickstart gives three paths. On macOS Apple Silicon or Linux with Python 3.12, you can pip install sie-server[local] and run sie-server serve. On Linux with an NVIDIA GPU, you pull ghcr.io/superlinked/sie-server:latest-cuda12-default. For OCR models that need Transformers 5, specifically LightOnOCR and GLM-OCR, you must pull the latest-cuda12-transformers5 image instead. There is also a CPU-only image. The README is explicit that the default image intentionally does not advertise those OCR models, because dependency-incompatible model families need isolation. That is a real constraint. If you want OCR and generation in one deployment, you cannot use a single image. The README shows stopping the first server and starting the sglang image on the same port for text generation. That is a manual swap, not a single unified process. The curl check uses /readyz to confirm the server is up, and the first embedding call with sentence-transformers/all-MiniLM-L6-v2 returns a 384-dimension vector.
The SDK and the API surface
Two SDKs are listed: sie-sdk for Python and @superlinked/sie-sdk for TypeScript. The Python example creates a SIEClient pointing at localhost:8080. The encode method takes a model name and an Item with text, returning a dense vector. The score method takes a cross-encoder model, a query Item, and a list of candidate Items, returning scores with item_id, score, and rank. The generate method takes a model like Qwen/Qwen3-0.6B, a prompt, max_new_tokens, and temperature, and returns text. The README shows a generation result of 'Paris' for the capital of France. The API is OpenAI-compatible at the HTTP layer, so existing OpenAI client code can be pointed at SIE without rewriting. That is the drop-in migration claim. The SDKs are thin wrappers. The TypeScript SDK is mentioned but not demonstrated in the README, so its exact API is only partially confirmed.
Production deployment: gateway, Helm, KEDA, and Grafana
The README states that SIE ships a load-balancing gateway, Kubernetes deployment configs, Helm charts, KEDA autoscaling with scale to zero, and Grafana dashboards. Public Terraform modules are maintained separately for Alibaba, though the README is truncated there. This is a production-oriented surface. Scale to zero is notable for cost control, because a cluster that only loads models on demand can shut down entirely when no agent is running. The gateway presumably routes requests to the right model pod. The README does not give details on how the gateway discovers models or how the LRU eviction works across pods. That is a gap. If you run multiple replicas, each has its own LRU cache, so a model may be loaded on every replica. The documentation does not address cross-replica caching. You should verify that behavior before relying on it for latency-sensitive workloads.
Limitations and failure modes
The most obvious limitation is the image split. The default image and the transformers5 image are not interchangeable, and generation requires yet another image (sglang). A single agent that needs OCR, embeddings, and LLM generation cannot run in one container. You must run multiple deployments or swap images, which complicates the 'one cluster' story. The README also shows that generation on Apple Silicon uses MLX, but the details are in external docs, not in the README. Another limitation is cold-start latency. On-demand loading means every new model pays a download and load cost. If your agent cycles through many models, the LRU eviction may thrash, reloading models repeatedly. The README does not specify the LRU cache size or eviction policy parameters. Finally, the model catalog is curated. You cannot serve arbitrary Hugging Face models unless they are in the catalog. The README lists specific models per task, and the embedding models are benchmarked on MTEB, but the MTEB scores are not shown. You must check the external model list to see if your preferred model is supported.
Alternatives and the difference in approach
The closest alternative is vLLM or TGI for LLM generation, combined with a separate embedding server like TEI (Text Embeddings Inference) and a separate OCR service. Those tools are model-specific and do not attempt to cover the full agent task range. The difference is architectural. vLLM is a high-performance inference engine for a single model or a small set, optimized for throughput and continuous batching. SIE is a multi-model orchestrator that trades per-model optimization for breadth and a unified API. If your workload is dominated by one large LLM, vLLM will likely give you better performance per GPU. If your workload is heterogeneous and you value one API over peak throughput, SIE fits better. Another alternative is to use a managed service like OpenAI or Anthropic for generation and a vector database with built-in embeddings for retrieval. That avoids self-hosting entirely, but it does not cover OCR or content safety in the same way. SIE is for teams that want to self-host and consolidate.
Maintenance, license, and upgrade cost
SIE is Apache-2.0, which allows commercial use, modification, and redistribution without copyleft obligations. The repository is actively maintained, with releases v0.7.0, v0.7.1, and v0.7.2 in August 2026. The development setup uses mise to pin Python, Rust, Node.js, and Helm toolchains, and the Python workspace uses a committed root lock. That suggests a reproducible build. The README mentions separate Terraform modules for Alibaba, implying that cloud-specific infrastructure is maintained outside the main repo. The upgrade cost is moderate. Because Docker images are bundle-specific, upgrading to a new model family may require pulling a new image tag and possibly migrating your deployment manifests. The Helm charts and KEDA configs are versioned with the repo, so you should test upgrades in a staging cluster. The README does not document a migration path between versions. You should check the release notes for breaking changes before upgrading.
Editorial conclusion
Adopt SIE if you run an agent that currently calls several separate model endpoints and you want one OpenAI-compatible API, on-demand model loading, and Kubernetes-native scaling. Do not adopt it if you need a single model with maximum throughput, if you must avoid vendor-specific bundle images, or if your workload mixes OCR and generation on one GPU, since the README requires separate images for those. Before committing, verify that your exact models are in the catalog, check the MTEB scores for the retrieval models you plan to use, and test the LRU eviction behavior with your working set size. Also confirm that the Helm charts and KEDA autoscaling match your cluster version, since the README references them but gives no version details.
Community notes