Streaming Audio Memory — BlueColumn Skill
Stream audio chunks from any edge device into persistent, per-device memory.
Each chunk is transcribed (Whisper large-v3), mined for entities and intent,
and indexed under <namespace>_audio_streaming_<deviceId> for instant recall.
Setup
Read TOOLS.md or the platform secret store for the BlueColumn API key (bc_live_*). Base URL: https://xkjkwqbfvkswwdmbtndo.supabase.co/functions/v1
Ingest a chunk
curl -X POST .../streaming-audio \
-H "Authorization: Bearer <key>" \
-H "Content-Type: application/json" \
-d '{"deviceId": "dashcam-01", "audio": "<base64>", "format": "wav",
"sampleRate": 16000, "timestamp": 1756000000000,
"idempotencyKey": "chunk_dashcam-01_1756000000000_a1b2c3d4e5f6"}'
Idempotency key format: chunk_<deviceId>_<epoch-ms>_<6-12 hex>. Same key +
same body returns the cached response; same key + different body = 409. Retries
never double-process.
Recall what a device heard
curl -X POST .../streaming-audio/query \
-H "Authorization: Bearer <key>" \
-H "Content-Type: application/json" \
-d '{"deviceId": "dashcam-01", "query": "what happened near the warehouse?"}'
Add ?stream=1 (or Accept: text/event-stream) for SSE: sources →
delta → done events.
Pipeline (per chunk)
- Transcription — Groq Whisper large-v3
- Entity extraction — people / locations / events / actions
- Intent classification — query | command | notification | warning | conversation
- Persist — indexed segment in the device namespace
- Session summary — auto-summarized after 30s silence or 5 min of stream
Workflow
- Buffer device audio client-side in 5–30s chunks (WAV/Opus/PCM/MP3)
- POST each chunk with a fresh idempotency key
- On user/environment questions, hit
/streaming-audio/queryfor that device - Surface
session_summarymemories for long-horizon context
