Source on the left. A running model on the right.
A .grid file parses into an AST, builds into a dependency graph of typed cells, and runs on the Grid platform — same language, same outputs, same error model.
# allocation weights = positions / SUM(positions) as percentage returns = HISTORICAL_RETURNS( positions, 252) cov = COV(returns) port_var = WEIGHTED_VAR(weights, cov) sharpe = (port_ret − rf) / SQRT(port_var)
Source becomes a running cell, in four stages.
The pipeline is rigid; the placement is managed. Parse, build, plan, evaluate. Same path in production, in dev, in tests — only the execution target at the end changes.
The boundary between "your spreadsheet" and "a deployed program"doesn't exist. The.grid file is the program.
01 Source
portfolio.gridgrid weights = positions / SUM(positions) cov = COV(returns) port_var = WEIGHTED_VAR(weights, cov)
A .grid file: cells, formulas, ranges, optional rules.
02 AST
astjson assign("weights", binop("/", ref("positions"), call("SUM", [ref(...)])))
A strict tree. Every literal typed. Every operator looked up. Every identifier resolved.
03 Model
A typed dependency graph. Each cell knows its inputs, its outputs, and its execution class.
04 Runtime
portfolioCellValueweights[0]0.240port_var0.0089sharpe1.84The platform picks the right execution path for production, preview, or local validation.
Recompute is local.
When positions changes, weights recomputes — and only the cells downstream of weights follow. In dependency order. Atomically. Everywhere it runs.
Cycles fire #CIRC! at build time, with the cycle path in the error. Errors travel through the same channels as values, so every consumer sees them in context.
The model never moves. The platform chooses where it runs.
Same parser, same type system, same 548 functions, same error model. Consistent output across production, preview, and validation — selected per tenant, per deployment, even per file.
Hosted execution
Each model deploys as a self-contained program. Every cell write triggers a local recompute inside the tenant runtime.
portablefastrule-awareShared execution
A shared execution layer can host many models while preserving the same scheduler, outputs, and isolation boundaries.
multi-tenantsharedJSON IRLocal validation
Fast in-process evaluation for development, tests, and agent verification. Behavior matches the hosted runtime for portable models.
localtestsoffline