Skip to main content

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.

Distri chat interface

Three Steps to Ship an Agent

1. Define your agent

Describe capabilities and behavior in markdown. Configure model, tools, and guardrails.

2. Connect your functions

Expose your product functions as tools. Let agents call APIs, navigate pages, search data, and update UI.

3. Deploy & embed

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)

Always Free

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 push to sync your local definitions
  • Embed in your product using @distri/react with a simple client ID
# Login to Distri Cloud
distri login

# Push your agent to the cloud
distri push

Learn about Cloud Features →


Core Concepts

ConceptDescription
Agent DefinitionMarkdown files that describe agent behavior, tools, and model settings
ToolsFunctions your agent can call — both built-in plugins and your product functions
ThreadsConversation contexts that persist across messages
SessionsKey-value storage scoped to a thread for maintaining state
TasksIndividual agent invocations within a thread

A2A Compatibility

Distri implements the A2A JSON-RPC spec for agent invocation. Core endpoints:

EndpointDescription
GET /agents/{name}/.well-known/agent.jsonAgent Card (A2A discovery)
POST /agents/{id}JSON-RPC requests (streams via SSE)
GET /agentsList 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

Next Steps