Repository navigation
Expand file tree
/
Copy pathindex.html
More file actions
390 lines (355 loc) · 26.6 KB
/
Copy pathindex.html
File metadata and controls
390 lines (355 loc) · 26.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Git4Data — Safe data mutations for AI agents</title>
<meta name="description" content="Give AI agents an isolated data branch. Review row-level changes, validate the result, then merge approved changes with Git4Data, built into MatrixOne.">
<meta name="theme-color" content="#05070e">
<link rel="canonical" href="https://git4data.ai/">
<meta property="og:type" content="website">
<meta property="og:url" content="https://git4data.ai/">
<meta property="og:title" content="Git4Data — Safe data mutations for AI agents">
<meta property="og:description" content="Give AI agents an isolated data branch. Review row-level changes, validate the result, then merge approved changes.">
<meta property="og:image" content="https://git4data.ai/assets/img/og.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Git4Data — Safe data mutations for AI agents">
<meta name="twitter:description" content="Give AI agents an isolated data branch. Review row-level changes, validate the result, then merge approved changes.">
<meta name="twitter:image" content="https://git4data.ai/assets/img/og.png">
<link rel="icon" href="assets/img/favicon.svg?v=4" type="image/svg+xml">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="assets/css/style.css?v=8">
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-SPH3ZK5VP1"></script>
<script src="/assets/js/ga4.js"></script>
</head>
<body data-analytics-page="/">
<div class="bg-grid" aria-hidden="true"></div>
<div class="bg-glow" aria-hidden="true"></div>
<canvas id="dag" class="bg-dag" aria-hidden="true"></canvas>
<!-- ─────────── nav ─────────── -->
<header class="nav" id="nav">
<div class="wrap nav-in">
<a class="brand" href="#top" aria-label="git4data home" data-analytics-id="click-001">
<svg class="brand-mark" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<circle cx="6" cy="4" r="2"></circle><circle cx="6" cy="20" r="2"></circle><circle cx="18" cy="12" r="2"></circle>
<path d="M6 6v12"></path><path d="M16 12H9a3 3 0 0 1-3-3"></path>
</svg>
<span class="brand-txt">git<span class="brand-accent">4</span>data</span>
</a>
<nav class="nav-links" aria-label="Primary">
<a href="#product" data-i18n="nav.features" data-analytics-id="click-002">Product</a>
<a href="playground.html" data-i18n="nav.play" data-analytics-id="click-003">Live demo</a>
<a href="agent-skill.html" data-i18n="nav.skill" data-analytics-id="click-004">Agent skill</a>
<a href="blog.html" data-i18n="nav.blog" data-analytics-id="click-005">Blog</a>
<a href="https://docs.matrixorigin.cn/" target="_blank" rel="noopener" data-i18n="nav.docs" data-analytics-id="click-006">Docs</a>
</nav>
<div class="nav-actions">
<button class="lang" id="langBtn" type="button" aria-label="Switch language" data-analytics-id="click-007">
<span class="lang-on">EN</span><span class="lang-sep">/</span><span class="lang-off">中文</span>
</button>
<a class="btn btn-ghost" href="https://github.com/dengn/git4data.ai" target="_blank" rel="noopener" data-analytics-id="click-008">
<svg viewBox="0 0 16 16" width="15" height="15" fill="currentColor" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8a8 8 0 0 0 5.47 7.59c.4.07.55-.17.55-.38l-.01-1.49c-2.01.36-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82a7.4 7.4 0 0 1 2-.27c.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48l-.01 2.2c0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8Z"/></svg>
<span>GitHub</span>
</a>
<a class="btn btn-primary" href="playground.html" data-i18n="nav.cta" data-analytics-id="click-009">Try the demo</a>
</div>
<button class="burger" id="burger" type="button" aria-label="Menu" aria-expanded="false" data-analytics-id="click-010">
<span></span><span></span>
</button>
</div>
</header>
<main id="top">
<!-- ─────────── hero ─────────── -->
<section class="hero hero-product wrap" id="product">
<div class="hero-copy">
<a class="pill reveal" href="https://github.com/matrixorigin/matrixone" target="_blank" rel="noopener" data-analytics-id="click-011">
<span class="pill-dot"></span>
<span data-i18n="hero.pill">Database-native branches in MatrixOne</span>
<span class="pill-arrow">→</span>
</a>
<h1 class="reveal" data-d="1"><span data-i18n="hero.h1a">Let AI agents change millions of rows</span><br><span class="grad" data-i18n="hero.h1b">without touching production.</span></h1>
<p class="lede reveal" data-d="2" data-i18n="hero.lede">Give every agent an isolated data branch. Review row-level changes, validate the result, then merge approved changes when you’re ready.</p>
<div class="hero-cta reveal" data-d="3">
<a class="btn btn-primary btn-lg" href="#catalog-film" data-play-catalog data-i18n="hero.cta1" data-analytics-id="click-012">Watch the 60-second run</a>
<a class="btn btn-ghost btn-lg" href="#start" data-i18n="hero.cta2" data-analytics-id="click-013">Build with Git4Data</a>
</div>
<p class="hero-support reveal" data-d="4" data-i18n="hero.support">Git for your data, built into the database. Powered by MatrixOne.</p>
</div>
<div class="pr-preview catalog-film reveal" data-d="3" id="catalog-film" aria-label="Measured catalog agent workflow video">
<div class="pr-top">
<div><span class="pr-eyebrow" data-i18n="film.eyebrow">REAL DATABASE RUN</span><h2 data-i18n="film.title">10 Million Products.<br>20 Codex Agents.</h2></div>
<span class="pr-state"><i></i><span data-i18n="film.length">60 sec</span></span>
</div>
<video id="catalogVideo" controls playsinline preload="none" poster="assets/video/catalog-agents-poster.jpg?v=1" aria-label="10 Million Products and 20 Codex Agents: a measured database workflow replay" aria-describedby="catalogFilmNote" data-analytics-video="video-1">
<source src="assets/video/catalog-agents.mp4?v=1" type="video/mp4">
<track kind="captions" src="assets/video/catalog-agents.en.vtt?v=1" srclang="en" label="English">
<a href="assets/video/catalog-agents.mp4?v=1" data-i18n="film.download" data-analytics-id="click-014">Download the walkthrough</a>
</video>
<div class="film-result"><span data-i18n="film.resultLabel">Approved rows merged</span><strong id="filmMergedCount">4,552,565</strong></div>
<p class="film-promise" data-i18n="film.promise">0 price changes. 0 unreviewed changes in main.</p>
<p class="film-note" id="catalogFilmNote" data-i18n="film.note">Measured-run replay on synthetic data. Twenty Codex-authored SQL plans; execution limited to three workers at a time. Price violations were deliberately injected to test the approval policy.</p>
<div class="pr-preview-actions">
<a class="btn btn-primary" href="playground.html" data-i18n="film.try" data-analytics-id="click-015">Try branch, diff & merge</a>
<a class="film-evidence" href="catalog-run.html" data-i18n="film.evidence" data-analytics-id="click-016">Run results & method →</a>
</div>
<a class="text-link" href="blog.html" data-i18n="blog.filmLink" data-analytics-id="click-017">Behind the film: read the full experiment →</a>
</div>
</section>
<section class="wrap" aria-label="Download the agent skill">
<div class="skill-home">
<div><p class="kick" data-i18n="skill.homeKick">TAKE THE WORKFLOW WITH YOU</p><h2 data-i18n="skill.homeTitle">Give your agent a reviewed path to production.</h2><p data-i18n="skill.homeText">Download the open-source MatrixOne skill: isolated branches, complete validation, and separately authorized merges. Use your own database and existing SQL tools.</p></div>
<a class="btn btn-primary" href="agent-skill.html" data-i18n="skill.homeLink" data-analytics-id="click-018">Get the agent skill →</a>
</div>
</section>
<section class="wrap band">
<div class="band-in reveal">
<p class="band-kick" data-i18n="prob.kick">The workflow</p>
<h2 class="band-h" data-i18n="prob.h">Give agents room to work. Keep people in control of what ships.</h2>
<p class="band-p" data-i18n="prob.p">When an agent can rewrite thousands of records, a prompt and a production connection are not a review process. Git4Data gives each task an isolated branch, makes changed rows visible, and lets your team validate the result before merging. Keep your existing system of record; use MatrixOne as a workspace for proposed changes.</p>
</div>
</section>
<!-- ─────────── use cases ─────────── -->
<section class="wrap sec" id="usecases">
<header class="sec-head reveal">
<p class="kick" data-i18n="uc.kick">Where it pays off</p>
<h2 data-i18n="uc.h">Start with product catalog enrichment.</h2>
<p class="sub" data-i18n="uc.sub">A concrete workflow for teams building agents that fill in, standardize, and repair structured product data. Other use cases are adjacent hypotheses to validate with real workloads.</p>
</header>
<div class="grid usecase-grid">
<article class="uc reveal">
<span class="uc-n" data-i18n="u1.tag">PRIMARY WORKFLOW</span>
<h3 data-i18n="u1.h">Product catalog enrichment</h3>
<p data-i18n="u1.p">Standardize brands and categories, fill in descriptions and attributes, and resolve supplier inconsistencies. Review field-level changes before they return to your catalog.</p>
</article>
<article class="uc reveal">
<span class="uc-n" data-i18n="u2.tag">ADJACENT TO VALIDATE</span>
<h3 data-i18n="u2.h">CRM and master data cleanup</h3>
<p data-i18n="u2.p">Deduplicate records and normalize company, contact, or account fields while keeping proposed changes reviewable.</p>
</article>
<article class="uc reveal">
<span class="uc-n" data-i18n="u3.tag">ADJACENT TO VALIDATE</span>
<h3 data-i18n="u3.h">Business record repair</h3>
<p data-i18n="u3.p">Generate or correct structured records where teams can define clear validation rules and an approval step.</p>
</article>
</div>
<p class="foot-note reveal" data-i18n="uc.note">Git4Data is a data-mutation workspace alongside your current system of record. Data sync, access controls, export paths, and latency need to be validated for each deployment.</p>
</section>
<!-- ─────────── features ─────────── -->
<section class="wrap sec" id="features">
<header class="sec-head reveal">
<p class="kick" data-i18n="feat.kick">Capabilities</p>
<h2 data-i18n="feat.h">Four verbs. Everything else is a workflow.</h2>
<p class="sub" data-i18n="feat.sub">Git4Data brings database-native snapshots, table branches, row-level diffs, and merge into MatrixOne. Agents can work with familiar SQL while your team reviews the proposed changes before merge.</p>
</header>
<div class="grid">
<article class="card reveal">
<div class="ico i-cy"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v4"></path><circle cx="12" cy="12" r="7"></circle><path d="M12 9v3l2 2"></path></svg></div>
<h3 data-i18n="f1.h">Snapshot</h3>
<p data-i18n="f1.p">Freeze a table at an instant and give that state a name — the analogue of a commit or a tag. Nothing is copied; the snapshot is the object directory as it stood.</p>
<code class="chip">CREATE SNAPSHOT sn1 FOR TABLE mydb T;</code>
</article>
<article class="card reveal">
<div class="ico i-vi"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="6" cy="5" r="2.2"></circle><circle cx="6" cy="19" r="2.2"></circle><circle cx="18" cy="12" r="2.2"></circle><path d="M6 7.2v9.6"></path><path d="M15.8 12H10a4 4 0 0 1-4-4"></path></svg></div>
<h3 data-i18n="f2.h">Branch</h3>
<p data-i18n="f2.p">Clone a table from a snapshot into a new one that then evolves independently. Inserts, updates and deletes on either side stop affecting the other — exactly the isolation a speculating agent needs.</p>
<code class="chip">DATA BRANCH CREATE TABLE TClone FROM T{snapshot='sn1'};</code>
</article>
<article class="card reveal">
<div class="ico i-gr"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M4 7h10"></path><path d="M4 12h7"></path><path d="M4 17h12"></path><path d="M17 5v6"></path><path d="M20 8h-6"></path></svg></div>
<h3 data-i18n="f3.h">Diff</h3>
<p data-i18n="f3.p">Compare two table versions and inspect the rows that changed. Use the diff to understand an agent run before deciding what to do next.</p>
<code class="chip">DATA BRANCH DIFF T{snapshot='sn2'} AGAINST TClone{snapshot='sn3'};</code>
</article>
<article class="card reveal">
<div class="ico i-am"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M7 4v6a5 5 0 0 0 5 5h5"></path><path d="M17 4v6"></path><circle cx="7" cy="19" r="2"></circle><path d="M14 12l3 3-3 3"></path></svg></div>
<h3 data-i18n="f4.h">Merge</h3>
<p data-i18n="f4.p">Merge a branch back with an explicit conflict policy. Review and validation around that operation are part of your application workflow.</p>
<code class="chip">DATA BRANCH MERGE TClone{snapshot='sn3'} INTO T;</code>
</article>
<article class="card reveal">
<div class="ico i-pk"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3a9 9 0 1 1-9 9"></path><path d="M3 4v5h5"></path><path d="M12 8v4l3 2"></path></svg></div>
<h3 data-i18n="f5.h">Time travel</h3>
<p data-i18n="f5.p">The engine already retains point-in-time history for a recent window, so a past state is queryable by timestamp without anyone having declared it interesting in advance.</p>
<code class="chip">SELECT * FROM T{timestamp='2026-08-01 12:34:56'};</code>
</article>
<article class="card reveal">
<div class="ico i-rd"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"></path><path d="M3 12h12"></path><path d="M3 18h6"></path></svg></div>
<h3 data-i18n="f6.h">Branch without full copies</h3>
<p data-i18n="f6.p">Database-native branching avoids materializing a full copy for each candidate state. See the benchmark page for the measured environment, workload, and limits behind published results.</p>
<a class="chip" href="benchmark.html" data-i18n="feat.benchmarkLink" data-analytics-id="click-019">100 GB table branch · 0.20 s · 314 KB — benchmark method →</a>
</article>
</div>
<p class="foot-note reveal" data-i18n="feat.note">Git4Data provides branching and merge primitives. Add the validation rules, approvals, permissions, audit, and rollback procedures your workload requires; branching alone is not a complete safety system.</p>
</section>
<!-- ─────────── how it works ─────────── -->
<section class="wrap sec" id="how">
<header class="sec-head reveal">
<p class="kick" data-i18n="how.kick">How it works</p>
<h2 data-i18n="how.h">A pull request, for a table.</h2>
<p class="sub" data-i18n="how.sub">Record a version, branch from it, compare versions, reintegrate the accepted changes. The same four moves you make every day in Git — expressed as SQL your ORM, dbt model or agent can already emit.</p>
</header>
<div class="flow">
<ol class="steps">
<li class="step is-on reveal" data-step="0">
<span class="step-n">01</span>
<div>
<h3 data-i18n="s1.h">Snapshot</h3>
<p data-i18n="s1.p">Name a past state. It is metadata, not bytes — and the engine already keeps a recent window you can query by timestamp without naming anything.</p>
</div>
</li>
<li class="step reveal" data-step="1">
<span class="step-n">02</span>
<div>
<h3 data-i18n="s2.h">Branch</h3>
<p data-i18n="s2.p">Clone a table from that snapshot. The clone inherits schema and data, then evolves independently — writes on either side stop touching the other.</p>
</div>
</li>
<li class="step reveal" data-step="2">
<span class="step-n">03</span>
<div>
<h3 data-i18n="s3.h">Diff</h3>
<p data-i18n="s3.p">Compare two versions and inspect the rows that changed. Use the diff to understand a proposed agent run before deciding what happens next.</p>
</div>
</li>
<li class="step reveal" data-step="3">
<span class="step-n">04</span>
<div>
<h3 data-i18n="s4.h">Merge</h3>
<p data-i18n="s4.p">Fold the accepted rows back with an explicit conflict policy — or drop the branch and pretend it never happened.</p>
</div>
</li>
</ol>
<div class="flow-code reveal">
<div class="term term-sm">
<div class="term-bar">
<span class="tl tl-r"></span><span class="tl tl-y"></span><span class="tl tl-g"></span>
<span class="term-title" id="stepTitle">01 · Freeze</span>
<button class="copy" data-copy="#stepCode" type="button" data-i18n="copy" data-analytics-id="click-020">Copy</button>
</div>
<pre class="term-body"><code id="stepCode"></code></pre>
</div>
<p class="flow-note" data-i18n="how.note">These operations run as SQL in MatrixOne. How data is connected, permissions and validations are configured, changes are approved, and results are returned to an existing system depends on your deployment and application workflow.</p>
</div>
</div>
</section>
<!-- ─────────── benchmark teaser ─────────── -->
<section class="wrap sec" id="bench">
<div class="bench-teaser reveal">
<div class="bt-txt">
<p class="kick" data-i18n="bt.kick">BranchBench</p>
<h2 data-i18n="bt.h">Up to 18.5× faster than DoltDB.</h2>
<p class="sub" data-i18n="bt.p">End-to-end wall-clock time on BranchBench's four agentic workflows at scale factor 100 — roughly 47 million rows, five concurrent agents, twenty steps each. Warm runs.</p>
<div class="hero-cta">
<a class="btn btn-primary" href="benchmark.html" data-i18n="bt.cta" data-analytics-id="click-021">See all results</a>
</div>
</div>
<div class="bt-chart" aria-hidden="true">
<div class="bt-row"><span class="bt-lbl">software_dev</span><div class="bt-bars">
<span class="bt-bar g4"><i style="width:6.3%"></i><span>122.1 s</span></span>
<span class="bt-bar dl"><i style="width:100%"></i><span>1,925.6 s</span></span></div></div>
<div class="bt-row"><span class="bt-lbl">failure_repro</span><div class="bt-bars">
<span class="bt-bar g4"><i style="width:10.3%"></i><span>198.9 s</span></span>
<span class="bt-bar dl"><i style="width:87.1%"></i><span>1,677.3 s</span></span></div></div>
<div class="bt-row"><span class="bt-lbl">data_cleaning</span><div class="bt-bars">
<span class="bt-bar g4"><i style="width:3%"></i><span>58.6 s</span></span>
<span class="bt-bar dl"><i style="width:56.3%"></i><span>1,084.2 s</span></span></div></div>
<div class="bt-row"><span class="bt-lbl">mcts</span><div class="bt-bars">
<span class="bt-bar g4"><i style="width:2.1%"></i><span>39.8 s</span></span>
<span class="bt-bar dl"><i style="width:21.3%"></i><span>410.2 s</span></span></div></div>
<div class="bt-legend"><span class="g4"><i></i>Git4Data</span><span class="dl"><i></i>DoltDB</span></div>
</div>
</div>
</section>
<!-- ─────────── compare ─────────── -->
<section class="wrap sec" id="compare">
<header class="sec-head reveal">
<p class="kick" data-i18n="cmp.kick">Why database-native</p>
<h2 data-i18n="cmp.h">Branch and merge where the data already lives.</h2>
<p class="sub" data-i18n="cmp.sub">Git4Data puts table snapshots, branches, diffs, and merge inside MatrixOne. It is a workspace for proposed data changes and can complement the permissions and governance around your existing systems.</p>
</header>
<div class="grid grid-3">
<article class="card reveal"><div class="ico i-vi">01</div><h3 data-i18n="cmp.card1h">Isolate a task</h3><p data-i18n="cmp.card1p">Create a writable table branch from a snapshot so an agent can work against its own candidate state.</p></article>
<article class="card reveal"><div class="ico i-gr">02</div><h3 data-i18n="cmp.card2h">Inspect changed rows</h3><p data-i18n="cmp.card2p">Compare versions at row level and make the proposed changes visible to your application or review process.</p></article>
<article class="card reveal"><div class="ico i-am">03</div><h3 data-i18n="cmp.card3h">Choose what happens next</h3><p data-i18n="cmp.card3p">Merge a branch with an explicit conflict policy, or discard the branch. Your checks and approval gates stay in your control.</p></article>
</div>
<p class="foot-note reveal" data-i18n="cmp.note">Branching and diff do not replace IAM, row-level security, audit systems, backups, or human approval. Confirm the exact semantics and data path for your MatrixOne version and deployment.</p>
</section>
<!-- ─────────── start / CTA ─────────── -->
<section class="wrap sec" id="start">
<div class="cta reveal">
<div class="cta-txt">
<p class="kick" data-i18n="cta.kick">Build with Git4Data</p>
<h2 data-i18n="cta.h">Try a branch. Inspect a diff. Then bring your workload.</h2>
<p class="sub" data-i18n="cta.sub">Start with the live SQL playground, then run MatrixOne locally and follow the documented branch, diff, and merge workflow.</p>
<div class="hero-cta">
<a class="btn btn-primary btn-lg" href="playground.html" data-i18n="cta.b1" data-analytics-id="click-022">Try the live playground</a>
<a class="btn btn-ghost btn-lg" href="https://github.com/matrixorigin/matrixone" target="_blank" rel="noopener" data-i18n="cta.b2" data-analytics-id="click-023">Open MatrixOne on GitHub</a>
</div>
</div>
<div class="term term-sm cta-term">
<div class="term-bar">
<span class="tl tl-r"></span><span class="tl tl-y"></span><span class="tl tl-g"></span>
<span class="term-title">bash</span>
<button class="copy" data-copy="#startCode" type="button" data-i18n="copy" data-analytics-id="click-024">Copy</button>
</div>
<pre class="term-body"><code id="startCode"><span class="c-cmt"># 1 · run MatrixOne</span>
docker run -d -p 6001:6001 --name matrixone \
matrixorigin/matrixone:latest
<span class="c-cmt"># 2 · connect with any MySQL client</span>
mysql -h 127.0.0.1 -P 6001 -u root -p111
<span class="c-cmt"># 3 · your first versioned table</span>
<span class="c-kw">CREATE SNAPSHOT</span> s0 <span class="c-kw">FOR TABLE</span> demo t;</code></pre>
</div>
</div>
</section>
</main>
<!-- ─────────── footer ─────────── -->
<footer class="footer">
<div class="wrap footer-in">
<div class="foot-brand">
<a class="brand" href="#top" data-analytics-id="click-025">
<svg class="brand-mark" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<circle cx="6" cy="4" r="2"></circle><circle cx="6" cy="20" r="2"></circle><circle cx="18" cy="12" r="2"></circle>
<path d="M6 6v12"></path><path d="M16 12H9a3 3 0 0 1-3-3"></path>
</svg>
<span class="brand-txt">git<span class="brand-accent">4</span>data</span>
</a>
<p data-i18n="foot.tag">Version control for data, inside the database.</p>
</div>
<nav class="foot-cols" aria-label="Footer">
<div>
<h4 data-i18n="foot.c1">Project</h4>
<a href="https://github.com/matrixorigin/matrixone" target="_blank" rel="noopener" data-analytics-id="click-026">MatrixOne</a>
<a href="https://docs.matrixorigin.cn/" target="_blank" rel="noopener" data-i18n="foot.docs" data-analytics-id="click-027">Documentation</a>
<a href="https://www.matrixorigin.io/" target="_blank" rel="noopener" data-analytics-id="click-028">MatrixOrigin</a>
</div>
<div>
<h4 data-i18n="foot.c2">Learn</h4>
<a href="blog.html" data-i18n="nav.blog" data-analytics-id="click-029">Blog</a>
<a href="agent-skill.html" data-i18n="nav.skill" data-analytics-id="click-030">Agent skill</a>
<a href="https://www.matrixorigin.io/blog/git4data-part4-landscape" target="_blank" rel="noopener" data-i18n="foot.blog" data-analytics-id="click-031">Git4Data deep dive</a>
<a href="https://arxiv.org/abs/2604.03927" target="_blank" rel="noopener" data-i18n="foot.paper" data-analytics-id="click-032">Research paper</a>
<a href="benchmark.html" data-i18n="foot.cmp" data-analytics-id="click-033">Benchmark results</a>
</div>
<div>
<h4 data-i18n="foot.c3">Community</h4>
<a href="https://github.com/matrixorigin/matrixone/discussions" target="_blank" rel="noopener" data-analytics-id="click-034">Discussions</a>
<a href="https://github.com/matrixorigin/matrixone/issues" target="_blank" rel="noopener" data-analytics-id="click-035">Issues</a>
</div>
</nav>
</div>
<div class="wrap foot-bottom">
<span>© <span id="yr">2026</span> git4data.ai</span>
<span data-i18n="foot.built">Built on MatrixOne · Apache 2.0</span>
</div>
</footer>
<script src="assets/js/dag.js?v=4" defer></script>
<script src="assets/js/i18n.js?v=10" defer></script>
<script src="assets/js/main.js?v=6" defer></script>
<script src="/assets/js/analytics.js?v=2" defer></script>
<p data-analytics-privacy style="text-align:center;padding:16px 24px;font-size:11px;color:#8f9cb3"><a href="/privacy" data-analytics-id="click-036">Analytics & privacy · 网站统计与隐私</a></p>
</body>
</html>