Skip to content

Cookbook

Build useful AML workflows one task at a time

AML is easiest to learn by building a workflow with a clear job to do. This cookbook moves from a credential-free review pipeline to typed outputs, application <Tool /> capabilities, scoped <Mcp /> access, filesystem resources, durable provider composition, and operational jobs.

Every recipe assumes:

  • Node.js >=26;
  • dependencies installed with npm install;
  • TypeScript/TSX support with AML’s automatic JSX runtime;
  • the public application entrypoint, @aml-jsx/sdk.

The complete recipe files construct and evaluate their own AmlRuntime, which is the clearest shape when an application owns limits, defaults, telemetry, and shutdown. To run a workflow with the experimental CLI instead, export the AML tree, put required providers directly on their components, and use npx aml run ./workflow.tsx. Do not wrap a second AmlRuntime inside the exported CLI entry.

The recipe status tells you what the source actually does:

  • Deterministic uses @aml-jsx/sdk/testing and needs no model, credentials, or network.
  • Credentialed starts a real Agent adapter or expects provider credentials and an executable.
  • Resource-backed exercises a local, container, or remote filesystem/execution boundary. Read its mutation and isolation notes before running it.

Recipe steps and claims are verified against the implementation and specification links in each page’s API and source links section.

RecipeStatusNeedsBest for
Auto-authored changelogCredentialed + repository-backedScript collector, Agent provider, schemas, and a document writerComposable Agents around deterministic release work
Code-review workflowDeterministic by default; credentialed by opt-inNode, SDK, zod; provider executable and credentials only for OpenCode/Codex modesA first useful multi-Agent workflow
Structured outputDeterministicNode, SDK, zodTyped findings and validation boundaries
ToolsDeterministicNode, SDK/testing, zodApplication-owned functions and capability scoping
RecipeStatusNeedsBest for
Testing AML workflowsDeterministicNode, SDK/testing, VitestReplacing runtime defaults and asserting capability/resource behavior
MCP capabilitiesDeterministic fixtureNode, SDK/testing; no MCP server or credentialsCapability isolation without pretending to run an external server
Tool or MCP?Deterministic Tool + credentialed MCP exampleNode and SDK; OpenCode, credentials, and an operated MCP server for the MCP pathChoosing the correct capability boundary
Sandbox imageResource-backedNode, SDK, Docker, and AML Agent SandboxUnderstanding image defaults and overrides
Sandboxes and WorkspacesDeterministic + resource-backedNode, SDK/testing, writable temp directoryLocal file materialization and execution-scope composition
Generated diagnosticsDeterministic Agent + resource-backedNode, SDK/testing, Docker, and the selected interpreter imageTreating generated code as data before explicit execution
RecipeStatusNeedsBest for
Production jobCredentialed + deployment shapeNode/ESM TSX runtime, OpenCode executable, model configuration, credentials, and a loggerBackground jobs that need bounded execution and operational controls
CLI process safetyResource-backed, credential-freePOSIX host, local Sandbox, CLI, and one terminal interruptGraceful signal handling and process-tree cleanup
Agent activityCredentialedOpenCode executable, model credentials, and an approved content-capturing terminalUnderstanding live ACP activity across Agent turns
Application observabilityDeterministicNode, SDK, and application request contextCustom phase timing and concurrent run correlation
Codex + Docker + S3Credentialed + container + durable storageCodex ACP image, Docker, model credentials, S3 bucket, and AWS identityUnderstanding the complete three-provider lifecycle
Structured routingDeterministicNode, SDK/testing, zod, and an application-owned root directorySafely turning model-shaped data into resource selection

This recipe is intentionally provider-backed. It does not install OpenCode, provision credentials, define a deployment image, or make local execution safe for untrusted code. Treat the code as a composition-root pattern and inject the Sandbox/Workspace providers required by your deployment.

Use deliberate editorial passes with FollowUp when several authored instructions should run in one provider session. The recipe explains what AML guarantees, what conversation history remains provider-owned, and when separate evaluations are clearer.

Each page follows the same reading order:

  1. Goal — the user task and the AML shape it produces.
  2. Prerequisites — credentials, executables, packages, and resource requirements.
  3. Complete source — imports included, with provider assumptions visible.
  4. Run and expected output — what is safe to execute and what success looks like.
  5. How it works — the runtime contract behind the example.
  6. Failure and security notes — boundaries that should affect production decisions.
  7. API and source links — public contracts and the maintained repository example.

For the repository’s current runnable catalog, use the command on the Examples page. The runner remains the source of truth; the docs recommend paths by learning goal instead of maintaining a second export inventory.