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

⭐ Star it on GitHub: bookmarks it for you, helps other devs find it too.

PyPI Python License Tests Business card · Get yours →

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.6.0 — The Read-Back Edition

Nothing is saved until the holder hears it back and says yes.

  • forget is for the operator. By entry id, time range, tag, or full wipe, on a local .fafm or the hosted soul. It is not a tool the model can call. delete_soul stays 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 .fafm facts are not placed in instructions. 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_memory is 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

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)

Source distribution for grok-faf-voice 0.6.0
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)

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

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

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