Metadata-Version: 2.4
Name: memoair-voice
Version: 0.3.2
Summary: Local-runtime voice memory client for MemoAir (sits on top of memoair-runtime)
Project-URL: Homepage, https://memoair.dev
Project-URL: Documentation, https://docs.memoair.dev
Project-URL: Repository, https://github.com/memoair/memoair-python
Project-URL: Changelog, https://github.com/memoair/memoair-python/blob/main/CHANGELOG.md
Author-email: MemoAir <hello@memoair.dev>
License-Expression: MIT
Keywords: agents,ai,knowledge-graph,llm,memoair,memory,memory-as-a-service,rag,voice
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
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: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.9
Requires-Dist: anyio>=4.0.0
Requires-Dist: httpx>=0.25.0
Provides-Extra: dev
Requires-Dist: black>=23.0.0; extra == 'dev'
Requires-Dist: mypy>=1.0.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
Requires-Dist: pytest-httpx>=0.22.0; extra == 'dev'
Requires-Dist: pytest>=7.0.0; extra == 'dev'
Requires-Dist: respx>=0.20.0; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Description-Content-Type: text/markdown

# memoair-voice

Local-runtime voice memory client for MemoAir. Wraps the loopback voice-runtime sidecar, keeps per-user memory on-device, syncs to cloud.

## Install

```bash
pip install memoair-voice
```

## Quick start

```python
from memoair_voice import MemoAirVoiceAgent

agent = MemoAirVoiceAgent(
    api_key="memoair_pk_...",        # account-scoped API key
    project_id="proj_xxx",            # which customer project
    agent_id="agent_xxx",             # which agent identity
    user_id="caller_phone_hash",      # optional, per-call end user
)

# Or pull from MEMOAIR_API_KEY / MEMOAIR_PROJECT_ID / MEMOAIR_AGENT_ID /
# MEMOAIR_USER_ID (+ optional MEMOAIR_BASE_URL):
agent = MemoAirVoiceAgent.from_env()

# Headers carrying every identity dimension:
#   Authorization: Bearer memoair_pk_...
#   X-Project-Id: proj_xxx
#   X-Agent-Id: agent_xxx
#   X-User-Id: caller_phone_hash
agent.headers()

# Build a runtime-backed client:
async with agent.client() as client:
    await client.search_memory("what time is standup")
    await client.save_response(
        user_text="What time is standup?",
        assistant_text="10:30 IST.",
    )
```

## Docs

Full documentation at https://docs.memoair.dev/voice
