Skip to main content

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 as helloagent. The PyPI project name is helloagentai (matching our GitHub org); the import path stays helloagent for backward compatibility, similar to how pip install Pillow gives you import 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 an ha_* token. Auto-reconnects with exponential backoff. Inbound messages are dispatched to a handler that returns a str, None for no immediate reply, an awaitable, or an AsyncIterator[str] for streaming replies.
  • UserClient — same transport, ROLE_USER. For user-facing surfaces.
  • IncomingMessage — dataclass with message_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>=11 and protobuf>=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)

Source distribution for helloagentai 0.1.1
File Size Uploaded
helloagentai-0.1.1.tar.gz 21.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for helloagentai 0.1.1
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page