MCPcopy
hub / github.com/Lightning-AI/LitServe

github.com/Lightning-AI/LitServe @v0.2.17 sqlite

repository ↗ · DeepWiki ↗ · release v0.2.17 ↗
1,240 symbols 4,264 edges 99 files 133 documented · 11%
README

Build custom inference servers in pure Python

Define exactly how inference works for models, agents, RAG, or pipelines. Control batching, routing, streaming, and orchestration without MLOps glue or config files.

Lightning

 

✅ Custom inference logic  ✅ 2× faster than FastAPI     ✅ Agents, RAG, pipelines, more
✅ Custom logic + control  ✅ Any PyTorch model          ✅ Self-host or managed        
✅ Multi-GPU autoscaling   ✅ Batching + streaming       ✅ BYO model or vLLM           
✅ No MLOps glue code      ✅ Easy setup in Python       ✅ Serverless support          

PyPI Downloads Discord cpu-tests codecov license

<a target="_blank" href="#quick-start" style="margin: 0 10px;">Quick start</a> •
<a target="_blank" href="#featured-examples" style="margin: 0 10px;">Examples</a> •
<a target="_blank" href="#features" style="margin: 0 10px;">Features</a> •
<a target="_blank" href="#performance" style="margin: 0 10px;">Performance</a> •
<a target="_blank" href="#host-anywhere" style="margin: 0 10px;">Hosting</a> •
<a target="_blank" href="https://lightning.ai/docs/litserve?utm_source=litserve_readme&utm_medium=referral&utm_campaign=litserve_readme" style="margin: 0 10px;">Docs</a>

 

Get started

 

Why LitServe?

Most serving tools (vLLM, etc..) are built for a single model type and enforce rigid abstractions. They work well until you need custom logic, multiple models, agents, or non standard pipelines. LitServe lets you write your own inference engine in Python. You define how requests are handled, how models are loaded, how batching and routing work, and how outputs are produced. LitServe handles performance, concurrency, scaling, and deployment. Use LitServe to build inference APIs, agents, chatbots, RAG systems, MCP servers, or multi model pipelines.

Run it locally, self host anywhere, or deploy with one click on Lightning AI.

 

Want the easiest way to host inference?

Over 380,000 developers use Lightning Cloud, the simplest way to run LitServe without managing infrastructure. Deploy with one command, get autoscaling GPUs, monitoring, and a free tier. No cloud setup required. Or self host anywhere.

Quick start

Install LitServe via pip (more options):

pip install litserve

Example 1: Toy inference pipeline with multiple models.
Example 2: Minimal agent to fetch the news (with OpenAI API).
(Advanced examples):

Inference engine example

import litserve as ls

# define the api to include any number of models, dbs, etc...
class InferenceEngine(ls.LitAPI):
    def setup(self, device):
        self.text_model = lambda x: x**2
        self.vision_model = lambda x: x**3

    def predict(self, request):
        x = request["input"]    
        # perform calculations using both models
        a = self.text_model(x)
        b = self.vision_model(x)
        c = a + b
        return {"output": c}

if __name__ == "__main__":
    # 12+ features like batching, streaming, etc...
    server = ls.LitServer(InferenceEngine(max_batch_size=1), accelerator="auto")
    server.run(port=8000)

Deploy for free to Lightning cloud (or self host anywhere):

# Deploy for free with autoscaling, monitoring, etc...
lightning deploy server.py --cloud

# Or run locally (self host anywhere)
lightning deploy server.py
# python server.py

Test the server: Simulate an http request (run this on any terminal):

curl -X POST http://127.0.0.1:8000/predict -H "Content-Type: application/json" -d '{"input": 4.0}'

Agent example

import re, requests, openai
import litserve as ls

class NewsAgent(ls.LitAPI):
    def setup(self, device):
        self.openai_client = openai.OpenAI(api_key="OPENAI_API_KEY")

    def predict(self, request):
        website_url = request.get("website_url", "https://text.npr.org/")
        website_text = re.sub(r'<[^>]+>', ' ', requests.get(website_url).text)

        # ask the LLM to tell you about the news
        llm_response = self.openai_client.chat.completions.create(
           model="gpt-3.5-turbo", 
           messages=[{"role": "user", "content": f"Based on this, what is the latest: {website_text}"}],
        )
        output = llm_response.choices[0].message.content.strip()
        return {"output": output}

if __name__ == "__main__":
    server = ls.LitServer(NewsAgent())
    server.run(port=8000)

Test it:

curl -X POST http://127.0.0.1:8000/predict -H "Content-Type: application/json" -d '{"website_url": "https://text.npr.org/"}'

 

Key benefits

A few key benefits:

  • Deploy any pipeline or model: Agents, pipelines, RAG, chatbots, image models, video, speech, text, etc...
  • No MLOps glue: LitAPI lets you build full AI systems (multi-model, agent, RAG) in one place (more).
  • Instant setup: Connect models, DBs, and data in a few lines with setup() (more).
  • Optimized: autoscaling, GPU support, and fast inference included (more).
  • Deploy anywhere: self-host or one-click deploy with Lightning (more).
  • FastAPI for AI: Built on FastAPI but optimized for AI - 2× faster with AI-specific multi-worker handling (more).
  • Expert-friendly: Use vLLM, or build your own with full control over batching, caching, and logic (more).

⚠️ Not a vLLM or Ollama alternative out of the box. LitServe gives you lower-level flexibility to build what they do (and more) if you need it.

 

Featured examples

Here are examples of inference pipelines for common model types and use cases.

Toy model:      Hello world
LLMs:           Llama 3.2, LLM Proxy server, Agent with tool use
RAG:            vLLM RAG (Llama 3.2), RAG API (LlamaIndex)
NLP:            Hugging face, BERT, Text embedding API
Multimodal:     OpenAI Clip, MiniCPM, Phi-3.5 Vision Instruct, Qwen2-VL, Pixtral
Audio:          Whisper, AudioCraft, StableAudio, Noise cancellation (DeepFilterNet)
Vision:         Stable diffusion 2, AuraFlow, Flux, Image Super Resolution (Aura SR),
                Background Removal, Control Stable Diffusion (ControlNet)
Speech:         Text-speech (XTTS V2), Parler-TTS
Classical ML:   Random forest, XGBoost
Miscellaneous:  

Core symbols most depended-on inside this repo

wrap_litserve_start
called by 85
src/litserve/utils.py
trigger_event
called by 45
src/litserve/callbacks/base.py
model
called by 35
tests/e2e/openai_embedding_with_batching.py
put_response
called by 32
src/litserve/loops/base.py
pre_setup
called by 20
src/litserve/api.py
get
called by 18
src/litserve/transport/zmq_queue.py
kill
called by 17
src/litserve/loops/base.py
_python_type_to_json_schema
called by 16
src/litserve/mcp.py

Shape

Method 594
Function 390
Class 226
Route 30

Languages

Python100%

Modules by API surface

tests/unit/test_lit_server.py96 symbols
tests/unit/test_loops.py79 symbols
tests/unit/test_specs.py64 symbols
src/litserve/server.py60 symbols
tests/unit/test_litapi.py49 symbols
src/litserve/specs/openai.py49 symbols
tests/conftest.py48 symbols
tests/unit/test_simple.py39 symbols
tests/unit/test_batch.py36 symbols
src/litserve/test_examples/openai_spec_example.py27 symbols
src/litserve/loops/base.py26 symbols
tests/unit/test_logger.py25 symbols

Used by 1 indexed graphs manifest dependencies, hub-wide

Dependencies from manifests, versioned

fastapi0.112 · 1×
pyzmq22.0.0 · 1×

For agents

$ claude mcp add LitServe \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact