smg-project
smg
Rust

Engine-agnostic LLM gateway in Rust. Full OpenAI & Anthropic API compatibility across vLLM, TRT-LLM, TokenSpeed, SGLang, OpenAI, Gemini & more. Industry-first gRPC pipeline, KV cache-aware routing, chat history, tokenization caching, Responses API, embeddings, WASM plugins, MCP, and multi-tenant auth.

Last updated Aug 10, 2026
455
Stars
134
Forks
65
Issues
+4
Stars/day
Attention Score
89
Language breakdown
Rust 84.2%
Python 12.9%
Shell 1.6%
Go 0.9%
Makefile 0.2%
Go Template 0.1%
โ–ธ Files click to expand
README

SMG Logo

Shepherd Model Gateway

Release Docker PyPI License Docs Discord Slack Ask DeepWiki PyTorch Blog

Engine-agnostic, high-performance model-routing gateway for large-scale LLM deployments. SMG centralizes worker lifecycle management, balances traffic across self-hosted engines and cloud providers, and gives you enterprise-grade control over multi-tenancy, chat-history storage, MCP tooling, and observability โ€” behind one unified endpoint.

SMG architecture: clients flow through the gateway layer and router layer to gRPC workers, HTTP workers, and external APIs

Why SMG?

| | | |:--------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------| | ๐Ÿš€ Maximize GPU Utilization | Cache-aware routing tracks each worker's KV-cache state in radix trees to reuse prefixes across SGLang, vLLM, TensorRT-LLM, TokenSpeed, and MLX โ€” with load modeling that accounts for queued token work and KV pressure. | | ๐Ÿ”Œ One API, Any Backend | Route to self-hosted engines over HTTP or gRPC, or to OpenAI, Anthropic, Gemini, and xAI โ€” plus any OpenAI-compatible endpoint โ€” through a single unified gateway. | | โšก Built for Speed | Native Rust with streaming gRPC pipelines, cached tokenization with zero-copy cache hits, prefill/decode disaggregation (including a separate encode stage for vision), and DP-aware routing for data-parallel engines. | | ๐Ÿ”’ Enterprise Control | Priority admission scheduling with preemption and per-tenant controls, API-key auth with OIDC on the control plane, WebAssembly plugins for custom logic, and chat history that never leaves your infrastructure. | | ๐Ÿ“Š Full Observability | 90+ Prometheus metrics, OpenTelemetry tracing with W3C trace context propagated into the engines over both HTTP and gRPC, and structured JSON logs with request correlation. |

API Coverage: OpenAI Chat Completions, Completions, Embeddings, Rerank, and Classify; Responses and Conversations APIs for agents; Anthropic Messages; Gemini Interactions; Realtime over WebSocket and WebRTC; audio transcription; tokenize/detokenize; and MCP tool execution with approval policies in the Responses and Messages APIs.

Quick Start

Install โ€” pick your preferred method:

# Docker
docker pull lightseekorg/smg:latest

Kubernetes (Helm)

helm install smg oci://ghcr.io/smg-project/charts/smg

Python

pip install smg

Rust (needs protoc)

cargo install smg

Run โ€” point SMG at your inference workers:

# Single worker
smg launch --worker-urls http://localhost:8000

Multiple workers with cache-aware routing

smg launch --worker-urls http://gpu1:8000 http://gpu2:8000 --policy cache_aware

With high availability mesh

smg launch --worker-urls http://gpu1:8000 --enable-mesh \ --mesh-advertise-host 10.0.0.1 --mesh-peer-urls 10.0.0.2:39527

Use โ€” send requests to the gateway:

curl http://localhost:30000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "llama3", "messages": [{"role": "user", "content": "Hello!"}]}'

That's it. SMG is now load-balancing requests across your workers.

Supported Backends

| | | |:--|:--| | Self-Hosted Engines | vLLM ยท SGLang ยท TokenSpeed ยท TensorRT-LLM ยท MLX (Apple Silicon) ยท any OpenAI-compatible server (e.g. Ollama) | | Cloud Providers | OpenAI ยท Anthropic ยท Google Gemini ยท xAI ยท OCI Generative AI ยท AWS Bedrock ยท Azure OpenAI ยท any OpenAI-compatible provider (Groq, Together, โ€ฆ) |

Features

| Feature | Description | |---------|-------------| | 10 Routing Policies | cacheaware, leastload, poweroftwo, consistenthashing, prefixhash, bucket, roundrobin, random, manual, passthrough | | gRPC Pipeline | Native streaming gRPC to the engines with prefill/decode and encode disaggregation and DP-aware routing | | Kubernetes Discovery | Native pod watchers with label selectors, per-role prefill/decode/encode selectors, and router peer discovery | | Model Parsers | 21 tool-call parsers and 16 reasoning parsers with automatic model detection โ€” DeepSeek, Qwen, Kimi, GLM, Llama, Mistral, Command, Nemotron, and more | | MCP Integration | Tool discovery and execution over stdio, SSE, and streamable HTTP, with approval policies and audit logging | | High Availability | Mesh networking with SWIM gossip and CRDT-replicated state for multi-node deployments | | Chat History | Pluggable storage with schema migrations: PostgreSQL, Oracle, Redis, or in-memory | | WASM Plugins | Extend request and response handling with custom WebAssembly middleware | | Resilience | Circuit breakers, retries with backoff and jitter, rate limiting, and priority admission scheduling |

Documentation

Full documentation lives at lightseek.org/smg.

| | | |:--|:--| | Getting Started | Installation and first steps | | Architecture | How SMG works | | Configuration | CLI reference and options | | API Reference | OpenAI-compatible endpoints | | Kubernetes Setup | In-cluster discovery and production setup |

Contributing

We welcome contributions! See the Contributing Guide for details.

๐Ÿ”— More in this category

ยฉ 2026 GitRepoTrend ยท lightseekorg/smg ยท Updated daily from GitHub