# baml

BAML runtime for Rust - Type-safe LLM function calls.

This crate provides the runtime support for BAML-generated Rust code. Users should not import from this crate directly - instead, use the generated `baml_client` crate which re-exports necessary types.

## Features

- Type-safe LLM function calls
- Async streaming support
- Runtime client registry
- Dynamic type encoding/decoding
- Error handling and diagnostics

## Usage

This crate is typically used as a dependency by code generated by the BAML compiler. For usage instructions, see the [BAML documentation](https://docs.boundaryml.com).

## Runtime Requirements

The BAML runtime requires the `libbaml_cffi` dynamic library at runtime. The library is:

- **Auto-downloaded** from GitHub releases on first use (default behavior)
- **Cached** in your user cache directory (`~/.cache/baml/libs/` on Linux, `~/Library/Caches/baml/libs/` on macOS)
- **Configurable** via environment variables

To disable auto-download (e.g., in air-gapped environments):

```bash
export BAML_LIBRARY_DISABLE_DOWNLOAD=true
export BAML_LIBRARY_PATH=/path/to/libbaml_cffi.dylib
```

## License

Apache License - see the [Repository](https://www.github.com/boundaryml/baml) for details.
