Skip to main content
For the full guide, see Mobpack.
This page is intentionally deployment-focused and CLI-heavy. Use Examples: Mobs first if you want to understand the multi-agent runtime before packaging it, and continue to Examples: WASM if your next step is browser delivery.

Define the portable boundary

A source directory needs manifest.toml and definition.json. Optional archive sections are skills/, hooks/, mcp/, config/, adaptive/, and schemas/.
manifest.toml
definition.json
To validate callable parameters, optionally add schemas/main-input.json:
schemas/main-input.json
If the pack needs defaults, keep config/defaults.toml inside the typed allow-list:
config/defaults.toml
Arbitrary [agent], [tools], [shell], [realm], [comms], provider-key, and storage configuration is rejected. Mobpacks carry runtime intent and assets, not credentials or host infrastructure.

Pack a mob directory

Bundle the directory into one deterministic .mobpack artifact:

Sign a pack

Attach an Ed25519 signature at pack time for trust verification on deploy.
Signing embeds the public key but does not install the signer as trusted. The local commands below therefore use permissive mode; use strict only after installing that signer in the verifier’s trust configuration.

Inspect a pack

View the contents, metadata, and signature status of a .mobpack without deploying.

Validate a pack

Check structural integrity, schema conformance, and signature validity.
Validation checks archive safety and digest, typed surface and capability requirements, definition and skill references, typed deploy defaults, adaptive assets, and signature policy before any mob is created.

Deploy a pack with an objective

mob deploy runs the packaged team against one prompt. CLI model and budget flags remain host-owned overrides:

Run a pack

Invoke a .mobpack as a typed callable run. When schemas/main-input.json is present, parameters are validated before the flow starts. --prompt is sugar for --param prompt=<text>.
The mob and run records use durable realm custody. Use --detach on a callable flow to get a run id, then inspect or attach to that run resource:
--detach does not move execution into a daemon. The flow runs only while the CLI process lives; after it exits, the next hydration marks unfinished work canceled because execution custody was lost. The durable resource is still available for status and logs.

Package an adaptive flow

Adaptive packs add [adaptive] manifest metadata plus adaptive/policies.toml, adaptive/flowmaster.prompt.md, and a schemas/registry.json that points to required bundled schemas. Packing stamps the adaptive_flow capability and regenerates adaptive/layer-decision.schema.json; do not hand-maintain that generated schema. Validation fails on a policy digest mismatch, incomplete policy limits, missing schemas, or a target runtime without the adaptive capability.

Trust policies

For signed packs, both policies reject digest and signer-key mismatches. Permissive relaxes signer enrollment; it does not disable integrity verification. Trust policy resolution order:
  1. CLI flag: --trust-policy permissive
  2. Environment variable: RKAT_TRUST_POLICY=permissive
  3. Config file: trust.policy field
  4. Default: strict (fail closed)

Next step

After packaging and deploy flows, continue with Examples: WASM for the browser-target delivery path.