Architecture
Boardflare keeps Excel as the application interface while moving application logic into a reactive Python notebook.
Excel workbook
│
│ ranges / tables / formulas
▼
Spreadsheet Bridge
│
▼
Boardflare notebook host
│
▼
marimo + Pyodide
│
├── reactive Python model
├── interactive notebook UI
└── Boardflare Anywidgets
│
▼
Published application state
│
├── BF.OUTPUT(...)
└── BF.FUNCTION(...)
│
▼
Excel workbook
Excel as the interface
The workbook remains where operators enter assumptions, review tables/formulas, and consume published results. Authors do not have to recreate the spreadsheet as a separate web application.
Spreadsheet Bridge
Host-specific workbook operations sit behind a shared spreadsheet abstraction. The Excel notebook and standalone Univer demo can therefore share source/input/output concepts while their underlying spreadsheet APIs remain host-specific.
Boardflare application
│
Spreadsheet Bridge
┌───┴────┐
│ │
Excel Univer
Office.js browser SDK
Stock marimo + Pyodide
Boardflare embeds a pinned stock Marimo WebAssembly export. Marimo owns notebook editing, serialization, the reactive dependency graph, and Python execution through Pyodide. Boardflare owns workbook integration, source persistence, published outputs/functions, startup, and product chrome.
Anywidget as the notebook bridge
The public boardflare Python package exposes workbook integration through Anywidget models. bf.inputs() and bf.publish() return widgets whose frontends communicate with Boardflare-owned host capabilities.
Persistence
In Excel, saved notebook source and startup mode travel with the workbook. Live Python state is not serialized. Reopening restores source and reruns it to recreate inputs, outputs, functions, and UI state.
Shared-runtime cold start
Excel can start Boardflare's shared runtime because a saved BF.OUTPUT() or BF.FUNCTION() formula needs calculation. The task pane does not need to be visible first.
Workbook recalculates
│
▼
BF.OUTPUT / BF.FUNCTION
│
▼
Excel starts shared runtime
│
▼
Notebook runtime mounts
│
▼
marimo starts → inputs hydrate → publish registry
│
▼
worksheet formula resolves
For execution and trust boundaries, continue to Security and data flow.