Metadata-Version: 2.4
Name: praxium
Version: 0.1.0
Summary: Praxium is a typed, asynchronous, observable framework for AI agents and graph workflows.
Project-URL: Homepage, https://github.com/rebel47/Praxium
Project-URL: Documentation, https://github.com/rebel47/Praxium/tree/main/docs
Project-URL: Repository, https://github.com/rebel47/Praxium
Project-URL: Issues, https://github.com/rebel47/Praxium/issues
Author: Praxium contributors
License-Expression: Apache-2.0
License-File: LICENSE
License-File: NOTICE
Keywords: agents,ai,asyncio,graph,pydantic
Classifier: Development Status :: 3 - Alpha
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: pydantic<3,>=2.10
Provides-Extra: api
Requires-Dist: fastapi>=0.115; extra == 'api'
Requires-Dist: uvicorn[standard]>=0.30; extra == 'api'
Provides-Extra: aws
Requires-Dist: boto3<2,>=1.35; extra == 'aws'
Provides-Extra: azure
Requires-Dist: azure-identity<2,>=1.19; extra == 'azure'
Requires-Dist: httpx<1,>=0.27; extra == 'azure'
Provides-Extra: cli
Requires-Dist: typer>=0.15; extra == 'cli'
Provides-Extra: cloud-providers
Requires-Dist: azure-identity<2,>=1.19; extra == 'cloud-providers'
Requires-Dist: boto3<2,>=1.35; extra == 'cloud-providers'
Requires-Dist: google-auth<3,>=2.35; extra == 'cloud-providers'
Requires-Dist: httpx<1,>=0.27; extra == 'cloud-providers'
Provides-Extra: dev
Requires-Dist: build>=1.2; extra == 'dev'
Requires-Dist: hatch>=1.14; extra == 'dev'
Requires-Dist: httpx<1,>=0.27; extra == 'dev'
Requires-Dist: mypy>=1.13; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest-cov>=5; extra == 'dev'
Requires-Dist: pytest>=7.4; extra == 'dev'
Requires-Dist: ruff>=0.8; extra == 'dev'
Provides-Extra: gcp
Requires-Dist: google-auth<3,>=2.35; extra == 'gcp'
Provides-Extra: otel
Requires-Dist: opentelemetry-api>=1.28; extra == 'otel'
Requires-Dist: opentelemetry-sdk>=1.28; extra == 'otel'
Provides-Extra: postgres
Requires-Dist: asyncpg>=0.30; extra == 'postgres'
Provides-Extra: providers
Requires-Dist: httpx<1,>=0.27; extra == 'providers'
Description-Content-Type: text/markdown

# Praxium

Praxium is a typed, asynchronous foundation for AI agents and graph
workflows. It is designed around explicit state, deterministic routing, structured
events, cancellation, retries, timeouts, checkpoints, and provider-neutral
extension interfaces.

> Status: `0.1.0` alpha. The executable core is being built against the tracked
> [implementation plan](https://github.com/rebel47/Praxium/blob/main/docs/IMPLEMENTATION_PLAN.md).

## Quick start

```bash
python -m pip install -e .
python examples/quickstart.py
```

Install production model adapters:

```bash
python -m pip install -e ".[providers]"
```

```python
from praxium import Model
from praxium.providers import ProviderFactory

provider = ProviderFactory.ollama()
model = Model(name="qwen3:8b", provider=provider.name)
```

Praxium includes native OpenAI, Anthropic, Gemini, Amazon Bedrock, and Google Vertex
AI protocol support plus named presets for Azure OpenAI, Groq, Together,
OpenRouter, Kimi, GLM, Ollama, and Hugging Face. Arbitrary OpenAI-compatible
endpoints and completely custom provider callables are supported without a
model-name allowlist.

```python
from praxium import GraphBuilder, Runtime, State


async def greet(state: State, _context):
    return {"greeting": f"Hello, {state.data['name']}!"}


graph = (
    GraphBuilder("hello")
    .add_node("greet", greet)
    .set_entrypoint("greet")
    .set_finish_point("greet")
    .build()
)

result = await Runtime().run(graph, State(data={"name": "Ada"}))
print(result.state.data["greeting"])
```

## Design principles

- Everything crossing a public boundary is typed.
- Every execution produces correlated, ordered events.
- State and checkpoints are serializable and reproducible.
- The runtime is async and cancellation-aware.
- Provider, database, web, and CLI dependencies are optional adapters.
- Extension points use explicit protocols and conflict-safe registries.

## Development

```bash
python -m pip install -e ".[dev]"
ruff format --check .
ruff check .
mypy src
pytest --cov=praxium --cov-branch
```

The architecture, milestones, acceptance criteria, and v0.1 boundary are recorded
in [docs/IMPLEMENTATION_PLAN.md](https://github.com/rebel47/Praxium/blob/main/docs/IMPLEMENTATION_PLAN.md).
Repository-wide engineering constraints live in
[AGENTS.md](https://github.com/rebel47/Praxium/blob/main/AGENTS.md).

## Documentation

- [User guide with examples](https://github.com/rebel47/Praxium/blob/main/docs/USER_GUIDE.md)
- [Model providers and usage examples](https://github.com/rebel47/Praxium/blob/main/docs/PROVIDERS.md)
- [Architecture](https://github.com/rebel47/Praxium/blob/main/docs/ARCHITECTURE.md)
- [PostgreSQL and pgvector design](https://github.com/rebel47/Praxium/blob/main/docs/POSTGRESQL.md)
- [Deployment guide](https://github.com/rebel47/Praxium/blob/main/docs/DEPLOYMENT.md)
- [Delivered and deferred scope](https://github.com/rebel47/Praxium/blob/main/docs/DELIVERY_STATUS.md)
- [Complete implementation roadmap](https://github.com/rebel47/Praxium/blob/main/docs/IMPLEMENTATION_PLAN.md)
