9.2k stars · Apache-2.0 · baml-language-0.18.1-nightly.20260905.a (2026-09-06) · Track this in Scout
'The programming language for agents' — a DSL for LLM prompts, functions and tools.
▶Repo detailsthe review · specs · pros & cons · install
What it is
BAML is a domain-specific language for defining model functions — the prompt, the input types and the output types — which then compiles into a client library for a normal programming language. It includes a testing interface so a prompt can be run against saved examples.
What it is good for. Anyone whose program depends on a model returning data rather than prose: pulling fields out of an invoice, classifying support messages, turning a description into a database record. The problem it removes is the pile of hand-written parsing and retry code that grows around every such call. It also makes prompts reviewable, because they sit in files instead of inside string variables.
- Output is checked against a type, and a malformed answer is repaired or retried rather than handed to the program.
- The same definition produces clients for Python, TypeScript, Go, C# and Java, so a team that uses two languages writes the prompt once.
- Prompts live in version control as files with tests beside them. Changing one produces a diff somebody can read.
- It is a new language. Even a small one is a real cost: the editor plugin, the build step, and everybody on the team learning it.
- The newest release on the project's own latest-release page is a nightly build,
baml-language-0.20.2-nightly.20260925.a, dated 26 September 2026. The releases list page disagrees and shows August tags. Nightly builds as the headline release are a sign to pin a version carefully. - Every call still costs money at the model provider, and the retry behaviour means a bad prompt can cost more than a plain one. Watch the bill in the first week.
567-labs/instructor13,696 stars, covered in Edition 5; it solves the same problem with an ordinary Python library and Pydantic types, so there is no new language to learn and no build step.
Track this in Scout- dottxt-ai/outlines
15,882 stars, forces valid output by constraining what the model is allowed to generate; stronger guarantees on models you run yourself, less useful against a hosted provider.
Track this in Scout - pydantic/pydantic-ai
20,116 stars, a full agent framework from the Pydantic authors with typed results; a bigger thing to adopt, and Python only.
Track this in Scout
python3 -m venv venv source venv/bin/activate pip install baml-py baml-cli init baml-cli generate
