Deployment options
In addition to the managed cloud service, Braintrust offers a hybrid deployment model. This allows customers to keep data secure within their own environment while taking advantage of Braintrust’s newest UI and platform features.Authentication
The Braintrust UI supports end-user authentication through enterprise identity providers (Google, Okta, Microsoft), SSO/SAML integration with major providers (Okta Workforce, Microsoft Entra ID, Google Workspace), and OpenID Connect (OIDC) for custom providers. Users receive credentials directly in their browser that securely communicate with your data plane. For programmatic access, API keys are displayed only once upon creation and stored as one-way cryptographic hashes, never in plaintext. Each key inherits the user’s permissions and can be scoped to specific projects. Best practices: rotate keys periodically, revoke compromised keys immediately, store keys in environment variables or secret management systems (never in code), apply principle of least privilege, and monitor API key usage through activity logs. See API keys to create and manage keys. For Model Context Protocol (MCP) servers, authentication uses OAuth 2.0 with PKCE (Proof Key for Code Exchange). MCP clients authenticate via standard OAuth flow and receive access tokens with refresh capabilities for secure, long-lived sessions. Tokens inherit your user account permissions, providing access only to resources you can normally access.Authorization
Braintrust uses role-based access control (RBAC) with built-in permission groups (Owners, Engineers, Viewers) and support for custom groups with fine-grained permissions. Permissions can be set at organization, project, or individual object (experiment, dataset, prompt) levels, enabling project-level isolation and object-level access control for sensitive resources. See Access control for configuration details.Data encryption
All data is encrypted at rest and in transit. LLM provider API keys and secrets are encrypted using AES-256 with unique 256-bit keys and nonces. For self-hosted deployments, you control encryption keys through your cloud provider’s key management system (AWS KMS, Google Cloud KMS, Azure Key Vault).Network security
The data plane runs in an isolated VPC with no access to internal infrastructure (hosted) or in your own VPC (self-hosted). Custom code functions can execute in quarantined VPCs on AWS deployments. Self-hosted deployments support firewall and VPN deployment for additional security. SDKs and browser UI communicate directly with your data plane via CORS — no customer data flows through Braintrust’s control plane. Self-hosted deployments can access private network resources like internal LLM models, proprietary tools, and private databases. See Architecture for details.Image rendering controls
Braintrust provides configurable image rendering modes to prevent sensitive data leaks from malicious image URLs in logs. When your browser automatically loads images in logs, any data embedded in the URL is sent to the image server, which could be controlled by an attacker. Organizations can configure image rendering with three modes:- Auto-load images (default): Images render automatically
- Click to load: Images require user approval before loading
- Block all images: External images never load
Code execution
Braintrust provides several function types to enable features like Python and TypeScript scorers, hosted tools, and replay-able eval functions. These functions are implemented using different execution mechanisms:- Prompts - Mustache or Nunjucks-templated text messages filled dynamically
- Inline code - TypeScript or Python code snippets
- Bundled code - Packaged TypeScript or Python applications
- HTTP endpoints - External functions called over HTTP
- Global functions - Pre-installed functions from the open source autoevals library
- For Braintrust-hosted deployments and self-hosted deployments on AWS, inline and bundled code functions run in an isolated VPC specifically for function execution. This environment has no access to your internal infrastructure (databases, application servers), can make outbound internet requests (for API calls, package downloads), provides organization-level separation when multiple orgs share the same stack, and runs functions in ephemeral AWS Lambda environments.
- For self-hosted deployments on GCP and Azure, custom code runs in the same process as the data plane without isolation.