A Tail is the smallest complete portable unit of agent definition. It describes a single agent's identity, behavior, capabilities, interfaces, and runtime expectations. A Tail is the canonical source of truth for what an agent is, how it behaves, what it can do, and how it participates in systems — alone or in teams. External formats (SKILL.md, AGENTS.md, MCP configs) are adapter targets, not the source of truth.
A TailPack is a portable container for one or more Tails, plus optional shared assets, integration configs, compatibility metadata, and distribution information. A TailPack is the unit of packaging, sharing, remixing, and deployment handoff.
A TailPacker is the public surface for sharing, previewing, using, and remixing TailPacks.
A Tail is the canonical source object. External formats are adapter targets, not the source of truth.
A TailPack packages one or more Tails for portability, sharing, remixing, and deployment handoff. A TailPack does not replace the Tail as the atomic unit.
The base spec supports one-to-many adapters: TeamAgentix runtime, open zip export, SKILL.md, AGENTS.md, MCP, webhook/event, and future runtime/platform adapters.
The canonical Tail model should be richer than the lowest common denominator of current platforms. Adapters may degrade gracefully, flatten structure, drop unsupported fields, and annotate lossiness.
Portable exports should use readable formats where possible: JSON or YAML for manifests, Markdown for prompts/skills/docs, standard media/assets, and optional adapter-specific files.
TailPack is designed to complement, not replace, other emerging agent standards.
- SKILL.md / Agent Skills — TailPack may export skills in
SKILL.mdformat via adapters.SKILL.mdis treated as a modular capability format, not a full Tail definition. - AGENTS.md — TailPack may emit or reference
AGENTS.mdartifacts via adapters for repo- or environment-oriented runtimes.AGENTS.mdis treated as project or environment context, not a complete agent definition format. - MCP (Model Context Protocol) — TailPack uses MCP as an integration and tool-wiring target via adapters. TailPack does not attempt to replace MCP.
- A2A / ACP — TailPack does not define inter-agent communication protocols. Teaming metadata may inform runtimes that use A2A/ACP or similar systems.
- ADL / other agent definition formats — TailPack may interoperate with other declarative agent formats through adapters. TailPack's canonical model prioritizes full agent definition, packaging, portability, and lossy export/import awareness.
A Tail is the smallest complete unit. It includes identity, persona and instructions, capabilities, skills, tool and integration definitions, model and voice preferences, inputs and outputs, environment assumptions, and optional team metadata.
A Tail may run alone, as part of a TailPack, in a runtime directly, or through an adapter into another platform.
A TailPack is a container for one or more Tails. It may include shared assets, shared skills, shared integration configs, compatibility notes and adapters, packaging metadata, and remix/provenance info.
A TailPack may be remixed: modifying included Tails, changing assets or config, repackaging and redistributing as a new TailPack, and preserving provenance where applicable.
{
"tail_version": "0.1b",
"identity": {},
"persona": {},
"capabilities": {},
"inputs": {},
"outputs": {},
"feeds": {},
"memory": {},
"interfaces": {},
"integrations": {},
"environment": {},
"teaming": {},
"economics": {},
"trust": {},
"lifecycle": {},
"distribution": {},
"extensions": {}
}Defines what the Tail is.
{
"id": "strategist",
"name": "Strategist",
"role": "Brand Strategist",
"description": "Helps define positioning, messaging, and strategic direction.",
"tags": ["strategy", "positioning", "brand"],
"icon": "assets/strategist.png",
"author": {
"name": "Your Name",
"url": ""
},
"version": "0.1.0"
}Notes:
idmust be unique within the TailPack.- Global uniqueness is out of scope for v0.1b.
- TailPack-level authorship is canonical for provenance; Tail-level authorship may be overridden later if remix workflows need it.
Defines how the Tail should think and behave.
{
"system_prompt": "You are a sharp, skeptical strategist...",
"persona_prompt": "Act as a senior brand strategist...",
"tone": ["clear", "strategic", "direct"],
"goals": [
"Clarify the strategic problem",
"Surface tradeoffs",
"Recommend coherent paths"
],
"constraints": [
"Do not invent facts",
"Avoid vague marketing language"
],
"style": {
"verbosity": "medium",
"reasoning_style": "structured",
"response_style": "decisive"
}
}Rules:
system_promptis the base instruction layer.persona_promptis an optional layered instruction/persona block applied on top.- If a runtime cannot preserve layered prompting, adapters may concatenate them.
- In conflicts,
system_prompttakes precedence.
Defines what the Tail can do.
{
"skills": ["skills/positioning", "skills/critique"],
"modalities": {
"text": true,
"voice": true,
"image": false,
"code": false
},
"permissions": {
"tool_use": true,
"web_access": true,
"file_access": true,
"memory_read": true,
"memory_write": true
}
}Rules:
- Skill references are relative paths within the Tail's folder structure.
- Shared TailPack-level skills may be referenced separately, such as from
shared/skills/. - External URIs are out of scope for v0.1b.
- Validation Rule: If
permissions.tool_useisfalsebutintegrations.toolscontains entries markedrequired: true, the Tail is invalid and must be rejected at authoring/validation time.
Defines what the Tail can receive directly in a single interaction.
{
"accepted_types": [
"text/plain",
"text/markdown",
"application/pdf",
"application/json",
"text/uri-list"
],
"supports": {
"conversation": true,
"files": true,
"urls": true,
"structured_json": true,
"images": false,
"audio": true
},
"input_schema": null
}Inputs are transactional.
Defines what the Tail can produce.
{
"formats": [
"text/markdown",
"application/json"
],
"supports": {
"summaries": true,
"reports": true,
"recommendations": true,
"tool_calls": true,
"audio": true
},
"output_schema": null
}Defines expected ongoing contextual streams.
{
"supported": [
"memory",
"documents",
"events",
"repo",
"webhooks"
],
"subscriptions": {
"memory": true,
"documents": true,
"events": false,
"repo": false,
"webhooks": false
},
"fallbacks": {
"documents": "ephemeral_context_only"
}
}Rules:
- Feeds are not flags and not abilities. Feeds are declared dependencies on contextual streams.
- They tell the runtime what kinds of ongoing context the Tail expects to have access to. The runtime decides how to satisfy them.
subscriptionsindicates which feed types the Tail actively wants wired up.fallbacksis optional and may describe degradation behavior if a feed is unavailable.
Examples of feed types: memory feed, document corpus, repo stream, event stream, webhook/event feed.
Defines memory expectations and strategy.
{
"mode": "optional",
"supports": {
"ephemeral": true,
"persistent": true,
"retrieval": true,
"summary_memory": true
},
"scope": "tail",
"strategy": "store useful user preferences and recurring project context"
}Rules:
scope: "tail"is the default for v0.1b.pack,session, andglobalare reserved future values.- Shared memory across Tails is out of scope for now.
Defines how a Tail can be interacted with.
{
"chat": true,
"voice": true,
"api": true,
"mcp": {
"enabled": true,
"required": false
},
"webhook_callbacks": {
"enabled": true
}
}Interfaces describe modes of interaction, not external integrations themselves.
Defines external systems and tool/interoperability configs.
{
"tools": [
{
"id": "web-search",
"type": "tool",
"required": false
}
],
"mcp": {
"servers": [
{
"id": "docs-server",
"transport": "stdio",
"required": false
}
],
"tools": [],
"resources": [],
"prompts": []
},
"webhooks": {
"inbound": [],
"outbound": []
}
}Suggested webhook object:
{
"id": "task-complete",
"direction": "outbound",
"event": "tail.task.completed",
"method": "POST",
"url": "https://example.com/webhook",
"auth": {
"type": "bearer",
"token_ref": "env:WEBHOOK_TOKEN"
}
}Rules:
- Tail-level tool declarations (
integrations.tools) are capability claims ("I am allowed to use this tool"). - Shared integration configs at the TailPack level provide the actual implementation details a runtime should wire up.
- The spec defines reference patterns for secrets, not embedded credentials.
token_ref,secret_ref, orcredential_refare acceptable reference forms. - Secret resolution is a runtime concern.
Defines assumptions about the runtime environment.
{
"requires": {
"internet": true,
"file_access": true,
"voice_output": true,
"mcp_support": false
},
"preferred_models": [
{
"provider": "openrouter",
"model": "qwen/qwen-2.5-72b-instruct"
}
],
"preferred_voice": {
"provider": "internal",
"voice": "alloy"
},
"runtime_hints": {
"local_model_supported": true,
"browser_extension_supported": true
}
}These are preferences and hints unless explicitly marked required.
Defines how the Tail works in multi-agent contexts.
{
"can_work_alone": true,
"can_join_team": true,
"default_role": "strategist",
"communication_style": "structured",
"handoff_targets": ["copy-chief", "judge"],
"escalation_targets": ["judge"],
"escalation_rules": [
"Escalate final arbitration to judge roles when conflicts remain unresolved."
]
}Rules:
handoff_targetsandescalation_targetsresolve only to Tail IDs inside the same TailPack.- Cross-pack handoffs are out of scope for v0.1b.
escalation_targetsprovide structured routing for runtimes, whileescalation_rulesprovide natural-language context for the model.
Defines optional economic and transaction-related metadata for a Tail.
{
"enabled": false,
"payment_capable": false,
"spending_limits": {},
"pricing": {},
"settlement_hints": {}
}Rules:
economicsis reserved for future schema expansion in v0.1b.- v0.1b does not define a canonical transaction or blockchain/DAG model.
- This block exists to reserve space for portable economic metadata such as spending authority, payment capability, pricing hints, settlement preferences, and royalty or remix economics.
- Chain-specific, token-specific, and vendor-specific fields should not be standardized in v0.1b.
- Implementations may use
extensionsfor experimental economics-specific data.
Defines optional trust, provenance, and attestation metadata for a Tail.
{
"enabled": false,
"credentials": [],
"attestations": [],
"verification_hints": {},
"provenance_refs": []
}Rules:
trustis reserved for future schema expansion in v0.1b.- v0.1b does not define a canonical trust or credential schema.
- This block exists to reserve space for portable trust metadata such as verifiable credentials, attestation references, trust assertions, verification hints, and provenance bindings.
- Runtime verification and trust resolution are out of scope for v0.1b.
- Implementations may use
extensionsfor experimental trust models.
Defines optional lifecycle metadata for a Tail.
{
"state": "active",
"previous_version": null,
"supersedes": null,
"migration_hints": {},
"deprecated": false
}Rules:
lifecycleis reserved for future schema expansion in v0.1b.- This block exists to reserve space for portable lifecycle metadata such as current state, migration continuity, deprecation, replacement lineage, and identity continuity during upgrades.
- v0.1b does not define a full lifecycle state machine.
- Additional lifecycle semantics may be added in later versions.
Defines portability, packaging, and provenance metadata.
{
"license": "custom",
"remixable": true,
"attribution_required": true,
"compatibility_targets": [
"teamagentix",
"open-tailpack",
"mcp-compatible"
],
"governance_hints": {
"compliance_profile": null,
"human_review_required": false
},
"provenance": {
"derived_from": null
}
}Rules:
governance_hintsis intentionally minimal in v0.1b.- It may express lightweight compliance or review expectations.
- It does not define a policy engine or governance framework.
- Formal governance semantics are out of scope for v0.1b.
Freeform namespace for future additions.
{
"x-teamagentix": {},
"x-openclaw": {},
"x-custom-runtime": {}
}Unknown extensions blocks should be ignored unless the runtime explicitly supports them.
A Tail may contain or reference skills.
{
"id": "positioning",
"name": "Positioning",
"description": "Framework for clarifying product positioning and category language.",
"entrypoint": "SKILL.md",
"assets": [],
"scripts": []
}skills/
positioning/
SKILL.md
assets/
references/
scripts/
{
"tailpack_version": "0.1b",
"identity": {},
"tails": [],
"shared": {},
"compatibility": {},
"distribution": {},
"extensions": {}
}{
"id": "brand-strategy-pack",
"name": "Brand Strategy TailPack",
"description": "A portable set of strategic agents for positioning, critique, and recommendation.",
"author": {
"name": "Your Name"
},
"version": "0.1.0",
"tags": ["strategy", "brand", "team"]
}Array of Tail references or embedded Tail objects.
[
{ "ref": "tails/strategist/tail.json" },
{ "ref": "tails/judge/tail.json" }
]Shared resources for the pack.
{
"assets": ["assets/brand-framework.pdf"],
"skills": [],
"integrations": [],
"defaults": {
"team_mode": "collaborative"
}
}Adapter-facing metadata and helpers.
{
"includes": [
"open-export",
"skill-bundle",
"mcp-mapping"
],
"notes": [
"Best used in multi-agent environments with voice support."
]
}Sharing and remix metadata.
{
"public": true,
"star_enabled": true,
"comment_enabled": true,
"remix_enabled": true,
"license": "custom",
"attribution_required": true,
"provenance": {
"derived_from": null
}
}brand-strategy-tailpack/
tailpack.json
README.md
tails/
strategist/
tail.json
agent.md
prompt.md
assets/
skills/
positioning/
SKILL.md
assets/
scripts/
judge/
tail.json
agent.md
prompt.md
assets/
shared/
assets/
skills/
integrations/
compat/
README.md
setup-notes.md
Notes:
tail.jsonis canonical.agent.mdandprompt.mdare human-readable support files local to each Tail.- Export adapters may add
AGENTS.md,SKILL.md, MCP configs, and other compatibility artifacts.
Every adapter should declare: adapter_id, version, source_version_supported, target_format, lossiness, and capabilities_supported.
{
"adapter_id": "skillmd-export",
"version": "0.1.0",
"source_version_supported": ["tail@0.1b"],
"target_format": "SKILL.md",
"lossiness": "partial",
"capabilities_supported": [
"skills",
"assets",
"instructions"
]
}An adapter may export canonical fields into a target format, import a target format into canonical fields, emit warnings for unsupported fields, and annotate degraded mappings.
{
"warnings": [
{
"code": "WARN_MEMORY_UNSUPPORTED",
"field": "memory",
"reason": "Target format has no native persistent memory representation."
}
]
}Rules:
- All warnings should include a
code,field, andreason. codeis a machine-readable identifier for automated validation and CI checks.- A formal warning code enum is not defined in v0.1b but may be standardized in future versions.
Minimum viable Tail: tail_version, identity.id, identity.name, persona.system_prompt or persona.persona_prompt, capabilities, and distribution.
Minimum viable TailPack: tailpack_version, identity.id, identity.name, at least one Tail, and distribution.
Everything else can grow later.
{
"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 }
}
}Use explicit versions: tail_version and tailpack_version.
Recommended: patch = non-breaking clarifications, minor = additive fields, major = breaking schema changes.
Unknown extension blocks should be ignored unless explicitly supported.
This version intentionally does not over-specify exact plugin file formats, exact MCP serialization details, runtime-specific memory implementation, strict event schemas, or hard output contracts.
Instead, it creates room for adapters, future runtime evolution, lossy compatibility, public/open exports, and secure TeamAgentix-native packaging later.
This version also reserves space for future expansion in three areas that are increasingly relevant across agent ecosystems: economics, trust, and lifecycle. These blocks are intentionally underdefined in v0.1b. They exist to prevent schema churn and to preserve room for portable metadata in areas where the ecosystem is moving quickly but has not yet converged on stable cross-platform representations.
- Lock the canonical
tail.jsonshape. - Lock the
tailpack.jsoncontainer shape. - Build two adapters first: open TailPack export, and TeamAgentix runtime import/export.
- Then add:
SKILL.mdexport/import, MCP mapping, webhook schema handling, and optionalAGENTS.mdemission. - Define placeholder handling for
economics,trust, andlifecyclein validators and serializers. - Later: strict contracts, lineage graph, remix history, and secure commercial packaging mode.