ION is a minimal framed binary protocol for streaming raw PCM audio with JSON control events over a reliable byte stream.
ION defines:
- framing
- control events
- audio payload semantics
ION does not define:
- codecs
- compression
- security
- authentication
- transports
- Binary framing
- JSON for control
- Raw PCM for audio
- Transport-agnostic
- Low latency
| Type | Meaning |
|---|---|
0x01 |
JSON control event |
0x02 |
PCM audio payload |
client -> describe
server -> ready
client -> start
server -> audio frames
client -> stop
This repository provides:
- ION framing in Go
- TCP transport
- PipeWire/PulseAudio PCM capture
- Streaming microphone audio
- Demo server for ASR/TTS flows
TCP:
go run . --mode=server --transport=tcp --addr :10300
go run . --mode=client --transport=tcp --addr :10300Stdio:
go run . --mode=server --transport=stdio < /dev/stdin > /dev/stdout
go run . --mode=client --transport=stdiodocs/SPEC.md— core protocol specificationdocs/ION-ASR.md— ASR profiledocs/ION-TTS.md— TTS profiledocs/ION-SATELLITE.md— satellite profileexamples/— client spec and CLI/web usage
ION is not an acronym. It is a primitive technical term that evokes energy, signal, and flow:
- carries raw signal (audio)
- moves continuously over a wire
- reacts to control events
Use it plainly: ION/1, ion://, ION frame, ION audio.