Solid Β· ActivityPub Β· Nostr Β· DID
Personal sovereignty in one command
Quick Start Β· Features Β· Why SAND? Β· Roadmap
npm install -g sandymount
sandymount startThat's it. Your personal SAND server is running.
Four protocols, one stack, total sovereignty:
| Protocol | What You Get | |
|---|---|---|
| S | Solid | Personal data pod β files, profiles, apps |
| A | ActivityPub | Federated social β Mastodon, Threads, WordPress |
| N | Nostr | Censorship-resistant social β relays, zaps, keys |
| D | DID | Decentralized identity β one key, every protocol |
| Feature | Description |
|---|---|
| Solid Pod | Full LDP server with WebID, Web Access Control, Solid-OIDC |
| Nostr Relay | NIP-01 compliant, rate-limited, memory-efficient |
| Git Server | Clone and push repos via HTTP with WebID auth |
| DID Resolution | did:nostr β WebID, NIP-98 HTTP authentication |
| Mobile Ready | Runs on Android/Termux, ~100MB RAM |
| Feature | Description |
|---|---|
| ActivityPub | Mastodon-compatible federation via FedBox |
| Unified Identity | One keypair for Solid + AP + Nostr |
| P2P Connectivity | No VPS required |
npm install -g sandymount
sandymount startpkg install nodejs-lts
npm install -g sandymount pm2
pm2 start sandymount -- start
pm2 savesandymount start --port 3000 --nostr --gitsandymount start --solidos-uiUses a modern Nextcloud-style interface instead of the classic mashlib databrowser. Requires local mashlib and solidos-ui files. See solidos-ui for setup.
| Endpoint | Protocol | Description |
|---|---|---|
/ |
Solid | Pod root, WebID profile |
/relay |
Nostr | WebSocket relay (wss://) |
/relay/info |
Nostr | NIP-11 relay metadata |
/.git |
Git | Clone/push repositories |
/.well-known/webfinger |
Discovery | WebFinger lookup |
| Your Life | Who Controls It |
|---|---|
| Identity | Google, Apple, Facebook |
| Files | Dropbox, iCloud, Drive |
| Social | Twitter, Instagram, TikTok |
| Followers | The platform |
| SAND Protocol | What It Fixes |
|---|---|
| DID | You own your identity |
| Solid | You own your data |
| Nostr | You own your voice |
| ActivityPub | You own your social graph |
Your phone = Your server
Your key = Your identity
Your pod = Your data
Your relay = Your reach
Zero to sovereignty in 60 seconds.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SAND Stack β
ββββββββββββββ¬βββββββββββββ¬βββββββββββββ¬βββββββββββββββ€
β Solid β ActivityPubβ Nostr β DID β
β (LDP) β (AP) β (NIP-01) β (did:nostr) β
ββββββββββββββ΄βββββββββββββ΄βββββββββββββ΄βββββββββββββββ€
β Fastify Server β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Filesystem β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
One port Β· One process Β· One identity
- Solid pod (LDP, WAC, WebID)
- Nostr relay (NIP-01, NIP-11)
- Git HTTP backend
- DID resolution (did:nostr)
- Android/Termux support
- ActivityPub integration
- Mastodon compatibility
- WebID = AP Actor = Nostr pubkey
- One-tap install app
- Built-in relay service
- P2P mode (no VPS)
- Clustering
- Admin dashboard
- Plugin system
# CLI
sandymount start --port 3000 --nostr --git
# Modern UI
sandymount start --solidos-ui
# Environment
export SAND_PORT=3000
export SAND_NOSTR=true
export SAND_GIT=true| Option | Description | Default |
|---|---|---|
--port <n> |
Port to listen on | 5420 |
--root <path> |
Data directory | ./data |
--solidos-ui |
Modern Nextcloud-style UI | false |
--no-nostr |
Disable Nostr relay | - |
--no-git |
Disable Git backend | - |
--no-idp |
Disable identity provider | - |
--no-mashlib |
Disable UI entirely | - |
--activitypub |
Enable ActivityPub | false |
--quiet |
Suppress logs | false |
| Resource | Link |
|---|---|
| Website | sandy-mount.com |
| GitHub | sandy-mount/sandymount |
| npm | npmjs.com/package/sandymount |
| Solid | solidproject.org |
| Nostr | nostr.com |
| ActivityPub | activitypub.rocks |
We welcome contributions in:
- ActivityPub integration
- Mobile app development
- P2P connectivity
- Documentation
See Issue #3 for the SAND Stack roadmap.
AGPL-3.0 β Free as in freedom.