API: Models¶
Pydantic models defining the .agent schema.
AgentManifest¶
Root model for .agent files.
from agentspec import AgentManifest, load_agent
manifest = load_agent("my.agent")
print(manifest.name, manifest.version)
print(manifest.skills)
print(manifest.behavior.traits)
| Field | Type | Default |
|---|---|---|
apiVersion |
str |
"agent/v1" |
name |
str |
required |
version |
str |
"0.1.0" |
author |
str? |
None |
license |
str? |
None |
description |
str? |
None |
tags |
list[str] |
[] |
base |
str? |
None |
merge |
MergeSpec |
MergeSpec() |
model |
ModelSpec |
ModelSpec() |
auth |
AuthSpec |
AuthSpec() |
skills |
list[str] |
[] |
tools |
ToolsSpec |
ToolsSpec() |
memory |
MemorySpec |
MemorySpec() |
behavior |
BehaviorSpec |
BehaviorSpec() |
expose |
list[ExposedMethod] |
[] |
trust |
TrustSpec |
TrustSpec() |
observability |
ObservabilitySpec |
ObservabilitySpec() |
agents |
dict[str, SubAgentRef] |
{} |
pipeline |
list[PipelineStep] |
[] |
extensions |
dict[str, Any] |
{} |
soul |
str? |
None (loaded from SOUL.md) |
rules |
str? |
None (loaded from RULES.md) |
Forward compatibility: unknown fields ignored (extra = "ignore").
ModelSpec¶
class ModelSpec:
capability: Literal["reasoning-low", "reasoning-mid", "reasoning-high", "reasoning-max"]
preferred: list[str]
fallback: Optional[str]
context: Union[Literal["full"], str]
BehaviorSpec¶
class BehaviorSpec:
persona: Optional[str]
traits: list[str]
temperature: float = 0.5
max_steps: int = 20
on_error: Literal["ask", "retry", "fail", "skip"] = "ask"
system_override: Optional[str]
TrustSpec¶
class TrustSpec:
filesystem: Literal["none", "read-only", "scoped", "full"] = "none"
network: Literal["none", "allowed", "scoped"] = "none"
exec: Literal["none", "sandboxed", "full"] = "none"
scope: list[str]
def is_at_least_as_restrictive_as(self, other: TrustSpec) -> bool:
...
MergeSpec¶
class MergeSpec:
skills: Literal["append", "override", "restrict"] = "append"
tools: Literal["append", "override", "restrict"] = "append"
behavior: Literal["override", "append"] = "override"
trust: Literal["restrict"] = "restrict" # hardcoded