What is BAML?
BAML (Basically A Made-up Language) is an open-source language from Boundary, a Seattle start-up, for writing LLM calls as typed functions. You declare the inputs, the output type and the prompt in a .baml file; a generator writes a client for your application, and a Rust parser repairs the model's reply until it fits the declared type.
The project is in the middle of a split. BAML v0, now labelled the legacy DSL, is the structured-output tool most users know: the baml-py and @boundaryml/baml packages, at 0.226.3, generate clients for Python, TypeScript, Ruby and Go. BAML v1, shipped as baml-language releases with near-nightly builds, is a separate general-purpose language for agents that the docs describe as in public beta and the website calls pre-1.0.
The code is Apache-2.0 and runs locally. Boundary plans to charge for BAML Cloud, a hosted service for traces and team controls, which had neither launched nor published prices on 1 November 2026.
Is BAML worth it?
BAML is the strongest case for treating prompts as typed code rather than strings, and 2026 is an awkward year to adopt it. The core idea holds up: a function in a .baml file declares its output type, the generated client calls the model, and schema-aligned parsing fixes trailing commas, missing quotes and half-finished objects instead of rejecting them. Boundary's own benchmark on 1,000 Berkeley Function Calling Leaderboard cases per model put gpt-4o-mini at 92.4% with the parser against 19.8% with native function calling. The figures are self-reported and use 2024-era models, but they explain why teams running cheap models like it.
The awkwardness is the split. Release 0.225.0, at the start of August 2026, rebranded the existing line as BAML v0, the legacy DSL, and Boundary's effort moved to BAML v1, a separate language with green threads, typed errors and a built-in test framework. v0 still ships (baml-py 0.226.3 landed on 28 October), but the README, quickstart and nightly builds all point to v1. The v1 toolchain went from 0.21.0 on 8 October to 0.23.0 on 26 October, and the 0.21.0 notes alone list 13 breaking changes, from quoted map keys to removed tracing APIs. v1 also swaps the Python package, from baml-py to baml-bridge, and Boundary keeps a separate migration-kit repository.
Day to day, the tooling is the draw. The VS Code extension regenerates the client on save and opens a playground where you run a prompt against test inputs before writing application code; promptfiddle.com does the same in a browser. v0 talks natively to Anthropic, OpenAI (including the Responses API), Azure OpenAI, Google AI, Vertex AI and AWS Bedrock, and to Ollama, vLLM, OpenRouter, Groq and others through an OpenAI-compatible client, with fallback, round-robin and retry policies declared next to the prompt. Against Pydantic AI, Instructor or Outlines, which keep you in Python, the price is a new file type, a code generation step and a language your colleagues have to learn.
The privacy defaults deserve a careful read. Boundary's pricing page says the toolchain does not contact its servers, yet the CLI sends anonymous usage analytics by default: the command name, BAML version, operating system and CPU details, a random machine ID and a salted hash of the project root, though not prompts, code or keys. baml telemetry disable or DO_NOT_TRACK=1 turns it off. Runtime tracing is a separate switch, defaults to medium and records HTTP bodies locally; it uploads to Boundary only once you log in or set BOUNDARY_API_KEY.
A team with working v0 extraction pipelines has little to gain from moving before v1 reaches 1.0. A new project faces the harder bet: v1 is where a self-described small team is spending its attention, the repository carries 366 open issues and pull requests, and BAML Cloud, the paid side, had no published price on 1 November 2026, so nobody can yet cost hosted observability.
Where it earns its place
A Python data team at an insurance broker
Pull typed fields out of thousands of claim emails a day
Define the claim as a BAML class, build tests from real emails in the playground, and call the generated Pydantic client from the existing pipeline. The parser recovers replies a strict JSON check would reject, which makes a cheaper model viable; the cost is model tokens and keeping baml-py pinned.
A TypeScript product team adding AI features to a SaaS app
Keep prompts reviewable and the model swappable
Prompts live in .baml files reviewed like any other code, and a fallback client moves from OpenAI to Anthropic when a call fails. The client registry can send a share of traffic, such as 10%, to a candidate model. No licence cost; the risk is that Boundary's development now centres on v1.
An engineering manager at a 20-person start-up choosing an agent stack
Decide whether to build new agents on BAML v1
Budget for a pre-1.0 language: the v1 toolchain shipped three minor releases in October 2026 (0.21.0, 0.22.0 and 0.23.0) and its Python host package, baml-bridge, replaces baml-py. Hosted tracing has no published price, so local traces are the only option that can be costed today.
Before you commit
- Setup
- v0: pip install baml-py (or npm @boundaryml/baml), then baml-cli generate writes a baml_client folder; the VS Code extension regenerates it on save. v1: brew install baml or the install script, baml init, then baml run main; baml agent install adds guidance for Claude Code and Codex.
- Integrations
- v0 providers: Anthropic, OpenAI and OpenAI Responses, Azure OpenAI, Google AI, Vertex AI and AWS Bedrock, plus Ollama, vLLM, LM Studio, OpenRouter, Groq, LiteLLM and others via openai-generic. v0 generates clients for Python, TypeScript, Ruby and Go; v1 is called from Python and TypeScript, with early Go and Swift SDK repositories.
- Data and privacy
- Prompts go only to the providers you configure. The CLI sends anonymous analytics by default (command, version, machine details, a random ID); opt out with baml telemetry disable or DO_NOT_TRACK=1. Runtime traces, including HTTP bodies, are recorded locally and uploaded only with a Boundary login or BOUNDARY_API_KEY. v0's default info log level prints every prompt and raw response to the terminal. No GitHub security advisories are published.
- Cost at scale
- The language and toolchain are free under Apache-2.0, so the bill is model tokens, and parser repair can let a cheaper model do the job. BAML Cloud for hosted observability and team controls is announced but unpriced.
- Limits
- 366 open issues and pull requests; v1 is pre-1.0 with frequent breaking changes; v0 docs are marked legacy; Boundary's parser benchmark is self-reported on 2024-era models.
What’s good
- Schema-aligned parsing turns malformed JSON into typed values
- Playground runs prompts against tests inside VS Code
- Fallback, round-robin and retry policies declared per client
- Apache-2.0; runs locally without an account
What’s not
- Split between legacy v0 and pre-1.0 v1
- The v1 0.21.0 notes alone list 13 breaking changes
- Anonymous CLI analytics on by default
- A new language and a codegen step for the whole team
- BAML Cloud not launched and unpriced
Best for
Teams that extract typed data from LLMs at volume, often on cheaper models, and will own a code generation step and a fast-moving toolchain.
BAML alternatives
BAML: common questions
- Is BAML worth it?
- BAML makes LLM output dependably typed, but today you are choosing between a legacy DSL and a new language that still breaks every few weeks. We rate it 3.8 out of 5.
- How much does BAML cost?
- Free and open source under Apache-2.0; the toolchain runs locally without an account. BAML Cloud (hosted observability and team controls) is announced but has no published pricing.
- What are the downsides of BAML?
- Split between legacy v0 and pre-1.0 v1; the v1 0.21.0 notes alone list 13 breaking changes; anonymous CLI analytics on by default; a new language and a codegen step for the whole team; bAML Cloud not launched and unpriced.
- Who is BAML best for?
- Teams that extract typed data from LLMs at volume, often on cheaper models, and will own a code generation step and a fast-moving toolchain.
- How much does BAML cost for a team or in production?
- The language and toolchain are free under Apache-2.0, so the bill is model tokens, and parser repair can let a cheaper model do the job. BAML Cloud for hosted observability and team controls is announced but unpriced.
- Is BAML safe for company data?
- Prompts go only to the providers you configure. The CLI sends anonymous analytics by default (command, version, machine details, a random ID); opt out with baml telemetry disable or DO_NOT_TRACK=1. Runtime traces, including HTTP bodies, are recorded locally and uploaded only with a Boundary login or BOUNDARY_API_KEY. v0's default info log level prints every prompt and raw response to the terminal. No GitHub security advisories are published.
- What are the best BAML alternatives?
- The closest alternatives we have reviewed are Pydantic AI, Guardrails AI and LangChain.
Answers checked Nov 1, 2026.
