-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwhy.html
More file actions
731 lines (696 loc) · 37.1 KB
/
Copy pathwhy.html
File metadata and controls
731 lines (696 loc) · 37.1 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
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>frame - why</title>
<link rel="icon" href="/favicon.ico" sizes="any" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<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=Chakra+Petch:wght@700&family=Space+Grotesk:wght@400;500;600;700&display=swap" rel="stylesheet" />
<style>
* { box-sizing: border-box; }
html, body {
margin: 0;
background: #ffffff;
color: #000000;
overflow-x: hidden;
-webkit-font-smoothing: antialiased;
}
body {
font-family: 'Space Grotesk', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}
.topbar {
position: fixed;
top: 0;
left: 0;
right: 0;
height: 84px;
background: linear-gradient(to bottom, #ffffff 55%, rgba(255, 255, 255, 0));
pointer-events: none;
z-index: 6;
}
.brand {
position: fixed;
top: max(8px, env(safe-area-inset-top, 0px)); left: max(8px, env(safe-area-inset-left, 0px));
margin: 0;
z-index: 8;
font-family: 'Chakra Petch', sans-serif;
font-weight: 700;
color: #000000;
font-size: clamp(18px, 5vw, 40px);
letter-spacing: 0.08em;
line-height: 1;
}
.home-link { color: inherit; text-decoration: none; }
.hl-orange, .hl-gray, .hl-green, .hl-yellow, .hl-xpblue,
.hl-blue-w, .hl-rainbow, .hl-purple, .hl-black-w,
.hl-sandbox, .hl-verify, .hl-security, .hl-design,
.hl-surf, .hl-local, .hl-first, .hl-litegray, .hl-truth, .hl-goal,
.hl-ltblue, .hl-reality, .hl-rose {
color: #000000;
box-decoration-break: clone;
-webkit-box-decoration-break: clone;
padding: 0.02em 0.12em;
}
.no-pl { padding-left: 0 !important; }
.no-pr { padding-right: 0 !important; }
.hl-orange { background: #ff8a00; }
.hl-gray { background: #d0d0d0; }
.hl-green { background: #4caf50; }
.hl-yellow { background: #ffe600; }
.hl-xpblue { background: #245edc; }
.hl-blue-w { background: #1a73e8; color: #ffffff; }
.hl-purple { background: #9b59b6; color: #000000; }
.hl-black-w { background: #000000; color: #ffffff; }
.hl-sandbox { background: #000000; color: #ffe600; }
.hl-verify { background: #ffffff; color: #1a9e3f; }
.hl-security { background: #000000; color: #ff3b30; }
.hl-design { background: #bdbdbd; color: #5aa9ff; }
.hl-local { background: #ffe600; color: #1a73e8; }
.hl-first { background: #000000; color: #ffffff; }
.hl-litegray { background: #e6e6e6; }
.hl-truth { background: #0b4d2a; color: #7cfa8a; }
.hl-goal { background: #f4f4ef; color: #17a34a; }
.hl-ltblue { background: #9ecbff; }
.hl-reality { background: #000000; color: #a34bff; }
.hl-rose { background: #ffb3c1; }
.tg { color: #cccccc; }
.dtxt { color: #5aa9ff; }
.vtxt { color: #1a9e3f; }
.hl-rainbow {
background: linear-gradient(90deg,#ff004c,#ff8a00,#ffe600,#25d366,#00e0ff,#3b5bff,#a34bff,#ff004c);
background-size: 200% auto;
color: #ffffff;
animation: hue-move 6s linear infinite;
}
.hl-surf {
background: linear-gradient(90deg,#25d366,#00e0ff,#1a73e8,#25d366);
background-size: 200% auto;
-webkit-background-clip: text;
background-clip: text;
color: transparent;
-webkit-text-fill-color: transparent;
animation: hue-move 4s linear infinite;
}
@keyframes hue-move { to { background-position: 200% center; } }
.corner {
position: fixed;
width: clamp(28px, 6vw, 56px);
height: clamp(28px, 6vw, 56px);
border-color: #000000;
border-style: solid;
border-width: 0;
z-index: 10;
pointer-events: none;
}
.corner.tl { top: env(safe-area-inset-top, 0px); left: env(safe-area-inset-left, 0px); border-top-width: 2.5px; border-left-width: 2.5px; }
.corner.tr { top: env(safe-area-inset-top, 0px); right: env(safe-area-inset-right, 0px); border-top-width: 2.5px; border-right-width: 2.5px; }
.corner.bl { bottom: env(safe-area-inset-bottom, 0px); left: env(safe-area-inset-left, 0px); border-bottom-width: 2.5px; border-left-width: 2.5px; }
.corner.br { bottom: env(safe-area-inset-bottom, 0px); right: env(safe-area-inset-right, 0px); border-bottom-width: 2.5px; border-right-width: 2.5px; }
main {
max-width: 760px;
margin: 0 auto;
padding: max(88px, calc(env(safe-area-inset-top, 0px) + 72px)) max(16px, env(safe-area-inset-right, 0px), clamp(16px, 6vw, 48px)) max(96px, calc(env(safe-area-inset-bottom, 0px) + 64px)) max(16px, env(safe-area-inset-left, 0px), clamp(16px, 6vw, 48px));
}
.sec { margin: 0 0 clamp(40px, 7vh, 64px); }
.sec-head {
display: flex;
align-items: flex-end;
column-gap: clamp(12px, 2vw, 20px);
margin-left: calc(-1 * clamp(24px, 6vw, 96px));
padding-left: 0;
}
.sec-head h2 {
margin: 0;
flex: 0 1 auto;
text-align: left;
font-family: 'Chakra Petch', sans-serif;
font-weight: 700;
font-size: clamp(1.4rem, 4.5vw, 2rem);
letter-spacing: 0.02em;
line-height: 1.15;
}
.sec-head .hline {
flex: 1 1 24px;
min-width: 24px;
height: 0;
border-top: 1px solid #000000;
margin-bottom: 0;
}
.sec-body {
border-right: 1px solid #000000;
text-align: left;
padding: clamp(16px, 2.6vh, 24px) clamp(16px, 3vw, 28px) clamp(24px, 3.8vh, 36px) 0;
}
.lede .sec-head h2 {
font-size: clamp(2rem, 7vw, 3.2rem);
line-height: 1.05;
}
p {
font-size: clamp(1.02rem, 2.4vw, 1.18rem);
font-weight: 400;
line-height: 1.7;
margin: 0 0 clamp(14px, 2vh, 20px);
}
p.lead {
font-family: 'Space Grotesk', sans-serif;
font-weight: 700;
font-size: clamp(1.15rem, 3vw, 1.5rem);
line-height: 1.35;
letter-spacing: 0.01em;
margin: 0 0 clamp(16px, 2.6vh, 24px);
}
.sec-body > *:last-child { margin-bottom: 0; }
p.spaced { margin-bottom: clamp(10px, 1.4vh, 14px); }
ul {
font-size: clamp(1.02rem, 2.4vw, 1.18rem);
line-height: 1.7;
margin: 0 0 clamp(16px, 2.4vh, 24px);
padding-left: 1.3em;
list-style-position: outside;
}
ul li { margin-bottom: 6px; }
.diagram {
display: inline-block;
text-align: left;
font-family: 'Space Grotesk', ui-monospace, SFMono-Regular, Menlo, monospace;
white-space: pre;
overflow-x: auto;
max-width: 100%;
background: #f5f5f5;
border: 1px solid #e2e2e2;
border-radius: 10px;
padding: clamp(16px, 3vw, 24px);
font-size: clamp(0.85rem, 2.2vw, 1rem);
line-height: 1.5;
letter-spacing: 0.02em;
margin: 0 0 clamp(18px, 2.6vh, 26px);
}
.table-wrap {
overflow-x: auto;
text-align: left;
margin: 0 0 clamp(18px, 2.6vh, 26px);
-webkit-overflow-scrolling: touch;
}
table {
width: 100%;
border-collapse: collapse;
font-size: clamp(0.9rem, 2.1vw, 1.05rem);
line-height: 1.55;
text-align: left;
}
thead th {
text-align: left;
font-family: 'Chakra Petch', sans-serif;
font-weight: 700;
background: #000000;
color: #ffffff;
white-space: nowrap;
}
th, td {
border: 1px solid #e2e2e2;
padding: 10px 14px;
vertical-align: top;
}
tbody td:first-child { width: 46%; color: #444444; }
tbody td:last-child { font-weight: 500; }
tbody tr:nth-child(even) td { background: #fafafa; }
.note {
font-weight: 600;
font-size: clamp(1.02rem, 2.4vw, 1.18rem);
line-height: 1.7;
margin: clamp(10px, 2vh, 18px) 0 0;
}
.footer-note {
text-align: center;
margin: clamp(48px, 8vh, 80px) 0 0;
font-family: 'Chakra Petch', sans-serif;
font-weight: 700;
font-size: clamp(1.2rem, 3.5vw, 1.6rem);
line-height: 1.4;
}
.site-footer {
border-top: 1px solid #000000;
padding: clamp(40px, 7vh, 88px) clamp(24px, 6vw, 64px) clamp(64px, 10vh, 120px);
}
.foot-inner {
max-width: 1180px;
margin: 0 auto;
}
.foot-kicker {
font-family: 'Chakra Petch', sans-serif;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.18em;
font-size: clamp(0.8rem, 2vw, 0.95rem);
margin: 0 0 clamp(12px, 2vh, 18px);
}
.foot-tag {
max-width: 620px;
font-size: clamp(1.05rem, 2.6vw, 1.35rem);
font-weight: 400;
line-height: 1.6;
margin: 0 0 clamp(28px, 5vh, 48px);
}
.foot-links {
display: flex;
flex-wrap: wrap;
gap: clamp(16px, 3vw, 36px);
margin: 0 0 clamp(36px, 7vh, 72px);
}
.flink {
font-family: 'Chakra Petch', sans-serif;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.06em;
font-size: clamp(0.85rem, 2vw, 1rem);
color: #000000;
cursor: pointer;
text-decoration: none;
opacity: 0.72;
transition: opacity 0.15s ease;
}
.flink:hover { opacity: 1; }
.foot-brand {
font-family: 'Chakra Petch', sans-serif;
font-weight: 700;
line-height: 0.82;
letter-spacing: 0.01em;
font-size: clamp(4rem, 22vw, 15rem);
margin: 0 0 clamp(24px, 4vh, 40px);
}
.foot-bottom {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
gap: 10px 24px;
padding-top: clamp(16px, 2.4vh, 22px);
border-top: 1px solid #000000;
font-size: clamp(0.82rem, 1.9vw, 0.95rem);
letter-spacing: 0.02em;
opacity: 0.72;
}
/* mobile: safe-area, overflow, touch */
html { overflow-x: hidden; }
@media (max-width: 480px) {
.row { grid-template-columns: minmax(72px, 34%) 1fr !important; }
}
@media (max-width: 480px) {
.sec-head { margin-left: 0; }
.features { grid-template-columns: 1fr; }
}
/* docs mobile */
</style>
</head>
<body>
<div class="topbar"></div>
<h1 class="brand"><a class="home-link" href="/">FRAME</a></h1>
<span class="corner tl"></span>
<span class="corner tr"></span>
<span class="corner bl"></span>
<span class="corner br"></span>
<main>
<section class="sec lede">
<div class="sec-head"><h2>Why FRAME?</h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">Today's internet forces every application to invent its own version of reality.</p>
<p>The internet was built around websites, accounts, passwords, servers, and applications that each maintain their own version of reality.</p>
<p class="spaced">Every service has its own identity system.</p>
<p class="spaced">Its own storage.</p>
<p class="spaced">Its own permissions.</p>
<p class="spaced">Its own APIs.</p>
<p class="spaced">Its own data model.</p>
<p class="spaced">Its own synchronization.</p>
<p>Its own way of representing the world.</p>
<p>The result is a fragmented ecosystem where nothing naturally works together.</p>
<p>FRAME was created to solve that problem.</p>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-gray no-pr">A Different </span><span class="hl-rose">Foundation</span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">FRAME is a foundation to build on, not another app to compete with.</p>
<p class="spaced">FRAME is not another application.</p>
<p class="spaced">It is not another cloud platform.</p>
<p class="spaced">It is not another database.</p>
<p>It is a foundation for building software around a single, consistent model of reality.</p>
<p>Instead of every application owning its own world, FRAME provides one authoritative kernel that applications build upon.</p>
<p class="spaced">Applications no longer compete to own your data.</p>
<p>They simply understand it in different ways.</p>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-gray no-pr">One </span><span class="hl-reality">Reality</span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">Reality should exist once, not once inside every application.</p>
<p>Imagine a room.</p>
<p>Today, every application stores its own version of that room.</p>
<p class="spaced">A game stores one.</p>
<p class="spaced">A robot stores another.</p>
<p class="spaced">A mapping application stores another.</p>
<p class="spaced">An AI builds another.</p>
<p>A digital twin creates another.</p>
<p>Each system spends enormous effort converting between formats instead of understanding the same world.</p>
<p>FRAME changes this.</p>
<p class="spaced">Reality exists once.</p>
<p>Applications simply observe it.</p>
<p>Different applications can render it differently, analyze it differently, or interact with it differently, but they all reference the same underlying information.</p>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-gray no-pl no-pr"><span class="hl-ltblue">Applications</span> Shouldn't Own <span class="hl-reality">Reality</span></span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">Applications should build on reality, not rebuild it every time.</p>
<p>Traditional software often looks like this:</p>
<div class="diagram">Application
↓
Database
↓
Custom APIs
↓
Custom Identity
↓
Custom Permissions</div>
<p>Every application rebuilds the same infrastructure.</p>
<p>FRAME reverses the model.</p>
<div class="diagram">FRAME
├── Reality
├── Identity
├── Permissions
├── Storage
├── Compute
└── Views
↑
Applications</div>
<p>Applications become dramatically simpler because they no longer need to recreate the foundations every time.</p>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-gray">One Source of </span><span class="hl-truth">Truth</span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">Every change happens in one authoritative place.</p>
<p>When information changes, there should be one authoritative place where that change occurs.</p>
<p class="spaced">Not five databases.</p>
<p class="spaced">Not three caches.</p>
<p>Not dozens of synchronization systems.</p>
<p>FRAME provides one mutation path.</p>
<p>Every application observes the same result.</p>
<p>This eliminates an entire category of synchronization bugs, conflicting states, and duplicated logic.</p>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-litegray">Compute Should Not Own </span><span class="hl-blue-w">Data</span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">Computation produces results; it never owns them.</p>
<p>Modern software often mixes computation with storage.</p>
<p class="spaced">AI systems generate data.</p>
<p class="spaced">Physics engines generate data.</p>
<p class="spaced">Rendering pipelines generate data.</p>
<p>Simulation engines generate data.</p>
<p>Eventually nobody knows which component is actually authoritative.</p>
<p>FRAME separates these responsibilities.</p>
<p class="spaced">Compute performs work.</p>
<p class="spaced">Reality stores results.</p>
<p>Algorithms never become the source of truth.</p>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-gray no-pr">Multiple Views, One </span><span class="hl-reality">Reality</span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">Many views can share one underlying truth.</p>
<p>The same information can be viewed in many different ways.</p>
<p>A room could appear as:</p>
<ul>
<li>A voxel world</li>
<li>A photorealistic reconstruction</li>
<li>A CAD model</li>
<li>A robotics navigation map</li>
<li>A thermal visualization</li>
<li>A semantic scene graph</li>
<li>A simple list of objects</li>
</ul>
<p>These are all different views of the same reality.</p>
<p>Changing how something is visualized should never require changing the underlying information.</p>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-local">Local </span><span class="hl-first">First</span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">Your computer should understand its own data.</p>
<p>Your computer should be capable of understanding its own data.</p>
<p>FRAME is designed so work can happen locally whenever possible.</p>
<p>Applications shouldn't require constant communication with remote servers simply to function.</p>
<p>Cloud computing remains useful, but it becomes a capability, not a requirement.</p>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-gray">Runs <span class="hl-surf">Everywhere</span></span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">One architecture, every deployment model.</p>
<p>FRAME is designed to run wherever you need it.</p>
<p>It can boot directly on bare metal, run as a native desktop application, execute as a lightweight command-line process, operate inside containers or virtual machines, or run entirely in a modern web browser using WebAssembly.</p>
<p>Because every FRAME instance speaks the same protocols, a FRAME can be cloned, synchronized, backed up, or migrated between devices without changing the applications built on it.</p>
<p>Whether running on a Raspberry Pi, a laptop, a server, or in the browser, each instance can participate in a user-owned, decentralized cloud where storage and compute are shared between trusted FRAME nodes rather than relying on a single centralized provider.</p>
<p>One architecture, multiple deployment models, with the freedom to choose where your data and applications live.</p>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-security">Security</span><span class="hl-gray"> by <span class="dtxt">Design</span></span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">Permissions, not passwords.</p>
<p>Most systems rely on passwords and broad trust.</p>
<p>FRAME is designed around explicit capabilities.</p>
<p>Applications receive only the permissions they actually require.</p>
<p>Instead of asking:</p>
<p>"Who are you?"</p>
<p>FRAME asks:</p>
<p>"What are you allowed to do?"</p>
<p>This creates simpler, more auditable security boundaries.</p>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-sandbox">Sandboxed</span><span class="hl-gray"> and <span class="vtxt">Verifiable</span></span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">Everything runs sandboxed, and every FRAME can prove it hasn't been tampered with.</p>
<p>FRAME is sandboxed from the ground up.</p>
<p>The kernel runs isolated from the system around it, and everything built inside it, including dApps, is sandboxed entirely.</p>
<p>An application can only touch what it has been explicitly granted. It cannot reach into other applications, other data, or the host system on its own.</p>
<p>Because code in FRAME is verified through FRAME itself, an instance can instantly tell whether its code or state has been tampered with.</p>
<p>Integrity isn't assumed; it is continuously provable.</p>
<p>Isolation extends between FRAMEs as well.</p>
<p>Even two FRAMEs running on the same machine are fully separated. They cannot silently read or influence each other.</p>
<p>The only way they interact is through explicit, permissioned capabilities: narrow, revocable grants that define exactly what one FRAME may ask of another.</p>
<p>Nothing communicates by default. Everything communicates by permission.</p>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-xpblue"><span class="tg">Many Chains, </span>One Foundation</span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">Chain-agnostic by design: one model across many blockchains.</p>
<p>Blockchains gave the world verifiable ownership, settlement, and trust without intermediaries, but each chain became its own island, with its own accounts, tokens, and rules.</p>
<p>FRAME is deliberately chain-agnostic.</p>
<p>Identity, permissions, and ownership in FRAME can be anchored to whichever blockchain a use case requires: one chain, several, or new ones that don't exist yet.</p>
<p>Because FRAME separates reality from the systems that verify it, the same underlying information can be settled, proven, or notarized across multiple chains at once.</p>
<p class="spaced">Ownership can be recorded on one chain.</p>
<p class="spaced">Payments can settle on another.</p>
<p>Provenance and audit trails can live on a third.</p>
<p>Applications never have to care which chain is underneath. They interact with one consistent model, and FRAME translates that intent to the right networks.</p>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-gray no-pl"><span class="hl-yellow">Abstractions</span> That Let <span class="hl-green">dApps</span> Emerge</span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">When the hard parts become shared abstractions, dApps flourish.</p>
<p>Most decentralized applications today are forced to rebuild the same low-level machinery: wallets, key management, indexing, cross-chain bridges, and custom data formats.</p>
<p>FRAME turns those concerns into shared abstractions.</p>
<p>Developers build on a stable foundation of identity, permissions, storage, and verifiable state instead of reinventing it for every chain and every app.</p>
<p>On top of that foundation, higher-level abstractions can emerge:</p>
<ul>
<li>Portable identity that follows a person across every app and chain</li>
<li>Ownership and provenance that any application can verify</li>
<li>Composable dApps that read and extend the same shared reality</li>
<li>Cross-chain applications that behave as one seamless experience</li>
<li>Agents and services that transact on a user's behalf under explicit, revocable permissions</li>
</ul>
<p>This is how real benefit reaches the world: transparent supply chains, verifiable digital ownership, self-sovereign identity, open financial tools, and public infrastructure that anyone can audit and build upon.</p>
<p>When the hard parts become shared abstractions, small teams can ship powerful, trustworthy applications, and an entire ecosystem of dApps can grow on common ground instead of walled gardens.</p>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-orange">Governance</span><span class="hl-gray">, as an Abstraction</span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">Governance isn't hard-coded into the kernel; it's expressed abstractly through capabilities.</p>
<p>FRAME doesn't impose a single way to make decisions.</p>
<p>Because every permission in FRAME is a capability, governance simply becomes the question of who is allowed to grant, revoke, or change those capabilities.</p>
<p>That turns governance into an abstraction that applications build on top of, rather than something baked rigidly into the foundation.</p>
<p>dApps and communities can define their own models:</p>
<ul>
<li>Voting, quorums, and proposals</li>
<li>Roles, councils, and multisig approvals</li>
<li>DAOs, guilds, workspaces, and organizations</li>
<li>Time-locked, delegated, or revocable authority</li>
</ul>
<p>Each of these is just a pattern for deciding how capabilities are issued and withdrawn.</p>
<p>A governance decision, on-chain or off, resolves into a concrete change in permissions that FRAME then enforces.</p>
<p>Because those changes are verifiable, governance becomes transparent and auditable: anyone can confirm who authorized what, and applications can trust the outcome without trusting a central operator.</p>
<p>The same kernel can host a solo user granting themselves capabilities and a global community coordinating through elaborate governance, without changing how FRAME works underneath.</p>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-blue-w">Identity</span><span class="hl-litegray">, Moved Up a Layer</span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">One identity you own, with application-level roles layered on top.</p>
<div class="table-wrap">
<table>
<thead>
<tr><th>Today</th><th>With FRAME</th></tr>
</thead>
<tbody>
<tr><td>Every application has its own account system.</td><td>One FRAME identity can be used across every application through capabilities.</td></tr>
<tr><td>Logging into every service means creating another username, password, or OAuth account.</td><td>Most dApps can use your existing FRAME identity with no additional account creation.</td></tr>
<tr><td>If you delete an account, you often lose access to your data.</td><td>Your identity belongs to your FRAME, not to the application using it.</td></tr>
<tr><td>Custom account systems require every application to implement authentication from scratch.</td><td>dApps can create application-specific identities as abstractions on top of your FRAME identity when needed, without creating a completely separate trust model.</td></tr>
<tr><td>Identity is usually controlled by the service provider.</td><td>Identity is user-owned, while dApps may define their own profiles, roles, organizations, guilds, workspaces, or characters as optional application-level abstractions.</td></tr>
<tr><td>Applications cannot easily share identity or permissions.</td><td>Capabilities allow applications to securely share identity and permissions without sharing passwords or credentials.</td></tr>
</tbody>
</table>
</div>
<p class="note">The important idea is that FRAME doesn't eliminate application-specific identities; it moves them up a layer.</p>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-gray no-pr">Built for <span class="hl-rainbow">AI</span></span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">AI works with the same shared reality as everyone else.</p>
<p>Artificial intelligence is becoming another consumer of information, not a replacement for it.</p>
<p>AI models should not maintain their own disconnected representation of reality.</p>
<p>Instead, they should interact with the same shared information that humans, robots, applications, and simulations already use.</p>
<p>This allows multiple AI systems to collaborate without continuously translating between incompatible formats.</p>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-gray no-pl"><span class="hl-purple">Built for More</span> Than One Industry</span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">One kernel, countless industries.</p>
<p>FRAME is intentionally domain-agnostic.</p>
<p>The same kernel can support:</p>
<ul>
<li>Digital twins</li>
<li>Robotics</li>
<li>Autonomous vehicles</li>
<li>Mapping</li>
<li>Industrial automation</li>
<li>Simulation</li>
<li>Scientific visualization</li>
<li>AI agents</li>
<li>Smart homes</li>
<li>Geographic information systems</li>
<li>Media production</li>
<li>Research platforms</li>
</ul>
<p>Each application brings its own logic while relying on the same underlying foundation.</p>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-black-w">Open by Design</span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">Open, stable, and verifiable by design.</p>
<p>FRAME is designed to be fully open source.</p>
<p class="spaced">The architecture should be understandable.</p>
<p class="spaced">The interfaces should be stable.</p>
<p>The behavior should be verifiable.</p>
<p>Software that becomes fundamental infrastructure should not depend on hidden implementations or proprietary protocols.</p>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-gray">Why Now?</span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">The old assumption, that every app builds its own world, no longer scales.</p>
<p>Computing is changing.</p>
<p>AI, robotics, digital twins, spatial computing, and automation are all converging.</p>
<p>Yet most software still assumes every application should build its own isolated world.</p>
<p>That assumption no longer scales.</p>
<p>Instead of building increasingly complicated systems that translate between hundreds of disconnected models, FRAME proposes something simpler:</p>
<p class="spaced">Build one foundation.</p>
<p>Let every application stand on it.</p>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-gray no-pr">The Internet Today vs. <span class="hl-black-w">FRAME</span></span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">The same shift, line by line.</p>
<div class="table-wrap">
<table>
<thead>
<tr><th>Today</th><th>With FRAME</th></tr>
</thead>
<tbody>
<tr><td>Every application has its own account system.</td><td>One identity can be used across every FRAME application through capabilities.</td></tr>
<tr><td>Every application stores its own copy of your data.</td><td>Data exists once and can be understood by many applications.</td></tr>
<tr><td>Every service has its own API.</td><td>Applications communicate through a common kernel and shared data model.</td></tr>
<tr><td>Data is constantly copied, synchronized, and converted.</td><td>Applications reference the same underlying reality instead of duplicating it.</td></tr>
<tr><td>Passwords are the primary form of authentication.</td><td>Fine-grained capabilities determine what software is allowed to access.</td></tr>
<tr><td>Applications own your data.</td><td>You own your FRAME; applications request permission to use your data.</td></tr>
<tr><td>Cloud providers own the infrastructure.</td><td>Anyone can contribute storage and compute through user-owned FRAME nodes.</td></tr>
<tr><td>AI builds its own disconnected understanding of information.</td><td>AI works directly with the same shared reality as every other application.</td></tr>
<tr><td>Every app reinvents permissions, storage, and synchronization.</td><td>Those services are provided once by the FRAME kernel.</td></tr>
<tr><td>Applications rarely work together naturally.</td><td>Applications can interoperate because they speak the same language.</td></tr>
<tr><td>Data formats vary between every platform.</td><td>FrameUnits provide a common representation for all applications.</td></tr>
<tr><td>Reality is fragmented across databases.</td><td>Reality has a single authoritative source.</td></tr>
<tr><td>Rendering often becomes the data model.</td><td>Rendering is simply one view of reality.</td></tr>
<tr><td>Compute pipelines often become authoritative.</td><td>Compute produces results; reality stores them.</td></tr>
<tr><td>Applications lock users into their own ecosystems.</td><td>Applications become interchangeable interfaces to the same data.</td></tr>
<tr><td>Migrating between computers is often difficult.</td><td>A FRAME can be cloned or migrated between devices with minimal friction.</td></tr>
<tr><td>Running software usually depends on a specific operating system or cloud platform.</td><td>FRAME can run on bare metal, desktop, servers, containers, or entirely in the browser.</td></tr>
<tr><td>Every company builds another backend.</td><td>The kernel provides common infrastructure, letting developers focus on applications.</td></tr>
<tr><td>Collaboration requires every service to integrate with every other service.</td><td>Collaboration happens naturally because applications share the same foundation.</td></tr>
<tr><td>Trust depends heavily on centralized providers.</td><td>Trust can be distributed across user-owned FRAME instances.</td></tr>
<tr><td>Software is organized around websites and services.</td><td>Software is organized around capabilities and shared reality.</td></tr>
<tr><td>Most cloud services require an internet connection to function fully.</td><td>FRAME is local-first and synchronizes when needed rather than requiring constant connectivity.</td></tr>
<tr><td>Every new application starts by rebuilding authentication, storage, and APIs.</td><td>New applications start by building on an existing kernel.</td></tr>
<tr><td>Infrastructure is often hidden behind proprietary platforms.</td><td>The kernel and protocols are open, inspectable, and extensible.</td></tr>
<tr><td>The web connects applications.</td><td>FRAME connects data, compute, devices, AI, and applications through one shared operating model.</td></tr>
</tbody>
</table>
</div>
</div>
</section>
<section class="sec">
<div class="sec-head"><h2><span class="hl-gray no-pr">The <span class="hl-goal">Goal</span></span></h2><span class="hline"></span></div>
<div class="sec-body">
<p class="lead">One kernel where applications share reality instead of recreating it.</p>
<p class="spaced">FRAME isn't trying to replace every application.</p>
<p class="spaced">It isn't trying to replace Linux.</p>
<p>It isn't trying to replace the web.</p>
<p>Its goal is much simpler.</p>
<p>Provide a consistent kernel where applications can share reality instead of constantly recreating it.</p>
<p>Everything else, rendering, AI, simulation, robotics, visualization, automation, is simply another way of interacting with that shared foundation.</p>
</div>
</section>
<p class="footer-note">The internet connected computers.<br />FRAME aims to make software speak the same language.</p>
</main>
<footer class="site-footer">
<div class="foot-inner">
<p class="foot-kicker">Contribute</p>
<p class="foot-tag">We're building a shared foundation where software speaks the same language. Come build on it.</p>
<nav class="foot-links">
<a class="flink" href="/why.html">Why FRAME</a>
<a class="flink" href="/how.html">How it works</a>
<a class="flink" href="/problems.html">Problems solved</a>
<a class="flink" href="/inhabit.html">Inhabit</a>
<a class="flink" href="/attention.html">Attention</a>
<a class="flink" href="/start.html">Start</a>
<a class="flink" href="https://github.com/frameprotocol" target="_blank" rel="noopener">GitHub</a>
<a class="flink" href="https://x.com/frame_protocol" target="_blank" rel="noopener">X</a>
</nav>
<div class="foot-bottom">
<span>Open source · Local-first · Verifiable</span>
</div>
</div>
</footer>
</body>
</html>