grok-faf-voice
Home: faf.one/voice Live demo: faf-voice.vercel.app
Voice agents that remember.
The Voice Memory Layer (VML) for Grok Voice. .fafm 🐘🎙️ LiveKit enabled.
Two profiles, one
.fafmformat. This is the voice profile (the Voice Memory Layer). For the knowledge profile — typed, cross-linked agent memory — see claude-fafm-sdk.
What's New in v0.4.0 — FastMCP 4
fastmcp floor moves to >=4.0.0 — the FAF Python family standard. No API change:
the MCPaaS client pattern (Client + StreamableHttpTransport + except ToolError)
is unchanged on 4.x, and grok's own httpx calls (xAI / ElevenLabs / transcribe)
are untouched. pydantic>=2.12 follows FastMCP 4's floor. 196 tests green.
The Fast⚡️AF memory setup
pip install grok-faf-voice
from grok_faf_voice import VoiceAgent
VoiceAgent().run()
That's it. First run, your agent gets a namepoint — your @handle
for FAF memory. Auto-generated free, no email needed. Want a branded
handle tied to your email (or your X username)? Claim one anytime at
mcpaas.live/voice/setup — one per
valid email address.
What you need
- Python 3.10+
- An
XAI_API_KEY— get one at x.ai/api
That's it. Namepoint and Voice key are provisioned for you.
Run it:
python my_bot.py console
console mode talks locally — no LiveKit cloud needed.
Deploy to LiveKit later via python my_bot.py start.
How it works
- The agent listens via xAI realtime — five built-in voices: Ara · Eve · Leo · Rex · Sal
- Every session opens already remembering what was etched in past ones
- At session end, new memories consolidate silently
- Cross-session, cross-device, cross-model — your namepoint is the address
Voice swappable, memory permanent. ElevenLabs and Hume land in upcoming releases.
Custom Voices
xAI shipped Custom Voices on 2026-05-01. We shipped support 48h later.
from grok_faf_voice import CustomVoiceClient, VoiceAgent
# Clone a voice from a 90-120s WAV sample
cv = CustomVoiceClient() # uses $XAI_API_KEY
voice = cv.create_voice("sample.wav", name="My Clone", language="en")
# Use the cloned voice in your agent — same two-line shape
VoiceAgent(voice=voice["voice_id"]).run()
Custom voice IDs (8-char lowercase alphanumeric, e.g. nlbqfwie) flow through
VoiceAgent(voice=...) unchanged. The 30 free voices via console.x.ai
work too — paste the voice_id and go.
Local souls (.fafm files)
Read and write souls straight off disk — no MCPaaS, no API key. Great for inspection, tests, backups, and loading souls written by other FAF-family tools (cross-vendor interop).
from grok_faf_voice import FAFMemory
# Load a .fafm soul from disk (any profile — voice or knowledge)
mem = FAFMemory.from_file("soul.fafm")
body = await mem.get() # the soul body
recall = await mem.recall_for_prompt() # ready for the prompt
# Write it back out (byte-identical roundtrip)
await mem.to_file("backup.fafm")
# Typed views — no manual parsing (v0.3.1)
mem.profile # "voice" | "knowledge"
mem.facts # parsed list of memory facts
mem.index # top-level index (knowledge profile)
.fafm is the IANA-registered FAF Memory format (application/vnd.fafm+yaml).
Validate documents against the published JSON Schema.
Want more?
Claim your branded @handle |
mcpaas.live/voice/setup |
Advanced setup — FAFMemory, FAFContext, custom ledgers, env-var configuration, retention tiers |
mcpaas.live/voice/about |
| Source + issues | github.com/Wolfe-Jam/grok-faf-voice |
| Contribute | CONTRIBUTING.md |
Citation
If you use grok-faf-voice or the .fafm format in research or production, please cite the format paper. The Agents paper is the companion for the agentic era:
Wolfe, J. (2026). Permanent Memory and Instant Recall: The .fafm Standard for Multi-Profile AI Agent Memory. Zenodo. https://doi.org/10.5281/zenodo.20348942
Wolfe, J. (2026). Why Agents Need a Passport: .fafa — Portable Identity for the Agentic Era. Zenodo. https://doi.org/10.5281/zenodo.21951641
BibTeX
@article{wolfe2026fafm,
title = {Permanent Memory and Instant Recall: The .fafm Standard for Multi-Profile AI Agent Memory},
author = {Wolfe, James},
year = {2026},
month = {may},
publisher = {Zenodo},
doi = {10.5281/zenodo.20348942},
url = {https://doi.org/10.5281/zenodo.20348942}
}
@article{wolfe2026fafa,
title = {Why Agents Need a Passport: .fafa — Portable Identity for the Agentic Era},
author = {Wolfe, James},
year = {2026},
month = {aug},
publisher = {Zenodo},
doi = {10.5281/zenodo.21951641},
url = {https://doi.org/10.5281/zenodo.21951641}
}
DOI: 10.5281/zenodo.20348942 (.fafm) · 10.5281/zenodo.21951641 (.fafa)
We are the Open-Ended answer to Voice memory, and don't you Forget It. We won't.
.fafm 🐘🎙️ · application/vnd.fafm+yaml (IANA registered)
· part of the FAF.one family · MIT licensed
Release files for grok-faf-voice 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| grok_faf_voice-0.4.0.tar.gz | 77.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| grok_faf_voice-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:127.3 kB
Release files / grok_faf_voice-0.4.0.tar.gz
| Download URL | grok_faf_voice-0.4.0.tar.gz |
|---|---|
| Size | 77.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
012ca9759a659275e1e950a54bdbf7a6145c0d743070f607db19f477ecf92321
|
|
BLAKE2b-256 checksum How to use checksums |
816e2921fe5b3e68e4b029f1584520b670ea4f506b33071d0b5297a96f1bf357
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.
Transparency logRelease files / grok_faf_voice-0.4.0-py3-none-any.whl
| Download URL | grok_faf_voice-0.4.0-py3-none-any.whl |
|---|---|
| Size | 50.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
299bf5cbadbf6affaa31104e15d3aa17948253927c2c57a47c8b6e00e15a225a
|
|
BLAKE2b-256 checksum How to use checksums |
24d513971bc95ebc82866d26d3fddc0b972ed13cb417b7477ddf663be3a47a70
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.
Transparency log