Metadata-Version: 2.4
Name: hanzo
Version: 0.4.4
Summary: Python orchestration tools for Hanzo AI. The `hanzo` command itself is now a native binary — https://hanzo.sh
Project-URL: Homepage, https://hanzo.ai
Project-URL: Repository, https://github.com/hanzoai/python-sdk
Project-URL: Documentation, https://docs.hanzo.ai/cli
Project-URL: Bug Tracker, https://github.com/hanzoai/python-sdk/issues
Author-email: Hanzo AI <dev@hanzo.ai>
Keywords: agents,ai,cli,hanzo,llm,local-ai,mcp,private-ai
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.12
Requires-Dist: click>=8.1.0
Requires-Dist: hanzo-cli>=0.2.0
Requires-Dist: hanzo-kms>=1.1.0
Requires-Dist: httpx>=0.23.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: rich>=13.0.0
Provides-Extra: agents
Requires-Dist: hanzo-agents>=0.1.0; extra == 'agents'
Requires-Dist: hanzo-network>=0.1.3; extra == 'agents'
Provides-Extra: ai
Requires-Dist: anthropic>=0.25.0; extra == 'ai'
Requires-Dist: hanzoai>=1.0.0; extra == 'ai'
Requires-Dist: openai>=1.0.0; extra == 'ai'
Provides-Extra: all
Requires-Dist: anthropic>=0.25.0; extra == 'all'
Requires-Dist: hanzo-aci>=0.2.8; extra == 'all'
Requires-Dist: hanzo-agents>=0.1.0; extra == 'all'
Requires-Dist: hanzo-mcp>=0.7.0; extra == 'all'
Requires-Dist: hanzo-memory>=1.0.0; extra == 'all'
Requires-Dist: hanzo-network>=0.1.3; extra == 'all'
Requires-Dist: hanzoai>=1.0.0; extra == 'all'
Requires-Dist: openai>=1.0.0; extra == 'all'
Requires-Dist: prompt-toolkit>=3.0.0; extra == 'all'
Requires-Dist: qrcode>=7.4.2; extra == 'all'
Provides-Extra: cron
Requires-Dist: croniter>=2.0.0; extra == 'cron'
Requires-Dist: redis>=5.0.0; extra == 'cron'
Provides-Extra: dev
Requires-Dist: hanzo-aci>=0.2.8; extra == 'dev'
Provides-Extra: documentdb
Requires-Dist: motor>=3.3.0; extra == 'documentdb'
Requires-Dist: pymongo>=4.6.0; extra == 'documentdb'
Provides-Extra: functions
Requires-Dist: httpx>=0.23.0; extra == 'functions'
Provides-Extra: infra
Requires-Dist: aiobotocore>=2.9.0; extra == 'infra'
Requires-Dist: botocore>=1.34.0; extra == 'infra'
Requires-Dist: croniter>=2.0.0; extra == 'infra'
Requires-Dist: httpx>=0.23.0; extra == 'infra'
Requires-Dist: meilisearch-python-sdk>=3.0.0; extra == 'infra'
Requires-Dist: motor>=3.3.0; extra == 'infra'
Requires-Dist: nats-py>=2.6.0; extra == 'infra'
Requires-Dist: pymongo>=4.6.0; extra == 'infra'
Requires-Dist: qdrant-client>=1.7.0; extra == 'infra'
Requires-Dist: redis>=5.0.0; extra == 'infra'
Requires-Dist: temporalio>=1.4.0; extra == 'infra'
Provides-Extra: interactive
Requires-Dist: prompt-toolkit>=3.0.0; extra == 'interactive'
Requires-Dist: qrcode>=7.4.2; extra == 'interactive'
Provides-Extra: kv
Requires-Dist: redis>=5.0.0; extra == 'kv'
Provides-Extra: mcp
Requires-Dist: hanzo-mcp>=0.7.0; extra == 'mcp'
Provides-Extra: pubsub
Requires-Dist: nats-py>=2.6.0; extra == 'pubsub'
Provides-Extra: queues
Requires-Dist: redis>=5.0.0; extra == 'queues'
Provides-Extra: router
Provides-Extra: search
Requires-Dist: meilisearch-python-sdk>=3.0.0; extra == 'search'
Provides-Extra: storage
Requires-Dist: aiobotocore>=2.9.0; extra == 'storage'
Requires-Dist: botocore>=1.34.0; extra == 'storage'
Provides-Extra: tasks
Requires-Dist: temporalio>=1.4.0; extra == 'tasks'
Provides-Extra: vector
Requires-Dist: qdrant-client>=1.7.0; extra == 'vector'
Description-Content-Type: text/markdown

# hanzo

[![PyPI](https://img.shields.io/pypi/v/hanzo.svg)](https://pypi.org/project/hanzo/)
[![Python Version](https://img.shields.io/pypi/pyversions/hanzo.svg)](https://pypi.org/project/hanzo/)

Python orchestration helpers for Hanzo AI, and the older Python implementation of
the Hanzo CLI.

## The `hanzo` command lives elsewhere now

The Hanzo CLI is a native binary. Install it with:

```bash
curl -fsSL https://hanzo.sh | sh
hanzo auth login
```

That gives you `hanzo` (and `hanzo-node`, a symlink to the same build) with one
command group per Hanzo Cloud product. This package's console script is
**`hanzo-py`** — deliberately not `hanzo`, so it cannot shadow the real CLI on
your PATH:

```bash
pip install hanzo
hanzo-py --help
```

Nothing here is being removed. If you have scripts on `hanzo-py`, they keep
working; new work should target the native CLI.

## What's still useful here

The Python library pieces, importable without touching the CLI:

```python
from hanzo.batch_orchestrator import BatchOrchestrator

orchestrator = BatchOrchestrator()
results = await orchestrator.run_batch([
    "Summarize the incident report",
    "Draft the follow-up email",
])
```

```python
from hanzo.memory_manager import MemoryManager

memory = MemoryManager()
memory.add_to_context("user", "What changed in the last deploy?")
context = memory.get_context()
```

```python
from hanzo.fallback_handler import FallbackHandler

handler = FallbackHandler()
result = await handler.handle_with_fallback(
    primary_fn=api_call,
    fallback_fn=local_inference,
)
```

For the typed Hanzo Cloud API client, install [`hanzoai`](https://pypi.org/project/hanzoai/).

## Configuration

```bash
HANZO_API_KEY=hk-...
HANZO_BASE_URL=https://api.hanzo.ai
```

Model ids come from the cloud catalog, not from this file — `zen5`,
`zen5-coder`, `zen5-flash`, `zen5-mini`, `zen5-pro`, `enso`, `enso-flash`,
`enso-ultra`. Ask the cloud rather than hardcoding: `hanzo models list`.

## Development

```bash
cd pkg/hanzo
uv sync --all-extras
uv build
```

## License

Apache 2.0
