Metadata-Version: 2.4
Name: waxell
Version: 0.1.8
Summary: Waxell — build and run governed AI agents. Execution engine, authoring SDK, and the wax CLI.
Author-email: Waxell AI <eng@waxell.dev>
License: MIT
Project-URL: Homepage, https://waxell.ai
Project-URL: Documentation, https://waxell.ai/docs/
Project-URL: Repository, https://github.com/waxell-ai/runtime-evaluation
Project-URL: Issues, https://github.com/waxell-ai/runtime-evaluation/issues
Keywords: agents,runtime,ai,asyncio,governance,observability
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Software Development :: Libraries
Requires-Python: <3.15,>=3.10
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: asgiref>=3.7.0
Requires-Dist: httpx>=0.24
Requires-Dist: waxell-observe>=0.1.0
Requires-Dist: click>=8.0
Requires-Dist: rich>=13.0
Requires-Dist: python-dotenv>=1.0
Requires-Dist: pydantic<3,>=2
Requires-Dist: pyyaml>=6.0
Requires-Dist: plotext>=5.2
Requires-Dist: tomli>=2.0; python_version < "3.11"
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21; extra == "dev"
Provides-Extra: langgraph
Requires-Dist: langgraph>=0.2; extra == "langgraph"
Requires-Dist: langchain-core>=0.3; extra == "langgraph"
Provides-Extra: crewai
Requires-Dist: crewai>=0.80; extra == "crewai"
Provides-Extra: pydantic-ai
Requires-Dist: pydantic-ai>=0.0.20; extra == "pydantic-ai"
Provides-Extra: autogen
Requires-Dist: autogen-core>=0.4; extra == "autogen"
Provides-Extra: claude-sdk
Requires-Dist: claude-agent-sdk>=0.1; extra == "claude-sdk"
Provides-Extra: all
Requires-Dist: waxell[autogen,claude-sdk,crewai,langgraph,pydantic-ai]; extra == "all"
Dynamic: license-file

# waxell

[![PyPI - Version](https://img.shields.io/pypi/v/waxell?include_prereleases)](https://pypi.org/project/waxell)
[![Python](https://img.shields.io/pypi/pyversions/waxell)](https://pypi.org/project/waxell)
[![Docs](https://img.shields.io/badge/docs-waxell.ai-blue)](https://waxell.ai/docs/intro)
[![License: MIT](https://img.shields.io/badge/license-MIT-green)](https://spdx.org/licenses/MIT.html)

**[Docs](https://waxell.ai/docs/intro)** ·
**[Quickstart](https://waxell.ai/docs/runtime/quickstart)** ·
**[Evaluation walkthrough](https://waxell.ai/docs/tutorials/evaluate-the-runtime)** ·
**[CLI Reference](https://waxell.ai/docs/reference/cli)** ·
**[Coming from LangChain/CrewAI?](https://waxell.ai/docs/migrate/overview)**

**Build and run governed AI agents.** One install gets you the durable execution
engine (spawn/suspend, budget enforcement, governance hooks, lineage), the
authoring decorators, the `wax` CLI, and observability. Python 3.10–3.14.

```bash
pip install waxell
```

Using another agent framework and just want observability + governance on top?
That's the standalone observe SDK:

```bash
pip install waxell-observe   # LangChain, OpenAI Agents, CrewAI, … — no runtime needed
```

## Evaluate it in thirty minutes

[`waxell-ai/runtime-evaluation`](https://github.com/waxell-ai/runtime-evaluation)
is a complete project: one reviewer agent on five frameworks, a domain server
on your laptop that verifies every call's end-user and agent identity, a
policy that blocks an action, evaluations, memory across four tiers, and signed
evidence at the end. The
[walkthrough](https://waxell.ai/docs/tutorials/evaluate-the-runtime) explains
each step.

## What you get

| Piece | What it is | How you touch it | Docs |
|---|---|---|---|
| **`waxell`** | The library — author + run agents | `from waxell import agent, workflow, tool` | [Runtime quickstart](https://waxell.ai/docs/runtime/quickstart) |
| **`wax`** | The CLI — push, fire, observe, govern from the terminal | `wax push`, `wax signals fire`, `wax runs`, … | [CLI reference](https://waxell.ai/docs/reference/cli) |
| **`waxell.observe`** | Observability SDK (the `waxell-observe` package) | mostly automatic | [Observe overview](https://waxell.ai/docs/observe/overview) |

## Quick start

An agent is a `waxell.yaml` manifest — any framework — or Python:

```python
from waxell import agent, workflow

@agent(name="lead_research", description="Research a lead and draft outreach")
class LeadResearch:
    @workflow("draft_email")
    async def draft(self, ctx, domain: str):
        company = await ctx.tool("fetch_company", domain=domain)
        email = await ctx.llm.generate(
            prompt=f"Write a 3-sentence intro for {company['name']}",
            task="outreach_email",
        )
        return {"email": email, "company": company["name"]}
```

Then push, fire and watch it from the CLI
([full command reference](https://waxell.ai/docs/reference/cli)):

```bash
wax login                                    # authenticate (or: wax config init --profile <name>)
wax doctor                                   # check the install, profile and API reachability
wax push                                     # finds waxell.yaml in this directory and registers it
wax signals fire <signal> --payload '{}' --stream
wax runs                                     # recent runs
wax traces list                              # distributed traces
```

## The CLI at a glance

| Command | What it does |
|---|---|
| `wax push`, `wax agents`, `wax signals fire` | Register agents, inspect builds, start runs |
| `wax runs`, `wax traces list` | Browse runs and traces |
| `wax domains` | The contracts agents use to reach your systems; per-user auth |
| `wax secrets` | Workspace secrets — keys never live in a manifest |
| `wax memory`, `wax graph` | What an agent remembers; the workspace's knowledge graphs |
| `wax axid` | Agent identity — the signing keys, verify a token, trace one back to the person |
| `wax end-users` | The people agents act for |
| `wax provider` | Your own LLM endpoints and model routing |
| `wax policies`, `wax eval`, `wax test` | Governance, evaluators and guardrails, scenario tests |
| `wax compliance` | Signed attestations and auditor evidence packs |
| `wax plane` | Run the workspace from your own Postgres, Redis and object storage |
| `wax claude-init` | Install the bundled Claude skills into a project |

## What's in the box

- **Execution engine** — `ExecutionContext`, `WorkflowEnvelope`, durable `Step`,
  checkpoint/resume, `ctx.spawn` / `ctx.spawn_many`, tree-budget enforcement.
- **Governance** — pluggable `GovernanceHook`, in-runtime policy evaluation
  before every tool call, lineage.
- **Identity** — every domain call carries a signed end-user token and a signed
  agent identity (AXID, on by default) that your systems verify offline
  against your workspace's public keys.
- **Memory** — working, session, episodic, semantic and graph tiers declared per
  slot. Semantic memory embeds with a bundled open-source model by default (no
  key needed) or any OpenAI-compatible provider you configure.
- **Framework adapters** — run governed LangGraph, CrewAI, Pydantic AI, AutoGen,
  and Claude Agent SDK agents
  ([migration guides](https://waxell.ai/docs/migrate/overview)). Each adapter's
  framework dependency is optional:

  ```bash
  pip install "waxell[langgraph]"
  pip install "waxell[all]"     # every adapter
  ```

- **Authoring** — `agent`, `workflow`, `router`, `tool`, `policy` decorators,
  spec types, and typed `Context` objects for IDE autocomplete.
- **Observability** — every run traced; cost, tokens, and policy decisions in
  the Waxell dashboard via `waxell.observe`.

Import paths: `from waxell import agent` is the documented path;
`from waxell_runtime import agent` works too and is kept forever. The internal
`waxell_sdk` package bundled in this wheel is an implementation detail — never
import it directly.

## License

`waxell` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
