# AML documentation

Build AI agents and multi-agent applications with TypeScript and JSX.
Canonical: https://agent-markup-language.com/docs/
Documentation index: https://agent-markup-language.com/docs/
Complete documentation: https://agent-markup-language.com/docs/llms.txt

**Documentation shortcuts**

- [FAQ](https://agent-markup-language.com/docs/faq/)
- [Examples](https://agent-markup-language.com/docs/examples/)
- [CLI](https://agent-markup-language.com/docs/cli/)
- [Agent skill](https://agent-markup-language.com/docs/agent-skill/)
- [Providers](https://agent-markup-language.com/docs/providers/)
- [Cookbook](https://agent-markup-language.com/docs/cookbook/)
- [Reference](https://agent-markup-language.com/docs/reference/)

- [Full documentation for agents](https://agent-markup-language.com/docs/llms.txt) — Give an agent the complete AML documentation in one plain-text file.

- [Project llms.txt](https://agent-markup-language.com/llms.txt) — Share the concise project overview and links to the full agent documentation.

Agent Markup Language (AML) is a TypeScript framework for building AI agents and multi-agent applications. Use JSX to compose each agent's instructions, tools, input, and execution environment. AML runs that composition, passes results between agents, and manages session and resource cleanup.

The built-in providers connect to existing coding agents: Codex, GitHub Copilot, GLM, OpenCode, and Pi. Those agents keep their native model loops and tools. Your application owns the workflow around them, including validation, routing, concurrency, and persistence.

## What will you build?

| Start with…                                                    | Learn how to…                                                                   |
| -------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| [Your first workflow](https://agent-markup-language.com/docs/getting-started/)                  | Run an Agent, compose specialists, and connect a live provider.                 |
| [An agent with an application Tool](https://agent-markup-language.com/docs/cookbook/tools/)     | Grant a typed function to one agent and verify that it is called.               |
| [A code-review workflow](https://agent-markup-language.com/docs/cookbook/code-review-workflow/) | Gather evidence, run specialists in parallel, and validate their findings.      |
| [A support router](https://agent-markup-language.com/docs/cookbook/structured-routing/)         | Turn a typed result into an application-authorized decision.                    |
| [A workflow test](https://agent-markup-language.com/docs/cookbook/testing/)                     | Run the same composition with deterministic providers and inspect its behavior. |

You can start with a single `<Agent />`. Add tools, sandboxes, and workspaces when the task needs them. JSX describes the composition; ordinary TypeScript still handles conditions, loops, and application logic. React is not required.

## Install AML

**Application runtime**

### Install the SDK

Add the public ESM package to a Node.js 26+ TypeScript project.

```sh
npm install @aml-jsx/sdk
```

Prefer an executable workflow file without application glue? Use the [experimental AML CLI](https://agent-markup-language.com/docs/cli/).

[Configure TSX and run a credential-free workflow →](https://agent-markup-language.com/docs/getting-started/)

**Coding agents**

### Install the AML authoring skill

Give a compatible coding agent the repository-backed AML API, composition, provider, and security guidance.

```sh
npx skills add \
  we-are-singular/aml \
  --skill aml-jsx
```

The skill guides the agent; your project still needs the SDK and its selected provider executables.

[Install, verify, and use the skill →](https://agent-markup-language.com/docs/agent-skill/)

Start with the [credential-free tutorial](https://agent-markup-language.com/docs/getting-started/), then use the provider guides and cookbook to assemble a production workflow. Search the complete documentation with `Ctrl` + `K`.
