Welcome to Runa
What's Runa?
Runa is an opiniated Python framework for building agentic AI applications: instead of a wide menu of configuration options, it gives you a small set of primitives, each with exactly one sanctioned shape.
Understanding those primitives is key to understanding Runa. They divide your application into three layers: the Agent layer, the Context layer, and the Infrastructure layer, with testing, evaluation, and tracing built in rather than bolted on.
Agent layer
The Agent layer is where your application decides what to do. An Agent is an LLM equipped with instructions and tools, always defined as a subclass, never instantiated directly:
class SupportAgent(Agent):
name = "support_agent"
model = "claude-sonnet-5"
tools = [...]
Tools let an agent take action in
the world, always a plain function wrapped in @tool.
Guardrails validate what
goes in and what comes out, tripping in list order so the first failure
stops the rest. Human Approval
pauses a run before a sensitive tool call executes, until a person signs
off. Subagents let one agent
delegate or hand off work to another.
Context layer
The Context layer is what an agent remembers between and within runs. Sessions keep a conversation going past the agent instance that started it. Memory carries facts forward across runs. Knowledge gives an agent access to your domain's documents, retrieved rather than pasted into the prompt.
Infrastructure layer
The Infrastructure layer is responsible for connecting an agent to the outside world and to the model that powers it. MCP Servers expose external tools and resources over the Model Context Protocol. Models are configured per agent, not globally, so different agents can run on different providers. Hooks let you observe or intercept a run at well-defined points, by overriding only the lifecycle methods you need.
Built in, not bolted on
Every run is traced automatically as a span tree
(Tracing), so you can see
exactly what an agent did and why. Evaluation
(Eval) grades correctness
with plain assertions or judged, dataset-driven scoring.
Deployment is the same
story: runa serve puts your agents behind an HTTP API, and one environment
variable moves sessions, traces and eval history to a shared database when
one replica is no longer enough.
Getting Started
-
Install uv, then Runa:
uv venv --python 3.14 # Runa needs 3.14 or newer source .venv/bin/activate uv add runa-ai
-
Scaffold a new application:
runa new myapp
where
myappis the application name. -
Change directory to
myapp, generate an agent, and talk to it:cd myapp runa generate agent AssistantAgent --model claude-sonnet-5 runa chat assistant_agent
Run any subcommand with
--helpfor options. -
Fill in the API key for whichever model you use in
.env, and you're running. -
Put it in front of users:
uv add "runa-ai[serve]" export RUNA_API_KEY=$(openssl rand -hex 32) runa serve
Every agent under
app/agents/is now an endpoint:POST /agents/<name>/runs. See Deployment. -
Follow the guides to keep building your application. You may find the following resources handy:
Read the Zen of Runa
python -c "from runa import this"
Contributing
We encourage you to contribute to Runa! Check out CONTRIBUTING.md for guidelines about how to proceed.
Trying to report a possible security vulnerability in Runa? Please check out SECURITY.md for guidelines about how to proceed.
Everyone interacting in Runa's codebase, issue tracker, and discussions is expected to follow the code of conduct.
License
Runa is released under the MIT License.
Metadata
Release files for runa-ai 0.9.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| runa_ai-0.9.0.tar.gz | 207.5 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| runa_ai-0.9.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 461.2 kB
Release files / runa_ai-0.9.0.tar.gz
| Download URL | runa_ai-0.9.0.tar.gz |
|---|---|
| Size | 207.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
26ed097b6c630776f7c08cd65a0891019af28fb59d1810fa54cb6b4b901cc6e0
|
|
BLAKE2b-256 checksum How to use checksums |
f32bc249f35523449e2a95f7e865092a958a441f2223949ffb9bd0ce6918337a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.
Transparency logRelease files / runa_ai-0.9.0-py3-none-any.whl
| Download URL | runa_ai-0.9.0-py3-none-any.whl |
|---|---|
| Size | 253.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
be15c0641cbc5bc5b34e1feabee255220fc72bc7ddee864d521c8744ea8e1218
|
|
BLAKE2b-256 checksum How to use checksums |
e79e636a0cede6fcaebfc14775f460fa2b16e9586761cb57eb934439117a3cb2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.
Transparency logSecurity for runa-ai 0.9.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for runa_ai-0.9.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.