Early access — join the waitlist

Stop building
AI plumbing.

Drop a function, get a full AI feature. Modular handles context, embeddings, chat history, and retrieval — so you can ship instead of infrastructure.

No spam. Notify you when we launch.

✓ You're on the list. We'll be in touch.

app.py
from modular import Modular

ai = Modular(api_key="mod_...")

# Tell Modular how to get your data
@ai.datasource
def get_orders(user_id: str):
    return db.query("SELECT * FROM orders WHERE user_id = ?", user_id)

# One-shot AI feature
result = await ai.run("summarize-orders", user_id="123")

# Chat with your app's data
reply = await ai.chat(session="sess_abc", message=user_msg, user_id="123")

You wanted to ship an AI feature.
You ended up building infrastructure.

Every team hits this wall. What looks like a one-week feature becomes a three-month rabbit hole.

Without Modular
  • Pick a model, wire up API keys
  • Write and maintain prompt templates
  • Set up and host a vector database
  • Chunk, embed, and sync your data
  • Manage chat sessions and history
  • Handle retries, rate limits, fallbacks
  • Figure out what to do with the output
With Modular
  • Register a function or MCP tool
  • Call ai.run() or ai.chat()
  • Get clean output. Ship to users.

Three steps.
Then you're done.

01
Register your data source
Decorate any function with @ai.datasource — or connect an existing MCP server in one line. That's how Modular knows where your data lives.
# Option A — plain function
@ai.datasource
def get_tickets(user_id: str): ...

# Option B — already have MCP?
ai.connect_mcp("https://your-mcp-server.com")
02
Call run() or chat()
Two methods. That's the entire API surface. Modular figures out what data to fetch, what fits in context, and how to structure the prompt.
# One-shot feature
result = await ai.run("summarize", user_id=user.id)

# Stateful chat with your data
reply = await ai.chat(session=session_id, message=msg, user_id=user.id)
03
Ship it
Modular handles the rest — calling your function at the right time, managing embeddings, keeping chat history, routing between models, and returning clean output. You just render it.

Everything you were going
to build yourself.

[ ]
Context management
Automatically fits the right data into the context window. No token math, no truncation bugs.
{ }
Chat history
Stores and replays conversation sessions across requests. No extra database required.
Smart retrieval
Calls your data function at the right moment and retrieves only what's relevant.
Model routing
Switch between Claude, GPT-4o, and Gemini with a single config change. No rewrites.
Retries & fallbacks
Rate limits, timeouts, and errors handled gracefully. Your app stays up.
MCP native
Already have MCP tools? Connect them in one line. First MCP-native AI middleware.

If you're shipping software
and need AI in it — this is for you.

// startup engineers
No dedicated ML team. You need to ship AI features fast without becoming an AI infrastructure engineer.
// dev agencies
Building AI features for multiple clients. Modular gives you a repeatable, reusable integration layer.
// lead engineers
You've felt this pain personally. You want to hand your team a clean abstraction, not a tutorial.

Get early access

We're onboarding the first batch of developers. Join the waitlist and we'll reach out personally.

No spam. Notify you when we launch.

✓ You're on the list. We'll be in touch.