memoair-voice
v0.3.2
Published
Node.js voice memory client for MemoAir. Manages the local voice-runtime sidecar and exposes load/create-index, search, and save-response over the frozen runtime contract.
Maintainers
Readme
memoair-voice
Node.js voice memory client for MemoAir. The TypeScript
sibling of the Python memoair-voice package — same local
voice-runtime sidecar, same frozen wire contract
(docs/api/voice-sdk-runtime.md), same
account-scoped identity model.
Per-turn recall runs locally against .mv2 projections held warm by the
runtime — no network hop on the hot path after bootstrap. The SDK manages the
runtime process for you (downloads the matching release binary on first use, or
point runtimeBinary at a local build / sidecar).
Scope (v0.3.x): Node 18+ server agents only (LiveKit workers, VAPI/Retell webhook servers, custom backends). Browser / WebAssembly retrieval is not included — that is a separate future package.
Install
npm install memoair-voiceQuick start (power-user surface)
import { MemoAirVoiceClient } from "memoair-voice";
const client = new MemoAirVoiceClient({
apiKey: process.env.MEMOAIR_API_KEY!,
projectId: process.env.MEMOAIR_PROJECT_ID!,
agentId: process.env.MEMOAIR_AGENT_ID!,
});
// Recall (four lanes: profile, working, permanent, org)
const result = await client.searchMemory("what timezone does the user prefer?", {
user: { id: "caller-42" },
});
console.log(result.contextText);
// Persist a completed turn
await client.saveResponse({
userText: "My standup is at 10:30 IST.",
assistantText: "Got it — 10:30 IST.",
user: { id: "caller-42" },
});
await client.close();Seeding the org index
await client.createIndex("agent-memory", [
{ id: "shipping", text: "Standard shipping takes 3-5 business days." },
]);createIndex is build-or-append: the first call creates the index,
subsequent calls add to the same name. Cloud cap: 100 documents / 1 MB per call
— use the dashboard for larger ingests.
LiveKit
For a drop-in livekit.agents-native base class, use
memoair-livekit which builds on this package.
Identity model
Memory partitions on (projectId, agentId, userId). The runtime is
single-(workspace, user) by design; MemoAirVoiceClient hides that behind an
internal pool that spawns one voice-runtime per (project, user) on demand
with bounded LRU eviction.
Environment overrides
| Variable | Purpose |
|---|---|
| MEMOAIR_RUNTIME_BINARY | Absolute path to a local voice-runtime binary (skips download) |
| MEMOAIR_RUNTIME_VERSION | Runtime release version to download |
| MEMOAIR_RUNTIME_REPO | GitHub owner/repo hosting runtime release tarballs |
| MEMOAIR_RUNTIME_CACHE_DIR | Override the downloaded-runtime cache directory |
