rtp-agent

module
v0.1.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 8, 2026 License: MIT

README

RTP Agent

Go Version Docs Architecture License Status

Golang-first effort to build a practical alternative to the LiveKit Agent SDK, focused on lower end-to-end latency and reduced hardware requirements.

Documentation: https://cavos-io.github.io/rtp-agent/

Why This Project

rtp-agent explores a lean, production-friendly agent runtime in Go for real-time voice and multimodal workflows.

Core goals:

  • Reduce latency across STT -> LLM -> TTS turn loops.
  • Minimize CPU and memory requirements so agents can run on smaller instances.
  • Keep architecture modular through ports and adapters, so providers can be swapped quickly.

Table of Contents

Features

  • Go-based worker runtime and CLI entrypoint.
  • Hexagonal architecture (adapter, core, interface, library) for clear separation of concerns.
  • Broad provider coverage with 60+ adapter packages (LLM, STT, TTS, avatar, utilities).
  • LiveKit-compatible worker transport and job lifecycle handling.
  • Optional Agora RTC worker transport for joining Agora channels directly as an agent.
  • Docusaurus documentation site for adapter references.

Built With

Getting Started

Prerequisites
  • Go 1.25+ (as defined in go.mod)
  • Access to a LiveKit deployment (URL, API key, API secret)
  • For Agora RTC transport: an Agora-Golang-Server-SDK checkout with native SDK assets and Agora project credentials.
Installation
git clone https://github.com/cavos-io/rtp-agent.git
cd rtp-agent
go mod tidy
Configure Worker Options

Current bootstrap is code-first. Update worker options in cmd/main.go before running:

opts := worker.WorkerOptions{
  AgentName:  "example-agent",
  WorkerType: worker.WorkerTypeRoom,
  WSRL:       "wss://<your-livekit-host>",
  APIKey:     "<your-api-key>",
  APISecret:  "<your-api-secret>",
}

Usage

Run the worker:

go run ./cmd/main.go start

Development mode with autoreload:

go run ./cmd/main.go dev

Connect mode for local room testing:

go run ./cmd/main.go connect <room_name> [participant_identity]
Agora RTC Worker Transport

The Agora transport is optional and built behind the agora_sdk tag because it depends on Agora native runtime libraries.

Build an Agora-enabled binary:

AGORA_GO_SDK_DIR=/path/to/Agora-Golang-Server-SDK \
  OUT=.tmp/rtp-agent-agora \
  scripts/build-agora-sdk.sh

Run the worker in an Agora RTC channel:

export RTP_AGENT_TRANSPORT=agora
export AGORA_GO_SDK_DIR=/path/to/Agora-Golang-Server-SDK
export LD_LIBRARY_PATH="$AGORA_GO_SDK_DIR/agora_sdk:$LD_LIBRARY_PATH"
export AGORA_APP_ID=<agora-app-id>
export AGORA_APP_CERTIFICATE=<agora-app-certificate> # or set AGORA_TOKEN
export AGORA_CHANNEL=<channel-name>
export AGORA_UID=agent-0

.tmp/rtp-agent-agora start

Validate the join path with the smoke script:

AGORA_GO_SDK_DIR=/path/to/Agora-Golang-Server-SDK \
  AGORA_APP_ID=<agora-app-id> \
  AGORA_APP_CERTIFICATE=<agora-app-certificate> \
  AGORA_CHANNEL=<channel-name> \
  AGORA_UID=agent-0 \
  scripts/smoke-agora-rtc.sh

The smoke script succeeds only after the worker logs agora transport connected for a stable window and prints:

Agora RTC connected

Roadmap

  • End-to-end latency profiling and optimization pass.
  • Lower-memory execution mode for constrained environments.
  • Compatibility layer and integrations for Pipecat.
  • Compatibility layer and integrations for VisionAgent.
  • Additional open-source integration target: Vocode.

Documentation

Contributing

Contributions are welcome. Open an issue for bug reports or feature proposals, and submit a PR for improvements.

Repository: https://github.com/cavos-io/rtp-agent

License

This project is licensed under the MIT License.

See LICENSE for details.

Acknowledgments

  • LiveKit for the reference agent model and ecosystem.
  • Pion for core WebRTC building blocks in Go.
  • The broader open-source realtime AI community.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL