Skip to content

Quickstart

The example bots live in examples/:

  • echo: speak into the browser, hear yourself back. No API keys.
  • voicebot: the full voice agent. STT → LLM → TTS with turn-taking and barge-in, plus long-term memory and tracing.
  • voice/: the voice agent on each provider’s STT, LLM and TTS, wired explicitly in Go on the dev runner (go run ./examples/voice/voice-<provider>), with a browser client at http://localhost:7860.

Run them with Docker (no host setup) or with a local Go toolchain.

jargo publishes a build base and a distroless runtime base image, so you can containerise a bot without installing any native dependencies on the host. The Deploy with Docker guide has a copyable two-stage Dockerfile for the example bots and the run command (-e DEEPGRAM_API_KEY=… etc., then open http://localhost:8080).

The default build is cgo-free: go build ./... needs no C toolchain. One native library is loaded at run time, through purego:

  • ONNX Runtime: VAD and end-of-turn detection.
Terminal window
# Download a build for your platform, then point jargo at it:
export JARGO_ONNXRUNTIME_LIB=/path/to/libonnxruntime.so

Get it from the onnxruntime releases; the onnxruntime-linux-* archive contains lib/libonnxruntime.so. If the variable is unset, jargo looks for the library by its conventional name on the loader’s default search path.

Without the ONNX Runtime the voice bot still runs: it falls back to STT endpointing for turn-taking and loses barge-in. Everything else in the list below is optional. See Installation for RNNoise.

Terminal window
go run ./examples/echo # then open http://localhost:8080

Set the provider API keys, then run:

Terminal window
export DEEPGRAM_API_KEY=... # STT
export ANTHROPIC_API_KEY=... # LLM
export ELEVENLABS_API_KEY=... # TTS
go run ./examples/voicebot # then open http://localhost:8080

The voicebot runs a fixed Deepgram + Anthropic + ElevenLabs stack. To try a different provider, run one of the per-provider examples under examples/voice, one self-contained file each, with the provider wired explicitly in Go:

Terminal window
go run ./examples/voice/voice-cartesia # Cartesia STT + TTS, OpenAI LLM
go run ./examples/voice/voice-openai # OpenAI STT + LLM + TTS
go run ./examples/voice/voice-groq # Groq STT + LLM + TTS

Each runs on the dev runner: open http://localhost:7860 and connect. Each example’s doc comment lists the API keys it needs.