Skip to main content

AIVG — AI Voice Gateway: agent-platform-agnostic voice-satellite management plane + CLI

Project description

AIVG — AI Voice Gateway

AIVG is a platform-neutral voice satellite system: a thin, realtime voice transport (WebRTC / Opus) bridged into whichever agent platform plugin is configured (v1 canonical: Hermes; planned: OpenClaw). Satellites capture audio and play it back; STT, the agent loop, TTS, and end-of-utterance detection live in the upstream agent platform.

Install (PyPI)

pip install aivg

Supported: Python 3.11+ on Linux x86_64/aarch64, macOS arm64/x86_64.

⚠ Install into your existing Hermes virtualenv, not a fresh venv. The aivg-satellite entry point is only discoverable by Hermes's plugin loader if AIVG lives in the same venv Hermes runs from:

uv pip install --python ~/.hermes/hermes-agent/venv/bin/python aivg

Then add aivg-satellite under plugins.enabled: in ~/.hermes/config.yaml and restart the gateway. Full setup flow: see docs/ or run aivg setup --help.

Repo: https://github.com/cloudomate/aivg · Changelog: CHANGELOG.md · License: MIT.

Status

Layer State
Voice plane (WebRTC, Opus, server-side endpointing) Implemented (features 001/005/006/008/010)
Management plane (registry, adoption, control WS, SSE logs) Implemented (feature 011 Phases 1–4)
aivg CLI + Hermes agent skill Implemented (feature 011 Phase 3+4)

Quickstart

pip install -e .          # picks up the renamed entry point
aivg --version            # JSON envelope, contract_version 0.3.0
aivg list                 # see the fleet
aivg device get kitchen   # full state of one device
aivg logs kitchen --follow
aivg onboard --ssid "MyWiFi" --password "..." --name "bedroom"

Repo layout

src/aivg_core/           # platform-neutral management plane
  platforms/hermes/        # v1 Hermes plugin (Hermes-platform agent skill, bridge)
  platforms/openclaw/      # planned plugin (stub)
  webrtc/                  # voice plane (WebRTC)
  transports/              # additive non-WebRTC transports
    esphome/                 # ESPHome native API (feature 017)
    grpc/                    # gRPC bidi streaming (feature 021)
  management/              # App. A REST + SSE + control WS
src/aivg_cli/            # `aivg` Typer CLI
proto/                   # canonical cross-language wire schemas (gRPC transport)
skills/hermes-agent/     # Hermes-platform agent skill (invokes `aivg` CLI)
specs/                   # Spec Kit features 001–021
docs/                    # design notes, data-dir reference, rebrand allow-list

Transports

A satellite's audio plane can run over any of three transports; the gateway selects the best one each satellite advertises (no flag-day, no per-device branching):

Transport For Notes
WebRTC browser-tab satellites; legacy native Opus, ICE/DTLS/SRTP. The only option a browser can open.
ESPHome native API ESPHome voice devices (feature 017) Additive; off by default.
gRPC native satellites — RPi/ESP32 class (feature 021) Bidi Audio.Stream (mic up, audio+transcripts+events down); optional Management service for the control plane. No ICE/DTLS to stall.

The gRPC transport is off by default. Opt in via the satellite: block in ~/.hermes/config.yaml:

satellite:
  enabled: true
  transports:
    grpc:
      enabled: true
      port: 8645              # audio plane (distinct from management 8643 / webrtc 8644)
      tls: insecure           # trusted-LAN default; "mtls" for fleet
      downstream_codec: pcm   # or "opus"
      management_over_grpc: false   # true => also serve the control plane over gRPC

The canonical wire schema lives at proto/aivg/satellite/v1/ — the single source of truth shared by the Python gateway and native C++ clients (in the companion aivg-devices repo). Regenerate the Python stubs with scripts/gen_proto.sh.

Hermes vs AIVG

Use this When you mean
AIVG the product, the repo, the system as a whole
Hermes the v1 agent-platform plugin (one of several AIVG supports)
aivg the CLI binary
aivg_core the platform-neutral Python package
~/.aivg/ AIVG's operator data (state, firmware manifests)
~/.hermes/ the Hermes plugin's data (provider config, secrets)

Development

# Editable install with all dev deps (pytest, ruff, black, etc.)
pip install -e ".[dev]"
# or with uv:
uv pip install -e ".[dev]"

# Run the suite
pytest -q                 # 300+ tests

Runtime + dev deps are declared in pyproject.toml under [project] and [project.optional-dependencies] respectively. (The legacy requirements-dev.txt was removed in feature 018 — single source of truth is the pyproject.toml extras now.)

See specs/ for the design history and the active feature (currently 018-aivg-pypi-distribution).

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

aivg-0.4.0.tar.gz (151.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aivg-0.4.0-py3-none-any.whl (183.2 kB view details)

Uploaded Python 3

File details

Details for the file aivg-0.4.0.tar.gz.

File metadata

  • Download URL: aivg-0.4.0.tar.gz
  • Upload date:
  • Size: 151.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for aivg-0.4.0.tar.gz
Algorithm Hash digest
SHA256 98a48330f915dee076266baa4909fff7b620a195d21ffcd89d9eaed767590d1e
MD5 97633eca6a120a83752c370962d96ce5
BLAKE2b-256 f8799838603a297d6266f5d458d4e1c22d57c8a74834afc7a61ff90a41defec8

See more details on using hashes here.

File details

Details for the file aivg-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: aivg-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 183.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for aivg-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3ec17694e943f241ca24adf9a117481ee19aac9847280bd3e9c88f76500e2f5b
MD5 95508cfcec5e30bf0710136b479aa7e0
BLAKE2b-256 5f731d0e7106b7013833ebc01edb53fd420d4f94760530541b9b5ccfae1fa782

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page