A specification for defining, packaging, and sharing portable AI agents.
A Tail is the smallest complete portable unit of agent definition. It describes a single agent's identity, behavior, capabilities, interfaces, and runtime expectations — everything needed to understand what an agent is, what it can do, and how it should work. A Tail is to an AI agent what a Dockerfile is to a container: the canonical source of truth.
A TailPack is a container for one or more Tails, bundled with shared assets, integration configs, and compatibility metadata. It is the unit of packaging, sharing, and deployment.
There are emerging standards for tools (MCP), agent-to-agent communication (A2A), reusable skills (SKILL.md), and project context (AGENTS.md). But there is still no clear, interoperable way to define a complete agent and move it between systems.
TailPack fills that gap.
It defines a structured way to package agent identity, behavior, feeds, distribution metadata, and governance signals — so agents can be shared, versioned, composed, and adapted across environments.
A minimal Tail — a valid, complete agent definition:
{
"tail_version": "0.1b",
"identity": {
"id": "assistant",
"name": "Assistant"
},
"persona": {
"system_prompt": "You are a helpful assistant."
},
"capabilities": {
"skills": [],
"modalities": { "text": true },
"permissions": { "tool_use": false }
},
"distribution": {
"license": "custom",
"remixable": true,
"attribution_required": true,
"compatibility_targets": ["open-tailpack"],
"provenance": { "derived_from": null }
}
}That's it. Identity, behavior, capabilities, distribution. Everything else is optional.
For a full example with all schema sections populated, see examples/tail-full.json. For a multi-agent TailPack manifest, see examples/tailpack-full.json (note: this shows the container manifest structure; the referenced Tail files are not included in this repo).
- Portable — not tied to any platform or runtime
- Composable — supports multi-agent structures via TailPacks
- Explicit — avoids hidden behavior; feeds and inputs are declared, not inferred
- Adapter-friendly — designed to export lossily into other ecosystems (SKILL.md, MCP, AGENTS.md)
- Incremental — a minimal valid Tail fits in a single screen; the full schema grows with your needs
TailPack complements, rather than replaces, existing standards:
- MCP — TailPack references MCP for tool wiring. It does not replace MCP.
- A2A / ACP — TailPack does not define inter-agent communication. Teaming metadata informs runtimes that use these protocols.
- SKILL.md — TailPack exports skills in SKILL.md format via adapters. Skills are a component of a Tail, not the whole definition.
- AGENTS.md — TailPack may emit AGENTS.md as a compatibility artifact. AGENTS.md provides project context; TailPack defines the agent itself.
For more detail, see docs/concepts.md.
The full specification defines:
- Tail schema — 17 top-level blocks covering identity, persona, capabilities, inputs, outputs, feeds, memory, interfaces, integrations, environment, teaming, economics, trust, lifecycle, distribution, and extensions
- TailPack container — packaging format for one or more Tails with shared assets and compatibility metadata
- Adapter model — a first-class system for lossy export/import with explicit warning annotations
- Validation rules — including permissions interlock checks
- Versioning — explicit spec versioning with semantic intent
tailpack/
README.md
SPEC.md
LICENSE
examples/
tail-minimal.json
tail-full.json
tailpack-full.json
docs/
concepts.md
adapters/
(placeholder — future adapter implementations)
v0.1b — emerging draft
This version is internally consistent, stable enough for experimentation, and open for feedback. It is not yet finalized, widely implemented, or locked.
Reserved blocks (economics, trust, lifecycle) signal future direction without overcommitting to schemas the ecosystem hasn't stabilized yet.
Early-stage spec — clarity beats cleverness. If something is confusing, that's a bug.
Licensed under the Apache License, Version 2.0. See LICENSE for details.