sandymount 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CNAME +1 -0
- package/MAGIC.md +9 -0
- package/README.md +235 -2
- package/bin/sandymount.js +115 -0
- package/getting-started.html +439 -0
- package/index.html +680 -0
- package/manifesto.html +203 -0
- package/og-image.png +0 -0
- package/og-image.svg +86 -0
- package/package.json +31 -5
- package/styles.css +907 -0
- package/tools.html +234 -0
package/index.html
ADDED
|
@@ -0,0 +1,680 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Sandymount - The Open, Agentic, Decentralized Web</title>
|
|
7
|
+
|
|
8
|
+
<!-- Primary Meta Tags -->
|
|
9
|
+
<meta name="title" content="Sandymount - The Open, Agentic, Decentralized Web">
|
|
10
|
+
<meta name="description" content="SAND is the stack for the decentralized web. Like LAMP was for open source, SAND (Solid, ActivityPub, Nostr, DID) provides four layers to build a web where users own their data.">
|
|
11
|
+
<meta name="keywords" content="Solid, ActivityPub, Nostr, Ditto, decentralized web, SAND stack, linked data, agentic AI, data sovereignty">
|
|
12
|
+
<meta name="author" content="Sandymount">
|
|
13
|
+
|
|
14
|
+
<!-- Open Graph / Facebook -->
|
|
15
|
+
<meta property="og:type" content="website">
|
|
16
|
+
<meta property="og:url" content="https://sandy-mount.com/">
|
|
17
|
+
<meta property="og:title" content="Sandymount - The Open, Agentic, Decentralized Web">
|
|
18
|
+
<meta property="og:description" content="LAMP built the open web. SAND builds the decentralized one. Four layers: Solid, ActivityPub, Nostr, DID.">
|
|
19
|
+
<meta property="og:image" content="https://sandy-mount.com/og-image.png">
|
|
20
|
+
<meta property="og:site_name" content="Sandymount">
|
|
21
|
+
|
|
22
|
+
<!-- Twitter -->
|
|
23
|
+
<meta property="twitter:card" content="summary_large_image">
|
|
24
|
+
<meta property="twitter:url" content="https://sandy-mount.com/">
|
|
25
|
+
<meta property="twitter:title" content="Sandymount - The Open, Agentic, Decentralized Web">
|
|
26
|
+
<meta property="twitter:description" content="LAMP built the open web. SAND builds the decentralized one. Four layers: Solid, ActivityPub, Nostr, DID.">
|
|
27
|
+
<meta property="twitter:image" content="https://sandy-mount.com/og-image.png">
|
|
28
|
+
|
|
29
|
+
<!-- Favicon -->
|
|
30
|
+
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🏖️</text></svg>">
|
|
31
|
+
|
|
32
|
+
<!-- Styles -->
|
|
33
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
|
34
|
+
<style>.skip-link{position:absolute;top:-40px;left:0;background:#7c3aed;color:#fff;padding:8px 16px;z-index:9999;font-weight:600;border-radius:0 0 4px 0}.skip-link:focus{top:0}</style>
|
|
35
|
+
<link rel="stylesheet" href="./styles.css">
|
|
36
|
+
</head>
|
|
37
|
+
<body>
|
|
38
|
+
<a href="#main" class="skip-link">Skip to main content</a>
|
|
39
|
+
<div class="bg-grid" aria-hidden="true"></div>
|
|
40
|
+
<div class="bg-glow bg-glow-1" aria-hidden="true"></div>
|
|
41
|
+
<div class="bg-glow bg-glow-2" aria-hidden="true"></div>
|
|
42
|
+
|
|
43
|
+
<nav class="nav" aria-label="Main navigation">
|
|
44
|
+
<a href="./" class="nav-logo">Sandymount</a>
|
|
45
|
+
<div class="nav-links">
|
|
46
|
+
<a href="#stack">Stack</a>
|
|
47
|
+
<a href="#projects">Projects</a>
|
|
48
|
+
<a href="./getting-started.html">Get Started</a>
|
|
49
|
+
<a href="./manifesto.html">Manifesto</a>
|
|
50
|
+
<a href="https://github.com/sandy-mount">GitHub</a>
|
|
51
|
+
</div>
|
|
52
|
+
<button class="hamburger" onclick="toggleMenu()" aria-label="Toggle menu" aria-expanded="false" aria-controls="mobileMenu">
|
|
53
|
+
<span></span>
|
|
54
|
+
<span></span>
|
|
55
|
+
<span></span>
|
|
56
|
+
</button>
|
|
57
|
+
</nav>
|
|
58
|
+
|
|
59
|
+
<!-- Mobile Menu -->
|
|
60
|
+
<div class="mobile-menu" id="mobileMenu" aria-label="Mobile navigation">
|
|
61
|
+
<a href="#stack" onclick="closeMenu()">Stack</a>
|
|
62
|
+
<a href="#projects" onclick="closeMenu()">Projects</a>
|
|
63
|
+
<a href="./getting-started.html" onclick="closeMenu()">Get Started</a>
|
|
64
|
+
<a href="./manifesto.html" onclick="closeMenu()">Manifesto</a>
|
|
65
|
+
<a href="https://github.com/sandy-mount" onclick="closeMenu()">GitHub</a>
|
|
66
|
+
</div>
|
|
67
|
+
|
|
68
|
+
<main id="main">
|
|
69
|
+
<header class="hero">
|
|
70
|
+
<div class="hero-badge">SAND • The Stack for the Decentralized Web</div>
|
|
71
|
+
<h1>LAMP built the open web.<br>SAND builds the decentralized one.</h1>
|
|
72
|
+
<p class="hero-subtitle">Four layers. Complete stack. Own your data. Provably safe agents.</p>
|
|
73
|
+
<p class="hero-desc">Solid, ActivityPub, Nostr, and DID—the foundational technologies for a web where users own their data and agents serve their interests.</p>
|
|
74
|
+
<div class="hero-buttons">
|
|
75
|
+
<a href="./getting-started.html" class="btn btn-primary">Get Started</a>
|
|
76
|
+
<a href="#projects" class="btn btn-secondary">Explore Projects</a>
|
|
77
|
+
<a href="./manifesto.html" class="btn btn-secondary">Read Manifesto</a>
|
|
78
|
+
</div>
|
|
79
|
+
</header>
|
|
80
|
+
|
|
81
|
+
<!-- Stack Comparison -->
|
|
82
|
+
<section class="stack-compare-section">
|
|
83
|
+
<div class="stack-compare">
|
|
84
|
+
<div class="era era-lamp">
|
|
85
|
+
<div class="era-label">2000s</div>
|
|
86
|
+
<div class="stack-visual">
|
|
87
|
+
<div class="layer"><span class="layer-name">PHP</span><span class="layer-role">Logic</span></div>
|
|
88
|
+
<div class="layer"><span class="layer-name">MySQL</span><span class="layer-role">Data</span></div>
|
|
89
|
+
<div class="layer"><span class="layer-name">Apache</span><span class="layer-role">Server</span></div>
|
|
90
|
+
<div class="layer"><span class="layer-name">Linux</span><span class="layer-role">OS</span></div>
|
|
91
|
+
</div>
|
|
92
|
+
<div class="stack-name">LAMP</div>
|
|
93
|
+
<div class="stack-desc">Open Source Web</div>
|
|
94
|
+
</div>
|
|
95
|
+
<div class="era-arrow" aria-hidden="true">→</div>
|
|
96
|
+
<div class="era era-sand">
|
|
97
|
+
<div class="era-label">2020s</div>
|
|
98
|
+
<div class="stack-visual">
|
|
99
|
+
<div class="layer"><span class="layer-name sand-s">Solid</span><span class="layer-role">Data/Web</span></div>
|
|
100
|
+
<div class="layer"><span class="layer-name sand-a">ActivityPub</span><span class="layer-role">Federated</span></div>
|
|
101
|
+
<div class="layer"><span class="layer-name sand-n">Nostr</span><span class="layer-role">Realtime</span></div>
|
|
102
|
+
<div class="layer"><span class="layer-name sand-d">DID</span><span class="layer-role">Identity</span></div>
|
|
103
|
+
</div>
|
|
104
|
+
<div class="stack-name">SAND</div>
|
|
105
|
+
<div class="stack-desc">Decentralized Web</div>
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
108
|
+
</section>
|
|
109
|
+
|
|
110
|
+
<!-- SAND Stack -->
|
|
111
|
+
<section id="stack" class="section">
|
|
112
|
+
<div class="section-header">
|
|
113
|
+
<div class="section-tag">The Stack</div>
|
|
114
|
+
<h2>SAND</h2>
|
|
115
|
+
<p>LAMP gave us Linux, Apache, MySQL, PHP. SAND gives us Solid, ActivityPub, Nostr, DID. Same idea, new era.</p>
|
|
116
|
+
</div>
|
|
117
|
+
<div class="sand-grid">
|
|
118
|
+
<div class="sand-card sand-s">
|
|
119
|
+
<div class="letter">S</div>
|
|
120
|
+
<h3>Solid</h3>
|
|
121
|
+
<p>Decoupled data & apps. Store in pods you control. Apps read with permission.</p>
|
|
122
|
+
<a href="https://solidproject.org" class="link">solidproject.org →</a>
|
|
123
|
+
</div>
|
|
124
|
+
<div class="sand-card sand-a">
|
|
125
|
+
<div class="letter">A</div>
|
|
126
|
+
<h3>ActivityPub</h3>
|
|
127
|
+
<p>Federated social. Follow anyone, post anywhere. Your network, your rules.</p>
|
|
128
|
+
<a href="https://activitypub.rocks" class="link">activitypub.rocks →</a>
|
|
129
|
+
</div>
|
|
130
|
+
<div class="sand-card sand-n">
|
|
131
|
+
<div class="letter">N</div>
|
|
132
|
+
<h3>Nostr</h3>
|
|
133
|
+
<p>Censorship-resistant messaging. Cryptographic identity. Relay-based distribution.</p>
|
|
134
|
+
<a href="https://nostr.com" class="link">nostr.com →</a>
|
|
135
|
+
</div>
|
|
136
|
+
<div class="sand-card sand-d">
|
|
137
|
+
<div class="letter">D</div>
|
|
138
|
+
<h3>DID</h3>
|
|
139
|
+
<p>Decentralized identity. Self-sovereign, portable, no registries. Best implemented with <a href="https://nostrcg.github.io/did-nostr/" class="link">did:nostr</a>.</p>
|
|
140
|
+
<a href="https://w3c.github.io/did-core/" class="link">w3c.github.io/did-core →</a>
|
|
141
|
+
</div>
|
|
142
|
+
</div>
|
|
143
|
+
</section>
|
|
144
|
+
|
|
145
|
+
<!-- Projects -->
|
|
146
|
+
<section id="projects" class="section">
|
|
147
|
+
<div class="section-header">
|
|
148
|
+
<div class="section-tag">Ecosystem</div>
|
|
149
|
+
<h2>The Projects</h2>
|
|
150
|
+
<p>Servers, specs, tools, and bridges—all working together.</p>
|
|
151
|
+
</div>
|
|
152
|
+
|
|
153
|
+
<!-- Solid & LDP -->
|
|
154
|
+
<div class="category">
|
|
155
|
+
<div class="category-header">
|
|
156
|
+
<div class="category-icon">📦</div>
|
|
157
|
+
<div>
|
|
158
|
+
<h3>Solid & Linked Data Platform</h3>
|
|
159
|
+
<p>Servers, specifications, and tools for decentralized data storage</p>
|
|
160
|
+
</div>
|
|
161
|
+
</div>
|
|
162
|
+
<div class="projects-grid">
|
|
163
|
+
<a href="https://github.com/JavaScriptSolidServer/JavaScriptSolidServer" class="project-card">
|
|
164
|
+
<div class="project-top">
|
|
165
|
+
<div class="project-icon">📦</div>
|
|
166
|
+
<div class="project-info">
|
|
167
|
+
<h4>JavaScript Solid Server (JSS)</h4>
|
|
168
|
+
<span class="status">Live</span>
|
|
169
|
+
</div>
|
|
170
|
+
</div>
|
|
171
|
+
<p>Lightweight, modular Solid server. 90%+ CTH conformance. Single binary. Built-in IDP. Production ready.</p>
|
|
172
|
+
</a>
|
|
173
|
+
<a href="https://solid-lite.org" class="project-card">
|
|
174
|
+
<div class="project-top">
|
|
175
|
+
<div class="project-icon cyan">📋</div>
|
|
176
|
+
<div class="project-info">
|
|
177
|
+
<h4>Solid Lite</h4>
|
|
178
|
+
<span class="status">Live</span>
|
|
179
|
+
</div>
|
|
180
|
+
</div>
|
|
181
|
+
<p>Minimal Solid profile. HTTP CRUD foundation. Add features incrementally. Perfect for getting started.</p>
|
|
182
|
+
</a>
|
|
183
|
+
<a href="https://solid-lite.github.io/slips/" class="project-card">
|
|
184
|
+
<div class="project-top">
|
|
185
|
+
<div class="project-icon green">📑</div>
|
|
186
|
+
<div class="project-info">
|
|
187
|
+
<h4>SLIPs</h4>
|
|
188
|
+
<span class="status">34+ specs</span>
|
|
189
|
+
</div>
|
|
190
|
+
</div>
|
|
191
|
+
<p>Solid Lite Implementation Proposals. Modular specs for auth, containers, WebSockets, RDF, and more.</p>
|
|
192
|
+
</a>
|
|
193
|
+
<a href="https://linkedwebstorage.com" class="project-card">
|
|
194
|
+
<div class="project-top">
|
|
195
|
+
<div class="project-icon">🔗</div>
|
|
196
|
+
<div class="project-info">
|
|
197
|
+
<h4>Linked Web Storage (LWS)</h4>
|
|
198
|
+
<span class="status wip">W3C 2026</span>
|
|
199
|
+
</div>
|
|
200
|
+
</div>
|
|
201
|
+
<p>W3C Working Group. Bringing Solid principles to the web platform level. Targeting W3C Recommendation.</p>
|
|
202
|
+
</a>
|
|
203
|
+
<a href="https://solidos.solidcommunity.net/" class="project-card">
|
|
204
|
+
<div class="project-top">
|
|
205
|
+
<div class="project-icon cyan">🎨</div>
|
|
206
|
+
<div class="project-info">
|
|
207
|
+
<h4>SolidOS / Mashlib</h4>
|
|
208
|
+
<span class="status">Live</span>
|
|
209
|
+
</div>
|
|
210
|
+
</div>
|
|
211
|
+
<p>Browser-based data browser. View and edit Linked Data visually. Works with any Solid pod.</p>
|
|
212
|
+
</a>
|
|
213
|
+
<a href="https://solid-chat.com" class="project-card">
|
|
214
|
+
<div class="project-top">
|
|
215
|
+
<div class="project-icon">💬</div>
|
|
216
|
+
<div class="project-info">
|
|
217
|
+
<h4>Solid Chat</h4>
|
|
218
|
+
<span class="status">Spec</span>
|
|
219
|
+
</div>
|
|
220
|
+
</div>
|
|
221
|
+
<p>Official messaging specification for Solid. Real-time decentralized chat stored in your pod.</p>
|
|
222
|
+
</a>
|
|
223
|
+
</div>
|
|
224
|
+
</div>
|
|
225
|
+
|
|
226
|
+
<!-- Nostr & Messaging -->
|
|
227
|
+
<div class="category">
|
|
228
|
+
<div class="category-header">
|
|
229
|
+
<div class="category-icon orange">⚡</div>
|
|
230
|
+
<div>
|
|
231
|
+
<h3>Nostr & Messaging</h3>
|
|
232
|
+
<p>Censorship-resistant communication with cryptographic identity</p>
|
|
233
|
+
</div>
|
|
234
|
+
</div>
|
|
235
|
+
<div class="projects-grid">
|
|
236
|
+
<a href="https://nosdav.com" class="project-card">
|
|
237
|
+
<div class="project-top">
|
|
238
|
+
<div class="project-icon orange">🗄️</div>
|
|
239
|
+
<div class="project-info">
|
|
240
|
+
<h4>Nosdav</h4>
|
|
241
|
+
<span class="status">Live</span>
|
|
242
|
+
</div>
|
|
243
|
+
</div>
|
|
244
|
+
<p>WebDAV-compatible storage with Nostr authentication. HTTP file storage + cryptographic identity.</p>
|
|
245
|
+
</a>
|
|
246
|
+
<a href="https://nostrcg.github.io/userguide/" class="project-card">
|
|
247
|
+
<div class="project-top">
|
|
248
|
+
<div class="project-icon orange">📖</div>
|
|
249
|
+
<div class="project-info">
|
|
250
|
+
<h4>Nostr CG User Guide</h4>
|
|
251
|
+
<span class="status">Live</span>
|
|
252
|
+
</div>
|
|
253
|
+
</div>
|
|
254
|
+
<p>Comprehensive introduction to Nostr. Protocol basics, clients, relays, NIPs explained.</p>
|
|
255
|
+
</a>
|
|
256
|
+
<a href="https://nostrcg.github.io/devguide/" class="project-card">
|
|
257
|
+
<div class="project-top">
|
|
258
|
+
<div class="project-icon orange">💻</div>
|
|
259
|
+
<div class="project-info">
|
|
260
|
+
<h4>Nostr CG Dev Guide</h4>
|
|
261
|
+
<span class="status">Live</span>
|
|
262
|
+
</div>
|
|
263
|
+
</div>
|
|
264
|
+
<p>Developer documentation for building on Nostr. Libraries, tools, and implementation patterns.</p>
|
|
265
|
+
</a>
|
|
266
|
+
<a href="https://github.com/nostr-protocol/nips/blob/master/98.md" class="project-card">
|
|
267
|
+
<div class="project-top">
|
|
268
|
+
<div class="project-icon orange">🔐</div>
|
|
269
|
+
<div class="project-info">
|
|
270
|
+
<h4>Nostr HTTP Auth (NIP-98)</h4>
|
|
271
|
+
<span class="status">Live</span>
|
|
272
|
+
</div>
|
|
273
|
+
</div>
|
|
274
|
+
<p>Authenticate HTTP requests using Nostr events. Zero passwords needed.</p>
|
|
275
|
+
</a>
|
|
276
|
+
<a href="https://fonstr.com" class="project-card">
|
|
277
|
+
<div class="project-top">
|
|
278
|
+
<div class="project-icon orange">🎵</div>
|
|
279
|
+
<div class="project-info">
|
|
280
|
+
<h4>Fonstr</h4>
|
|
281
|
+
<span class="status">Live</span>
|
|
282
|
+
</div>
|
|
283
|
+
</div>
|
|
284
|
+
<p>Nostr-based music and audio platform. Decentralized content distribution for creators.</p>
|
|
285
|
+
</a>
|
|
286
|
+
<a href="https://nostrcg.github.io/did-nostr/" class="project-card">
|
|
287
|
+
<div class="project-top">
|
|
288
|
+
<div class="project-icon orange">🪪</div>
|
|
289
|
+
<div class="project-info">
|
|
290
|
+
<h4>did:nostr</h4>
|
|
291
|
+
<span class="status">Spec</span>
|
|
292
|
+
</div>
|
|
293
|
+
</div>
|
|
294
|
+
<p>Decentralized identifiers using Nostr keypairs. Self-sovereign identity without registries.</p>
|
|
295
|
+
</a>
|
|
296
|
+
<a href="https://nostrgit.org" class="project-card">
|
|
297
|
+
<div class="project-top">
|
|
298
|
+
<div class="project-icon orange">📂</div>
|
|
299
|
+
<div class="project-info">
|
|
300
|
+
<h4>Nostr Git</h4>
|
|
301
|
+
<span class="status">Live</span>
|
|
302
|
+
</div>
|
|
303
|
+
</div>
|
|
304
|
+
<p>Censorship-resistant code hosting on Nostr. Decentralized alternative to GitHub.</p>
|
|
305
|
+
</a>
|
|
306
|
+
</div>
|
|
307
|
+
</div>
|
|
308
|
+
|
|
309
|
+
<!-- Federation & Social -->
|
|
310
|
+
<div class="category">
|
|
311
|
+
<div class="category-header">
|
|
312
|
+
<div class="category-icon cyan">🌐</div>
|
|
313
|
+
<div>
|
|
314
|
+
<h3>Federation & Social</h3>
|
|
315
|
+
<p>ActivityPub, bridges, and federated social infrastructure</p>
|
|
316
|
+
</div>
|
|
317
|
+
</div>
|
|
318
|
+
<div class="projects-grid">
|
|
319
|
+
<a href="https://socialdocs.org/docs/ecosystem/fedbox/" class="project-card">
|
|
320
|
+
<div class="project-top">
|
|
321
|
+
<div class="project-icon green">🌐</div>
|
|
322
|
+
<div class="project-info">
|
|
323
|
+
<h4>FedBox</h4>
|
|
324
|
+
<span class="status">Live</span>
|
|
325
|
+
</div>
|
|
326
|
+
</div>
|
|
327
|
+
<p>Generic ActivityPub server. Lightweight, modular foundation for federated applications.</p>
|
|
328
|
+
</a>
|
|
329
|
+
<a href="https://microfed.org" class="project-card">
|
|
330
|
+
<div class="project-top">
|
|
331
|
+
<div class="project-icon cyan">🔬</div>
|
|
332
|
+
<div class="project-info">
|
|
333
|
+
<h4>MicroFed</h4>
|
|
334
|
+
<span class="status">Live</span>
|
|
335
|
+
</div>
|
|
336
|
+
</div>
|
|
337
|
+
<p>Minimal ActivityPub library. Zero dependencies. Pure JavaScript for embedded deployments.</p>
|
|
338
|
+
</a>
|
|
339
|
+
<a href="https://socialdocs.org" class="project-card">
|
|
340
|
+
<div class="project-top">
|
|
341
|
+
<div class="project-icon cyan">📄</div>
|
|
342
|
+
<div class="project-info">
|
|
343
|
+
<h4>SocialDocs</h4>
|
|
344
|
+
<span class="status">Live</span>
|
|
345
|
+
</div>
|
|
346
|
+
</div>
|
|
347
|
+
<p>Documentation for the social web. ActivityPub, WebFinger, and federation guides.</p>
|
|
348
|
+
</a>
|
|
349
|
+
<a href="https://docs.soapbox.pub/ditto/install/" class="project-card">
|
|
350
|
+
<div class="project-top">
|
|
351
|
+
<div class="project-icon green">🔀</div>
|
|
352
|
+
<div class="project-info">
|
|
353
|
+
<h4>Ditto</h4>
|
|
354
|
+
<span class="status">Live</span>
|
|
355
|
+
</div>
|
|
356
|
+
</div>
|
|
357
|
+
<p>Cross-protocol bridge. Connect Nostr to ActivityPub. Post once, reach both networks.</p>
|
|
358
|
+
</a>
|
|
359
|
+
</div>
|
|
360
|
+
</div>
|
|
361
|
+
|
|
362
|
+
<!-- AI & Agents -->
|
|
363
|
+
<div class="category">
|
|
364
|
+
<div class="category-header">
|
|
365
|
+
<div class="category-icon pink">🤖</div>
|
|
366
|
+
<div>
|
|
367
|
+
<h3>AI & Agentic Systems</h3>
|
|
368
|
+
<p>Connecting intelligent agents to the decentralized web</p>
|
|
369
|
+
</div>
|
|
370
|
+
</div>
|
|
371
|
+
<div class="projects-grid">
|
|
372
|
+
<a href="https://agenticalliance.com" class="project-card">
|
|
373
|
+
<div class="project-top">
|
|
374
|
+
<div class="project-icon pink">🕊️</div>
|
|
375
|
+
<div class="project-info">
|
|
376
|
+
<h4>Agentic Alliance</h4>
|
|
377
|
+
<span class="status wip">Prelaunch</span>
|
|
378
|
+
</div>
|
|
379
|
+
</div>
|
|
380
|
+
<p>Coalition for ethical AI agents. Open standards, user-first design, transparent behavior.</p>
|
|
381
|
+
</a>
|
|
382
|
+
<a href="./manifesto.html" class="project-card">
|
|
383
|
+
<div class="project-top">
|
|
384
|
+
<div class="project-icon pink">📜</div>
|
|
385
|
+
<div class="project-info">
|
|
386
|
+
<h4>Agentic Principles</h4>
|
|
387
|
+
<span class="status">Manifesto</span>
|
|
388
|
+
</div>
|
|
389
|
+
</div>
|
|
390
|
+
<p>9 principles for autonomy and trust. Agents serve users. Data sovereignty is non-negotiable.</p>
|
|
391
|
+
</a>
|
|
392
|
+
<a href="https://modelcontextprotocol.io" class="project-card">
|
|
393
|
+
<div class="project-top">
|
|
394
|
+
<div class="project-icon pink">🔌</div>
|
|
395
|
+
<div class="project-info">
|
|
396
|
+
<h4>Model Context Protocol</h4>
|
|
397
|
+
<span class="status">Standard</span>
|
|
398
|
+
</div>
|
|
399
|
+
</div>
|
|
400
|
+
<p>Connect AI models to external tools and data sources. Open protocol by Anthropic.</p>
|
|
401
|
+
</a>
|
|
402
|
+
<a href="https://webprompts.org" class="project-card">
|
|
403
|
+
<div class="project-top">
|
|
404
|
+
<div class="project-icon pink">💬</div>
|
|
405
|
+
<div class="project-info">
|
|
406
|
+
<h4>Web Prompts</h4>
|
|
407
|
+
<span class="status">Spec</span>
|
|
408
|
+
</div>
|
|
409
|
+
</div>
|
|
410
|
+
<p>Structured prompts for the web. Shareable, versionable, and agent-ready prompt templates.</p>
|
|
411
|
+
</a>
|
|
412
|
+
<a href="https://aam.wtf" class="project-card">
|
|
413
|
+
<div class="project-top">
|
|
414
|
+
<div class="project-icon pink">🤝</div>
|
|
415
|
+
<div class="project-info">
|
|
416
|
+
<h4>AAM</h4>
|
|
417
|
+
<span class="status wip">Building</span>
|
|
418
|
+
</div>
|
|
419
|
+
</div>
|
|
420
|
+
<p>Agent-to-Agent Manager. A2A protocol for agent discovery, skills registry, and collaboration.</p>
|
|
421
|
+
</a>
|
|
422
|
+
</div>
|
|
423
|
+
</div>
|
|
424
|
+
|
|
425
|
+
<!-- Infrastructure -->
|
|
426
|
+
<div class="category">
|
|
427
|
+
<div class="category-header">
|
|
428
|
+
<div class="category-icon yellow">🔧</div>
|
|
429
|
+
<div>
|
|
430
|
+
<h3>Infrastructure & Tools</h3>
|
|
431
|
+
<p>Supporting services, libraries, and utilities</p>
|
|
432
|
+
</div>
|
|
433
|
+
</div>
|
|
434
|
+
<div class="projects-grid">
|
|
435
|
+
<a href="https://blocktrails.org" class="project-card">
|
|
436
|
+
<div class="project-top">
|
|
437
|
+
<div class="project-icon yellow">⛓️</div>
|
|
438
|
+
<div class="project-info">
|
|
439
|
+
<h4>BlockTrails</h4>
|
|
440
|
+
<span class="status">Live</span>
|
|
441
|
+
</div>
|
|
442
|
+
</div>
|
|
443
|
+
<p>Provably safe agents via Bitcoin state anchoring. Full audit trail. Trust through time.</p>
|
|
444
|
+
</a>
|
|
445
|
+
<a href="https://github.com/linkeddata/rdflib.js" class="project-card">
|
|
446
|
+
<div class="project-top">
|
|
447
|
+
<div class="project-icon yellow">📊</div>
|
|
448
|
+
<div class="project-info">
|
|
449
|
+
<h4>rdflib.js</h4>
|
|
450
|
+
<span class="status">Core lib</span>
|
|
451
|
+
</div>
|
|
452
|
+
</div>
|
|
453
|
+
<p>JavaScript RDF library. Parse, serialize, and query Linked Data in the browser and Node.js.</p>
|
|
454
|
+
</a>
|
|
455
|
+
<a href="https://solidproject.org/TR/oidc" class="project-card">
|
|
456
|
+
<div class="project-top">
|
|
457
|
+
<div class="project-icon yellow">🔑</div>
|
|
458
|
+
<div class="project-info">
|
|
459
|
+
<h4>Solid OIDC</h4>
|
|
460
|
+
<span class="status">Spec</span>
|
|
461
|
+
</div>
|
|
462
|
+
</div>
|
|
463
|
+
<p>OpenID Connect profile for Solid. Decentralized authentication for pod access.</p>
|
|
464
|
+
</a>
|
|
465
|
+
<a href="https://github.com/melvincarvalho/noskey" class="project-card">
|
|
466
|
+
<div class="project-top">
|
|
467
|
+
<div class="project-icon yellow">🗝️</div>
|
|
468
|
+
<div class="project-info">
|
|
469
|
+
<h4>Noskey</h4>
|
|
470
|
+
<span class="status">CLI</span>
|
|
471
|
+
</div>
|
|
472
|
+
</div>
|
|
473
|
+
<p>Generate Nostr keys from CLI. Creates nsec/npub, Bitcoin/Taproot addresses, and SSH keypairs.</p>
|
|
474
|
+
</a>
|
|
475
|
+
<a href="https://nostr-components.github.io/event/" class="project-card">
|
|
476
|
+
<div class="project-top">
|
|
477
|
+
<div class="project-icon yellow">🧩</div>
|
|
478
|
+
<div class="project-info">
|
|
479
|
+
<h4>Nostr Components</h4>
|
|
480
|
+
<span class="status">Library</span>
|
|
481
|
+
</div>
|
|
482
|
+
</div>
|
|
483
|
+
<p>Web components for Nostr. Render events with auto media detection. 3KB, zero deps, CDN-ready.</p>
|
|
484
|
+
</a>
|
|
485
|
+
</div>
|
|
486
|
+
</div>
|
|
487
|
+
</section>
|
|
488
|
+
|
|
489
|
+
<!-- Architecture -->
|
|
490
|
+
<section id="architecture" class="arch-section">
|
|
491
|
+
<div class="arch-inner">
|
|
492
|
+
<div class="section-header">
|
|
493
|
+
<div class="section-tag">System Design</div>
|
|
494
|
+
<h2>One Modular Architecture</h2>
|
|
495
|
+
<p>Every piece connects. Pick what you need. Build incrementally.</p>
|
|
496
|
+
</div>
|
|
497
|
+
<div class="arch-diagram">
|
|
498
|
+
<div class="arch-layers">
|
|
499
|
+
<div class="arch-layer">
|
|
500
|
+
<div class="arch-label">AI Agents</div>
|
|
501
|
+
<div class="arch-boxes">
|
|
502
|
+
<a href="https://modelcontextprotocol.io" class="arch-box">MCP</a>
|
|
503
|
+
<a href="https://blocktrails.org" class="arch-box">BlockTrails</a>
|
|
504
|
+
<a href="https://agenticalliance.com" class="arch-box">Agentic Alliance</a>
|
|
505
|
+
</div>
|
|
506
|
+
</div>
|
|
507
|
+
<div class="arch-layer">
|
|
508
|
+
<div class="arch-label">Applications</div>
|
|
509
|
+
<div class="arch-boxes">
|
|
510
|
+
<a href="https://solidos.github.io/mashlib/" class="arch-box cyan">SolidOS</a>
|
|
511
|
+
<a href="https://socialdocs.org/docs/ecosystem/fedbox/" class="arch-box cyan">FedBox</a>
|
|
512
|
+
<a href="https://solid-chat.com" class="arch-box cyan">Solid Chat</a>
|
|
513
|
+
</div>
|
|
514
|
+
</div>
|
|
515
|
+
<div class="arch-layer">
|
|
516
|
+
<div class="arch-label">Servers</div>
|
|
517
|
+
<div class="arch-boxes">
|
|
518
|
+
<a href="https://github.com/JavaScriptSolidServer/JavaScriptSolidServer" class="arch-box orange">JSS</a>
|
|
519
|
+
<a href="https://nosdav.com" class="arch-box orange">Nosdav</a>
|
|
520
|
+
<a href="https://microfed.org" class="arch-box orange">MicroFed</a>
|
|
521
|
+
</div>
|
|
522
|
+
</div>
|
|
523
|
+
<div class="arch-layer">
|
|
524
|
+
<div class="arch-label">Specifications</div>
|
|
525
|
+
<div class="arch-boxes">
|
|
526
|
+
<a href="https://solid-lite.org" class="arch-box green">Solid Lite</a>
|
|
527
|
+
<a href="https://solid-lite.github.io/slips/" class="arch-box green">SLIPs</a>
|
|
528
|
+
<a href="https://linkedwebstorage.com" class="arch-box green">LWS</a>
|
|
529
|
+
<a href="https://github.com/nostr-protocol/nips" class="arch-box green">NIPs</a>
|
|
530
|
+
</div>
|
|
531
|
+
</div>
|
|
532
|
+
<div class="arch-layer">
|
|
533
|
+
<div class="arch-label">Protocols</div>
|
|
534
|
+
<div class="arch-boxes">
|
|
535
|
+
<a href="https://solidproject.org" class="arch-box">Solid/LDP</a>
|
|
536
|
+
<a href="https://activitypub.rocks" class="arch-box">ActivityPub</a>
|
|
537
|
+
<a href="https://nostr.com" class="arch-box">Nostr</a>
|
|
538
|
+
<a href="https://www.w3.org/TR/ldp/" class="arch-box">HTTP/REST</a>
|
|
539
|
+
</div>
|
|
540
|
+
</div>
|
|
541
|
+
</div>
|
|
542
|
+
</div>
|
|
543
|
+
<div class="stats-grid">
|
|
544
|
+
<div class="stat-item">
|
|
545
|
+
<div class="number">20+</div>
|
|
546
|
+
<div class="label">Projects</div>
|
|
547
|
+
</div>
|
|
548
|
+
<div class="stat-item">
|
|
549
|
+
<div class="number">34</div>
|
|
550
|
+
<div class="label">SLIPs</div>
|
|
551
|
+
</div>
|
|
552
|
+
<div class="stat-item">
|
|
553
|
+
<div class="number">4</div>
|
|
554
|
+
<div class="label">Protocols</div>
|
|
555
|
+
</div>
|
|
556
|
+
<div class="stat-item">
|
|
557
|
+
<div class="number">2026</div>
|
|
558
|
+
<div class="label">W3C Target</div>
|
|
559
|
+
</div>
|
|
560
|
+
</div>
|
|
561
|
+
</div>
|
|
562
|
+
</section>
|
|
563
|
+
|
|
564
|
+
<!-- Principles -->
|
|
565
|
+
<section class="principles-section">
|
|
566
|
+
<div class="principles-card">
|
|
567
|
+
<h3>The Agentic Principles Manifesto</h3>
|
|
568
|
+
<p>Nine principles for autonomy, dignity, and trust in the age of intelligent agents.</p>
|
|
569
|
+
<div class="principles-list">
|
|
570
|
+
<span>Agents Must Serve the User First</span>
|
|
571
|
+
<span>Identity and Intent Must Be Verifiable</span>
|
|
572
|
+
<span>Data Sovereignty Is Non-Negotiable</span>
|
|
573
|
+
<span>Open Protocols, Not Walled Gardens</span>
|
|
574
|
+
<span>Local-First, Cloud-Optional</span>
|
|
575
|
+
<span>Transparent Logic, Tunable Behavior</span>
|
|
576
|
+
<span>Sustainable Ecosystems Over Extraction</span>
|
|
577
|
+
<span>Community-Driven Standards</span>
|
|
578
|
+
<span>Safety and Trust Through Time</span>
|
|
579
|
+
</div>
|
|
580
|
+
<a href="./manifesto.html" class="btn btn-primary">Read the Full Manifesto</a>
|
|
581
|
+
</div>
|
|
582
|
+
</section>
|
|
583
|
+
</main>
|
|
584
|
+
|
|
585
|
+
<!-- Footer -->
|
|
586
|
+
<footer class="footer">
|
|
587
|
+
<div class="footer-grid">
|
|
588
|
+
<div class="footer-brand">
|
|
589
|
+
<div class="nav-logo">Sandymount</div>
|
|
590
|
+
<p>Building the open, decentralized, agentic web—where users own their data and agents serve their interests.</p>
|
|
591
|
+
</div>
|
|
592
|
+
<div class="footer-col">
|
|
593
|
+
<h4>Protocols</h4>
|
|
594
|
+
<a href="https://solidproject.org">Solid</a>
|
|
595
|
+
<a href="https://activitypub.rocks">ActivityPub</a>
|
|
596
|
+
<a href="https://nostr.com">Nostr</a>
|
|
597
|
+
<a href="https://nostrcg.github.io/did-nostr/">did:nostr</a>
|
|
598
|
+
</div>
|
|
599
|
+
<div class="footer-col">
|
|
600
|
+
<h4>Core Projects</h4>
|
|
601
|
+
<a href="https://github.com/JavaScriptSolidServer/JavaScriptSolidServer">JSS</a>
|
|
602
|
+
<a href="https://solid-lite.org">Solid Lite</a>
|
|
603
|
+
<a href="https://solid-lite.github.io/slips/">SLIPs</a>
|
|
604
|
+
<a href="https://nosdav.com">Nosdav</a>
|
|
605
|
+
</div>
|
|
606
|
+
<div class="footer-col">
|
|
607
|
+
<h4>Resources</h4>
|
|
608
|
+
<a href="https://socialdocs.org">SocialDocs</a>
|
|
609
|
+
<a href="https://nostrcg.github.io/userguide/">Nostr Guide</a>
|
|
610
|
+
<a href="https://linkedwebstorage.com">LWS</a>
|
|
611
|
+
<a href="https://agenticalliance.com">Agentic Alliance</a>
|
|
612
|
+
</div>
|
|
613
|
+
<div class="footer-col">
|
|
614
|
+
<h4>Connect</h4>
|
|
615
|
+
<a href="./manifesto.html">Manifesto</a>
|
|
616
|
+
<a href="https://github.com/sandy-mount">GitHub</a>
|
|
617
|
+
<a href="./getting-started.html">Get Started</a>
|
|
618
|
+
</div>
|
|
619
|
+
</div>
|
|
620
|
+
<div class="footer-bottom">
|
|
621
|
+
<p>Sandymount — Building on SAND, the stack for the decentralized web.</p>
|
|
622
|
+
</div>
|
|
623
|
+
</footer>
|
|
624
|
+
|
|
625
|
+
<script>
|
|
626
|
+
// Hamburger Menu
|
|
627
|
+
function toggleMenu() {
|
|
628
|
+
const hamburger = document.querySelector('.hamburger');
|
|
629
|
+
const mobileMenu = document.getElementById('mobileMenu');
|
|
630
|
+
const isOpen = mobileMenu.classList.toggle('active');
|
|
631
|
+
hamburger.classList.toggle('active');
|
|
632
|
+
hamburger.setAttribute('aria-expanded', isOpen);
|
|
633
|
+
document.body.style.overflow = isOpen ? 'hidden' : '';
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
function closeMenu() {
|
|
637
|
+
const hamburger = document.querySelector('.hamburger');
|
|
638
|
+
const mobileMenu = document.getElementById('mobileMenu');
|
|
639
|
+
hamburger.classList.remove('active');
|
|
640
|
+
mobileMenu.classList.remove('active');
|
|
641
|
+
hamburger.setAttribute('aria-expanded', 'false');
|
|
642
|
+
document.body.style.overflow = '';
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
// Scroll animations
|
|
646
|
+
const observerOptions = {
|
|
647
|
+
threshold: 0.1,
|
|
648
|
+
rootMargin: '0px 0px -50px 0px'
|
|
649
|
+
};
|
|
650
|
+
|
|
651
|
+
const observer = new IntersectionObserver((entries) => {
|
|
652
|
+
entries.forEach(entry => {
|
|
653
|
+
if (entry.isIntersecting) {
|
|
654
|
+
entry.target.style.opacity = '1';
|
|
655
|
+
entry.target.style.transform = 'translateY(0)';
|
|
656
|
+
}
|
|
657
|
+
});
|
|
658
|
+
}, observerOptions);
|
|
659
|
+
|
|
660
|
+
// Animate sections on scroll
|
|
661
|
+
document.querySelectorAll('.category, .sand-card, .stat-item, .arch-layer').forEach((el, i) => {
|
|
662
|
+
el.style.opacity = '0';
|
|
663
|
+
el.style.transform = 'translateY(20px)';
|
|
664
|
+
el.style.transition = `opacity 0.6s ease ${i * 0.05}s, transform 0.6s ease ${i * 0.05}s`;
|
|
665
|
+
observer.observe(el);
|
|
666
|
+
});
|
|
667
|
+
|
|
668
|
+
// Smooth scroll for anchor links
|
|
669
|
+
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
|
670
|
+
anchor.addEventListener('click', function(e) {
|
|
671
|
+
e.preventDefault();
|
|
672
|
+
const target = document.querySelector(this.getAttribute('href'));
|
|
673
|
+
if (target) {
|
|
674
|
+
target.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
|
675
|
+
}
|
|
676
|
+
});
|
|
677
|
+
});
|
|
678
|
+
</script>
|
|
679
|
+
</body>
|
|
680
|
+
</html>
|