Marble
Finally...!

Fast, reliable, and open GTM tooling built by and for! the best operators and engineers.

Marble

Marble

Marble

Open source

Open source. By design.

Free to use forever. One-click install. Do whatever you want — the only compromise is no support.

install marble
bunx → 30s
$bunx marble-cli init my-workspace$cd my-workspace$bun run dev

No license keys. No "contact us". Clone the repo, run the install, and you're operating your own Marble in under a minute.

# or self-host the entire stack
git clone github.com/marble/marble
bun install && bun run deploy
LicenseMITEvery line of the platform, on GitHub, from day one.
Self-hostYours.Run it locally, in your VPC, or on our hosted plane. Same bits, every time.
Lock-inZeroNo license keys, no seat counts, no per-vendor billing surprises.
ROUTINE 01 — INSTALLROUTINE 01 — INSTALLROUTINE 01 — INSTALLROUTINE 01 — INSTALLROUTINE 01 — INSTALLROUTINE 01 — INSTALLROUTINE 01 — INSTALLROUTINE 01 — INSTALLROUTINE 01 — INSTALLROUTINE 01 — INSTALLROUTINE 01 — INSTALLROUTINE 01 — INSTALL
bunx marble-cli initbunx marble-cli initbunx marble-cli initbunx marble-cli initbunx marble-cli initbunx marble-cli initbunx marble-cli initbunx marble-cli initbunx marble-cli initbunx marble-cli initbunx marble-cli initbunx marble-cli init
AGENTS · TABLES · CELLS · PROGRAMSAGENTS · TABLES · CELLS · PROGRAMSAGENTS · TABLES · CELLS · PROGRAMSAGENTS · TABLES · CELLS · PROGRAMSAGENTS · TABLES · CELLS · PROGRAMSAGENTS · TABLES · CELLS · PROGRAMSAGENTS · TABLES · CELLS · PROGRAMSAGENTS · TABLES · CELLS · PROGRAMSAGENTS · TABLES · CELLS · PROGRAMSAGENTS · TABLES · CELLS · PROGRAMSAGENTS · TABLES · CELLS · PROGRAMSAGENTS · TABLES · CELLS · PROGRAMS
Agent first

Built for the
agentic future.

Works with any agent via Skills and Plugins. Single-command setup. A tabular interface for every kind of agentic workflow.

KIT-AGENTS / 08 SLOTSWORKS WITHMCP · OPEN PROTOCOL
01COMPATIBLE AGENTS
A1
claude
A2
codex
A3
cursor
A4
continue
A5
opencode
A6
aider
A7
windsurf
A8
your own
02 / PROTOCOL
MCPRESTCLIREALTIME… and anything that speaks MCP.
01

Skills

Drop in a skill folder and any compatible agent picks up Marble's surface, semantics, and live state.

02

Plugins

Extend any column or table with a packaged plugin. Versioned, reviewable, and operator-installable.

03

Tabular interface

The interface humans already trust to think in rows, columns, and cells — handed to your agents.

04

Single-command setup

One CLI install. One workspace boot. Your agent is on the inside in under a minute.

Why it matters

A surface agents actually understand.

Every Marble resource speaks Marble — programs, tables, rows, cells, runs. Agents don't simulate the product, they operate inside it.

EP-001 · MARBLE · TABULAR INSTRUMENT FOR AGENTS

An instrument for runtime.

Tables, programs, and cells laid out on the same panel — every input is a key, every output is a cell, and the whole thing scrubs in real time.

REALTIMEEDGE EXECPROGRAM-NATIVE
EP-001 / RT-MARBLEMARBLEOSS · MIT · v0.0.1
01DISPLAY
CELLS RUN · LIVE
0000000253cells
cells materialized · streaming
WAVEFORM · CELL OUT
02PRIORITY
03·12 RUNSHOT
03 / KIT — TABULAR
A1
table
A2
C
column
A3
R
row
A4
·
cell
A5
agent
A6
S
skill
B1
input
B2
output
B3
fn
B4
cache
B5
publish
B6
fork
04 / MIXER
CPU0.42
AI0.74
IO0.18
ATRANSPORT
rec
play
boost
BCHANNEL OUTcell stream → realtime
LIVEopen · streaming
Program model

Every column is a program.
Every program is shareable.

Marble's primitive is the column. Each one is a small, deterministic program that reads other cells and writes its own. Compose them, ship them, share them.

TBL-001 / 5 ROWS · 3 COLSleads.marbleWORKSPACE · ACME
01LIVE TABLE
company
revenue
lead_score
Acme
$3.2M
running
Brava
$1.1M
running
Coral
$8.4M
running
Dune
$0.4M
queued
Eko
$5.7M
running
CELL OUT
00091·
row 03 / lead_score
LATENCY
0342ms
ms · this run
02PROGRAM SRC
lead_score.ts
import { program } from "@marble/core";

export default program({
  inputs: { company: "string", revenue: "number" },
  output: "number",
  run: async ({ inputs, ai }) => {
    const research = await ai.web(
      `market footprint of ${inputs.company}`,
    );
    return await ai.score({
      research,
      revenue: inputs.revenue,
    });
  },
});
03 / STATUS
MATERIALIZINGCACHED 04 / 05REPLAY FREE
01Table

The container — a typed surface with rows of records.

02Column

A single column is a program — pure, reproducible, testable.

03Cell

Cells materialize when a column runs against a row. Cached, observable.

04Shared

Publish, import, fork. Programs are first-class artefacts.

Pure

Reproducible by construction

Programs are deterministic functions over typed inputs. Same row → same cell. Bring a row back, replay the program.

Composable

A spreadsheet that runs code

Programs compose. A column reads other cells, and the whole graph re-runs when upstream cells change.

Shareable

Programs travel like packages

marble push lead_score publishes the program to your library. Anyone can install it and wire it into their own tables.

LIVE COLUMNS · STREAMING CELLS · ALWAYS RUNNINGLIVE COLUMNS · STREAMING CELLS · ALWAYS RUNNINGLIVE COLUMNS · STREAMING CELLS · ALWAYS RUNNINGLIVE COLUMNS · STREAMING CELLS · ALWAYS RUNNINGLIVE COLUMNS · STREAMING CELLS · ALWAYS RUNNINGLIVE COLUMNS · STREAMING CELLS · ALWAYS RUNNINGLIVE COLUMNS · STREAMING CELLS · ALWAYS RUNNINGLIVE COLUMNS · STREAMING CELLS · ALWAYS RUNNINGLIVE COLUMNS · STREAMING CELLS · ALWAYS RUNNINGLIVE COLUMNS · STREAMING CELLS · ALWAYS RUNNINGLIVE COLUMNS · STREAMING CELLS · ALWAYS RUNNINGLIVE COLUMNS · STREAMING CELLS · ALWAYS RUNNING
COLUMN GRAPH · LIVE · 21 PROGRAMS RUNNING

Your columns
are alive.

Every column is a small program. Every cell is a window into its run. The whole graph re-evaluates the moment upstream cells change — towers light up as the workspace breathes.

RUNNINGMATERIALIZEDQUEUED / IDLE253CELLS LIVE
yhangry-keyword-filter
C1LIVE
cells48
yhangry-recency
C2LIVE
cells38
yhangry-reddit-scrape
C3LIVE
cells58
retest-3337
C4LIVE
cells32
Shopify Products JSON Fetcher
C5QUEUED
cells72
Javelin User Input
C6LIVE
cells60
scratch-5688
C7LIVE
cells46
scratch-15065
C8QUEUED
cells68
scratch-prog-9047
C9IDLE
cells38
yhangry-review
C10LIVE
cells32
yhangry-draft
C11LIVE
cells28
yhangry-relevance
C12LIVE
cells78
ONE COLUMN · ONE PROGRAM · ONE GRAPHONE COLUMN · ONE PROGRAM · ONE GRAPHONE COLUMN · ONE PROGRAM · ONE GRAPHONE COLUMN · ONE PROGRAM · ONE GRAPHONE COLUMN · ONE PROGRAM · ONE GRAPHONE COLUMN · ONE PROGRAM · ONE GRAPHONE COLUMN · ONE PROGRAM · ONE GRAPHONE COLUMN · ONE PROGRAM · ONE GRAPHONE COLUMN · ONE PROGRAM · ONE GRAPHONE COLUMN · ONE PROGRAM · ONE GRAPHONE COLUMN · ONE PROGRAM · ONE GRAPHONE COLUMN · ONE PROGRAM · ONE GRAPH
Bring your own keys

Use your model providers,
or use ours.

Drop your OpenAI / Anthropic / Google / Mistral keys into the workspace, and they're routed straight through. No proxy. No middleman. Or skip the setup — our hosted plane comes pre-wired.

Option A

Bring your own.

Paste a key into the workspace. Marble routes every call straight to the upstream provider. We never see the payload, the prompt, or the response.

Drop-in providers
OpenAI
Anthropic
Google
Mistral
Groq
OpenRouter
Ollama
Pass-throughZero logPay providers direct
Option B

Or use ours — no setup.

Sign up and start running programs. Our managed plane comes with the same providers pre-wired, billed straight to the milliseconds your cells actually run.

  • Same providers, same models, sane defaults.
  • Granular logging and replay across every run.
  • Drop in your own keys later — no migration penalty.
HostedPer-ms billingAuto-routing
MS · MS · MS · ONLY MILLISECONDSMS · MS · MS · ONLY MILLISECONDSMS · MS · MS · ONLY MILLISECONDSMS · MS · MS · ONLY MILLISECONDSMS · MS · MS · ONLY MILLISECONDSMS · MS · MS · ONLY MILLISECONDSMS · MS · MS · ONLY MILLISECONDSMS · MS · MS · ONLY MILLISECONDSMS · MS · MS · ONLY MILLISECONDSMS · MS · MS · ONLY MILLISECONDSMS · MS · MS · ONLY MILLISECONDSMS · MS · MS · ONLY MILLISECONDS
METER · WORKSPACE · LIVE

Every cell is a tiny
unit of compute.

CELLS RUN · GLOBAL
000000000253cells
cells materialized · platform-wide · live
CELLS / SEC
00040cells
RUNS RECORDED
000234runs
AGENTS ON PLATFORM
0004agents
IDLE = 0ms = $0
NOT SEATS · NOT CREDITS · NOT TIERSNOT SEATS · NOT CREDITS · NOT TIERSNOT SEATS · NOT CREDITS · NOT TIERSNOT SEATS · NOT CREDITS · NOT TIERSNOT SEATS · NOT CREDITS · NOT TIERSNOT SEATS · NOT CREDITS · NOT TIERSNOT SEATS · NOT CREDITS · NOT TIERSNOT SEATS · NOT CREDITS · NOT TIERSNOT SEATS · NOT CREDITS · NOT TIERSNOT SEATS · NOT CREDITS · NOT TIERSNOT SEATS · NOT CREDITS · NOT TIERSNOT SEATS · NOT CREDITS · NOT TIERS
No credits

Pay for milliseconds,
not seats.

Run as much as you want. The cloud offering runs on compute, so you're only charged for the milliseconds your cells actually run.

EP-001 / METERINGUNITMS · LIVE
01BILLING UNIT
ms= unit

One number, billed at the unit the platform actually consumes. No tiers. No seat ladders. No "starter" / "enterprise" gates.

MS · THIS MINUTE
0048217ms
last 60s · workspace meter
02CALIBRATION
THROUGHPUTHOT
AI0.74
CPU0.42
IO0.18
03 / NOTE
Indicative values. Live calculator gives your workspace's exact projection.
Per seat$0A row added to your team doesn't add a line item. Everyone uses it.
CreditsNopeStockpiling credits you'll never use, or worse — running out mid-flow.
TiersOneThe same minute of compute costs the same on a Tuesday and a Saturday.
Scenario
Per-seat
Per-millisecond
Onboarding the next 1,000 agents
Buy a seat per agent. Quarterly true-up.
Add 1k agents. No invoice change.
An idle workspace overnight
Charged at $X — the seat is reserved.
Charged at $0 — the run did $0 of compute.
Auditing yesterday's runs
Replay counts as new usage, again.
Replay is free. Cached cells are free.
04 / SELF-HOST

Running it yourself? $0. Forever.

MIT license. Bring your own keys, your own infra, your own metering. We never see your bytes.

On the shoulders of giants

Supabase for realtime.
Cloudflare for orchestration.

We didn't reinvent the substrate. Marble runs on two of the best primitives on the open web — Supabase for live, durable state, and Cloudflare for fan-out execution at the edge.

Stateful plane

Supabase

Postgres + Realtime is the live wire. Every cell, row, and run is durably stored and instantly streamed to every open client.

  • Durable row-level Postgres
  • Realtime fan-out via private broadcasts
  • Auth, storage, and RLS out of the box
PostgresRealtimeAuth
Execution plane

Cloudflare

Workers, Durable Objects, Workflows. The program graph fans out at the edge — runs are cheap, replays are instant, isolation is free.

  • Edge Workers, isolate-per-call
  • Durable Objects for run state
  • Workflows for long-running orchestration
WorkersDOsWorkflows
StateSupabase

Your workspace lives in Supabase.

broadcast
ComputeMarble Executor

The runtime that materializes cells.

rpc
EdgeCloudflare

Edge isolates run your programs.

START · INSTALL · OPERATE

Marble

Marble

Marble

A spreadsheet that runs code, built for the agents that operate on your behalf.

OPEN SOURCE · AGENT NATIVE · OPERATOR FIRSTOPEN SOURCE · AGENT NATIVE · OPERATOR FIRSTOPEN SOURCE · AGENT NATIVE · OPERATOR FIRSTOPEN SOURCE · AGENT NATIVE · OPERATOR FIRSTOPEN SOURCE · AGENT NATIVE · OPERATOR FIRSTOPEN SOURCE · AGENT NATIVE · OPERATOR FIRSTOPEN SOURCE · AGENT NATIVE · OPERATOR FIRSTOPEN SOURCE · AGENT NATIVE · OPERATOR FIRSTOPEN SOURCE · AGENT NATIVE · OPERATOR FIRSTOPEN SOURCE · AGENT NATIVE · OPERATOR FIRSTOPEN SOURCE · AGENT NATIVE · OPERATOR FIRSTOPEN SOURCE · AGENT NATIVE · OPERATOR FIRST

Marble

Marble

Marble

Fast, reliable, and open GTM tooling — built by and for operators and engineers.

© 2026 Marble — MIT licensed.Built in the open · v0.0.1