Skip to main content

Installation

Start here. Async Hermes Agent is distributed as a Python library; your application supplies its own service or UI boundary.

Requirements

  • Python 3.11, 3.12, or 3.13
  • Git
  • A model provider credential, unless you use a local endpoint

1. Install the current release

Install the exact reviewed package version from PyPI:

uv pip install "async-hermes-agent==0.20.1.2"

The release workflow publishes through OIDC Trusted Publishing. The same verified wheel, source distribution, and SHA256SUMS file are attached to the v0.20.1.2 GitHub Release. To install the reviewed source snapshot instead, pin the immutable tag:

uv pip install "git+https://github.com/ykoh42/async-hermes-agent.git@v0.20.1.2"

Version policy

The four numeric segments keep the fork tied to its upstream baseline. 0.20.1.2 means upstream Python package version 0.20.1 (tag v2026.8.13) plus async-distribution revision 2. Fork-only releases increment the final segment; a completed upstream port changes the first three segments and resets the final segment to 1.

The earlier 0.20.4 GitHub release used an independent scheme. Python version tag should be explicitly reinstalled at the new upstream-aligned version:

uv pip install --reinstall "async-hermes-agent==0.20.1.2"

2. Or install from a checkout

git clone https://github.com/ykoh42/async-hermes-agent.git
cd async-hermes-agent
uv sync

For development and tests:

uv sync --extra dev
uv run pytest -q

3. Add provider-specific extras

The base installation includes the OpenAI-compatible async transport, MCP, SQLite session storage, and the core tool runtime. Provider selection is a separate decision: install only the extras required by the provider family you choose.

ExtraUse
anthropicNative Anthropic API
vertexGoogle Vertex credentials and async transport support
azure-identityRestricted Microsoft Entra ID support; see provider limitations
bedrockAWS Bedrock transport; the pinned SDK still has blocking bootstrap boundaries
parallel-webParallel web search provider
falFAL image/video generation
edge-ttsEdge text-to-speech backend
tts-premiumElevenLabs text-to-speech backend
mistralMistral text-to-speech backend
piper-ttsLocal Piper backend, isolated in a profile-scoped subprocess broker
modalModal execution backend
daytonaDaytona execution backend
vercelVercel Sandbox execution backend
mem0Mem0 memory provider, including optional OSS dependencies
supermemorySupermemory memory provider
hindsightHindsight memory provider client; embedded-local mode also needs hindsight-all
honchoHoncho memory provider
postgresOpt-in PostgreSQL SessionDB backend (SQLAlchemy Core + asyncpg; run the real integration matrix before production use)
devTest, lint, leak-check, and type-check dependencies

KittenTTS 0.8.1 is published by KittenML as a GitHub release wheel rather than an official PyPI distribution. PyPI rejects direct URL dependencies in uploaded package metadata, so this project cannot offer it as a normal extra. The public-index package named kittentts is not the compatible KittenML 0.8.1 artifact. Install the hash-verified official wheel when selecting tts.provider: kittentts; the wheel declares its own soundfile dependency:

python -m pip install \
'https://github.com/KittenML/KittenTTS/releases/download/0.8.1/kittentts-0.8.1-py3-none-any.whl#sha256=482a436c4f1f3192153710376e459ff3689517ebcda7c2b051e2fd4187b41851'

Piper is available through the package extra:

python -m pip install 'async-hermes-agent[piper-tts]'

The compatibility extras exa, firecrawl, homeassistant, computer-use, vision, and mcp currently add no Python distributions: their retained Python dependencies are already in the base install. They keep the upstream install names valid. External runtimes are still separate; for example, computer-use requires a working cua-driver installation.

From a checkout, for example:

uv sync --extra anthropic
uv sync --extra bedrock

Missing provider dependencies fail with an installation hint; the library does not silently move synchronous provider code into a worker thread.

4. Verify the async API

python - <<'PY'
import inspect
from run_agent import AIAgent

assert inspect.iscoroutinefunction(AIAgent.run_conversation)
assert inspect.iscoroutinefunction(AIAgent.chat)
assert inspect.iscoroutinefunction(AIAgent.close)
print("native-async API available")
PY

This verifies the installed interface without making a paid model request. Continue with the Quickstart. It begins with a neutral provider-selection step, then runs the same awaited agent API for every route.