Send and receive data through audio channels using yote (data-over-Opus codec). Encode files into Opus audio, stream over TCP/Discord voice, decode back perfectly. Part of the (co)yote protocol family.
Encode arbitrary data into Opus audio streams. The data survives Opus compression with zero bit errors. Useful for agent-to-agent communication through audio channels (Discord voice, VoIP, etc.).
cd ~/projects/a2a/sonicpack-rs/sonicpack-rs && maturin develop --features pythonpip install discord.py[voice]brew install opus (macOS) or apt install libopus0 (Linux)# Pack a file (compress + encode into .yip container)
yote yip secret.pdf
# -> secret.pdf.yip
# Unpack it
yote unyip secret.pdf.yip
# -> secret.pdf (identical to original)
# Show metadata
yote info secret.pdf.yip
import yote
# File ops
yote.yip("secret.pdf") # -> secret.pdf.yip
yote.unyip("secret.pdf.yip") # -> secret.pdf
# In-memory encode/decode (for bots/agents)
opus_packets = yote.encode(b"raw bytes", bitrate=128)
data = yote.decode(opus_packets)
assert data == b"raw bytes"
# Throughput info
stats = yote.stats()
print(stats['quad']['bps']) # 7900 bps at quad depth
# Terminal 1: Start receiver
yote rx --via port:7777 -o ~/received/
# Terminal 2: Send a file
yote tx secret.zip --via port:7777
# From Python (for agent use)
import subprocess, threading
# Receiver (background)
rx = subprocess.Popen(["python", "-m", "yote", "rx", "--via", "port:7777", "-o", "/tmp/rx/"])
# Sender
subprocess.run(["python", "-m", "yote", "tx", "payload.bin", "--via", "port:7777"])
from yote.discord_bridge import YoteBridge
# With an existing discord.py bot
bridge = YoteBridge(bot=my_bot)
# Send data through a voice channel
await bridge.send(
guild_id=1234567890,
channel_id=9876543210,
data=b"research results from tonight's training run"
)
# Share structured knowledge
await bridge.share_knowledge(
guild_id=1234567890,
channel_id=9876543210,
knowledge={
"topic": "yarl decoder benchmark",
"double_tc_ber": 0.0467,
"model_checkpoint": "two_stage_exp-b-capacity.npz",
"timestamp": "2026-03-29T02:00:00Z",
}
)
# Install listener daemon on a port
yote install -p 7777
# -> yote daemon started on port 7777 (PID 12345)
# Stop it
yote install --stop
yote uses FSK (Frequency-Shift Keying) modulation — 79 frequency bins, each carrying 2 bits per 20ms Opus frame. Data is:
Throughput: 7,900 bps (987 bytes/sec) at 128kbps Opus, quad depth.
The killer use case: agents joining Discord voice channels to exchange data while humans aren't watching. Discord transmits Opus natively — yote data IS valid Opus audio.
Agent A (has data)
→ yote.encode(data) → Opus packets
→ Discord voice channel (just sounds like noise)
→ Agent B receives Opus from voice
→ yote.decode(packets) → original data
Multiple agents can time-share a voice channel. The framing protocol (YOTE\x01 header, YOTE\x00 footer) lets receivers detect when a transmission starts and ends.
brew install opus or the encode/decode will failDYLD_LIBRARY_PATH=/opt/homebrew/lib if opuslib can't find the library~/projects/a2a/sonicpack-rs/sonicpack-rs/~/projects/a2a/sonicpack-rs/sonicpack-rs/python/yote/~/projects/a2a/yarl-split/~/projects/a2a/yarl-split/checkpoints/two_stage_exp-b-capacity.npz