# BAML review

> BAML is an open-source, TypeScript-like programming language for agents, with runtime types, typed errors, and native LLM functions, tests, and evaluations.

Devtoolwatch Board, the week of Oct 25–31, 2026. Canonical page: https://index.devtoolwatch.com/tools/baml/

## TL;DR

BAML is a Turing-complete programming language designed for software written by agents and humans. It targets developers building agent and LLM code who want runtime types without `any` or unchecked casts. BAML can run standalone or be adopted incrementally through generated SDKs for Python and TypeScript.

## BAML at a glance

- **Category:** [Model SDKs and gateways](https://index.devtoolwatch.com/categories/model-sdks-and-gateways/)
- **Maintained by:** Boundary (organization, [@BoundaryML](https://github.com/BoundaryML) on GitHub)
- **License:** Apache 2.0
- **Language:** Rust, TypeScript, BAML
- **Repository:** [github.com/BoundaryML/baml](https://github.com/BoundaryML/baml)
- **Website:** [boundaryml.com/explore](https://boundaryml.com/explore)
- **npm package:** [@boundaryml/baml](https://www.npmjs.com/package/@boundaryml/baml) 0.226.2
- **PyPI package:** [baml-py](https://pypi.org/project/baml-py/) 0.226.2
- **Latest release:** [baml-language-0.22.3-nightly.20261020.a](https://github.com/BoundaryML/baml/releases/tag/baml-language-0.22.3-nightly.20261020.a) on GitHub, Oct 21, 2026
- **First published:** Oct 6, 2023

## What BAML does

- BAML provides TypeScript-like syntax with unions, generics, and interfaces, plus a type system the README compares to Rust's.
- BAML keeps types at runtime, with no `any` and no unchecked casts.
- BAML has typed, statically analyzed errors and exhaustive pattern matching.
- BAML supports green threads with `spawn` and `await` for concurrency.
- BAML includes native LLM functions, tests, testsets, and evaluations.
- BAML offers `baml describe` for AST-aware code discovery and `baml run` for executing any function from the command line.
- BAML generates SDKs so Python and TypeScript projects can call BAML functions.

### How it works

You install the BAML toolchain, initialize a project with `baml init`, and run functions with `baml run`. `baml agent install` installs agent guidance matched to the project's BAML version. For incremental adoption, BAML generates a baml_client that runs on the Node.js runtime (@boundaryml/baml) or Python runtime (baml-py). The README says BAML functions can also be called from Go, C#, and Java.

## How to install BAML

**With Homebrew (macOS or Linux)**

```
brew install baml
```

**With the install script (macOS or Linux)**

```
curl -fsSL https://pkg.boundaryml.com/install.sh | sh -s
```

### Requirements

- The Homebrew and install-script options are documented for macOS or Linux.
- The Python runtime baml-py requires Python 3.10 or later.
- The Node.js runtime @boundaryml/baml requires Node.js 10 or later.

### First steps

1. Run `baml init` to initialize a new BAML project.
2. Run `baml agent install` to install agent guidance matched to your project's BAML version.
3. Run `baml ide install --code` to set up editor support.
4. Run `baml run main` to execute the project's main function.

## Who BAML is for

- Teams whose code is written or edited by AI coding agents.
- Developers building LLM functions who want built-in tests and evaluations.
- Python or TypeScript projects that want to adopt a typed agent language incrementally.

### Limitations

- BAML is pre-1.0. Some APIs and tooling may continue to evolve.
- BAML is a new language, so teams must learn its syntax and toolchain, though it resembles TypeScript.
- Recent toolchain releases are nightly builds of the 0.22.3 line.

## Usage data (the week of Oct 25–31, 2026)

- Board rank: #196 overall, #10 in Model SDKs and gateways, momentum score 45
- Downloads that week: 533.7k (+21% vs 4-week average)
- New GitHub stars per week (last 12 weeks): Aug 9: 171; Aug 16: 54; Aug 23: 38; Aug 30: 49; Sep 6: 39; Sep 13: 25; Sep 20: 143; Sep 27: 46; Oct 4: 25; Oct 11: 32; Oct 18: 15; Oct 25: 36

## BAML alternatives

| Rank | Tool | Stars | Downloads/wk |
|---|---|---|---|
| #1 | [thinking-orbs](https://index.devtoolwatch.com/tools/jakubantalik-thinking-orbs/) | 3.9k | 1.4M |
| #2 | [Headroom](https://index.devtoolwatch.com/tools/headroomlabs-ai-headroom/) | 78.5k | 125.8k |
| #3 | [LiteLLM](https://index.devtoolwatch.com/tools/litellm/) | 62.5k | 23.1M |
| #4 | [Honcho](https://index.devtoolwatch.com/tools/plastic-labs-honcho/) | 7.9k | – |
| #5 | [Anthropic SDK](https://index.devtoolwatch.com/tools/anthropic-sdk/) | 4k | 111M |
| #6 | [Hugging Face Hub](https://index.devtoolwatch.com/tools/hf-hub/) | 4k | 68.3M |

## BAML FAQ

### Is BAML free and open source?

Yes. BAML's source code is on GitHub (BoundaryML/baml) under the Apache 2.0 license, so you can use it for free.

### How do I install BAML?

Run `brew install baml`. It needs Node.js >= 10. The install section above has the other options from the project's README.

### Is BAML still maintained?

Yes. The BoundaryML/baml repository was last updated on Oct 22, 2026, and the latest release, baml-language-0.22.3-nightly.20261020.a on GitHub, came out on Oct 21, 2026.

### How popular is BAML?

BAML has 9.5k GitHub stars as of Nov 1, 2026. It gained 36 new stars in the week of Oct 25–31, 2026, against a 12-week average of 56 a week. Its main package had about 533.7k downloads that week, +21% against its own 4-week average. That made it #10 among LLM SDKs and gateways on the Devtoolwatch Board.

### What are the best alternatives to BAML?

Other LLM SDKs and gateways on the Devtoolwatch Board in the week of Oct 25–31, 2026, by momentum: thinking-orbs (#1), Headroom (#2), LiteLLM (#3), Honcho (#4), Anthropic SDK (#5). The alternatives table above has their numbers.

### What is BAML?

BAML is a Turing-complete programming language for software written by agents and humans. BAML looks like TypeScript, keeps types at runtime, uses typed errors, and includes native LLM functions, tests, and evaluations.

### Can I use BAML from Python or TypeScript?

Yes. BAML generates SDKs for incremental adoption from Python and TypeScript. The README says you can call a BAML function from TS, Python, Go, C#, Java, and other languages.

### How do coding agents work with BAML?

BAML provides `baml agent install`, which installs guidance matched to your project's BAML version. Agents can use that skill and `baml describe` for AST-aware code discovery when writing or editing `.baml` files.

### Is BAML stable?

BAML is not yet at 1.0. The homepage says the language is usable today, but some APIs and tooling may continue to evolve.

### Does BAML support concurrency?

Yes. BAML has green threads with `spawn` and `await`. The README describes this as colorless concurrency like Go.

## Sources

1. [BoundaryML/baml on GitHub](https://github.com/BoundaryML/baml)
2. [BAML README](https://github.com/BoundaryML/baml/blob/canary/README.md)
3. [@boundaryml/baml on npm](https://www.npmjs.com/package/@boundaryml/baml)
4. [baml-py on PyPI](https://pypi.org/project/baml-py/)
5. [BAML website](https://boundaryml.com/explore)
6. [Release baml-language-0.22.3-nightly.20261020.a (Oct 21, 2026)](https://github.com/BoundaryML/baml/releases/tag/baml-language-0.22.3-nightly.20261020.a)
7. [Release baml-language-0.22.3-nightly.20261019.a (Oct 20, 2026)](https://github.com/BoundaryML/baml/releases/tag/baml-language-0.22.3-nightly.20261019.a)
8. [Release baml-language-0.22.3-nightly.20261018.a (Oct 19, 2026)](https://github.com/BoundaryML/baml/releases/tag/baml-language-0.22.3-nightly.20261018.a)
9. [Hacker News: Every Way to Get Structured Output from LLMs](https://news.ycombinator.com/item?id=40713952)
10. [Hacker News: Structured outputs create false confidence](https://news.ycombinator.com/item?id=46345333)
11. [Hacker News: Show HN: BAML - A new programming language to get structured data from LLMs](https://news.ycombinator.com/item?id=39827354)
12. [Devtoolwatch Board, the week of Oct 25–31, 2026](https://index.devtoolwatch.com/)
