A self-hosted research workspace for financial engineers. Build on OpenBB, use FMP as the primary research source, and bring FRED, Yahoo Finance and later custom data into consistent analytical views.
Available: development alpha with public prebuilt latest images. Provider expansion, the Bloomberg-inspired analyst workspace, AI and Excel have separate specs so they do not hold up this release.
Install · Documentation · Roadmap · Delivery status · Provider coverage · Breadth evidence
Explore all 36 charts: analyst use cases, demo data, dimensions and interpretation
What we can reuse from OpenBB, and the smallest next development steps
The gallery uses fixed FMP observations around January 2025, with each chart's market or fiscal period labelled. Open the gallery through Apps in the published development alpha. Save/reopen and retained-state recreation passed on the identified local candidate; publication is verified separately.
Current historical gallery milestone:
- Prepare fixed historical FMP data, 36 native chart configurations and API discovery.
- Verify the assembled gallery, save/reopen and retained-state recreation.
- Publish one overview and a per-chart analyst guide with reviewed screenshots.
- Publish the gallery in the prebuilt alpha images.
The current alpha uses locked native uv backend packaging, readable Python application source under CPython and embedded Valkey 9.0.7. Local runtime acceptance covers gallery save/fresh-login reopen and login/password changes; a separate synthetic Redis snapshot/RQ and database-marker probe covers recreation. Publication verification checks the released image identities and public pulls, without repeating browser acceptance on CI image bytes.
Deployment login correction:
-
Authenticate existing passwords without applying new-password strength rules.
-
Verify
.envpassword replacement after Workspace recreation with retained account and data. -
Verify browser login, incorrect-password rejection and password changes on the corrected local image.
-
Publish and verify the corrected prebuilt alpha images: publication review.
-
Deliver the first prototype, including accepted chart milestones, login fixes, uv packaging and Valkey; owner confirmed server startup on 2026-10-28. First-spec closure.
Snapshot: 2026-10-28. Follow the CI link for live run status; a green check does not establish deployment acceptance.
| Area | What exists | What remains |
|---|---|---|
| Prototype | Published-image Compose login, starter income widget, refresh and diagnostics accepted; local pull-only install rehearsed; owner confirms deployed alpha is up | Generic required-symbol guard; broader host acceptance |
| CI/CD | Hosted checks and both Dagger builds passed; public images and tagged alpha published | Later stable release pinning and broader runtime acceptance |
| Data | Packaged starter widgets and 36-chart historical FMP gallery; annual AAPL income values and refresh accepted through the installed route | Broader live provider/widget acceptance, Yahoo adapter and named discovery |
| Visuals | Selected ECharts table-chart journeys with captured FMP data, including accepted pie/donut, Box Plot, Range Bar/Area, Waterfall and Radar Line/Area behavior and owner-reviewed appearance; verified bubble-range and miniature correction; existing Plotly; Perspective runtime foundation | Perspective dashboard integration, remaining renderer/table functions and shared theme |
| Analyst workflow | Existing dashboard editor and widget foundations; investment-analysis contract | Quarterly analysis, peer valuation, FMP DCF/WACC with macro context, inline research and saved assumptions |
| Extensions | Separate AI, Excel and custom-source specs | Implementation and end-to-end acceptance; Quant plugins later |
Previous combination-chart milestone:
- Accept Column & Line, Area & Column and Custom Combination, including distinct axes and editor controls.
- Verify captured FMP values, save/reopen/export and navigator/theme/refresh retention in the packaged image.
- Publish and verify the updated alpha images, including anonymous pulls of both services.
See the ECharts checklist for remaining chart families and callers.
Completed Theme Settings preview milestone:
- Replace the preview renderer while preserving controls, keyboard and legend behavior.
- Make Padding work, including zero, with the existing saved format.
- Verify packaged save/reopen, retained-FMP palette/PNG and owner-approved light/dark appearance.
- Publish and verify the completed milestone images: alpha-40506541604-1. See the publication review.
Completed Sankey milestone:
- Freeze reviewed mapping and financial contracts with a retained FMP income-allocation example.
- Complete and independently review the parallel data and rendering modules.
- Connect Sankey to the existing editor and saved-dashboard flow (source and packaged application accepted).
- Accept real-FMP behavior, save/reopen/export and owner-reviewed light/dark appearances.
- Publish and verify the completed Sankey milestone images: alpha-40489065805-1.
The current prototype alpha includes four reviewed repairs: HTTP 200/null for an absent first-login questionnaire, packaging and serving for the existing data catalog, Workspace's fallback for unavailable external app previews, and an empty agent-discovery response for the data-only backend. AI remains a separate spec.
- Verify release assets and both published images through six anonymous pulls.
- Accept fresh onboarding and later login with clean diagnostics on the earlier prototype alpha Compose pair.
- Match the installed starter's annual AAPL income identity, reporting date, USD revenue and refresh to the live response.
- Complete the isolated pull-only local installation rehearsal.
- Verify owner-server deployment and repair the generic-widget empty-required-symbol guard.
See the independent application review, application result and delivery status. Broader provider acceptance, analyst persistence and infrastructure recovery remain separate.
Published: scatter and bubble.
- Correct the reported bubble spacing and miniature overflow, then replace its FMP sample after verification.
- Publish the bubble-spacing and miniature-clipping correction.
- Match original label density and clip main markers; verify small/wide FMP views and save/reopen/export.
- Publish the label-refinement image milestone.
- Implement and review the inactive X/Y/size field-assignment contract.
- Implement and review the inactive numeric renderer, including actual ECharts geometry checks.
- Connect and source-review rendering, editor controls and saved XY settings.
- Accept real-FMP application behavior, synthetic edge cases and prior-family regressions in the candidate image.
- Publish and verify the completed scatter/bubble milestone.
Previous: histogram port.
- Review the binning contract and capture 40 quarterly FMP observations.
- Implement and independently verify the inactive binning module.
- Implement and independently verify inactive interval rendering.
- Connect and independently source-review the existing editor and application controls.
- Source-review automatic axis rounding and retained zoom/reset scales.
- Source-review endpoint-label overflow and original Bin count control order.
- Source-review miniature height, plot alignment and full-bin labels.
- Accept real-FMP application behavior, synthetic edge cases and prior-family regressions.
- Publish and verify the completed histogram milestone.
Published: pie and donut port.
- Review original field selection, concentric rings and saved alias.
- Implement and independently verify inactive pie/donut assignments.
- Implement and independently verify inactive rendering.
- Connect and source-review the existing editor and application flow.
- Repair title/legend editor transactions found by the first image run; source tests and independent review pass.
- Restore effective pie legend defaults and retain original title/legend appearance; source checks pass.
- Implement and source-review native legend paging, keyboard access and fitted donut titles.
- Accept real-FMP behavior and the owner-reviewed appearance in the candidate image.
- Publish and verify the completed milestone.
Published: box plot port.
- Review original statistics and freeze the numerical helper contract.
- Implement and independently verify original-matching numerical summaries.
- Implement and independently verify the inactive box/whisker renderer.
- Preserve original category identities in the inactive Box Plot capture helper.
- Independently accept inactive Box capture and original aggregate setup.
- Independently accept inactive Box axes/navigation and the existing-host adapter join.
- Connect and independently source-review the existing editor and saved-state flow.
- Pass retained-FMP and edge-case browser journeys against the packaged candidate.
- Source-review the Box fill, legend, category-label and miniature refinements; packaged-image comparison accepted.
- Source-review the real-sample collision and wheel-zoom layout repair; repaired candidate browser checks and owner visual acceptance pass.
- Accept original/replacement appearance and complete Box application verification.
- Publish and verify the completed milestone.
Published: Range Bar/Area.
- Independently accept the inactive range-summary helper.
- Independently accept the inactive Range Bar renderer core.
- Independently accept the inactive Range Area renderer core.
- Independently accept Range capture/setup reuse while preserving Box behavior.
- Independently accept inactive Range series styling and saved-option precedence.
- Independently accept Range numeric value-axis planning and renderer handoff.
- Accept numeric/time category geometry in both inactive Range renderer cores.
- Preserve Range date/type provenance through Grid capture and statistical setup.
- Compose Range charts with calendar/numeric axes, saved styling and measured layout.
- Connect Range sessions, retained editor controls, navigation and pointer interactions, including original zoom defaults.
- Implement and independently review the requested Range axis and legend refinements (R4i); default Area appearance accepted; navigator spacing and corrected default behavior pass both packaged FMP journeys; the accepted image pair is published.
- Verify both Range families in the packaged application with real FMP data, save/reopen and export; publication is verified.
Published: Waterfall, following the 23 October work plan.
- Review the signed-movement contract and original zero, missing-value and legend behavior.
- Implement and independently accept cumulative movements.
- Independently accept Waterfall appearance and control adapters.
- Independently accept the W2A renderer source: 30 tests, three independent probes and combined complexity pass.
- Independently accept the renderer/editor/session source join.
- Review the first packaged failure and verify empty-selection remove/re-add recovery.
- Verify the retained-FMP income-statement bridge, controls, save/reopen and export in an identified image; owner accepts the appearance.
- Publish and verify the accepted milestone images.
Waterfall remains available in the current alpha alongside Radar. Local application acceptance and public image identities are verified separately; see the release evidence.
Accepted chart milestone: Treemap/Sunburst.
Radial Column/Bar is accepted and published; RC5 release assets and anonymous image pulls are verified. See the Radial milestone. Treemap/Sunburst is accepted for onboarded users and published; see the delivery queue.
-
Verify hierarchy FMP values, controls, approved appearance, persistence and export.
-
Publish and verify the hierarchy milestone images: alpha-40201437272-1.
-
Complete Heatmap: financial values, appearance, controls, persistence and export accepted.
-
Publish and verify the Heatmap milestone images: alpha-40228938438-1.
-
Accept Funnel, Cone Funnel and Pyramid: owner-approved appearance, financial lifecycle, visible controls and plain-color Cone PNG contents pass within the reviewed scope.
-
Publish and verify the accepted Funnel milestone images: alpha-40334144666-1.
-
Integrate Stacked Line and 100% Stacked Line renderer, editor and session; 231 affected checks pass.
-
Verify three packaged Stacked Line financial/lifecycle journeys; both appearances accepted.
-
Close Stacked Line axis/control checks, including repeated-date raw tooltips.
-
Publish and verify the accepted Stacked Line milestone images: alpha-40371082771-1.
-
Freeze the Radial control contract and implement its inactive controls.
-
Implement the independently reviewed Radial Column shape helper.
-
Implement and independently review Radial numerical mapping and ECharts painting.
-
Connect Radial charts to the existing application and session workflow.
-
Correct Radial Column polar tick density and grid circles at source level.
-
Implement and independently accept Bar grids, bounded circle fitting and shared Radial legend spacing at source level.
-
Verify rebuilt Column and Bar appearance; owner approved both final appearances.
-
Accept the identified packaged real-FMP journeys and original comparisons (RC4).
-
Publish and verify the Radial release images (RC5): alpha-40125164959-1.
Nightingale delivery:
- Freeze original behavior and the retained FMP revenue-composition example (N0).
- Implement the inactive native renderer (N1).
- Implement the inactive existing-style controls (N2).
- Connect the Table/File application and persistence paths (N3).
- Accept real-data browser behavior and appearance (N4).
- Publish the accepted milestone once (N5): alpha-40104927952-1.
Published chart milestone: Radar Line and Radar Area.
- Freeze original Radar behavior and the retained-FMP example; independently reviewed inactive contracts and fixture.
- Independently accept the inactive Radar renderer.
- Independently accept inactive Radar editor/session adapters.
- Independently accept Radar capture and setup (RD3a).
- Independently accept source integration through the existing session, editor and caller routes (RD3/RD3b).
- Independently accept both packaged Radar behavioral journeys: retained FMP values, controls, refresh, fresh reopen and PNG export. Evidence and samples.
- Accept the current Radar Line/Area appearance and disclosed original/replacement differences (RD4).
- Publish the accepted Radar milestone (RD5) as alpha-40086673952-1; release assets and six anonymous pulls verified.
The diagram shows delivery sequence and the Anthropic-before-Excel dependency, not completed work. Separate workstreams are not alpha release prerequisites. AI is independent of prototype acceptance. Custom sources have their own spec; Quant plugins remain a later extension. Existing persistence code, tests and the ./data/workspace bind mount stay in place. Dashboard persistence acceptance belongs to the analyst spec; infrastructure recovery verification is deferred. Neither blocks this prototype.
An analyst should be able to compare an equity, a commodity and a yield curve without learning each provider's API conventions. The planned workspace uses readable instrument names, familiar commands and linked dates, with consistent tables, charts and controls. Source labels stay visible.
Consistency preserves financial meaning: a spot benchmark is different from a futures contract; a yield curve's horizontal axis is tenor, not time; a filing's publication date differs from its reporting period. The provider map separates published coverage from installed and verified functionality.
The Bloomberg-inspired visual reference guides the future theme and widget presentation. Existing OpenBB components and our chart work remain the foundation.
| Component | Role and current boundary |
|---|---|
| Apache ECharts | Implemented chart engine for selected table-to-chart journeys. Full family and caller compatibility remains open. Done / todo |
| FINOS Perspective | Installed runtime, React host and isolated verification foundation. Pivot/explorer widget integration remains work for analyst-workspace. Done / todo |
| Plotly | Existing endpoint-chart renderer retained. Done / todo |
| Highcharts | Removed dependency. Legacy Highcharts configurations are not universally translated into ECharts. |
Development uses Windows/WSL Docker; deployment uses the same Compose topology on private Linux. The origin serves HTTP on 0.0.0.0:23003; the owner manages Cloudflare Access and cloudflared for qopenbb.example.com. State uses relative bind directories, not Docker-managed data volumes.
Dagger builds images only. Portable commands run verification and publication; GitHub Actions is the current runner, with Gitea portability retained. Development installation pulls the prebuilt latest alpha images; later stable releases use pinned versions. Installation uses these images and runs Compose without compiling source on the server. The current release is the development alpha. Use delivery status for the remaining gates rather than treating the historical Compose proposal as an installation guide.
Credentials belong in ignored .env; .env.sample contains public placeholders. Jupyter is managed separately.
| Workstream | Scope |
|---|---|
| Prototype delivery | Current baseline, CI/CD, image publication and installation |
| Market data | FMP horizontal coverage, FRED, Yahoo and future provider adapters. First batch: 14/26 tasks accepted; shared metadata, FMP statements and FRED provenance accepted; registration and further datasets next |
| Analyst workspace | Reusable widgets, command line, linked context, theme, renderer completion and saved research context |
| Workspace AI | Anthropic discovery, grounding and streaming |
| OpenBB Excel | Add-in and generated functions; retains the Anthropic-first dependency |
| Custom data | Own datasets and later PostgreSQL |
Successor specs are initialized scopes, not completed implementations. Spec ownership records the handover. The breadth map retains actual tests and evidence; the contribution guide explains working conventions.
Sources are owned in the Workspace fork and data API fork, with revisions in sources.lock.json.
