GitHub - JavaScriptSolidServer/JavaScriptSolidServer: JavaScriptSolidServer

JavaScript Solid Server

npm version

A minimal, fast, JSON-LD native Solid server.

Documentation | GitHub

Features

  • 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
  • remoteStoragedraft-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 CLIjss 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

Quick Start

# Install
npm install -g javascript-solid-server

# Start
jss start

# With common options
jss start --port 8443 --idp --mashlib --conneg --git --nostr

Creating a Pod

curl -X POST http://localhost:3000/.pods \
  -H "Content-Type: application/json" \
  -d '{"name": "alice"}'

Using the Pod

# Read
curl http://localhost:3000/alice/public/

# Write
curl -X PUT http://localhost:3000/alice/public/data.json \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/ld+json" \
  -d '{"@id": "#data", "http://example.org/value": 42}'

Android/Termux

pkg install nodejs git
npm install -g javascript-solid-server
jss start --port 8080 --nostr --git

CLI Reference

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

Documentation

Topic Link
Configuration & Options docs/configuration.md
Authentication docs/authentication.md
Mashlib / SolidOS UI docs/mashlib.md
WebSocket Notifications docs/notifications.md
Git Support docs/git-support.md
Nostr Relay docs/nostr.md
ActivityPub & Mastodon API docs/activitypub.md
remoteStorage docs/remotestorage.md
WebRTC & Tunnel docs/webrtc.md
Terminal & Password CLI docs/terminal.md
MongoDB /db/ Route docs/mongodb.md
HTTP 402 Payments docs/payments.md
Storage Quotas docs/quotas.md
Invite-Only Registration docs/invites.md
Security & Subdomain Mode docs/security.md
Architecture & Structure docs/architecture.md

Comparison

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

Performance

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

Running Tests

License

AGPL-3.0-only