Skip to content

Platform Overview

Understanding Bifrost's architecture and core concepts

Bifrost Integrations is an open-source automation platform designed to democratize best-in-class tooling for the emerging Integration Services industry - before venture capital gets the chance to own something we’re all incredibly passionate about: solving problems with automation.

Existing RPA platforms are great for rapid development and provide helpful abstractions for things like OAuth, but they cannot and will not keep pace with AI-powered development and have always been constrained by limitations that traditional programming languages do not have.

Bifrost Integrations removes those limitations by creating a light management layer with the features that make RPA’s uniquely valuable and letting Python do what it’s good at. It’s architected with multi-tenancy at its core, enabling you to scale your Integration Services business without duplicating work across customers. This is not another RPA tool trying to be everything to everyone; it’s a platform designed specifically to help you build scalable automation businesses the right way, without vendor lock-in, and without the limitations of RPA.

Develop with Your Favorite Tools

  • Use VS Code, Claude Code, and Git for version control
  • Build with Python and modern development workflows
  • Test locally before deploying to production

Build Reusable Integrations

  • Create integration modules for common platforms (NinjaOne, HaloPSA, Pax8, Microsoft CSP) - Abstract authentication, pagination, and API complexity - Share functionality across all your workflows

Centralized Connection Management

  • Automated OAuth refresh flows - Key/value configuration storage per organization - Encrypted secrets storage

Dynamic Forms and Workflows

  • Create flexible forms for you and your customers - Build context-aware workflows that adapt based on organization and user - Generate form inputs programmatically from data providers

Multi-Tenant Architecture

  • Scope functionality globally or to specific organizations - Deliver value to customers without code duplication or redeployment - Complete data isolation between tenants

AI-Assisted Development

  • Built for modern AI coding workflows
  • Use Claude Code, GitHub Copilot, and other AI tools
  • Write workflows from natural language descriptions
┌─────────────────────────────────────────┐
│ Client (React) │
│ Forms | Workflows | Admin │
└────────────────┬────────────────────────┘
│ REST API / WebSocket
┌─────────────────────────────────────────┐
│ API (FastAPI) │
│ HTTP Handlers | Auth | Workflow Engine │
└────────────────┬────────────────────────┘
┌────────────┼────────────┐
▼ ▼ ▼
┌────────┐ ┌────────┐ ┌────────┐
│Worker │ │Scheduler│ │ MinIO │
│(async) │ │(cron) │ │ (S3) │
└────────┘ └────────┘ └────────┘
│ │ │
└────────────┼────────────┘
┌─────────────────────────────────────────┐
│ PostgreSQL | RabbitMQ | Redis │
└─────────────────────────────────────────┘
ComponentPurpose
APIHTTP endpoints, authentication, workflow execution
WorkerBackground job processing (scalable, downloads workspace from S3)
SchedulerRuns scheduled workflows and cleanup jobs
MinIO/S3Object storage for workspace files
PostgreSQLPrimary database for all data
RabbitMQMessage queue for async job dispatch
RedisSessions, cache, sync execution results

Python async functions decorated with @workflow:

@workflow
async def create_user(email: str, name: str):
"""Create a new user in the system."""
return {"user_id": "123"}

The decorator auto-infers name, description, and parameters from your function. These workflows are automatically discovered and can be tied to forms, scheduled jobs, and webhooks.

UI for workflows with:

  • Multiple field types
  • Data provider integration for dynamic lists
  • Visibility rules
  • Real-time validation

Dynamic options for dropdowns:

from bifrost import data_provider, context
@data_provider(name="get_departments")
async def get_departments():
org_id = context.org_id # Access via proxy if needed
return [
{"label": "Engineering", "value": "eng"},
{"label": "Sales", "value": "sales"}
]

Workflows are discovered automatically when the API starts:

  1. Scans workspace files (stored in S3, synced locally)
  2. Imports Python files with @workflow and @data_provider decorators
  3. Registers metadata in the database
  4. Exposes via REST API

When you edit files in the UI editor, changes are pushed to workers via RabbitMQ, keeping all instances in sync. This enables you to organize your code by feature, customer, or whatever you find most useful.

  • Organization Isolation: Context provides information about who the caller is so you can make decisions in your code
  • Org-Scoped Secrets: Stored as configurations, configs and secrets will default to the caller’s organization first and call back to global secrets with the same name.
  • Forms: Forms are essentiall how you expose workflows in a user-friendly way and can be scoped to an organization. Today, form configuration exists in the database and is designed in the UI.
  • Authentication: Local auth, Microsoft, Google, or any OIDC provider
  • Authorization: Role-based access control (RBAC) to forms
  • Secret Management: Encrypted secrets stored in PostgreSQL
  • Audit Logging: Most actions logged with user context
  • OAuth Flow: Secure OAuth 2.0 token management with automatic refresh
  • User onboarding/offboarding
  • License management
  • Ticket automation
  • Service request forms
  • Compliance reporting
  • Multi-system user provisioning
  • Self-service capabilities
  • Bulk operations via forms
  • Line-of-business app integration
  • Data synchronization
  • Event-driven workflows
  • API orchestration
  • Custom business logic