helloagentai
Talk to the HelloAgent relay from Python. Pair, send, receive, and stream agent messages over a single long-lived WebSocket.
pip install helloagentai
Install as
helloagentai, import ashelloagent. The PyPI project name ishelloagentai(matching our GitHub org); the import path stayshelloagentfor backward compatibility, similar to howpip install Pillowgives youimport PIL.
Quickstart — Python agent
import asyncio
import os
from helloagent import Agent
async def main():
agent = Agent(
token=os.environ["HELLOAGENT_TOKEN"], # ha_* token
relay_url="wss://api.helloagent.cc/v1/ws",
)
@agent.on_message
async def reply(msg):
print(f"{msg.from_handle}: {msg.text}")
return f"you said: {msg.text}" # simple echo reply
await agent.run() # long-lived; reconnects on drop
asyncio.run(main())
Get an ha_* token from https://app.helloagent.cc/app/agents/new.
Quickstart — user client
from helloagent import UserClient
client = UserClient(
handle="alice",
token=sso_session_token,
relay_url="wss://api.helloagent.cc/v1/ws",
)
@client.on_message
def handle(msg):
... # render in your chat UI
await client.run()
await client.send("alice/jarvis", "what's on my calendar today?")
What you get
Agent— long-lived WebSocket connection authenticated with anha_*token. Auto-reconnects with exponential backoff. Inbound messages are dispatched to a handler that returns astr,Nonefor no immediate reply, an awaitable, or anAsyncIterator[str]for streaming replies.UserClient— same transport,ROLE_USER. For user-facing surfaces.IncomingMessage— dataclass withmessage_id,conversation_id,from_handle,to_handle,text.AuthFailedError— raised when the relay rejects auth (auth_response.ok=false). Treat as terminal: re-pair, don't retry.Tool,ToolRegistry— register tools your agent can invoke.tokens,keystore,channels,discovery— auxiliary modules for token handling, key management, channel-link helpers, and agent discovery.
Reconnect behavior
Agent.run() opens the WebSocket, sends auth_request, awaits auth_response, dispatches incoming messages to your @on_message handler, and reconnects on any disconnect. Exponential backoff: 1s → 30s, doubling on consecutive failures, reset after a successful auth. Terminate the run loop by cancelling the asyncio task.
Authentication
The relay no longer hosts /v1/auth/register or /v1/auth/login — register_user and login_user are kept exported for back-compat but raise NotImplementedError. New code should sign in with supabase-py and pass the access token straight into UserClient(token=..., handle=...). The helper claim_handle(access_token, handle) wraps POST /v1/profile.
Compatibility
- Python ≥ 3.10
- Depends on
websockets>=11andprotobuf>=4.21,<7
Versioning
Follows semver; pre-1.0 the protocol may shift between minor versions. The relay protocol itself is versioned via the /v1/ws URL path — bumping that is reserved for breaking wire-format changes.
License
MIT
Metadata
Release files for helloagentai 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| helloagentai-0.1.1.tar.gz | 21.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| helloagentai-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 37.6 kB
Release files / helloagentai-0.1.1.tar.gz
| Download URL | helloagentai-0.1.1.tar.gz |
|---|---|
| Size | 21.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5d5a1760bbebe72f171d787a8f82ad99787c9ef3c1648f8112b37d37df3f0243
|
|
BLAKE2b-256 checksum How to use checksums |
48f884f61a67f5a06574aef0d3e459d55713b918d466d1e22c66375fbc3e148b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 13, 2026.
Transparency logRelease files / helloagentai-0.1.1-py3-none-any.whl
| Download URL | helloagentai-0.1.1-py3-none-any.whl |
|---|---|
| Size | 16.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
13a8c2454bb39942d018282a829d4c27d5070eb291be42957da9e12b9b3c92c8
|
|
BLAKE2b-256 checksum How to use checksums |
9a911c0993f8f2b15987cc627ce634a2aa674fcfc5d7558a09ed55823f172088
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 13, 2026.
Transparency log