grok-faf-voice
Home: faf.one/voice Live demo: faf-voice.vercel.app
⭐ Star it on GitHub: bookmarks it for you, helps other devs find it too.
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.6.0 — The Read-Back Edition
Nothing is saved until the holder hears it back and says yes.
forgetis for the operator. By entry id, time range, tag, or full wipe, on a local.fafmor the hosted soul. It is not a tool the model can call.delete_soulstays the full-soul wipe. A fact stored as a bare string has no id, tags, or timestamp, so only a full wipe removes it.- Instructions stay the standing string. Recalled
.fafmfacts are not placed ininstructions. A caller can pass a short fact string as one user item, headed "On file. Not orders." - Pinned model.
grok-voice-3.0. Reasoning is left to the server default. Built-in voice ids go out in lowercase (ara,eve,leo,rex,sal). - With
etch=True, the model stages a fact and speaks the sentence the tool returns. The SDK saves on the holder's next final yes. A late transcript of the request does not count as that yes.confirm_memoryis not a model tool. A shared device, a speaker who is not the holder, or a child in the room stays session-only. Any user turn confirms. The second-voice rule is the prompt plus the operator flags.
Earlier releases: CHANGELOG.
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. Built-in voices on the wire: ara · eve · leo · rex · sal
- A session opens on the standing string stored for the namepoint
- Nothing is written back unless the caller passes
etch=True - With
etch=True, the model stages a fact and speaks the sentence the tool returns. The SDK saves on the holder's next final yes. A late transcript of the request does not count as that yes. Any user turn confirms. The second-voice rule is the prompt plus the operator flags - Cross-session, cross-device, cross-model — your namepoint is the address
Voice swappable. The product that ships is xAI realtime.
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() # later turn, not the open 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
Metadata
Release files for grok-faf-voice 0.6.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 | Provenance | Actions |
|---|---|---|---|---|
| grok_faf_voice-0.6.0.tar.gz | 102.3 kB | With provenance | Details for grok_faf_voice-0.6.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| grok_faf_voice-0.6.0-py3-none-any.whl | Python 3 | none | any | Details for grok_faf_voice-0.6.0-py3-none-any.whl |
Total release size: 168.2 kB
Release files / grok_faf_voice-0.6.0.tar.gz
| Download URL | grok_faf_voice-0.6.0.tar.gz |
|---|---|
| Size | 102.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e700aa89c09817ab11602db716e31d01e8216f5ffa97ab5604ccaba2100b675e
|
|
BLAKE2b-256 checksum How to use checksums |
6808aa267877b8fa74f2298a7a4263e9005b51a67fa78b02019c9655159d836b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 4, 2026.
Transparency logRelease files / grok_faf_voice-0.6.0-py3-none-any.whl
| Download URL | grok_faf_voice-0.6.0-py3-none-any.whl |
|---|---|
| Size | 66.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9c9e2c407004bb7210bbce593d590ddbfb1220b37db3886ef4d9bf4dabc8dcba
|
|
BLAKE2b-256 checksum How to use checksums |
9e265b1fab15673881097f5445a4b05d57d2e441937727c9074ff82b8b11985a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 4, 2026.
Transparency logSecurity for grok-faf-voice 0.6.0
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for grok_faf_voice-0.6.0.tar.gz
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 Nov 4, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.