This document provides an overview of the OpenBB Platform, an open-source financial data infrastructure layer designed to consolidate data from multiple sources and expose it through various consumption interfaces. This page covers the platform's core purpose, architectural philosophy, and main components at a high level.
For detailed installation instructions, see Installation and Setup. For hands-on usage examples, see Quick Start Guide. For in-depth architectural details, see Architecture.
The OpenBB Platform (also called Open Data Platform, or ODP) is an open-source toolset that enables data engineers to integrate proprietary, licensed, and public financial data sources into downstream applications such as AI copilots, research dashboards, and analytical tools. The platform operates on a "connect once, consume everywhere" philosophy, consolidating data integration logic in a single infrastructure layer and exposing it through multiple interfaces simultaneously.
The platform consists of four primary components:
| Component | Package/Command | Purpose |
|---|---|---|
| Python SDK | openbb | Core Python package providing programmatic access via the obb object |
| API Server | openbb-api | FastAPI-based REST server for HTTP-based data access |
| CLI | openbb-cli | Command-line interface for terminal-based workflows |
| Workspace Integration | N/A | Connection to OpenBB Workspace (pro.openbb.co) for enterprise UI |
Sources: README.md18-20 README.md28-34 README.md122-129
The platform's architecture separates data integration (connecting to providers) from data consumption (accessing data through interfaces). Data engineers configure provider credentials and data mappings once, then analysts, developers, and AI agents can access the same data through their preferred interface without re-implementing integration logic.
Diagram: Connect Once, Consume Everywhere Architecture
This architecture ensures that adding a new data provider automatically makes it available across all interfaces, and adding a new interface automatically provides access to all integrated data sources.
Sources: README.md18-20
openbb)The core Python package provides programmatic access to financial data through the obb object. After installation via pip install openbb, users can import and execute commands:
The package structure includes:
The obb object serves as the unified entry point, with methods dynamically mapped from installed extensions. For example, obb.equity.price.historical() routes to the equity extension's price router, which delegates to a provider-specific fetcher.
Sources: README.md30-34
openbb-api)The API server exposes OpenBB Platform functionality through a FastAPI-based REST interface. Launch with:
The server starts on http://127.0.0.1:6900 by default and provides:
/docs endpoint for interactive API exploration/widgets.json, /apps.json, and /agents.json endpoints for Workspace integrationThe API server translates HTTP requests into command executions, wrapping responses in JSON-serialized OBBject containers.
Sources: README.md71-79 README.md83-94
openbb-cli)The command-line interface provides terminal-based access to the platform. Install with:
The CLI uses the same underlying command execution engine as the Python SDK, translating terminal commands into obb method calls. For usage patterns and command structure, see Python SDK and CLI.
Sources: README.md122-129
OpenBB Workspace (https://pro.openbb.co) is an enterprise UI that connects to locally-running API servers. The integration works by:
openbb-api on localhosthttp://127.0.0.1:6900/widgets.json to generate interactive UI componentsThis architecture keeps data processing local while providing a cloud-hosted UI for visualization and collaboration.
Sources: README.md40-49 README.md59-96
The following diagram maps high-level architectural concepts to specific code entities in the codebase:
Diagram: Platform Architecture with Code Entity Mapping
Sources: README.md18-34
The platform uses Python entry points to discover and load extensions dynamically. Extensions fall into three categories:
The ExtensionLoader singleton reads entry points from installed packages and makes extensions available at runtime. For details, see Extension System.
The ProviderInterface allows multiple data providers to implement the same data type with consistent output. For example, both FMP and Intrinio can provide balance sheet data, but the user receives standardized BalanceSheetData regardless of provider choice:
The RegistryMap maintains mappings from command endpoints to provider-specific fetchers. For details, see Provider Architecture.
All data queries return an OBBject instance, which wraps:
.to_dataframe(), .to_dict(), .to_polars(), etc.This standardized container enables consistent data handling across all interfaces. For details, see Command Execution Engine.
Sources: README.md30-34
The following sequence shows how a single command flows through the platform:
Diagram: Command Execution Flow
This flow demonstrates how the platform separates routing (equity extension), execution (command runner), data fetching (provider interface), and output (OBBject container). The user interacts only with the obb object and receives a standardized result, regardless of which provider fetched the data.
Sources: README.md30-34
The OpenBB Platform is distributed through PyPI in multiple packages:
| Package | Purpose | Installation |
|---|---|---|
openbb | Core platform with basic providers | pip install openbb |
openbb[all] | Full installation with all providers | pip install "openbb[all]" |
openbb-cli | Command-line interface | pip install openbb-cli |
| Individual providers | Specific data sources | pip install openbb-fmp |
| Individual extensions | Specific functionality | pip install openbb-equity |
The modular package structure allows users to install only the components they need, reducing dependency overhead for minimal deployments.
Sources: README.md28 README.md66-69 README.md125
Sources: README.md1-214
Refresh this wiki