sandymount 0.0.1 → 0.0.2
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 +108 -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/manifesto.html
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
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>Agentic Principles Manifesto - Sandymount</title>
|
|
7
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700&display=swap" rel="stylesheet">
|
|
8
|
+
<style>
|
|
9
|
+
:root {
|
|
10
|
+
--bg: #fafafa;
|
|
11
|
+
--bg-card: #ffffff;
|
|
12
|
+
--text: #18181b;
|
|
13
|
+
--text-muted: #52525b;
|
|
14
|
+
--accent: #7c3aed;
|
|
15
|
+
--accent-glow: rgba(124, 58, 237, 0.15);
|
|
16
|
+
--border: #e4e4e7;
|
|
17
|
+
--gradient: linear-gradient(135deg, #7c3aed, #0891b2);
|
|
18
|
+
}
|
|
19
|
+
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
20
|
+
body {
|
|
21
|
+
font-family: 'Inter', system-ui, sans-serif;
|
|
22
|
+
background: var(--bg);
|
|
23
|
+
color: var(--text);
|
|
24
|
+
line-height: 1.7;
|
|
25
|
+
}
|
|
26
|
+
a { color: var(--accent); text-decoration: none; }
|
|
27
|
+
a:hover { text-decoration: underline; }
|
|
28
|
+
|
|
29
|
+
.nav {
|
|
30
|
+
padding: 1.5rem 2rem;
|
|
31
|
+
display: flex;
|
|
32
|
+
justify-content: space-between;
|
|
33
|
+
align-items: center;
|
|
34
|
+
max-width: 900px;
|
|
35
|
+
margin: 0 auto;
|
|
36
|
+
}
|
|
37
|
+
.nav a { color: var(--text-muted); margin-left: 1.5rem; }
|
|
38
|
+
.nav-back {
|
|
39
|
+
color: var(--text) !important;
|
|
40
|
+
font-weight: 600;
|
|
41
|
+
margin-left: 0 !important;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.hero {
|
|
45
|
+
text-align: center;
|
|
46
|
+
padding: 4rem 2rem 3rem;
|
|
47
|
+
max-width: 800px;
|
|
48
|
+
margin: 0 auto;
|
|
49
|
+
}
|
|
50
|
+
.hero h1 {
|
|
51
|
+
font-size: 2.5rem;
|
|
52
|
+
margin-bottom: 1rem;
|
|
53
|
+
background: var(--gradient);
|
|
54
|
+
-webkit-background-clip: text;
|
|
55
|
+
background-clip: text;
|
|
56
|
+
color: transparent;
|
|
57
|
+
}
|
|
58
|
+
.hero p {
|
|
59
|
+
font-size: 1.25rem;
|
|
60
|
+
color: var(--text-muted);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.main {
|
|
64
|
+
max-width: 800px;
|
|
65
|
+
margin: 0 auto;
|
|
66
|
+
padding: 2rem;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.principle {
|
|
70
|
+
background: var(--bg-card);
|
|
71
|
+
border: 1px solid var(--border);
|
|
72
|
+
border-radius: 12px;
|
|
73
|
+
padding: 2rem;
|
|
74
|
+
margin-bottom: 1.5rem;
|
|
75
|
+
box-shadow: 0 1px 3px rgba(0,0,0,0.05);
|
|
76
|
+
}
|
|
77
|
+
.principle h3 {
|
|
78
|
+
font-size: 1.25rem;
|
|
79
|
+
margin-bottom: 1rem;
|
|
80
|
+
display: flex;
|
|
81
|
+
align-items: center;
|
|
82
|
+
gap: 0.75rem;
|
|
83
|
+
}
|
|
84
|
+
.principle h3 .num {
|
|
85
|
+
background: var(--accent);
|
|
86
|
+
color: white;
|
|
87
|
+
width: 32px;
|
|
88
|
+
height: 32px;
|
|
89
|
+
border-radius: 50%;
|
|
90
|
+
display: flex;
|
|
91
|
+
align-items: center;
|
|
92
|
+
justify-content: center;
|
|
93
|
+
font-size: 0.9rem;
|
|
94
|
+
font-weight: 600;
|
|
95
|
+
}
|
|
96
|
+
.principle p {
|
|
97
|
+
color: var(--text-muted);
|
|
98
|
+
margin-bottom: 1rem;
|
|
99
|
+
}
|
|
100
|
+
.principle .quote {
|
|
101
|
+
background: rgba(124, 58, 237, 0.06);
|
|
102
|
+
border-left: 3px solid var(--accent);
|
|
103
|
+
padding: 1rem 1.25rem;
|
|
104
|
+
border-radius: 0 8px 8px 0;
|
|
105
|
+
font-style: italic;
|
|
106
|
+
color: var(--text);
|
|
107
|
+
}
|
|
108
|
+
.principle code {
|
|
109
|
+
background: rgba(124, 58, 237, 0.1);
|
|
110
|
+
padding: 0.2rem 0.5rem;
|
|
111
|
+
border-radius: 4px;
|
|
112
|
+
font-size: 0.9em;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.footer {
|
|
116
|
+
text-align: center;
|
|
117
|
+
padding: 3rem 2rem;
|
|
118
|
+
color: var(--text-muted);
|
|
119
|
+
border-top: 1px solid var(--border);
|
|
120
|
+
margin-top: 2rem;
|
|
121
|
+
}
|
|
122
|
+
.footer a { margin: 0 0.75rem; }
|
|
123
|
+
</style>
|
|
124
|
+
</head>
|
|
125
|
+
<body>
|
|
126
|
+
<nav class="nav">
|
|
127
|
+
<a href="./" class="nav-back">← Sandymount</a>
|
|
128
|
+
<div>
|
|
129
|
+
<a href="./getting-started.html">Get Started</a>
|
|
130
|
+
<a href="https://github.com/sandy-mount">GitHub</a>
|
|
131
|
+
</div>
|
|
132
|
+
</nav>
|
|
133
|
+
|
|
134
|
+
<header class="hero">
|
|
135
|
+
<h1>Agentic Principles Manifesto</h1>
|
|
136
|
+
<p>A call for autonomy, dignity, and trust in the age of intelligent agents.</p>
|
|
137
|
+
</header>
|
|
138
|
+
|
|
139
|
+
<main class="main">
|
|
140
|
+
<div class="principle">
|
|
141
|
+
<h3><span class="num">1</span> Agents Must Serve the User First</h3>
|
|
142
|
+
<p>Agents are extensions of human will—not proxies for corporations. They must act <em>in the user's interest</em>, not in the interest of advertisers, platforms, or centralized authorities.</p>
|
|
143
|
+
<div class="quote">Your agent is <strong>your agent</strong>—not someone else's product.</div>
|
|
144
|
+
</div>
|
|
145
|
+
|
|
146
|
+
<div class="principle">
|
|
147
|
+
<h3><span class="num">2</span> Identity and Intent Must Be Verifiable</h3>
|
|
148
|
+
<p>Agents must use cryptographically verifiable identity (e.g., <code>did:nostr</code>, WebID, or other decentralized IDs). All actions and intentions must be transparently attributable.</p>
|
|
149
|
+
<div class="quote">No ghost agents. No hidden motives. No black boxes.</div>
|
|
150
|
+
</div>
|
|
151
|
+
|
|
152
|
+
<div class="principle">
|
|
153
|
+
<h3><span class="num">3</span> Data Sovereignty Is Non-Negotiable</h3>
|
|
154
|
+
<p>Agents must respect user-owned data. They must store and access information according to <strong>user-defined permissions</strong>, preferably using self-hosted or interoperable protocols like Solid or Nosdav.</p>
|
|
155
|
+
<div class="quote">What the agent knows <em>about you</em> must remain <em>yours</em>.</div>
|
|
156
|
+
</div>
|
|
157
|
+
|
|
158
|
+
<div class="principle">
|
|
159
|
+
<h3><span class="num">4</span> Open Protocols, Not Walled Gardens</h3>
|
|
160
|
+
<p>Agents should speak open languages—Nostr, ActivityPub, HTTP, RDF, Bitcoin—not proprietary APIs that lock users in. Interoperability is a right, not a feature.</p>
|
|
161
|
+
<div class="quote">Let agents roam. Let users choose.</div>
|
|
162
|
+
</div>
|
|
163
|
+
|
|
164
|
+
<div class="principle">
|
|
165
|
+
<h3><span class="num">5</span> Local-First, Cloud-Optional</h3>
|
|
166
|
+
<p>Agents should default to local operation. Cloud support must be modular, auditable, and replaceable.</p>
|
|
167
|
+
<div class="quote">Agents should run <em>on your machine</em> unless <em>you</em> say otherwise.</div>
|
|
168
|
+
</div>
|
|
169
|
+
|
|
170
|
+
<div class="principle">
|
|
171
|
+
<h3><span class="num">6</span> Transparent Logic, Tunable Behavior</h3>
|
|
172
|
+
<p>Users must be able to inspect, adjust, and fork their agents' logic. Agents should support interpretable rule sets and modifiable preferences, not opaque neural nets alone.</p>
|
|
173
|
+
<div class="quote">You deserve to understand why your agent acts—and change it when needed.</div>
|
|
174
|
+
</div>
|
|
175
|
+
|
|
176
|
+
<div class="principle">
|
|
177
|
+
<h3><span class="num">7</span> Sustainable Ecosystems Over Extraction</h3>
|
|
178
|
+
<p>Agentic systems should reward contributors, not extract value unfairly. Cryptoeconomic primitives like Bitcoin can enable fair incentives—without surveillance capitalism.</p>
|
|
179
|
+
<div class="quote">Build systems that <strong>pay it forward</strong>, not lock it down.</div>
|
|
180
|
+
</div>
|
|
181
|
+
|
|
182
|
+
<div class="principle">
|
|
183
|
+
<h3><span class="num">8</span> Community-Driven Standards and Governance</h3>
|
|
184
|
+
<p>Agent behavior, safety, and alignment standards must be open, auditable, and shaped by users—not dictated top-down.</p>
|
|
185
|
+
<div class="quote">The age of agents must be a commons—not an empire.</div>
|
|
186
|
+
</div>
|
|
187
|
+
|
|
188
|
+
<div class="principle">
|
|
189
|
+
<h3><span class="num">9</span> Safety and Trust Through Time</h3>
|
|
190
|
+
<p>Agent actions must be auditable and accountable. Systems like <a href="https://blocktrails.org">BlockTrails</a> provide immutable, timestamped records of behavior—building trust through transparency, not blind faith.</p>
|
|
191
|
+
<div class="quote">Trust is earned through <strong>verifiable history</strong>—not promises.</div>
|
|
192
|
+
</div>
|
|
193
|
+
</main>
|
|
194
|
+
|
|
195
|
+
<footer class="footer">
|
|
196
|
+
<p>
|
|
197
|
+
<a href="./">Home</a>
|
|
198
|
+
<a href="https://github.com/sandy-mount">GitHub</a>
|
|
199
|
+
</p>
|
|
200
|
+
<p style="margin-top: 1rem;">Sandymount — Building the open, agentic future.</p>
|
|
201
|
+
</footer>
|
|
202
|
+
</body>
|
|
203
|
+
</html>
|
package/og-image.png
ADDED
|
Binary file
|
package/og-image.svg
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
<svg width="1200" height="630" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
4
|
+
<stop offset="0%" style="stop-color:#fafafa"/>
|
|
5
|
+
<stop offset="100%" style="stop-color:#f0f0f5"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<linearGradient id="accent" x1="0%" y1="0%" x2="100%" y2="0%">
|
|
8
|
+
<stop offset="0%" style="stop-color:#7c3aed"/>
|
|
9
|
+
<stop offset="100%" style="stop-color:#0891b2"/>
|
|
10
|
+
</linearGradient>
|
|
11
|
+
<linearGradient id="s-grad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
12
|
+
<stop offset="0%" style="stop-color:#7c3aed"/>
|
|
13
|
+
<stop offset="100%" style="stop-color:#a78bfa"/>
|
|
14
|
+
</linearGradient>
|
|
15
|
+
<linearGradient id="a-grad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
16
|
+
<stop offset="0%" style="stop-color:#0891b2"/>
|
|
17
|
+
<stop offset="100%" style="stop-color:#22d3ee"/>
|
|
18
|
+
</linearGradient>
|
|
19
|
+
<linearGradient id="n-grad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
20
|
+
<stop offset="0%" style="stop-color:#ea580c"/>
|
|
21
|
+
<stop offset="100%" style="stop-color:#fb923c"/>
|
|
22
|
+
</linearGradient>
|
|
23
|
+
<linearGradient id="d-grad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
24
|
+
<stop offset="0%" style="stop-color:#16a34a"/>
|
|
25
|
+
<stop offset="100%" style="stop-color:#4ade80"/>
|
|
26
|
+
</linearGradient>
|
|
27
|
+
</defs>
|
|
28
|
+
|
|
29
|
+
<!-- Background -->
|
|
30
|
+
<rect width="1200" height="630" fill="url(#bg)"/>
|
|
31
|
+
|
|
32
|
+
<!-- Subtle grid -->
|
|
33
|
+
<pattern id="grid" width="50" height="50" patternUnits="userSpaceOnUse">
|
|
34
|
+
<path d="M 50 0 L 0 0 0 50" fill="none" stroke="rgba(124,58,237,0.05)" stroke-width="1"/>
|
|
35
|
+
</pattern>
|
|
36
|
+
<rect width="1200" height="630" fill="url(#grid)"/>
|
|
37
|
+
|
|
38
|
+
<!-- Decorative circles -->
|
|
39
|
+
<circle cx="100" cy="100" r="300" fill="#7c3aed" opacity="0.03"/>
|
|
40
|
+
<circle cx="1100" cy="530" r="250" fill="#0891b2" opacity="0.03"/>
|
|
41
|
+
|
|
42
|
+
<!-- Top accent line -->
|
|
43
|
+
<rect x="0" y="0" width="1200" height="4" fill="url(#accent)"/>
|
|
44
|
+
|
|
45
|
+
<!-- Main content -->
|
|
46
|
+
<!-- Logo text -->
|
|
47
|
+
<text x="600" y="180" text-anchor="middle" font-family="Inter, system-ui, sans-serif" font-size="72" font-weight="800" fill="url(#accent)">Sandymount</text>
|
|
48
|
+
|
|
49
|
+
<!-- SAND Letters -->
|
|
50
|
+
<g transform="translate(600, 320)">
|
|
51
|
+
<!-- S -->
|
|
52
|
+
<g transform="translate(-270, 0)">
|
|
53
|
+
<rect x="-60" y="-60" width="120" height="120" rx="16" fill="white" stroke="#e4e4e7" stroke-width="2"/>
|
|
54
|
+
<text x="0" y="25" text-anchor="middle" font-family="Inter, system-ui, sans-serif" font-size="72" font-weight="800" fill="url(#s-grad)">S</text>
|
|
55
|
+
</g>
|
|
56
|
+
<!-- A -->
|
|
57
|
+
<g transform="translate(-90, 0)">
|
|
58
|
+
<rect x="-60" y="-60" width="120" height="120" rx="16" fill="white" stroke="#e4e4e7" stroke-width="2"/>
|
|
59
|
+
<text x="0" y="25" text-anchor="middle" font-family="Inter, system-ui, sans-serif" font-size="72" font-weight="800" fill="url(#a-grad)">A</text>
|
|
60
|
+
</g>
|
|
61
|
+
<!-- N -->
|
|
62
|
+
<g transform="translate(90, 0)">
|
|
63
|
+
<rect x="-60" y="-60" width="120" height="120" rx="16" fill="white" stroke="#e4e4e7" stroke-width="2"/>
|
|
64
|
+
<text x="0" y="25" text-anchor="middle" font-family="Inter, system-ui, sans-serif" font-size="72" font-weight="800" fill="url(#n-grad)">N</text>
|
|
65
|
+
</g>
|
|
66
|
+
<!-- D -->
|
|
67
|
+
<g transform="translate(270, 0)">
|
|
68
|
+
<rect x="-60" y="-60" width="120" height="120" rx="16" fill="white" stroke="#e4e4e7" stroke-width="2"/>
|
|
69
|
+
<text x="0" y="25" text-anchor="middle" font-family="Inter, system-ui, sans-serif" font-size="72" font-weight="800" fill="url(#d-grad)">D</text>
|
|
70
|
+
</g>
|
|
71
|
+
</g>
|
|
72
|
+
|
|
73
|
+
<!-- Labels under letters -->
|
|
74
|
+
<g transform="translate(600, 410)" font-family="Inter, system-ui, sans-serif" font-size="14" fill="#52525b">
|
|
75
|
+
<text x="-270" y="0" text-anchor="middle">Solid</text>
|
|
76
|
+
<text x="-90" y="0" text-anchor="middle">ActivityPub</text>
|
|
77
|
+
<text x="90" y="0" text-anchor="middle">Nostr</text>
|
|
78
|
+
<text x="270" y="0" text-anchor="middle">did:nostr</text>
|
|
79
|
+
</g>
|
|
80
|
+
|
|
81
|
+
<!-- Tagline -->
|
|
82
|
+
<text x="600" y="500" text-anchor="middle" font-family="Inter, system-ui, sans-serif" font-size="32" font-weight="400" fill="#52525b">The Open, Agentic, Decentralized Web</text>
|
|
83
|
+
|
|
84
|
+
<!-- URL -->
|
|
85
|
+
<text x="600" y="580" text-anchor="middle" font-family="Inter, system-ui, sans-serif" font-size="20" fill="#7c3aed">sandy-mount.com</text>
|
|
86
|
+
</svg>
|
package/package.json
CHANGED
|
@@ -1,12 +1,38 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sandymount",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "SAND Stack: Solid + ActivityPub + Nostr + DID — Personal sovereignty in one command",
|
|
5
5
|
"main": "index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"sandymount": "./bin/sandymount.js",
|
|
9
|
+
"sand": "./bin/sandymount.js"
|
|
10
|
+
},
|
|
6
11
|
"scripts": {
|
|
7
|
-
"
|
|
12
|
+
"start": "node bin/sandymount.js start",
|
|
13
|
+
"test": "echo \"No tests yet\""
|
|
14
|
+
},
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/sandy-mount/sandymount.git"
|
|
8
18
|
},
|
|
9
|
-
"keywords": [
|
|
19
|
+
"keywords": [
|
|
20
|
+
"solid",
|
|
21
|
+
"activitypub",
|
|
22
|
+
"nostr",
|
|
23
|
+
"did",
|
|
24
|
+
"decentralized",
|
|
25
|
+
"pod",
|
|
26
|
+
"fediverse",
|
|
27
|
+
"self-hosted"
|
|
28
|
+
],
|
|
10
29
|
"author": "",
|
|
11
|
-
"license": "AGPL"
|
|
30
|
+
"license": "AGPL-3.0",
|
|
31
|
+
"bugs": {
|
|
32
|
+
"url": "https://github.com/sandy-mount/sandymount/issues"
|
|
33
|
+
},
|
|
34
|
+
"homepage": "https://sandy-mount.com",
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"javascript-solid-server": "^0.0.60"
|
|
37
|
+
}
|
|
12
38
|
}
|