Environment Variables

To set a value to an environment variable, use the following syntax:

1env.YOUR_VARIABLE_NAME
Environment variables with spaces in their names are not supported.

Example

Using an environment variable for API key:

1client<llm> MyCustomClient {
2 provider "openai"
3 options {
4 model "gpt-4o-mini"
5 // Set the API key using an environment variable
6 api_key env.MY_SUPER_SECRET_API_KEY
7 }
8}

Setting Environment Variables

In the VSCode Playground

Once you open a .baml file in VSCode, you should see a small button over every BAML function: Open Playground. Then you should be able to set environment variables in the settings tab.

VSCode Code Lens

Or type BAML Playground in the VSCode Command Bar (CMD + Shift + P or CTRL + Shift + P) to open the playground.

For Your App (Default)

BAML will do its best to load environment variables from your program. Any of the following strategies for setting env vars are compatible with BAML:

  • Setting them in your shell before running your program
  • In your Dockerfile
  • In your next.config.js
  • In your Kubernetes manifest
  • From secrets-store.csi.k8s.io
  • From a secrets provider such as Infisical / Doppler
  • From a .env file (using dotenv CLI)
  • Using account credentials for ephemeral token generation (e.g., Vertex AI Auth Tokens)
  • python-dotenv package in Python or dotenv package in Node.js
$export MY_SUPER_SECRET_API_KEY="..."
>python my_program_using_baml.py
1from dotenv import load_dotenv
2from baml_client import b
3
4load_dotenv()

Error Handling

Errors for unset environment variables are only thrown when the variable is accessed. If your BAML project has 15 environment variables and 1 is used for the function you are calling, only that one environment variable will be checked for existence.