
A minimal, fast, JSON-LD native Solid server.
Documentation | GitHub
- LDP CRUD — GET, PUT, POST, DELETE, HEAD, PATCH (N3 + SPARQL Update)
- JSON-LD Native — Stores and serves JSON-LD by default, Turtle via --conneg
- Web Access Control — .acl file-based authorization
- Solid-OIDC — Built-in Identity Provider with DPoP, passkeys, Schnorr SSO
- WebSocket Notifications — Real-time updates (solid-0.1 protocol)
- Content Negotiation — Turtle ↔ JSON-LD conversion (optional)
- Multi-user Pods — Path-based (/alice/) or subdomain-based (alice.example.com)
- Single-User Mode — Personal pod server with --single-user
- Git HTTP Backend — Clone and push to pod containers
- Nostr Relay — Integrated NIP-01 relay (wss://your.pod/relay)
- Nostr Auth — NIP-98 signatures, did:nostr → WebID resolution
- ActivityPub — Fediverse federation with Mastodon-compatible API
- remoteStorage — draft-dejong-remotestorage-22 file sync
- MongoDB Storage — Optional /db/ route for JSON-LD at scale
- WebRTC Signaling — Peer-to-peer connections via WebID-authenticated signaling
- Tunnel Proxy — Decentralized ngrok through your pod
- Terminal — WebSocket shell access via --terminal
- Password CLI — jss passwd for user password management
- HTTP 402 Payments — Monetize endpoints with per-request sat payments
- Mashlib / SolidOS UI — Optional data browser (CDN, local, or ES module)
- Storage Quotas — Per-user limits with CLI management
- Invite-Only Mode — Controlled registration via invite codes
- SSL/TLS, CORS, Range Requests, Conditional Requests
# Install
npm install -g javascript-solid-server
# Start
jss start
# With common options
jss start --port 8443 --idp --mashlib --conneg --git --nostr
curl -X POST http://localhost:4443/.pods \
-H "Content-Type: application/json" \
-d '{"name": "alice"}'
# Read
curl http://localhost:4443/alice/public/
# Write
curl -X PUT http://localhost:4443/alice/public/data.json \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/ld+json" \
-d '{"@id": "#data", "http://example.org/value": 42}'
pkg install nodejs git
npm install -g javascript-solid-server
jss start --port 8080 --nostr --git
jss start [options] # Start the server
jss init [options] # Initialize configuration
jss invite <cmd> # Manage invite codes
jss quota <cmd> # Manage storage quotas
jss passwd <username> # Manage user passwords
Key options: --port, --idp, --conneg, --mashlib, --git, --nostr, --activitypub, --webrtc, --tunnel, --terminal, --mongo, --pay, --public, --single-user
Full options: docs/configuration.md
| Server |
Package |
Packages |
node_modules |
| JSS |
~1 MB |
~191 |
~77 MB |
| CSS |
~6 MB |
~311 |
~152 MB |
| Pivot |
~6 MB |
~311+ |
~152 MB |
| NSS |
~7 MB |
~670 |
~539 MB |
| Operation |
Requests/sec |
Avg Latency |
p99 Latency |
| GET resource |
5,400+ |
1.2ms |
3ms |
| GET container |
4,700+ |
1.6ms |
3ms |
| PUT (write) |
5,700+ |
1.1ms |
2ms |
| POST (create) |
5,200+ |
1.3ms |
3ms |
| OPTIONS |
10,000+ |
0.4ms |
1ms |
AGPL-3.0-only