Skip to content

maximhq/bifrost

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Bifrost

Go Report Card

The fastest way to build AI applications that never go down.

Bifrost is a high-performance AI gateway that connects you to 8+ providers (OpenAI, Anthropic, Bedrock, and more) through a single API. Get automatic failover, load balancing, and zero-downtime deployments in under 30 seconds.

Bifrost

πŸš€ Just launched: Native MCP (Model Context Protocol) support for seamless tool integration
⚑ Performance: Adds only 11¡s latency while handling 5,000+ RPS
πŸ›‘οΈ Reliability: 100% uptime with automatic provider failover

⚑ Quickstart (30 seconds)

Go from zero to production-ready AI gateway in under a minute. Here's how:

What You Need

  • Any AI provider API key (OpenAI, Anthropic, Bedrock, etc.)
  • Docker OR Go 1.23+ installed
  • 30 seconds of your time ⏰

Using Bifrost HTTP Transport

πŸ“– For detailed setup guides with multiple providers, advanced configuration, and language examples, see Quick Start Documentation

Step 1: Start Bifrost (choose one)

# 🐳 Docker (easiest - zero config needed!)
docker pull maximhq/bifrost
docker run -p 8080:8080 maximhq/bifrost

# πŸ”§ Or install Go binary (Make sure Go is in your PATH)
go install github.com/maximhq/bifrost/transports/bifrost-http@latest
bifrost-http -port 8080

Step 2: Open the built-in web interface

# πŸ–₯️ Configure visually - no config files needed!
# macOS:
open http://localhost:8080

# Linux:
xdg-open http://localhost:8080

# Windows:
start http://localhost:8080

# Or simply open http://localhost:8080 manually in your browser

Step 3: Add your provider via the web UI or API

# Via Web UI: Just click "Add Provider" and enter your OpenAI API key
# Or via API:
curl -X POST http://localhost:8080/providers \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "openai",
    "keys": [{"value": "env.OPENAI_API_KEY", "models": ["gpt-4o-mini"], "weight": 1.0}]
  }'

# Make sure to set the environment variable OPENAI_API_KEY in bifrost's session, or pass it as a flag in Docker (docker run -e OPENAI_API_KEY maximhq/bifrost).

Step 4: Test it works

curl -X POST http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [
      {"role": "user", "content": "Hello from Bifrost! 🌈"}
    ]
  }'

πŸŽ‰ Boom! You're done!

Your AI gateway is now running with a beautiful web interface. You can:

  • πŸ–₯️ Configure everything visually - No more JSON files!
  • πŸ“Š Monitor requests in real-time - See logs, analytics, and metrics
  • πŸ”„ Add providers and MCP clients on-the-fly - Scale and failover without restarts
  • πŸš€ Drop into existing code - Zero changes to your OpenAI/Anthropic apps

Want more? See our Complete Setup Guide for multi-provider configuration, failover strategies, and production deployment.

πŸ“‘ Table of Contents


✨ Features

  • πŸ–₯️ Built-in Web UI: Visual configuration, real-time monitoring, and analytics dashboard - no config files needed
  • πŸš€ Zero-Config Startup & Easy Integration: Start immediately with dynamic provider configuration, or integrate existing SDKs by simply updating the base_url - one line of code to get running
  • πŸ”„ Multi-Provider Support: Integrate with OpenAI, Anthropic, Amazon Bedrock, Mistral, Ollama, and more through a single API
  • πŸ›‘οΈ Fallback Mechanisms: Automatically retry failed requests with alternative models or providers
  • πŸ”‘ Dynamic Key Management: Rotate and manage API keys efficiently with weighted distribution
  • ⚑ Connection Pooling: Optimize network resources for better performance
  • 🎯 Concurrency Control: Manage rate limits and parallel requests effectively
  • πŸ”Œ Flexible Transports: Multiple transports for easy integration into your infra
  • πŸ—οΈ Plugin First Architecture: No callback hell, simple addition/creation of custom plugins
  • πŸ› οΈ MCP Integration: Built-in Model Context Protocol (MCP) support for external tool integration and execution
  • βš™οΈ Custom Configuration: Offers granular control over pool sizes, network retry settings, fallback providers, and network proxy configurations
  • πŸ“Š Built-in Observability: Native Prometheus metrics out of the box, no wrappers, no sidecars, just drop it in and scrape
  • πŸ”§ SDK Support: Bifrost is available as a Go package, so you can use it directly in your own applications

πŸ—οΈ Repository Structure

Bifrost is built with a modular architecture:

bifrost/
β”œβ”€β”€ core/                 # Core functionality and shared components
β”‚   β”œβ”€β”€ providers/        # Provider-specific implementations
β”‚   β”œβ”€β”€ schemas/          # Interfaces and structs used in bifrost
β”‚   β”œβ”€β”€ bifrost.go        # Main Bifrost implementation
β”‚
β”œβ”€β”€ docs/                 # Documentations for Bifrost's configurations and contribution guides
β”‚   └── ...
β”‚
β”œβ”€β”€ tests/                # All test setups related to /core and /transports
β”‚   └── ...
β”‚
β”œβ”€β”€ transports/           # Interface layers (HTTP, gRPC, etc.)
β”‚   β”œβ”€β”€ bifrost-http/     # HTTP transport implementation
β”‚   └── ...
β”‚
└── plugins/              # Plugin Implementations
    β”œβ”€β”€ maxim/
    └── ...

The system uses a provider-agnostic approach with well-defined interfaces to easily extend to new AI providers. All interfaces are defined in core/schemas/ and can be used as a reference for contributions.


πŸš€ Getting Started

There are three ways to use Bifrost - choose the one that fits your needs:

1. As a Go Package (Core Integration)

For direct integration into your Go applications. Provides maximum performance and control.

πŸ“– 2-Minute Go Package Setup

Quick example:

go get github.com/maximhq/bifrost/core

2. As an HTTP API (Transport Layer)

For language-agnostic integration and microservices architecture.

πŸ“– 30-Second HTTP Transport Setup

Quick example:

docker pull maximhq/bifrost
docker run -p 8080:8080 \
  -v $(pwd)/config.json:/app/config/config.json \
  -e OPENAI_API_KEY \
  maximhq/bifrost

3. As a Drop-in Replacement (Zero Code Changes)

Replace existing OpenAI/Anthropic APIs without changing your application code.

πŸ“– 1-Minute Drop-in Integration

Quick example:

- base_url = "https://api.openai.com"
+ base_url = "http://localhost:8080/openai"

πŸ“Š Performance

Bifrost adds virtually zero overhead to your AI requests. In our sustained 5,000 RPS benchmark (see full methodology in docs/benchmarks.md), the gateway added only 11 Β΅s of overhead per request – that's less than 0.001% of a typical GPT-4o response time.

Translation: Your users won't notice Bifrost is there, but you'll sleep better knowing your AI never goes down.

Metric t3.medium t3.xlarge Ξ”
Added latency (Bifrost overhead) 59 Β΅s 11 Β΅s -81 %
Success rate @ 5 k RPS 100 % 100 % No failed requests
Avg. queue wait time 47 Β΅s 1.67 Β΅s -96 %
Avg. request latency (incl. provider) 2.12 s 1.61 s -24 %

πŸ”‘ Key Performance Highlights

  • Perfect Success Rate – 100 % request success rate on both instance types even at 5 k RPS.
  • Tiny Total Overhead – < 15 Β΅s additional latency per request on average.
  • Efficient Queue Management – just 1.67 Β΅s average wait time on the t3.xlarge test.
  • Fast Key Selection – ~10 ns to pick the right weighted API key.

Bifrost is deliberately configurable so you can dial the speed ↔ memory trade-off:

Config Knob Effect
initial_pool_size How many objects are pre-allocated. Higher = faster, more memory
buffer_size & concurrency Queue depth and max parallel workers (can be set per provider)
Retry / Timeout Tune aggressiveness for each provider to meet your SLOs

Choose higher settings (like the t3.xlarge profile above) for raw speed, or lower ones (t3.medium) for reduced memory footprint – or find the sweet spot for your workload.

Need more numbers? Dive into the full benchmark report for breakdowns of every internal stage (JSON marshalling, HTTP call, parsing, etc.), hardware sizing guides and tuning tips.


πŸ“š Documentation

Everything you need to master Bifrost, from 30-second setup to production-scale deployments.

πŸš€ I want to get started (2 minutes)
🎯 I want to understand what Bifrost can do
βš™οΈ I want to deploy this to production
πŸ“± I'm migrating from another tool

πŸ’¬ Need Help?

πŸ”— Join our Discord for:

  • ❓ Quick setup assistance and troubleshooting
  • πŸ’‘ Best practices and configuration tips
  • 🀝 Community discussions and support
  • πŸš€ Real-time help with integrations

🀝 Contributing

See our Contributing Guide for detailed information on how to contribute to Bifrost. We welcome contributions of all kindsβ€”whether it's bug fixes, features, documentation improvements, or new ideas. Feel free to open an issue, and once it's assigned, submit a Pull Request.


πŸ“„ License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.

Built with ❀️ by Maxim