Skip to content
Stirrup

How the Stirrup platform fits together

StirrupOS connects your sources, models them in live sheets and scripts, publishes the results and governs every step with one audit log.

  1. acme
  2. Lineage
  3. revenue.sheet
Live
ordersPostgreSQL · hourly synctargetsGoogle Sheets · nightlyfx_ratesREST API · every 30 minrevenue.sheetSpreadsheet · Forecastforecast.tsScript · prod v12GET /api/run/acme/forecastEndpoint · API keyRevenue overviewDashboard · 6 chartsForecast referenceDoc page · generated
Tan paths carried the latest recalculation of Forecast!D18 resources · 7 dependencies

Connect, model, publish, govern

Every Stirrup workspace follows the same four steps, and each step reads the output of the one before it.

  1. Connect

    Point Stirrup at the systems you already run. Each source is test-fired before it saves and lands as a real spreadsheet tab.

    Connections & Files

    • PostgreSQL, MySQL, REST APIs, Google Sheets, Microsoft Excel and file uploads
    • Sync every 30 minutes, hourly, nightly or on demand, with import history per connection
    • Private, link-local and internal hosts are blocked; credentials are encrypted at rest
  2. Model

    Your team works in a spreadsheet engine with Excel-parity formulas. When formulas run out, scripts take over in the same workspace.

    SpreadsheetsScripts & APIs

    • Server-side recalc that cascades across tabs and reaches every viewer
    • What-if scenarios as sandboxed forks you merge or discard
    • JavaScript, TypeScript and SQL with type-aware SDK autocomplete
  3. Publish

    The same cells and scripts serve every consumer, so the API, the dashboard and the doc page cannot disagree.

    Graphs & DashboardsDocs & Doc Sites

    • Versioned endpoints at /api/run/{org}/{slug} with generated OpenAPI docs
    • Dashboards bound to live ranges, shared by link, invite or embed
    • Doc sites on your domain, with Ask-AI that cites your pages
  4. Govern

    Rules, roles and approvals apply to everything above, and every change by a person, script or Juno goes to one audit log.

    Contracts & TriggersInvestigateJuno

    • Contracts that warn, or block by quarantining rows and pausing what depends on them
    • Triggers on schedules, violations, freshness breaches, uploads and webhooks
    • Investigate and Juno for finding why something changed

The architecture

Six kinds of source in, one core in the middle, and every surface your team and your systems read from.

Your sources

  • PostgreSQL
  • MySQL
  • REST APIs
  • Google Sheets
  • Microsoft Excel
  • File uploads

StirrupOS core

Connections

Validated hosts, encrypted credentials, scheduled sync and opt-in write-back.

Engine

Excel-parity formulas recalculated on the server and cascaded across tabs.

Runtime

JS, TS and SQL in sandboxed V8 isolates, with schedules, triggers and a job queue.

Governance

Roles, contracts, approvals and one append-only audit log.

What your team uses

  • Spreadsheets
  • Endpoints
  • Dashboards
  • Doc sites
  • Juno

StirrupOS, the shell around the work

Every module opens in the same workspace, so search, links, presence and notifications behave the same everywhere.

  1. acme
  2. Home
⌘Kforecast
  • revenue.sheetSpreadsheet · Finance
  • forecast.tsScript · prod v12
  • GET /api/run/acme/forecastEndpoint
  • Forecast referenceDoc page
  • forecast.ts run, 09:14Run · passed
  • Ask Juno: “forecast”
⌘K global search
Jump to any sheet, script, endpoint, doc, file or run, or turn the query into a Juno question. Keyboard-first throughout.
Pop-out windows
Apps live on a homescreen, and any window pops out to sit beside the one you are working in.
Deep links
Every view has its own URL, so a link in a ticket or a chat opens exactly what the sender saw.
Realtime presence
See who is in a sheet and where, with edits streamed to every viewer over SSE.
Actionable notifications
Contract alerts, approvals waiting on you and presence, handled from the notification itself.
Org switcher
Move between the organizations you belong to. Data is isolated per org at the data layer.
Theme per person
Dark or light, chosen by each person, not imposed by the workspace.
Phones, in the browser
StirrupOS reflows for phones in any mobile browser, and Juno fixes can be approved from cards. There are no native apps.

Governance that spans every module

One set of roles, one set of rules and one audit log cover the sheets, the scripts, the endpoints and Juno.

  1. acme
  2. Admin
  3. Audit log
TimeActorActionDetail
09:14:03Finance leadEdited revenue.sheet!D10.07 → 0.085
09:13:20Ops leadPromoted forecast to prodv11 → v12, approved
09:12:40Juno (for Ops lead)Proposed write to ordersAwaiting approval
08:58:11AdminChanged role of CFmember → admin
08:30:00TriggerRan contract check orders1 rule failed
06:00:02forecast.tsWrote store key forecast:lastkey sk_live_••7f3a
Append-only. Filter by actor, resource or time, then export.
Governance controls
One audit log
Every mutation by a person, script or Juno
Recorded with actor, time and diff, append-only and exportable.
Roles
Owner, admin, member and viewer, plus custom roles
About 50 permission keys across every module. Write-back, publishing and destructive actions each have their own.
Contracts
Warn, or block and quarantine
Block pauses downstream dashboards and endpoints until the check clears. Violations are records you can export.
Approvals
Promotions between environments and Juno’s destructive actions
Each shows the blast radius before anyone approves.
API keys
Scopes, role ceilings, endpoint allowlists, expiry and revocation
Per-key rate limits and IP rules.

One forecast, seen from each surface

Follow the acme Q4 forecast through the platform. Every view below reads the same live data.

  1. acme
  2. Finance
  3. revenue.sheet
Live
C4=B4*(1+$D$1)
ABCD
1Q4 growth assumption8.5%
2RegionQ3 actualQ4 forecastvs Q3
3Northeast412,800447,888+35,088
4Southeast298,450323,818+25,368
5Midwest356,120386,390+30,270
6Southwest241,300261,811+20,511
7West389,600422,716+33,116
8Canada118,240128,290+10,050
9Total1,816,5101,970,913+154,403
ForecastActualsTargets14 cells recalculated on the server

The finance lead changes one assumption. Fourteen dependent cells recalculate on the server and every viewer sees them at once.

Explore Spreadsheets

See it on your own data

Connect a source and build your first live sheet on the free plan, or ask us to walk your team through a full rollout.