jargo

package module
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Jun 29, 2026 License: BSD-2-Clause Imports: 0 Imported by: 0

README

jargo

A WebRTC-native, audio-first conversational-AI framework for Go.

CI Go Reference Go Report Card Go version Release


jargo builds real-time voice agents in Go: audio in over WebRTC, a streaming transcription → reasoning → speech pipeline with turn-taking and barge-in, and audio back out — over RTVI so existing clients interoperate.

Status: early work in progress. APIs are unstable and will change.

Why?

Pipecat is great, and jargo is a port of it — the architecture and many design decisions are Pipecat's.

Python might not be the way

This port exists for one reason: I'd rather not run a voice agent on Python.

Python is the right tool when you need the AI/data-science ecosystem. A real-time voice server doesn't: the models run as services or as ONNX, and what's left is plumbing — audio framing, WebRTC, concurrency, and shipping a binary. For that, Go is a better fit: one static binary to deploy, low and predictable memory, fast startup, and real concurrency for many simultaneous sessions without a GIL. The heavy numerics stay where they belong (the ONNX Runtime, the remote services), so giving up Python costs little here. See the benchmarks for the honest performance picture.

No Daily, no lock-in

jargo stays on plain, standard WebRTC via Pion — no Daily, no hosted transport, no proprietary SDK or cloud to sign up for. You ship one binary, the browser connects with vanilla WebRTC, and RTVI rides the data channel. Keeping the transport open and self-hosted is a deliberate goal, not an afterthought.

Features

  • WebRTC, pure Go (Pion) — audio in and out of the browser.
  • Opus, not pure Go yet, waiting for pion/opus to be ready.
  • Streaming voice pipeline: STT → LLM → TTS, with prompt caching.
  • Speech-to-speech: single-model voice agents (OpenAI Realtime, Gemini Live, AWS Nova Sonic).
  • Turn-taking & barge-in: Silero VAD + Smart Turn v3, local ONNX.
  • Telephony (optional): inbound/outbound phone calls over Twilio Media Streams.
  • User-idle watchdog: re-engage or hang up when the caller goes silent.
  • RTVI data channel — works with existing RTVI clients.
  • Pluggable services: swap any STT/LLM/TTS behind a small interface.
  • Concurrent by design: independent processors; interruptions are frames.

Providers

Pick any per category; each is a small Config + constructor.

  • STT: Deepgram, AssemblyAI, Gladia, Speechmatics, Soniox, Whisper (OpenAI/Groq/local), Azure.
  • LLM: Anthropic (direct + Bedrock), OpenAI, Google Gemini, Groq, Together, Fireworks, DeepSeek, Cerebras, Perplexity, OpenRouter, xAI, Ollama, NVIDIA, Mistral, Nebius, SambaNova, Qwen, Azure OpenAI.
  • TTS: ElevenLabs, Cartesia, Rime, LMNT, Kokoro, Piper, Deepgram, OpenAI, Azure, Hume, Fish, MiniMax.
  • Speech-to-speech: OpenAI Realtime, Gemini Live, AWS Nova Sonic.
  • Memory: mem0.

Dependencies

jargo uses cgo (CGO_ENABLED=0 is not supported) and a few native libraries:

  • libsoxr — audio resampling, linked at build time (libsoxr-dev).
  • libopus — optional C Opus encoder, selected with -tags libopus (libopus-dev); the default build ships a pure-Go encoder, but libopus sounds noticeably better on speech.
  • ONNX Runtime — loaded at run time for VAD + end-of-turn detection.

The container image bundles all of them.

Usage

go get github.com/gojargo/jargo

Locally — install the native deps, then build with cgo:

# Debian/Ubuntu: apt-get install -y libsoxr-dev libopus-dev
CGO_ENABLED=1 go run ./examples/echo                    # open http://localhost:8080
CGO_ENABLED=1 go run -tags libopus ./examples/voicebot  # libopus speech encoder

With Docker — the image bundles every native dependency, so there's no host setup:

docker build -t jargo-voicebot .
docker run --rm -p 8080:8080 \
  -e DEEPGRAM_API_KEY=… -e ANTHROPIC_API_KEY=… -e ELEVENLABS_API_KEY=… \
  jargo-voicebot

See the Quickstart for the full setup.

Examples

Runnable bots live in examples/:

  • echo — hear yourself back, no API keys.
  • voicebot — the full voice agent (STT → LLM → TTS over WebRTC) with turn-taking, long-term memory, and tracing.
  • voice/ — one bot per provider, each wiring its STT/LLM/TTS explicitly; run with go run ./examples/voice/<provider> (e.g. deepgram, cartesia, openai).
  • twiliobot — a phone agent over Twilio Media Streams, with the idle watchdog.

The fastest way to try them — locally or with Docker — is the Quickstart.

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

Documentation

See docs/index.md for the full documentation.

License & attribution

jargo is a Go port of Pipecat, distributed under the same BSD 2-Clause License. The upstream copyright — Copyright (c) 2024–2026, Daily — is preserved verbatim in LICENSE; see NOTICE for details. jargo is an independent project, not affiliated with or endorsed by Daily.

Documentation

Overview

Package jargo is a framework for building real-time voice and multimodal AI pipelines.

Directories

Path Synopsis
Package aggregators assembles the conversation around an LLM.
Package aggregators assembles the conversation around an LLM.
audio
g711
Package g711 implements the ITU-T G.711 μ-law companding codec used by telephony media streams (Twilio, Telnyx, Plivo and the wider PSTN).
Package g711 implements the ITU-T G.711 μ-law companding codec used by telephony media streams (Twilio, Telnyx, Plivo and the wider PSTN).
opus
Package opus wraps the Opus codec for jargo's audio path: it decodes Opus packets to PCM on the way in and encodes PCM to Opus packets on the way out.
Package opus wraps the Opus codec for jargo's audio path: it decodes Opus packets to PCM on the way in and encodes PCM to Opus packets on the way out.
resample
Package resample converts interleaved S16LE PCM audio between sample rates using libsoxr (the SoX Resampler), a high-quality polyphase resampler.
Package resample converts interleaved S16LE PCM audio between sample rates using libsoxr (the SoX Resampler), a high-quality polyphase resampler.
turn
Package turn provides end-of-turn detection: it decides when a user has actually finished speaking, as opposed to merely pausing.
Package turn provides end-of-turn detection: it decides when a user has actually finished speaking, as opposed to merely pausing.
vad
Package vad provides voice activity detection: it tells the pipeline when a user is speaking.
Package vad provides voice activity detection: it tells the pipeline when a user is speaking.
vadproc
Package vadproc is the voice-activity-detection pipeline processor.
Package vadproc is the voice-activity-detection pipeline processor.
Package clock provides the timing source a pipeline uses for presentation timestamps and elapsed-time measurements.
Package clock provides the timing source a pipeline uses for presentation timestamps and elapsed-time measurements.
examples
echo command
Command echo is a WebRTC echo bot built on jargo: it receives microphone audio from a browser, runs it through a pipeline, and sends it back so you hear yourself.
Command echo is a WebRTC echo bot built on jargo: it receives microphone audio from a browser, runs it through a pipeline, and sends it back so you hear yourself.
twiliobot command
Command twiliobot is a telephony voice agent built on jargo: a Twilio phone call streams audio over a WebSocket (μ-law 8 kHz), an STT service transcribes it, an LLM reasons over it, a TTS service speaks the reply, and the audio goes back to the caller.
Command twiliobot is a telephony voice agent built on jargo: a Twilio phone call streams audio over a WebSocket (μ-law 8 kHz), an STT service transcribes it, an LLM reasons over it, a TTS service speaks the reply, and the audio goes back to the caller.
voice/anthropic command
Command voice-anthropic is the voice bot with an Anthropic LLM (Deepgram STT, ElevenLabs TTS).
Command voice-anthropic is the voice bot with an Anthropic LLM (Deepgram STT, ElevenLabs TTS).
voice/assemblyai command
Command voice-assemblyai is the voice bot with AssemblyAI speech-to-text (Anthropic LLM, ElevenLabs TTS).
Command voice-assemblyai is the voice bot with AssemblyAI speech-to-text (Anthropic LLM, ElevenLabs TTS).
voice/azure command
Command voice-azure is the voice bot with Azure for speech-to-text (Azure OpenAI Whisper) and text-to-speech (Azure Speech), with an Anthropic LLM.
Command voice-azure is the voice bot with Azure for speech-to-text (Azure OpenAI Whisper) and text-to-speech (Azure Speech), with an Anthropic LLM.
voice/cartesia command
Command voice-cartesia is the voice bot with Cartesia text-to-speech (Deepgram STT, Anthropic LLM).
Command voice-cartesia is the voice bot with Cartesia text-to-speech (Deepgram STT, Anthropic LLM).
voice/deepgram command
Command voice-deepgram is the voice bot with Deepgram for both speech-to-text and text-to-speech (Anthropic handles the LLM).
Command voice-deepgram is the voice bot with Deepgram for both speech-to-text and text-to-speech (Anthropic handles the LLM).
voice/deepseek command
Command voice-deepseek is the voice bot with a DeepSeek LLM, served through jargo's OpenAI-compatible client (Deepgram STT, ElevenLabs TTS).
Command voice-deepseek is the voice bot with a DeepSeek LLM, served through jargo's OpenAI-compatible client (Deepgram STT, ElevenLabs TTS).
voice/elevenlabs command
Command voice-elevenlabs is the voice bot with ElevenLabs text-to-speech (Deepgram STT, Anthropic LLM).
Command voice-elevenlabs is the voice bot with ElevenLabs text-to-speech (Deepgram STT, Anthropic LLM).
voice/fish command
Command voice-fish is the voice bot with Fish Audio text-to-speech (Deepgram STT, Anthropic LLM).
Command voice-fish is the voice bot with Fish Audio text-to-speech (Deepgram STT, Anthropic LLM).
voice/gladia command
Command voice-gladia is the voice bot with Gladia speech-to-text (Anthropic LLM, ElevenLabs TTS).
Command voice-gladia is the voice bot with Gladia speech-to-text (Anthropic LLM, ElevenLabs TTS).
voice/google command
Command voice-google is the voice bot with a Google Gemini LLM (Deepgram STT, ElevenLabs TTS).
Command voice-google is the voice bot with a Google Gemini LLM (Deepgram STT, ElevenLabs TTS).
voice/groq command
Command voice-groq is the voice bot with Groq for both speech-to-text (Whisper) and the LLM, served through jargo's OpenAI-compatible clients (ElevenLabs TTS).
Command voice-groq is the voice bot with Groq for both speech-to-text (Whisper) and the LLM, served through jargo's OpenAI-compatible clients (ElevenLabs TTS).
voice/hume command
Command voice-hume is the voice bot with Hume Octave text-to-speech (Deepgram STT, Anthropic LLM).
Command voice-hume is the voice bot with Hume Octave text-to-speech (Deepgram STT, Anthropic LLM).
voice/lmnt command
Command voice-lmnt is the voice bot with LMNT text-to-speech (Deepgram STT, Anthropic LLM).
Command voice-lmnt is the voice bot with LMNT text-to-speech (Deepgram STT, Anthropic LLM).
voice/minimax command
Command voice-minimax is the voice bot with MiniMax text-to-speech (Deepgram STT, Anthropic LLM).
Command voice-minimax is the voice bot with MiniMax text-to-speech (Deepgram STT, Anthropic LLM).
voice/mistral command
Command voice-mistral is the voice bot with a Mistral LLM, served through jargo's OpenAI-compatible client (Deepgram STT, ElevenLabs TTS).
Command voice-mistral is the voice bot with a Mistral LLM, served through jargo's OpenAI-compatible client (Deepgram STT, ElevenLabs TTS).
voice/nebius command
Command voice-nebius is the voice bot with a Nebius AI Studio LLM, served through jargo's OpenAI-compatible client (Deepgram STT, ElevenLabs TTS).
Command voice-nebius is the voice bot with a Nebius AI Studio LLM, served through jargo's OpenAI-compatible client (Deepgram STT, ElevenLabs TTS).
voice/ollama command
Command voice-ollama is the voice bot with a local Ollama LLM, served through jargo's OpenAI-compatible client — no LLM API key needed (Deepgram STT, ElevenLabs TTS).
Command voice-ollama is the voice bot with a local Ollama LLM, served through jargo's OpenAI-compatible client — no LLM API key needed (Deepgram STT, ElevenLabs TTS).
voice/openai command
Command voice-openai is the all-OpenAI voice bot: OpenAI for speech-to-text, the LLM, and text-to-speech.
Command voice-openai is the all-OpenAI voice bot: OpenAI for speech-to-text, the LLM, and text-to-speech.
voice/qwen command
Command voice-qwen is the voice bot with an Alibaba Qwen LLM (DashScope), served through jargo's OpenAI-compatible client (Deepgram STT, ElevenLabs TTS).
Command voice-qwen is the voice bot with an Alibaba Qwen LLM (DashScope), served through jargo's OpenAI-compatible client (Deepgram STT, ElevenLabs TTS).
voice/rime command
Command voice-rime is the voice bot with Rime text-to-speech (Deepgram STT, Anthropic LLM).
Command voice-rime is the voice bot with Rime text-to-speech (Deepgram STT, Anthropic LLM).
voice/run
Package run holds the shared scaffolding for the per-provider voice examples under examples/voice.
Package run holds the shared scaffolding for the per-provider voice examples under examples/voice.
voice/sambanova command
Command voice-sambanova is the voice bot with a SambaNova LLM, served through jargo's OpenAI-compatible client (Deepgram STT, ElevenLabs TTS).
Command voice-sambanova is the voice bot with a SambaNova LLM, served through jargo's OpenAI-compatible client (Deepgram STT, ElevenLabs TTS).
voice/soniox command
Command voice-soniox is the voice bot with Soniox speech-to-text (Anthropic LLM, ElevenLabs TTS).
Command voice-soniox is the voice bot with Soniox speech-to-text (Anthropic LLM, ElevenLabs TTS).
voice/speechmatics command
Command voice-speechmatics is the voice bot with Speechmatics speech-to-text (Anthropic LLM, ElevenLabs TTS).
Command voice-speechmatics is the voice bot with Speechmatics speech-to-text (Anthropic LLM, ElevenLabs TTS).
voice/together command
Command voice-together is the voice bot with a Together AI LLM, served through jargo's OpenAI-compatible client (Deepgram STT, ElevenLabs TTS).
Command voice-together is the voice bot with a Together AI LLM, served through jargo's OpenAI-compatible client (Deepgram STT, ElevenLabs TTS).
voicebot command
Command voicebot is the full-featured voice agent built on jargo: microphone audio comes in over WebRTC, Deepgram transcribes it, an Anthropic LLM reasons over it, ElevenLabs speaks the reply, and the audio goes back out over WebRTC.
Command voicebot is the full-featured voice agent built on jargo: microphone audio comes in over WebRTC, Deepgram transcribes it, an Anthropic LLM reasons over it, ElevenLabs speaks the reply, and the audio goes back out over WebRTC.
Package frames defines the Frame type and the core frame categories — system, data and control — that flow through a jargo pipeline.
Package frames defines the Frame type and the core frame categories — system, data and control — that flow through a jargo pipeline.
internal
onnxrt
Package onnxrt centralizes jargo's use of the ONNX runtime.
Package onnxrt centralizes jargo's use of the ONNX runtime.
validate
Package validate provides jargo's shared struct validator.
Package validate provides jargo's shared struct validator.
Package language defines a canonical Language type and helpers so an application can name a language once and let each STT/TTS service map it to that provider's own code.
Package language defines a canonical Language type and helpers so an application can name a language once and let each STT/TTS service map it to that provider's own code.
Package metrics exports jargo's service measurements — time-to-first-byte, processing time, LLM token usage and TTS characters — as OpenTelemetry metrics over OTLP.
Package metrics exports jargo's service measurements — time-to-first-byte, processing time, LLM token usage and TTS characters — as OpenTelemetry metrics over OTLP.
Package pipeline connects frame processors into a chain and drives them.
Package pipeline connects frame processors into a chain and drives them.
Package processor defines the frame processor: the building block of a jargo pipeline.
Package processor defines the frame processor: the building block of a jargo pipeline.
provider
anthropic
Package anthropic is a streaming LLM service backed by the Anthropic API.
Package anthropic is a streaming LLM service backed by the Anthropic API.
assemblyai
Package assemblyai is a streaming speech-to-text service backed by AssemblyAI's Universal-Streaming (v3) WebSocket.
Package assemblyai is a streaming speech-to-text service backed by AssemblyAI's Universal-Streaming (v3) WebSocket.
azureopenai
Package azureopenai provides an LLM service for Azure OpenAI.
Package azureopenai provides an LLM service for Azure OpenAI.
azurespeech
Package azurespeech provides Azure AI Speech services.
Package azurespeech provides Azure AI Speech services.
bedrock
Package bedrock provides a streaming LLM service for Anthropic Claude models served through Amazon Bedrock.
Package bedrock provides a streaming LLM service for Anthropic Claude models served through Amazon Bedrock.
cartesia
Package cartesia is a streaming text-to-speech service backed by Cartesia's TTS WebSocket.
Package cartesia is a streaming text-to-speech service backed by Cartesia's TTS WebSocket.
cerebras
Package cerebras provides Cerebras's OpenAI-compatible LLM service.
Package cerebras provides Cerebras's OpenAI-compatible LLM service.
deepgram
Package deepgram provides Deepgram's streaming speech-to-text service (over the live transcription WebSocket) and its Aura text-to-speech service.
Package deepgram provides Deepgram's streaming speech-to-text service (over the live transcription WebSocket) and its Aura text-to-speech service.
deepseek
Package deepseek provides DeepSeek's OpenAI-compatible LLM service.
Package deepseek provides DeepSeek's OpenAI-compatible LLM service.
elevenlabs
Package elevenlabs is a streaming text-to-speech service backed by the ElevenLabs HTTP streaming API.
Package elevenlabs is a streaming text-to-speech service backed by the ElevenLabs HTTP streaming API.
fireworks
Package fireworks provides Fireworks AI's OpenAI-compatible LLM service.
Package fireworks provides Fireworks AI's OpenAI-compatible LLM service.
fish
Package fish is a streaming text-to-speech service backed by Fish Audio.
Package fish is a streaming text-to-speech service backed by Fish Audio.
geminilive
Package geminilive is a speech-to-speech service built on Google's Gemini Live API (BidiGenerateContent).
Package geminilive is a speech-to-speech service built on Google's Gemini Live API (BidiGenerateContent).
gladia
Package gladia is a streaming speech-to-text service backed by Gladia's Live STT v2 API.
Package gladia is a streaming speech-to-text service backed by Gladia's Live STT v2 API.
google
Package google is a streaming LLM service backed by Google's Gemini API (generateContent with SSE).
Package google is a streaming LLM service backed by Google's Gemini API (generateContent with SSE).
groq
Package groq provides Groq's OpenAI-compatible LLM and Whisper STT services.
Package groq provides Groq's OpenAI-compatible LLM and Whisper STT services.
hume
Package hume is a streaming text-to-speech service backed by Hume AI's Octave TTS.
Package hume is a streaming text-to-speech service backed by Hume AI's Octave TTS.
kokoro
Package kokoro is a text-to-speech provider for a local Kokoro-FastAPI server.
Package kokoro is a text-to-speech provider for a local Kokoro-FastAPI server.
lmnt
Package lmnt is a streaming text-to-speech service backed by LMNT's HTTP "speech bytes" endpoint, which streams raw PCM.
Package lmnt is a streaming text-to-speech service backed by LMNT's HTTP "speech bytes" endpoint, which streams raw PCM.
mem0
Package mem0 adds long-term memory to a jargo voice agent, backed by a mem0 server (https://github.com/mem0ai/mem0).
Package mem0 adds long-term memory to a jargo voice agent, backed by a mem0 server (https://github.com/mem0ai/mem0).
minimax
Package minimax is a streaming text-to-speech service backed by MiniMax's T2A API.
Package minimax is a streaming text-to-speech service backed by MiniMax's T2A API.
mistral
Package mistral provides Mistral AI's OpenAI-compatible LLM service.
Package mistral provides Mistral AI's OpenAI-compatible LLM service.
nebius
Package nebius provides Nebius AI Studio's OpenAI-compatible LLM service.
Package nebius provides Nebius AI Studio's OpenAI-compatible LLM service.
novasonic
Package novasonic is a speech-to-speech service built on Amazon Nova Sonic, served over Bedrock's bidirectional streaming API.
Package novasonic is a speech-to-speech service built on Amazon Nova Sonic, served over Bedrock's bidirectional streaming API.
nvidia
Package nvidia provides NVIDIA NIM's OpenAI-compatible LLM service.
Package nvidia provides NVIDIA NIM's OpenAI-compatible LLM service.
ollama
Package ollama provides a client for a local Ollama server through its OpenAI-compatible LLM endpoint.
Package ollama provides a client for a local Ollama server through its OpenAI-compatible LLM endpoint.
openai
Package openai provides OpenAI's LLM, STT and TTS services, plus the OpenAI-compatible LLM base that other providers (Groq, Together, Fireworks and the rest) wrap with their own base URL, key and default model.
Package openai provides OpenAI's LLM, STT and TTS services, plus the OpenAI-compatible LLM base that other providers (Groq, Together, Fireworks and the rest) wrap with their own base URL, key and default model.
openairealtime
Package openairealtime is a speech-to-speech service built on OpenAI's Realtime API.
Package openairealtime is a speech-to-speech service built on OpenAI's Realtime API.
openrouter
Package openrouter provides OpenRouter's OpenAI-compatible LLM service, a gateway to many models behind one API.
Package openrouter provides OpenRouter's OpenAI-compatible LLM service, a gateway to many models behind one API.
perplexity
Package perplexity provides Perplexity's OpenAI-compatible LLM service.
Package perplexity provides Perplexity's OpenAI-compatible LLM service.
piper
Package piper is a text-to-speech provider for a local Piper HTTP server (python -m piper.http_server).
Package piper is a text-to-speech provider for a local Piper HTTP server (python -m piper.http_server).
qwen
Package qwen provides Alibaba's Qwen LLM over the DashScope OpenAI-compatible endpoint.
Package qwen provides Alibaba's Qwen LLM over the DashScope OpenAI-compatible endpoint.
rime
Package rime is a streaming text-to-speech service backed by Rime's HTTP API.
Package rime is a streaming text-to-speech service backed by Rime's HTTP API.
sambanova
Package sambanova provides SambaNova Cloud's OpenAI-compatible LLM service.
Package sambanova provides SambaNova Cloud's OpenAI-compatible LLM service.
soniox
Package soniox provides Soniox real-time streaming speech-to-text over its WebSocket API.
Package soniox provides Soniox real-time streaming speech-to-text over its WebSocket API.
speechmatics
Package speechmatics provides Speechmatics' real-time streaming speech-to-text over its WebSocket API.
Package speechmatics provides Speechmatics' real-time streaming speech-to-text over its WebSocket API.
together
Package together provides Together AI's OpenAI-compatible LLM service.
Package together provides Together AI's OpenAI-compatible LLM service.
whispercpp
Package whispercpp is a speech-to-text provider for a local whisper.cpp server.
Package whispercpp is a speech-to-text provider for a local whisper.cpp server.
xai
Package xai provides xAI's (Grok) OpenAI-compatible LLM service.
Package xai provides xAI's (Grok) OpenAI-compatible LLM service.
Package rtvi implements the RTVI protocol over a transport's messaging channel: a JSON message format and a processor that completes the client handshake and reports pipeline events to the client.
Package rtvi implements the RTVI protocol over a transport's messaging channel: a JSON message format and a processor that completes the client handshake and reports pipeline events to the client.
service
llm
Package llm is the shared base for streaming LLM services.
Package llm is the shared base for streaming LLM services.
stt
Package stt is the shared base for speech-to-text services.
Package stt is the shared base for speech-to-text services.
tts
Package tts is the shared base for text-to-speech services.
Package tts is the shared base for text-to-speech services.
Package tracing wires OpenTelemetry tracing into a jargo voice agent.
Package tracing wires OpenTelemetry tracing into a jargo voice agent.
Package transport defines the boundary between a pipeline and the outside world.
Package transport defines the boundary between a pipeline and the outside world.
pionrtc
Package pionrtc implements a WebRTC transport for jargo using Pion.
Package pionrtc implements a WebRTC transport for jargo using Pion.
wsserver
Package wsserver is a WebSocket media transport for telephony.
Package wsserver is a WebSocket media transport for telephony.
wsserver/twilio
Package twilio is the wsserver.Serializer for Twilio Media Streams.
Package twilio is the wsserver.Serializer for Twilio Media Streams.
Package turns manages the user-turn lifecycle, ported from Pipecat's turns subsystem.
Package turns manages the user-turn lifecycle, ported from Pipecat's turns subsystem.

Jump to

Keyboard shortcuts

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