Files
OpenBB/openbb_platform
dlee-bq 7f04334398 - example.py: mark the base Example.scope field frozen so the (#7798)
Literal[api]/Literal[python] subclass overrides are covariant
  read-only narrowings. Subclass fields stay writable at runtime.
- method_definition.py, options_chains.py: pydantic 2.14 types
  FieldInfo.annotation as TypeForm[Any] | None, which ty rejects in
  Union[]/Annotated[] and where  is expected; bind it as Any.
  Use FieldInfo.get_default(call_default_factory=True) instead of
  calling the default_factory union directly.
- economy_views.py: read data/obbject_item without None defaults in the
  IMF shipping views. charting always sets obbject_item, and data is
  only popped when present and not None.- finra, jodi, eia: annotate @asynccontextmanager/@contextmanager
  functions with AsyncGenerator/Generator instead of the deprecated
  AsyncIterator/Iterator return types.
- charting: cast the darts forecast dataset to TimeSeries before
  indexing so .all_values resolves instead of hitting ndarray.
- fred, imf, nasdaq, sec, tmx: turn off invalid-attribute-override and
  invalid-mutable-override for models/** only, following the cboe
  precedent. Provider models extend the standard models by narrowing
  query params to Literals or widening fields to Optional, which these
  rules flag by design.

Co-authored-by: dlee-bq <325002271+dlee-bq@users.noreply.github.com>
2026-10-17 20:50:39 +00:00
..
2026-09-29 14:45:53 +00:00
2026-09-29 14:45:53 +00:00
2026-09-29 14:45:53 +00:00
2026-09-29 14:45:53 +00:00
2026-09-29 14:45:53 +00:00
2026-09-29 14:45:53 +00:00
2026-09-29 14:45:53 +00:00
2026-09-29 14:45:53 +00:00
2026-09-29 14:45:53 +00:00

OpenBB Platform

The OpenBB Platform is a set of Python packages that turn financial and economic data sources into one typed Python client (from openbb import obb), a FastAPI REST API, and an MCP server.

openbb-core is the runtime. It ships no data and no commands; it discovers the extensions installed in the environment through entry points and assembles them. Everything else in this folder is an extension:

  • Routers add command namespaces such as obb.equity or obb.economy.
  • Providers implement those commands against a data source, and may add their own namespace such as obb.fred.
  • OBBject extensions add accessors to every result, such as result.charting.

Documentation lives at docs.openbb.co.

Repository layout

Path Contents
core/ openbb-core: the runtime, the generated openbb package, and the REST API app.
extensions/ Routers, plus the API launcher, the MCP server, and developer tooling.
providers/ Data provider extensions.
obbject_extensions/ Result accessors (openbb-charting).
dev_install.py Editable install of every package for local development.
../cli/ openbb-cli, the command-line interface.

Packages

Core and tooling

Package Path Description
openbb-core core Runtime, extension loader, static package builder (openbb-build), and REST API app.
openbb-platform-api extensions/platform_api openbb-api launcher for the REST API and the OpenBB Workspace custom-backend connector.
openbb-mcp-server extensions/mcp_server openbb-mcp: serves the installed commands as Model Context Protocol tools.
openbb-devtools extensions/devtools Linters, type checker, and test dependencies for development.
openbb-cli ../cli openbb: interactive command-line interface.

Routers

Package Namespace
openbb-commodity obb.commodity
openbb-crypto obb.crypto
openbb-currency obb.currency
openbb-derivatives obb.derivatives
openbb-econometrics obb.econometrics
openbb-economy obb.economy
openbb-equity obb.equity
openbb-etf obb.etf
openbb-fixedincome obb.fixedincome
openbb-index obb.index
openbb-news obb.news
openbb-quantitative obb.quantitative
openbb-technical obb.technical

Providers

Package Path Source Credential
openbb-bls providers/bls U.S. Bureau of Labor Statistics bls_api_key
openbb-cboe providers/cboe Cboe None
openbb-cftc providers/cftc CFTC and DTCC Public Price Dissemination cftc_app_token
openbb-deribit providers/deribit Deribit None
openbb-ecb providers/ecb European Central Bank None
openbb-famafrench providers/famafrench Ken French Data Library None
openbb-federal-reserve providers/federal_reserve Federal Reserve System, FOMC, and the twelve regional districts None
openbb-finra providers/finra FINRA None
openbb-fred providers/fred FRED fred_api_key
openbb-government-us providers/government_us U.S. Congress, U.S. Treasury, and USDA congress_gov_api_key
openbb-imf providers/imf International Monetary Fund None
openbb-jodi providers/jodi Joint Organisations Data Initiative None
openbb-nasdaq providers/nasdaq Nasdaq None
openbb-oecd providers/oecd OECD None
openbb-sec providers/sec SEC EDGAR None
openbb-tmx providers/tmx TMX (Canadian markets) None
openbb-us-eia providers/eia U.S. Energy Information Administration eia_api_key

OBBject extensions

Package Accessor
openbb-charting result.charting: Plotly charts, with native window rendering through the pywry extra.

Installation

Install openbb-core together with the routers and providers you need; openbb-core is pulled in by each of them.

pip install openbb-equity openbb-cboe

The openbb Python package is generated from whatever is installed. It rebuilds on import when the installed extensions change, and openbb-build rebuilds it explicitly after installing or removing an extension.

openbb-build

Python

from openbb import obb

output = obb.equity.price.historical("AAPL", provider="cboe")
df = output.to_dataframe()

Credentials

Providers that need a key read it as <provider>_<credential>, as listed in the provider table.

Set keys in ~/.openbb_platform/user_settings.json:

{
  "credentials": {
    "fred_api_key": "REPLACE_ME",
    "bls_api_key": "REPLACE_ME"
  }
}

Or as environment variables, which take precedence over the file. ~/.openbb_platform/.env is loaded automatically.

export FRED_API_KEY=REPLACE_ME

Or for the current session only:

from openbb import obb

obb.user.credentials.fred_api_key = "REPLACE_ME"

REST API

openbb-platform-api serves every installed command over FastAPI, with OpenAPI docs at /docs and a widgets.json for OpenBB Workspace.

pip install openbb-platform-api
openbb-api

The bare FastAPI app is openbb_core.api.rest_api:app and runs under any ASGI server.

uvicorn openbb_core.api.rest_api:app --host 127.0.0.1 --port 8000

MCP server

pip install openbb-mcp-server
openbb-mcp

See extensions/mcp_server/README.md for transports, tool discovery, and configuration.

Local development

Requirements:

  • Git
  • Python 3.10 or newer
  • uv

From an activated virtual environment at the repository root:

python openbb_platform/dev_install.py --routers

This installs every tracked package under core, extensions, obbject_extensions, providers, and ../cli in editable mode, with all optional extras and each package's dev dependency group, then runs openbb-build. A new extension is picked up once its pyproject.toml is committed in one of those folders.

Router extensions (openbb-equity, openbb-economy, openbb-fixedincome, and the rest of the router table except openbb-news) are installed only with --routers. Without it, you get core, the tooling, openbb-news, the providers, openbb-charting, and the CLI.

Install the git hooks, which run the same ruff, ty, codespell, and markdownlint checks as CI:

pre-commit install

Each package is linted and tested from its own directory, matching its CI workflow:

cd openbb_platform/providers/fred
ruff format --check .
ruff check .
ty check openbb_fred
pytest tests

See CONTRIBUTING.md for extension guidelines.

License

Apache-2.0. See LICENSE.