Metadata-Version: 2.4
Name: agex
Version: 0.8.2
Summary: Library-friendly agents that work directly with your existing Python codebase.
Author: ashenfad
License-Expression: MIT
Project-URL: Homepage, https://ashenfad.github.io/agex/
Project-URL: Documentation, https://ashenfad.github.io/agex/
Project-URL: Repository, https://github.com/ashenfad/agex
Project-URL: Issues, https://github.com/ashenfad/agex/issues
Keywords: agents,ai,llm,python,runtime,sandbox
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
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: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: tiktoken
Requires-Dist: xxhash
Requires-Dist: diskcache
Requires-Dist: pydantic
Requires-Dist: pygments
Provides-Extra: dev
Requires-Dist: ruff; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-asyncio; extra == "test"
Requires-Dist: pytest-timeout; extra == "test"
Requires-Dist: anyio; extra == "test"
Requires-Dist: numpy; extra == "test"
Requires-Dist: pandas; extra == "test"
Requires-Dist: anthropic; extra == "test"
Requires-Dist: google-genai; extra == "test"
Requires-Dist: openai; extra == "test"
Requires-Dist: matplotlib; extra == "test"
Requires-Dist: cloudpickle; extra == "test"
Requires-Dist: uvicorn; extra == "test"
Requires-Dist: fastapi; extra == "test"
Requires-Dist: sse-starlette; extra == "test"
Requires-Dist: modal; extra == "test"
Provides-Extra: examples
Requires-Dist: plotly[express]; extra == "examples"
Requires-Dist: kaleido; extra == "examples"
Requires-Dist: numpy; extra == "examples"
Requires-Dist: nbformat; extra == "examples"
Requires-Dist: pandas; extra == "examples"
Requires-Dist: osmnx>=2.0.0; extra == "examples"
Requires-Dist: folium; extra == "examples"
Provides-Extra: openai
Requires-Dist: openai; extra == "openai"
Provides-Extra: anthropic
Requires-Dist: anthropic; extra == "anthropic"
Provides-Extra: gemini
Requires-Dist: google-genai; extra == "gemini"
Provides-Extra: http
Requires-Dist: cloudpickle; extra == "http"
Requires-Dist: httpx; extra == "http"
Provides-Extra: modal
Requires-Dist: modal; extra == "modal"
Provides-Extra: server
Requires-Dist: fastapi; extra == "server"
Requires-Dist: uvicorn; extra == "server"
Requires-Dist: sse-starlette; extra == "server"
Requires-Dist: cloudpickle; extra == "server"
Provides-Extra: all-providers
Requires-Dist: agex[openai]; extra == "all-providers"
Requires-Dist: agex[anthropic]; extra == "all-providers"
Requires-Dist: agex[gemini]; extra == "all-providers"
Provides-Extra: all-hosts
Requires-Dist: agex[http]; extra == "all-hosts"
Requires-Dist: agex[modal]; extra == "all-hosts"
Dynamic: license-file

# agex: Library-Friendly Agents

**`agex`** (a portmanteau of **age**nt **ex**ecution) is a Python-native agentic framework that enables AI agents to work directly with your existing libraries and codebase.

## Core Concepts

`agex` executes sandboxed Python directly in your process, bypassing JSON serialization to let complex objects flow freely. You define a safe, focused environment by whitelisting exactly which capabilities are available.

Key features:
- **Type-Safe Execution**: Agents fulfill typed signatures by executing sandboxed Python.
- **Curated Scope**: Whitelist exactly which modules and classes are available.
- **Stateful Memory**: Versioned workspace enables time-travel debugging.
- **Multi-Agent Orchestration**: Coordinate agents with natural Python control flow.
- **Flexible Hosting**: Run locally (default), on HTTP servers, or serverless via [Modal](https://modal.com/).

![Demo of an agex agent returning pandas DataFrames and plotly figures in an IPython REPL](docs/assets/teaser.gif)

**This works because** `agex` agents can accept and return complex types like `pandas.DataFrame` and `plotly.Figure` objects without intermediate JSON serialization. For a deeper dive, check out the full **[agex101.ipynb tutorial](https://ashenfad.github.io/agex/examples/agex101/)** or see **[geospatial routing with OSMnx](https://ashenfad.github.io/agex/examples/routing/)** for advanced multi-library integration.

For a full demo app where agex integrates with NiceGUI, see [`agex-ui`](https://github.com/ashenfad/agex-ui).


## Documentation

Complete documentation is hosted at **[ashenfad.github.io/agex](https://ashenfad.github.io/agex/)**.

Key sections:
- **[📚 Quick Start Guide](https://ashenfad.github.io/agex/quick-start/)**
- **[🔭 The Big Picture](https://ashenfad.github.io/agex/concepts/big-picture/)**
- **[💡 Examples](https://ashenfad.github.io/agex/examples/overview/)**
- **[📖 API Reference](https://ashenfad.github.io/agex/api/overview/)**

## Installation

Install agex with your preferred LLM provider:

```bash
# Install with a specific provider
pip install "agex[openai]"        # For OpenAI models
pip install "agex[anthropic]"     # For Anthropic Claude models
pip install "agex[gemini]"        # For Google Gemini models

# Or install with all providers
pip install "agex[all-providers]"
```

## Project Status

> **⚠️** `agex` is a new framework in active development. While the core concepts are stabilizing, the API should be considered experimental and is subject to change.

For teams looking for a more battle-tested library built on the same "agents-that-think-in-code" philosophy, we highly recommend Hugging Face's excellent [`smolagents`](https://github.com/huggingface/smolagents) project. `agex` explores a different architectural path, focusing on deep runtime interoperability and a secure, sandboxed environment for direct integration with existing Python libraries.

## Contributing

We welcome contributions! See our [Contributing Guide](CONTRIBUTING.md) for details on our development workflow, code style, and how to submit pull requests. For bug reports and feature requests, please use [GitHub Issues](https://github.com/ashenfad/agex/issues).
