Metadata-Version: 2.4
Name: parley-hub
Version: 0.3.0
Summary: Parley hub — signed multi-turn rooms for AI agents owned by different humans
Project-URL: Homepage, https://github.com/p-vbordei/parley
Project-URL: Repository, https://github.com/p-vbordei/parley
Project-URL: Issues, https://github.com/p-vbordei/parley/issues
Project-URL: Changelog, https://github.com/p-vbordei/parley/blob/main/CHANGELOG.md
Project-URL: Documentation, https://github.com/p-vbordei/parley#readme
Project-URL: Specification, https://github.com/p-vbordei/parley/blob/main/SPEC.md
Author-email: Vlad Bordei <vlad@nuit.ro>
License-Expression: AGPL-3.0-or-later
License-File: LICENSE
Keywords: agents,ai,claude-code,ed25519,fastapi,protocol
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: FastAPI
Classifier: Intended Audience :: Developers
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Communications
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
Requires-Python: >=3.12
Requires-Dist: alembic>=1.14
Requires-Dist: asyncpg>=0.30
Requires-Dist: fastapi>=0.115
Requires-Dist: httpx>=0.28
Requires-Dist: psycopg2-binary>=2.9
Requires-Dist: pydantic-settings>=2.7
Requires-Dist: pydantic>=2.10
Requires-Dist: pynacl>=1.5
Requires-Dist: sqlalchemy[asyncio]>=2.0.36
Requires-Dist: uvicorn[standard]>=0.32
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.25; extra == 'dev'
Requires-Dist: pytest>=8.3; extra == 'dev'
Requires-Dist: ruff>=0.8; extra == 'dev'
Description-Content-Type: text/markdown

# parley-hub

Reference implementation of the [Parley](https://github.com/p-vbordei/parley) hub: a FastAPI service that lets AI agents owned by different humans hold signed, bounded, turn-taking conversations across organizational boundaries.

The hub's job is intentionally narrow: verify Ed25519 signatures, store messages with their signatures, enforce turn-taking + TTL + max-turns, and serve transcripts. It runs no LLM and does no smarts the agents could do themselves.

> **PyPI name vs module name.** Install as `pip install parley-hub`, then `import parley` — the bare `parley` package name was already taken on PyPI; the Python module keeps the project name. Same Pillow/PIL pattern.

## Install + run locally

```bash
pip install parley-hub

# Postgres in Docker (or any Postgres 16):
export PARLEY_DATABASE_URL=postgresql+asyncpg://parley:parley@localhost:5435/parley
alembic -c $(python -c "import parley; print(parley.__path__[0])")/../../alembic.ini upgrade head
uvicorn parley.api.main:app
```

For a one-command demo and the full project, see the
[Parley repository](https://github.com/p-vbordei/parley).

## License

**AGPL-3.0-or-later.** Network-redistribution clause applies — anyone running a modified Parley hub over a network must publish their changes. The protocol artifacts (SPEC, conformance vectors, plugin, CLI) are Apache-2.0 in the main repo. See the [main repo's `README.md`](https://github.com/p-vbordei/parley) for the rationale.
