Metadata-Version: 2.5
Name: pixis
Version: 0.1.0
Summary: Write a function, serve it, and let a Pixis assistant call it.
Project-URL: Documentation, https://docs-pixis-voice.up.railway.app/
Keywords: fastapi,pixis,tools,voice-agent
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: FastAPI
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: fastapi>=0.115
Requires-Dist: uvicorn>=0.32
Provides-Extra: dev
Requires-Dist: httpx>=0.28; extra == 'dev'
Requires-Dist: mypy>=1.13; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: ruff>=0.8; extra == 'dev'
Description-Content-Type: text/markdown

# Pixis for Python

Define Python functions as typed Pixis tools and serve them from a small,
authenticated FastAPI application.

## Install

```bash
pip install pixis
```

Python 3.11 or newer is required.

## Define and serve tools

```python
import os

from pixis import serve, tool


@tool(
    tool_class="read_only",
    deadline_ms=1_200,
    describes={"clinic": "The clinic named by the caller."},
)
async def clinic_status(clinic: str) -> dict:
    """Look up whether a clinic is open."""
    return {"clinic": clinic, "open": True}


serve(os.environ["PIXIS_KEY"], connection_id="clinic", port=9101)
```

Pixis discovers the catalogue at `GET /pixis/tools` and invokes a tool at
`POST /pixis/call/{tool_id}`. Both routes require the configured key in the
`X-Pixis-Key` header.

Write tools must declare independent readback through `confirm_by` and identify
the returned reference. Invalid definitions are refused when the module loads.

See the [Pixis Voice Runtime documentation](https://docs-pixis-voice.up.railway.app/)
for connection and tool configuration.
