[media-types] [IANA #1451393] New Media Type Registratio n Request: application/vnd.fafm+yaml
"Amanda Baber via RT" <[email protected]> Tue, 05 May 2026 18:50:12 +0000
| Newsgroups | gmane.ietf.types |
|---|---|
| Message-ID | <[email protected]> |
Hi Murray,
Can you review this one by May 19th?
thanks,
Amanda
=====
Type name: application
Subtype name: vnd.fafm+yaml
Required parameters: None
Optional parameters: version
Encoding considerations: 8bit (UTF-8). Binary content, when
present, is base64-encoded inside YAML.
Security considerations:
The following addresses the questions outlined in the
media-type security considerations checklist at
https://www.iana.org/form/media-types:
1. Active or executable content. No. The .fafm format is a YAML
data document. It contains no scripts, code, executable
directives, or active markup. Implementations MUST treat
.fafm content as data, never as instructions, commands, or
code.
2. Privacy and integrity needs. Yes. .fafm files contain personal
user memory - preferences, names, conversational facts, and
arbitrary user-supplied content. Confidentiality and integrity
protection are required when these files are stored or
transmitted.
3. Privacy and integrity services. The .fafm format itself does
not provide cryptographic confidentiality, integrity
protection, or signing. These services MUST be provided
externally:
- Confidentiality: OS-level file permissions (mode 0600 is
the local-default), encryption at rest in server backends,
and TLS for all transport.
- Integrity: filesystem permissions, transport-layer
integrity (TLS), and application-level write authorization.
- Future versions of the format may add cryptographic signing
of memory entries for provenance and audit trail.
4. YAML format considerations. .fafm is built on YAML 1.2. All
YAML 1.2 security considerations apply, including those
described in RFC 9512 ("YAML Media Type") section 6. Specific
to .fafm:
- Parsers MUST disable custom type construction (no
!!python/object, !ruby/object, or equivalent
language-specific constructors).
- Parsers MUST enforce alias-expansion limits to mitigate
entity-expansion / "billion-laughs"-style attacks.
- Parsers MUST enforce nesting-depth limits to prevent stack
overflow.
5. Compression. Not applicable. .fafm does not use or require
compression at the format layer. If transport-level
compression (e.g., HTTP Content-Encoding: gzip) is applied to
.fafm content alongside other secret data, standard
compression-with-secret considerations (e.g., CRIME/BREACH
class attacks) apply at the transport layer.
6. Container format. Not applicable. .fafm is a single YAML
document, not a container or archive format. No
packaging-level security considerations apply.
7. Link references. Not applicable. .fafm content does not
require resolution of external links to be properly
interpreted. The format is fully self-contained.
Additional security considerations:
- Untrusted input / context poisoning / prompt injection. .fafm
files are written from voice and AI interactions and MUST be
treated as untrusted user input by consumers. Implementations
MUST NOT elevate .fafm content to "system instructions" or
"developer directives" within prompt hierarchies. Memory
entries are a documented vector for context poisoning and
prompt injection.
- Cross-context isolation. Implementations SHOULD scope memory
consumption to the originating namepoint to prevent unintended
cross-context influence between projects, agents, or users.
- No secrets or credentials. .fafm files MUST NOT contain
secrets, API keys, or credentials. Memory is intended for
user-facing facts and preferences only.
- Voice-command safety. Memory MUST NOT be deleted by voice
commands; deletion is a UI-only operation. Implementations
MUST expose a forget(namepoint, criteria) method supporting
deletion by entry ID, time range, or full wipe.
Interoperability considerations:
.fafm is the Voice Memory Layer (VML) sibling of the
IANA-registered .faf format (application/vnd.faf+yaml). It is
designed to interoperate with .faf while serving a distinct
purpose:
.faf - Foundational Context Layer (project IS - static, read once)
.fafm - Voice Memory Layer (VML) (agent REMEMBERS - mutating, persisted)
Two formats. Two lifecycles. One ecosystem.
.faf is read once and trusted as the project's canonical context.
.fafm accretes over time as the agent and user interact, with
entries appended, summarized, and selectively promoted into .faf
when they become enduring facts.
The .fafm schema extends application/vnd.faf+yaml - a .fafm
document remains a valid YAML file. Consumers that only
understand .faf will safely ignore the memory block and still
extract identity from namepoint and top-level fields. Consumers
that understand .fafm gain access to accumulated memory.
Both formats share the same family branding, YAML philosophy
(YAML 1.2 / RFC 9512 baseline), and MIT license. Multiple .fafm
documents per scope are permitted, distinguished by namepoint.
Published specification: https://github.com/Wolfe-Jam/faf/blob/main/MEMORY-FORMAT.md
Applications that use this media type: Voice agents, LiveKit
deployments, Grok Voice SDKs, future ElevenLabs/Hume
integrations.
Fragment identifier considerations: None.
Additional information - File extension: .fafm
Person & email address for further information: James Wolfe,
[email protected]
Intended usage: COMMON
Restrictions on usage: None
Author: James Wolfe
Change controller: FAF Foundation
_______________________________________________
media-types mailing list -- [email protected]
To unsubscribe send an email to [email protected]