Quickstart
BAML is the programming language for the AI era. BAML feels like typescript, but without many of the sins of javascript. It’s incrementally adoptable, typesafe, and has agent first tooling.
Set up BAML in this repo so I can write great agent first code.
Install the toolchain (pick one for this machine):
- Homebrew (macOS/Linux): brew install baml
- curl (macOS/Linux): curl -fsSL https://pkg.boundaryml.com/install.sh | sh -s
- Arch: yay -S baml-bin
- Windows: irm https://pkg.boundaryml.com/install.ps1 | iex
Then set up the project:
- baml init
- baml agent install
- baml run main
If this repo already has an app in another language, wire up the bridge so it
can call BAML directly. Run baml bridge add <target> once, then
baml bridge generate whenever the .baml files change. The add command prints
the host package to install. Targets:
- Python: python/pydantic
- TypeScript: typescript/node
- TS / Web: typescript/web
- Go: go (also pass --sdk-import-path <MODULE>/baml_sdk)
- Rust: rust
- Java: java
- Kotlin: java (the Gradle plugin adds the Kotlin layer)
- C#: csharp
- C++: cpp
- Swift: swift
- Pydantic v1: python/pydantic/v1
After that, use the BAML skill and baml describe to write and edit .baml files.
Get onboarded, live
Book a free 45-minute session with the team. We'll get you set up and work through your actual use case.
Book a sessionQuestions or feedback?
Join the BAML Discord. We're around to help you get set up, and we read every bit of feedback.
Join the DiscordHandy links
Explore BAMLsee the language and codeChangelogboundaryml.com/changelogDemo repogithub.com/boundaryml/baml-demosDocshow baml describe works
Keeping BAML updated
The baml wrapper is only a version manager, so it rarely needs updating. Update it through your package manager (brew upgrade baml) or with baml self-update. Everything here is discoverable from the binary itself, so agents shouldn’t have any trouble. If they do, let us know.