Maybe is an opinionated spreadsheet for uncertain models.
Most spreadsheets make you collapse uncertainty into a single scalar value. Maybe lets cells represent distributions, confidence intervals, and ranges, then propagates that uncertainty through formulas.
- Spreadsheet editing powered by GaussFormula
- Standard values, formulas, and formula-bar editing
- Explicit uncertainty notation:
N(mean, variance)N.CI(lower, upper[, confidence])LN(mu, sigma)LN.CI(lower, upper[, confidence])U(min, max)
- Sampled calculations when formulas reference uncertain cells
- Distribution charts for uncertain values
- Dependency graph view for tracing formula relationships
- Optional Assistant panel for workbook inspection and model changes
- SQLite-backed local workbook persistence
- Bun 1.3 or newer
git clone https://github.com/PragmaticMachineLearning/maybe.git
cd maybe
bun install
bun run devOpen http://localhost:5173.
The development command starts two processes:
- the Hono API server on
http://localhost:3000 - the Vite client on
http://localhost:5173
The client proxies /api/* requests to the API server.
In the spreadsheet, enter:
| Cell | Input | Meaning |
|---|---|---|
A1 |
N.CI(10, 20) |
Normal distribution from a default 95% confidence interval |
B1 |
U(2, 5) |
Uniform distribution between 2 and 5 |
C1 |
=A1*B1 |
Sampled result that propagates both uncertain inputs |
Select C1 to inspect the sampled output. Use the chart control on an
uncertain cell to view its distribution, or use the graph button to inspect
formula dependencies.
For a fuller walkthrough, see docs/USER_GUIDE.md.
Copy .env.example to .env for local configuration.
cp .env.example .env| Variable | Required | Default | Description |
|---|---|---|---|
OPENAI_API_KEY |
No | unset | Enables the Assistant. Without it, assistant requests return a setup error. |
MAYBE_DB_PATH |
No | data/maybe.sqlite |
SQLite database file used for workbook persistence. |
PORT |
No | 3000 |
Port used by the Bun server and default development API server. |
MAYBE_DIST_DIR |
No | dist |
Directory served by the Bun server after bun run build. |
The Assistant is optional. The spreadsheet works without an OpenAI API key.
Build the client and run the Bun server:
bun run build
bun run startOpen http://localhost:3000.
The Bun server serves the built client from dist and owns /api/*.
Workbook persistence uses SQLite through the Bun server. By default, Maybe
stores workbook data in data/maybe.sqlite.
Set MAYBE_DB_PATH if you want to use a different SQLite file.
Maybe is still a work in progress. The core spreadsheet, uncertainty notation, sampling behavior, persistence, and Assistant workflows are usable, but APIs, file formats, and modeling conventions may change as the project evolves.
Maybe is powered by GaussFormula, a spreadsheet formula engine adapted from HyperFormula to support uncertain cell values and sampled calculations. GaussFormula is maintained by the same author as Maybe and is also available on npm.
- React + TypeScript
- Vite
- Bun
- Hono
- SQLite
- GaussFormula
- ECharts
- Playwright
See CONTRIBUTING.md for local setup and contribution guidelines.
Maybe is licensed under GPL-3.0-only. See LICENSE.
