Skip to main content

grok-faf-voice

IANA: vnd.fafm+yaml DOI: Memory paper DOI: Agents paper

Home: faf.one/voice Live demo: faf-voice.vercel.app

PyPI Python License Tests

Voice agents that remember.

The Voice Memory Layer (VML) for Grok Voice. .fafm 🐘🎙️ LiveKit enabled.

Two profiles, one .fafm format. 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

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 setupFAFMemory, 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)

Source distribution for grok-faf-voice 0.4.0
File Size Uploaded
grok_faf_voice-0.4.0.tar.gz 77.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for grok-faf-voice 0.4.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.2

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page