What is Distri?
Distri is a composable AI agent runtime for building in-product deep agents. Define an agent once, connect your product functions as tools, and deploy anywhere — as an API server, from the CLI, or embedded directly in your UI.
Your agents understand product context, call your APIs, and complete real workflows — with tools, memory, and state management built in.

Three Steps to Ship an Agent
Describe capabilities and behavior in markdown. Configure model, tools, and guardrails.
Expose your product functions as tools. Let agents call APIs, navigate pages, search data, and update UI.
Run via CLI or deploy as an API service. Embed the UI or integrate via HTTP. Stream actions in real-time.
Choose Your Path
Self-Hosted (Fair Code License)
Distri is fair code licensed and always free to self-host. Run it on your own infrastructure with full control over your data.
Run Distri locally or on your own infrastructure. Full control over data and configuration.
- Run the server with
distri serve - SQLite database stores threads, tasks, sessions, and more
- No external dependencies — works completely offline
- Query directly using standard SQLite tools
# Install the CLI
curl -fsSL https://distri.dev/install.sh | sh
# Start the local server
distri serve --port 8080
# Or run agents directly from CLI
distri run my_agent --task "your task here"
Get Started with Self-Hosted →
Distri Cloud
The fastest way to get started with managed infrastructure.
- Dashboard at app.distri.dev for managing agents, secrets, and API keys
- Push agents with
distri pushto sync your local definitions - Embed in your product using
@distri/reactwith a simple client ID
# Login to Distri Cloud
distri login
# Push your agent to the cloud
distri push
Core Concepts
| Concept | Description |
|---|---|
| Agent Definition | Markdown files that describe agent behavior, tools, and model settings |
| Tools | Functions your agent can call — both built-in plugins and your product functions |
| Threads | Conversation contexts that persist across messages |
| Sessions | Key-value storage scoped to a thread for maintaining state |
| Tasks | Individual agent invocations within a thread |
A2A Compatibility
Distri implements the A2A JSON-RPC spec for agent invocation. Core endpoints:
| Endpoint | Description |
|---|---|
GET /agents/{name}/.well-known/agent.json | Agent Card (A2A discovery) |
POST /agents/{id} | JSON-RPC requests (streams via SSE) |
GET /agents | List registered agents |
GET /agents/{id} | Get agent definition |
Using the CLI
distri -h
Usage: distri [OPTIONS] [COMMAND]
Commands:
list List available agents
list-tools List available tools
run Run agent in interactive chat mode or execute a single task
serve Start the server (API only by default, use --ui to enable web interface)
push Push agent definitions to Distri Cloud
toolcall Call a specific tool directly
publish Publish a plugin to the DAP registry
help Print this message or the help of the given subcommand(s)
Options:
-c, --config <CONFIG> Path to the distri.toml configuration file
-v, --verbose Verbose output
--agent <AGENT> Agent name to use (defaults to 'distri')
-h, --help Print help
-V, --version Print version
Example: Run an agent
distri run search_agent --task "who is the prime minister of singapore"
⏺ Thought for 2.2 seconds
⏺ search({ "query": "current prime minister of Singapore", "limit": 1})
⏺ Thought for 1.3 seconds
⏺ final({ "input": "The current Prime Minister of Singapore is Lawrence Wong."})
The current Prime Minister of Singapore is Lawrence Wong.
Highlights
- Built in Rust for fast, predictable execution
- Fair code licensed — always free to self-host
- Multiple deployment modes — CLI, API server, or embedded UI
- Extensible with modular plugins and MCP-compatible tools
- Real-time streaming of events, tool calls, and responses
- A2A compatible for interoperability with other agent systems