A real spreadsheet engine.
Written once.
Run everywhere.
Skeepto is an open-source spreadsheet. A React UI
on a C++20 engine compiled to WASM —
the same binary in Electron, in the browser, and on Node.js.
344 functions, Excel formulas, read write .xlsx.
Google Sheets calculates in the browser (not reusable server-side). Excel Online calculates on the server (latency on every action). Skeepto does both, from a single C++ codebase.
02
Self-hostable
React, WASM, Node.js, MongoDB. Your workbooks and your engine run on your infrastructure. MIT license.
03
AI you can drive, not a captive copilot
Copilot and Gemini stay in a proprietary cloud. Skeepto exposes the engine over the Model Context Protocol: any agent can drive the sheet.
04
An engine, not a widget
Insert a row without rewriting every address. Formulas are interned. Recalc walks the dirty graph — not a full-sheet sweep.
Skeepto Engine
Built to outrun Excel on calculation, not on the ribbon.
Excel is a desktop product. This is a calculation core: dependency graph,
work queues, resolved cycles — the same binary in the grid and under an agent.
KahnTopological work-queue on dirty cells. Each node evaluates once.
TarjanCycles become strongly connected components.
Gauss–SeidelIterate until ε = 10⁻¹². Divergence → #RECURSIVE.
344 worksheet functions
166 Math & stats
36 Text
35 Logical
29 Dynamic arrays
29 Lookup
25 Date
24 Financial
FILTER, SORT, UNIQUE, MAP, REDUCE, SCAN, XLOOKUP, LET, LAMBDA… Excel names are preserved on import and export.
Architecture
One binary. Two hosts.
The browser paints fast (Canvas 2D, JsonView). The server isolates each workbook
in a pool of WASM instances. No business logic is rewritten in JavaScript.
C++20Skeepto Engine
→ WASM
Browser · ElectronSkReactSpreadSheet
ENVIRONMENT=web · local editing
Node.js · FastifySkReactSpreadSheetNode
ENVIRONMENT=node · pool, XLSX, agents
// Same surface in JavaScript and in C++ (tApi)const ss = new SpreadSheet.UISpreadSheet();
ss.NewWorkBook("demo");
ss.Value("A1", "10", "Sheet1");
ss.Value("A2", "20", "Sheet1");
ss.Value("B1", "=SUM(A1:A2)", "Sheet1");
ss.GetValue("B1", "Sheet1"); // "30"
Why this shape
Three web spreadsheets, three places for the engine.
Excel Online
Google Sheets
Skeepto
Engine
Server
Client JavaScript
WASM client and server — same C++
Full workbook
Server
Client + server authority
WASM memory + server pool
Grid
Canvas
Canvas
Canvas
Offline
Almost impossible
Limited
Electron, zero server
Self-hosting
No
No
Yes · MIT
Third-party AI
Captive
Captive
Native MCP
Two repositories. One MIT license.
The fastest path: the Electron app. Node 18+, npm run build, then npm run electron. No C++ toolchain.