Expand description
The meeting ingest seam: the minimal contract the hardware ambient-audio
path needs from the meeting-notes capability, inverted so this kernel crate has
ZERO compile-time dependency on ryu_meetings.
§Why this exists
An ambient-capable device (necklace / desk) opens a long-running “ambient”
meeting and streams ~1 s WAV chunks into it: [session::HardwareSession] buffers
decoded Opus uplink and, once a second of PCM has accumulated, feeds one WAV
segment to the meeting transcript. That transcription + persistence is a
meetings concern that had been welded into this crate as a direct
ryu_meetings::MeetingEngine field (a compile-time ryu_hardware -> ryu_meetings
edge welding the kernel hardware crate to a swappable app). Meetings is now a
swappable, out-of-process app; a kernel crate cannot hard-link it.
MeetingIngest is the inversion. It exposes ONLY what the ambient path needs
(open/resume the ambient meeting, append a captured audio segment), in terms of
plain owned types — never a ryu_meetings type. Core provides the impl:
- in-process (
meetings_ingest::in_proc) — wraps the in-process engine; - out-of-process (
meetings_client::MeetingsClient) — proxies to theryu-meetingssidecar over loopback (POST /api/meetings/:id/chunk).
§Hot-path note
MeetingIngest::append_segment is called at segment rate, not frame rate:
[session::HardwareSession::on_audio] only accumulates each ~20 ms Opus frame,
and the append fires once per ~1 s of buffered PCM (AMBIENT_FLUSH_SAMPLES). So
the sidecar-backed impl’s HTTP hop is ~1 POST/s/device carrying a ~32 KB WAV
(transcription happens on the sidecar side) — acceptable at segment rate.
§What is deliberately absent: finalize
There is no finalize on this seam. The device link never ends the ambient
meeting — it is a continuous 24/7 transcript that a device resumes on each
reconnect. Finalizing a meeting (stop capture → generate notes → save) is a
user-driven action through the meetings API/UI, never the hardware path, so the
seam only needs open/resume + append.
Traits§
- Meeting
Ingest - The meeting-notes capability, seen through the narrow hole the hardware ambient path needs. Implemented by Core (in-process or sidecar-backed).