Skip to main content

Serverless-native LLM orchestration framework for AWS Lambda

Project description

LambdaLLM

Serverless-native LLM orchestration framework for AWS Lambda.

Built by SubstrAI — Open-source GenAI frameworks for serverless infrastructure.

PyPI version Tests License: MIT Python 3.10+ Documentation codecov npm version

The Problem

Existing LLM frameworks (LangChain, LlamaIndex) assume long-running servers. They break on Lambda:

  • Cold starts: 500MB+ dependency trees add seconds
  • Stateless: No conversation memory between invocations
  • 15-min timeout: Long agent loops crash
  • 250MB limit: LangChain alone exceeds this

The Solution

LambdaLLM is purpose-built for Lambda's constraints:

from lambdallm import handler, Prompt, Model

summarize = Prompt(
    template="Summarize in {max_words} words:\n\n{document}",
    output_schema={"summary": str, "key_points": list}
)

@handler(model=Model.CLAUDE_3_HAIKU)
def lambda_handler(event, context):
    return summarize.invoke(
        _context=context,
        document=event["body"]["text"],
        max_words=100
    )

Features

  • < 5MB package size (vs 400MB+ for LangChain)
  • Cold-start optimized — lazy imports, connection pooling
  • DynamoDB-native state — conversation memory that survives stateless execution
  • Cost-aware routing — auto-select cheapest model that meets quality threshold
  • Multi-step chains — declarative pipelines with checkpoint/resume on timeout
  • AI Agents — ReAct-style agents with tool sandboxing and timeout awareness
  • One-command deploylambdallm deploy generates all AWS infrastructure
  • Timeout handling — checkpoint/resume for long chains
  • A/B testing — route traffic between prompt versions, compare metrics
  • Full observability — X-Ray tracing, CloudWatch metrics, cost tracking built-in

Installation

Python (primary)

pip install substrai-lambdallm

With AWS Bedrock support (recommended):

pip install "substrai-lambdallm[bedrock]"

With all optional dependencies:

pip install "substrai-lambdallm[all]"

npm

npm install substrai-lambdallm

Quick Start

Python (full CLI experience)

# Install
pip install "substrai-lambdallm[bedrock]"

# Scaffold a new project (creates handler, config, tests)
lambdallm init my-project --template basic
cd my-project

# Start local development server
lambdallm dev

# Test your handler
curl -X POST http://localhost:3000 -d '{"text": "Hello world"}'

# Run tests
lambdallm test

# Deploy to AWS
lambdallm deploy --env dev

TypeScript (runtime SDK)

# Install
npm install substrai-lambdallm @aws-sdk/client-bedrock-runtime

Create your handler:

// handler.ts
import { handler, Model } from 'substrai-lambdallm';

export const lambdaHandler = handler(
  { model: Model.CLAUDE_3_HAIKU, maxRetries: 3 },
  async (event, context) => {
    const body = JSON.parse(event.body || \'{}\');
    const result = await context.invoke('Summarize: {text}', { text: body.text });
    return { statusCode: 200, body: { result, cost: context.totalCost } };
  }
);

Deploy with SAM or CDK:

sam build && sam deploy --guided

Key Differences

Capability Python TypeScript
CLI (init, dev, deploy) \u2705 Included \u274c Use SAM/CDK directly
Project scaffolding lambdallm init Manual setup
Local dev server lambdallm dev sam local start-api
Runtime SDK \u2705 Full \u2705 Full
Chains + Agents \u2705 Full \u2705 Full
Observability \u2705 Full \u2705 Full

Available Templates

lambdallm init my-app --template basic   # Simple LLM handler
lambdallm init my-app --template chat    # Multi-turn chat with memory
lambdallm init my-app --template agent   # AI agent with tools
lambdallm init my-app --template rag     # Retrieval-augmented generation

Core Concepts

Handlers

from lambdallm import handler, Model

@handler(model=Model.CLAUDE_3_HAIKU, timeout_strategy="checkpoint")
def lambda_handler(event, context):
    result = context.invoke("Summarize: {text}", text=event["body"]["text"])
    return {"statusCode": 200, "body": result}

Chains

from lambdallm import Chain, Step

pipeline = Chain(
    name="analysis",
    steps=[
        Step("extract", prompt="Extract entities from: {input}"),
        Step("classify", prompt="Classify: {extract.output}"),
        Step("summarize", prompt="Summarize: {classify.output}"),
    ],
    timeout_strategy="checkpoint",
)

Agents

from lambdallm.agents import Agent, Tool

@Tool(description="Search the knowledge base")
def search(query: str, max_results: int = 5) -> list:
    # your implementation
    pass

agent = Agent(
    name="researcher",
    system_prompt="You are a research assistant.",
    tools=[search],
    max_iterations=5,
    timeout_buffer=30,
)

CLI Commands

Command Description
lambdallm init Scaffold a new project
lambdallm dev Start local development server
lambdallm deploy Deploy to AWS (SAM/CDK)
lambdallm test Run tests
lambdallm cost Show cost summary and forecast
lambdallm status Check deployment status
lambdallm rollback Rollback to previous version
lambdallm eject Export raw SAM/CDK templates
lambdallm logs Tail CloudWatch logs
lambdallm metrics Show key metrics

Documentation

License

MIT — see LICENSE

Author

Gaurav Kumar Sinha — Founder, SubstrAI

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

substrai_lambdallm-1.8.0.tar.gz (330.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

substrai_lambdallm-1.8.0-py3-none-any.whl (102.0 kB view details)

Uploaded Python 3

File details

Details for the file substrai_lambdallm-1.8.0.tar.gz.

File metadata

  • Download URL: substrai_lambdallm-1.8.0.tar.gz
  • Upload date:
  • Size: 330.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for substrai_lambdallm-1.8.0.tar.gz
Algorithm Hash digest
SHA256 481d507df79c6af7b2c0b50e62380f8a4a766378b7a1d3ca03a88aae8f28bdae
MD5 2d631f90337fef32ef56dc96b3f12acf
BLAKE2b-256 cfa1c01064ece29ec5ea968da4f33a4b01108155dba67ad1e92f48654759b2d0

See more details on using hashes here.

File details

Details for the file substrai_lambdallm-1.8.0-py3-none-any.whl.

File metadata

File hashes

Hashes for substrai_lambdallm-1.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5d1c98969c2371a4456772eec48afda62531180fddcdea82176fad090270e7f4
MD5 343fd502c75bd59b6ec45659c6ff6fde
BLAKE2b-256 7b5dc4ad917deed8d0f4573b1e97fda9b162b1d943c5430153caecd6934238f2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page