Loading...
Loading...
Build custom backends and widgets for OpenBB Workspace. Use when user wants to create an OpenBB app, convert Streamlit/Gradio apps, or build dashboards. Handles the full pipeline from requirements to deployment.
npx skill4agent add openbb-finance/backends-for-openbb openbb-app-builder| Command | Action |
|---|---|
| "Build an OpenBB app for X" | Full pipeline |
| "Convert this Streamlit app" | Reference-based build |
| "Quick mode: build X" | Minimal questions |
| Mode | Triggers | Behavior |
|---|---|---|
| Standard | (default) | Confirm at each phase, detailed explanations |
| Quick | "quick mode", "fast", "minimal" | Sensible defaults, single final confirmation |
| Reference | Code snippets, "convert this", "like this app" | Auto-analyze code, extract components, map to OpenBB |
| Verbose | "verbose", "teach me", "explain" | Educational approach, explain decisions |
Phase 1: Interview → Gather requirements, analyze references
Phase 2: Widgets → Define widget metadata
Phase 3: Layout → Design dashboard layout
Phase 4: Plan → Generate implementation plan
Phase 5: Build → Create all files
Phase 6: Validate → Run validation scripts
Phase 6.5: Browser Val → Test against OpenBB Workspace (recommended)
Phase 7: Test → Browser testing (optional){app-name}/APP-SPEC.md{app-name}/PLAN.mdmain.pywidgets.jsonapps.jsonrequirements.txt.env.examplepro.openbb.cofrom fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
import json
from pathlib import Path
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=[
"https://pro.openbb.co",
"https://pro.openbb.dev",
"http://localhost:1420"
],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Load apps.json at startup
APPS_FILE = Path(__file__).parent / "apps.json"
with open(APPS_FILE) as f:
APPS_CONFIG = json.load(f)
@app.get("/widgets.json")
def get_widgets():
return { # MUST be dict, NOT array
"widget_id": {
"name": "Widget Name",
"type": "table",
"endpoint": "my_endpoint"
}
}
@app.get("/apps.json")
def get_apps():
return APPS_CONFIG # MUST be object, NOT array| Type | Use Case |
|---|---|
| Tabular data with sorting/filtering |
| Plotly visualizations |
| KPI values with labels |
| Formatted text |
| Article lists |
runButton: true/apps.jsonrawname{app-name}/
├── APP-SPEC.md # Requirements
├── PLAN.md # Implementation plan
├── main.py # FastAPI application
├── widgets.json # Widget configs
├── apps.json # Dashboard layout
├── requirements.txt # Dependencies
└── .env.example # Environment templateApp created at {app-name}/
To run:
cd {app-name}
pip install -r requirements.txt
uvicorn main:app --reload --port 7779
To add to OpenBB:
Settings → Data Connectors → Add: http://localhost:7779