5

Show HN: Agent File (.af) – A standard file format for serializing AI agents

Hi HN - We’re building Agent File (.af), which makes it possible to re-create the exact same agent (including memories, tools, message history, configs, etc.) across different machines.

A big difference between LLMs and agents is that agents have associated state: system prompts, editable memory (personality and user information), tool configurations (code and schemas), and LLM/embedding model settings. While you can run the same LLM as someone else by downloading the weights, there’s no “representation” of agents that allows you to re-create an instance of an agent across services.

Agent File (.af) is an open standard file format for serializing stateful agents. Originally designed for the Letta framework, .af is a human-readable representation of all the associated state of an agent to reproduce the exact behavior and memories.

To demonstrate .af, we also made a few example agents with download links to .af:

- MemGPT: An agent with memory management tools for infinite context, as described in the MemGPT paper Deep Research: A research agent with planning, search, and memory tools to enable writing deep research reports from iterative research

- Customer Support: A customer support agent that has dummy tools for handling order cancellations, looking up order status, and also memory

- Stateless Workflow: A stateless graph workflow agent (no memory and deterministic tool calling) that evaluates recruiting candidates and drafts emails

- Composio Tools: An example of an agent that uses a Composio tool to star a GitHub repository

We’d love to hear what people think of the agent schema we chose and if we’re missing anything (we included everything that we need from Letta, but there may be other features in other frameworks).

If you're interested in the full schema you can look at the Pydantic models here: https://github.com/letta-ai/letta/blob/main/letta/serialize_...

Agent File is intended to support "one thread" agents, ie agents that have an indefinite conversation/event history, even if the underlying in-context message history is limited. That's why there's a distinction between just "messages" and "in-context messages" (a subset of messages).