Skip to content

Conformance Levels

Not every agent needs every feature. CKP defines three conformance levels so implementations can start small and grow. A 4 MB embedded chatbot and a 52-module enterprise swarm are both valid CKP agents — they just conform at different levels.


The smallest possible CKP agent. Receives input, reasons with an LLM, and responds.

Required primitives: Identity, Provider

Capabilities:

  • Parse and validate a claw.yaml manifest
  • Initialize with claw.initialize and report status with claw.status
  • Reason with at least one LLM Provider
  • Respond to input via an implicit CLI channel (stdio)
  • Shut down gracefully with claw.shutdown

Cannot:

  • Execute tools
  • Persist memory across sessions
  • Coordinate with other agents
  • Connect to external messaging channels

Use cases: Embedded devices, simple chatbots, prototyping, CI pipelines.

Test vectors: 13 (see test vectors)


An agent that connects to the outside world, executes tools, and enforces security.

Required primitives: Identity, Provider, Channel, Tool, Sandbox, Policy

Adds over Level 1:

  • Messaging channels (Telegram, Slack, Discord, Webhook, etc.)
  • Tool execution within sandbox constraints
  • Policy rules (allow, deny, require-approval, audit-only)
  • Approval gates for sensitive operations
  • Channel access control (allowlists, authentication)

Use cases: Personal assistants, team bots, automated workflows, customer support agents.

Test vectors: 10 additional (23 cumulative)


A fully autonomous agent with persistence, composed workflows, and multi-agent collaboration.

Required primitives: All 9 core primitives (WorldModel and Telemetry optional at all levels)

Adds over Level 2:

  • Persistent memory (conversation, semantic, key-value, workspace)
  • Skill composition (multi-step workflows from tools)
  • Swarm coordination (5 topologies: star, mesh, pipeline, hierarchical, broadcast)
  • Memory compaction and semantic search
  • Cross-agent delegation and task reporting
  • Optional predictive planning through reusable WorldModel declarations

Use cases: Enterprise deployments, research teams, complex multi-step workflows, autonomous operations.

Test vectors: 8 additional (31 cumulative)

Those 8 L3 vectors are a mix of live runtime behavior and manifest validation:

  • live runtime coverage: swarm delegate/report, broadcast, discover, memory store/query, and compact
  • manifest-validation coverage: invalid Channel.access_control combinations for allowlist and role-based modes

That split is intentional. CKP conformance includes both wire-protocol behavior and schema-level correctness where the protocol depends on manifest structure.

WorldModel does not add wire conformance requirements in CKP 0.3.0. It is validated first at the manifest/schema layer and described operationally in the Runtime Profile.


MethodLevel 1Level 2Level 3
claw.initializeMUSTMUSTMUST
claw.statusMUSTMUSTMUST
claw.shutdownMUSTMUSTMUST
claw.heartbeatSHOULDSHOULDMUST
claw.initializedSHOULDSHOULDSHOULD
claw.tool.callMUSTMUST
claw.tool.approve / denyMUSTMUST
claw.swarm.delegateMUST
claw.swarm.reportMUST
claw.swarm.broadcastMUST
claw.swarm.discoverMUST
claw.memory.queryMUST
claw.memory.storeMUST
claw.memory.compactMUST

Conformance level is not declared in the manifest — it is inferred from the primitives present. A runtime validates the manifest against the requirements for each level and reports the highest level satisfied.

# This manifest is Level 1 (only Identity + Provider)
name: simple-bot
version: "1.0.0"
identity:
system_prompt: "You are a helpful assistant."
autonomy: supervised
providers:
- name: claude
kind: anthropic
model: claude-sonnet-4-20250514
# This manifest is Level 2 (adds Channel, Tool, Sandbox, Policy)
name: team-assistant
version: "1.0.0"
identity:
system_prompt: "You help the engineering team."
autonomy: supervised
providers:
- name: claude
kind: anthropic
model: claude-sonnet-4-20250514
channels:
- name: slack
kind: slack
access_control:
mode: allowlist
identifiers: ["U12345"]
tools:
- name: web-fetch
description: "Fetch a URL"
input_schema: { ... }
sandbox:
level: process
policies:
- name: standard
rules:
- pattern: "tool:*"
action: require-approval

QuestionL1L2L3
Does it just chat?Yes
Does it call APIs or tools?Yes
Does it need to remember things?Yes
Does it work with other agents?Yes
Is it embedded / resource-constrained?Yes
Does it need audit trails?YesYes

Start at Level 1 and promote when you need the capabilities of a higher level. The dependency graph ensures you add primitives in the right order.