Build multidimensional financial models without spreadsheets
OM Core is an open source financial modeling engine that replaces spreadsheet grids with dimensions, cubes, and rules.
Why it matters
Replace fragile spreadsheet-based financial and operational models with a structured modeling engine that separates business logic from layout, making large models easier to audit, extend, test, and maintain as they grow.
Outcomes
What it gets done
Define dimensions, cubes, groups, and hierarchies to structure financial data semantically instead of by cell location
Write calculation rules that express business relationships independent of spreadsheet coordinates or copied formulas
Project model data into multiple views and grids without duplicating underlying logic or structure
Run models through GUI, TUI, REPL, or headless runtime with a unified command interface and message bus architecture
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/cloudcell-om-core | bash Overview
Om Core
OM Core is an open source multidimensional modeling engine that replaces spreadsheet grids with explicit dimensions, cubes, groups, and rules. Use it when a spreadsheet model has become fragile from logic buried in cell addresses. It's alpha software, not yet stable or production-ready.
What it does
OM Core is an open-source reference implementation of a multidimensional modeling engine for structured financial, operational, and analytical models. Instead of treating the spreadsheet grid as the model, it represents the model as dimensions (business axes like Time, Account, Region, Product, Scenario, or Line Item), cubes (data stored over one or more dimensions), groups and hierarchies (structured collections and rollups), and rules (calculations expressed over semantic model addresses instead of spreadsheet coordinates) - grids and views are projections of that underlying model, not the source of truth.
When to use - and when NOT to
Use it when a spreadsheet model has grown fragile because business logic is encoded in cell addresses, copied formulas, linked tabs, and implicit layout conventions, and you want a rule to describe the business relationship - gross margin derived from revenue and cost - rather than depend on a particular row, column, or copied formula. It is currently alpha software: APIs, command names, file formats, GUI behavior, and module boundaries may change before v1.0, and there is no stable public, plugin, or scripting API, no stable file format, and no packaged desktop installer yet - not for production use on critical business decisions without independent validation.
Inputs and outputs
Input: an .openm script defining dimensions, cubes, views, and rules. Output: a calculated model queryable through a GUI, TUI, REPL, or CLI client, all communicating with a session-scoped runtime engine that owns the canonical workspace state over a message bus.
# Dimensions
dim Month Jan Feb Mar
# Cube
cube Sales Month
# View
view SalesView = Sales::Month
# Rules
rule Sales::Month.Jan = 100
rule Sales::Month.Feb = Sales::Month.Jan * 1.1
rule Sales::Month.Mar = Sales::Month.Feb * 1.1
# Calculate
calc
Save that as hello.openm and load it with om> source hello.openm from the REPL or TUI; the built-in help command (and topic help like help rule or help calc) documents commands from inside the running application.
Integrations
Runs from source, managed by uv for its Python environment (uv sync creates .venv and installs dependencies); ./start.sh (or .\start.ps1 on Windows) launches the GUI and offers a TUI in a separate terminal, with --gui, --tui, --runtime, and --repl flags to start a single mode headlessly. The engine, GUI, TUI, REPL, and CLI are separate clients of one runtime layer, and the repository currently ships the full alpha application stack (engine, commands, REPL, GUI/TUI, runtime, timeline, scripting, plugin, and storage-adapter layers) rather than a stable, extractable extension API.
Who it's for
Teams building financial, operational, or analytical models who've hit the structural limits of spreadsheets and want an explicit, auditable model instead - as alpha software best suited to evaluation and contribution rather than production dependence yet. Distributed under the GNU Affero General Public License v3.0 (AGPLv3).
Source README
OM Core
OM Core is an open-source reference implementation of a multidimensional
modeling engine for structured financial, operational, and analytical models.
Instead of treating the spreadsheet grid as the model, OM Core represents the
model using dimensions, cubes, groups, and rules. Grids and views are
projections of that model, not the source of truth.
Alpha software: OM Core is under active development. APIs, command names, file
formats, GUI behavior, and module boundaries may change before v1.0.
Documentation
The main documentation site is here:
https://cloudcell.github.io/om-docs/
Start with:
- What is OM Core: https://cloudcell.github.io/om-docs/start/what-is-om-core/
- Why not spreadsheets:
https://cloudcell.github.io/om-docs/start/why-not-spreadsheets/ - Installation: https://cloudcell.github.io/om-docs/start/installation/
- Quickstart: https://cloudcell.github.io/om-docs/start/quickstart/
Core idea
Most spreadsheet models mix several things together:
- model structure
- business logic
- layout
- presentation
- calculation flow
- user interaction
OM Core separates these concerns.
The model is built from:
- Dimensions - business axes such as Time, Account, Region, Product,
Scenario, or Line Item. - Cubes - data stored over one or more dimensions.
- Groups and hierarchies - structured collections and rollups.
- Rules - calculations expressed over semantic model addresses instead of
spreadsheet coordinates. - Views - grids and interfaces for inspecting and interacting with the
model.
A rule should describe the business relationship, not the cell location. For
example, a model should be able to express a relationship such as gross margin
being derived from revenue and cost without making that relationship depend on a
particular row, column, or copied formula.
Repository scope
This repository currently contains the full alpha application stack required to
run OM Core.
That includes the modeling engine and supporting command, REPL, GUI/TUI,
runtime, timeline, scripting, plugin, storage-adapter, examples, and test
layers.
Some modules are internal implementation layers. They are included because the
current alpha application depends on them. They should not yet be treated as
stable public extension APIs.
Repository configuration
The .om/ directory is intentionally committed.
It contains default OM Core application configuration, including toolbar
settings required by the current alpha application. It is not a temporary cache
directory or private local state.
Do not delete .om/ unless the application configuration system has been
changed to load these defaults from another documented location.
Installation
OM Core currently runs from source.
Linux / macOS
git clone https://github.com/cloudcell/om-core.git
cd om-core
./start.sh
Windows
Use PowerShell:
git clone https://github.com/cloudcell/om-core.git
cd om-core
.\start.ps1
./start.sh or .\start.ps1 starts the GUI and asks whether to open a TUI in a
separate terminal.
OM Core uses uv to manage its Python environment.
Install uv, then run uv sync in the project root to create .venv and install
dependencies. After that, the start scripts and test scripts use uv run
automatically.
You can also start specific runtime modes:
# Linux / macOS
./start.sh --gui # graphical interface only
./start.sh --tui # terminal interface in the current terminal
./start.sh --runtime # headless runtime only
./start.sh --repl # REPL command shell in the current terminal
# Windows
.\start.ps1 --gui # graphical interface only
.\start.ps1 --tui # terminal interface in the current terminal
.\start.ps1 --runtime # headless runtime only
.\start.ps1 --repl # REPL command shell in the current terminal
For more detail, see the installation guide:
https://cloudcell.github.io/om-docs/start/installation/
Quickstart
Running ./start.sh (Linux / macOS) or .\start.ps1 (Windows) launches the GUI.
You will be prompted to open a TUI in a separate terminal; accepting the default
(Y) gives you a command shell alongside the GUI, as shown below.
Note: The first time you run
./start.shor.\start.ps1,uvwill create
a Python virtual environment in the project folder (.venv) and install
dependencies fromuv.lock.
After starting OM Core, try the built-in help command:
om> help
You can ask for help on specific topics:
om> help rule
om> help calc
A minimal OM Core script looks like this:
# Dimensions
dim Month Jan Feb Mar
# Cube
cube Sales Month
# View
view SalesView = Sales::Month
# Rules
rule Sales::Month.Jan = 100
rule Sales::Month.Feb = Sales::Month.Jan * 1.1
rule Sales::Month.Mar = Sales::Month.Feb * 1.1
# Calculate
calc
Save that as hello.openm, then source it from the REPL or TUI:
om> source hello.openm
For the full walkthrough, see:
https://cloudcell.github.io/om-docs/start/quickstart/
Testing
Run the test suite with the platform-specific script:
# Linux / macOS
./test.sh
# Windows
.\test.ps1
Architecture
OM Core is split into a session-scoped runtime layer, a command/query service
layer, and multiple clients. The engine owns the canonical workspace state; the
GUI, TUI, REPL, and CLI are clients that communicate through the message bus.
Why not just spreadsheets?
Spreadsheets are fast and flexible, but large models often become fragile
because business logic is encoded in cell addresses, copied formulas, linked
tabs, and implicit layout conventions.
OM Core uses a different level of abstraction. It makes the model explicit:
dimensions describe the axes, cubes hold values, groups organize structure,
rules define calculations, and views display the result.
The tradeoff is deliberate: you define more structure up front, and in return
the model becomes easier to audit, extend, test, and maintain as it grows.
For the longer explanation, see:
https://cloudcell.github.io/om-docs/start/why-not-spreadsheets/
Project status
OM Core is currently alpha software.
Not yet promised before v1.0:
- stable public API
- stable plugin API
- stable scripting API
- stable file format
- packaged desktop installer
- production readiness for critical business use without independent validation
See also:
KNOWN_ISSUES.mdCHANGELOG.mdSECURITY.md
FAQ
Common questions
Discussion
Questions & comments ยท 0
Sign In Sign in to leave a comment.