A Python client library for interacting with the Voxta conversational AI platform via SignalR.
Project description
Voxta Client
A core library for interacting with the Voxta conversational AI platform using Python. This client enables real-time communication with Voxta characters using the SignalR protocol.
Documentation
Full documentation is available at https://voxta.dionlabs.ai/.
Compatibility
- Voxta Server: Designed for and tested with v1.2.1.
- Python: Supports 3.9+.
Features
- Real-time Interaction: Full support for Voxta's SignalR/WebSockets protocol.
- Event-Driven: Simple callback system for handling server events (messages, state changes, etc.).
- Session Management: Easy handling of chat sessions, character selection, and context updates.
- Lightweight: Minimal dependencies, built for performance and reliability.
Protocol Support Matrix
This client implements the Voxta SignalR protocol. Below is the current support status compared to the full server capabilities.
| Category | Feature | Protocol Method | Status |
|---|---|---|---|
| Core | Authentication | authenticate |
✅ Supported |
| App Registration | registerApp |
✅ Supported | |
| Chat Subscription | subscribeToChat |
✅ Supported | |
| Messaging | Start Chat | startChat |
✅ Supported |
| Resume Chat | resumeChat |
✅ Supported | |
| Send Message | send |
✅ Supported | |
| Character Speech Req | characterSpeechRequest |
✅ Supported | |
| Control | Interrupt | interrupt |
✅ Supported |
| Pause | pause |
✅ Supported | |
| Inspect Session | inspect |
✅ Supported | |
| Context | Update Context | updateContext |
✅ Supported |
| Actions/Events | updateContext |
✅ Supported | |
| Role Management | enableRoles |
✅ Supported | |
| Media | Playback Sync | speechPlaybackStart/Complete |
✅ Supported |
| Audio Streaming | WebSocketStream (PCM) |
❌ Not Planned | |
| Vision / Images | visionCapture |
❌ Not Planned |
Installation
pip install voxta-client
Quick Start
import asyncio
from voxta_client import VoxtaClient
async def main():
# 1. Initialize the client
client = VoxtaClient("http://localhost:5384")
# Set up event listeners
@client.on("message")
async def on_message(payload):
if payload.get("senderType") == "Character":
print(f"\nCharacter: {payload.get('text')}")
# 2. Negotiate authentication
print("Negotiating connection...")
token, cookies = client.negotiate()
# 3. Connect (runs the message loop in the background)
connection_task = asyncio.create_task(client.connect(token, cookies))
# Wait for the client to be ready (connected and session pinned)
# The 'ready' event is triggered once a sessionId is acquired
ready_event = asyncio.Event()
client.on("ready", lambda _: ready_event.set())
print("Connecting to Voxta...")
await ready_event.wait()
print(f"Connected! Session ID: {client.session_id}")
# 4. Send a message
print("Sending message...")
await client.send_message("Hello! Tell me a short story.")
# Wait for response
await asyncio.sleep(10)
# Clean up
await client.close()
await connection_task
if __name__ == "__main__":
asyncio.run(main())
Development
This project uses uv for dependency management and Ruff for linting.
Setup
# Clone the repository
git clone https://github.com/dion-labs/voxta-client.git
cd voxta-client
# Install dependencies and setup venv
uv sync --all-extras
# Install pre-commit hooks
uv run pre-commit install
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file voxta_client-0.1.2.tar.gz.
File metadata
- Download URL: voxta_client-0.1.2.tar.gz
- Upload date:
- Size: 16.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54538926bf7e7fb7ce7880f2380c59968491772953c192ebe0ffb4d8b9e8de00
|
|
| MD5 |
e2429747899665b52e68e893a5416b13
|
|
| BLAKE2b-256 |
7d7492c84082eaacb299a1a3c4653d3764628653884413119d6ab08d94af7300
|
File details
Details for the file voxta_client-0.1.2-py3-none-any.whl.
File metadata
- Download URL: voxta_client-0.1.2-py3-none-any.whl
- Upload date:
- Size: 17.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b5579c6e1b154891657d1d3bbbf63bf9510b7a5048eac249083884346d16475
|
|
| MD5 |
1f1baa6a91089644123244df6a1b5828
|
|
| BLAKE2b-256 |
383f430840856698a2765c057e3c4168f4ab6b6e5fb297a951605840f1137ff0
|