Features Overview
JSS is a lightweight, fast Solid server for Node.js. It implements the Solid Protocol with additional features for development, federation, and personal pod hosting.
Current version: 0.0.86
Quick Start
npx servejss
A drop-in alternative to npx serve with REST write support, live reload, and Solid protocol underneath.
Core Solid Protocol
| Feature | Description | Docs |
|---|---|---|
| LDP CRUD | GET, PUT, POST, DELETE, HEAD on resources and containers | Details |
| Web Access Control | WAC with .acl files, agent/group/public permissions | Details |
| Content Negotiation | JSON-LD, Turtle, N3, N-Triples (--conneg) | |
| Patching | N3 Patch + SPARQL Update for partial edits | Details |
| Conditional Requests | If-Match / If-None-Match with ETag support (304, 412) | |
| WebSocket Notifications | Real-time updates via solid-0.1 protocol | Details |
| Multi-user Pods | Path-based or subdomain-based pod isolation | Details |
| Pod Discovery | .well-known/openid-configuration, TypeIndex generation | |
| HTTP Range Requests | Partial content delivery for streaming media | |
| Storage Quotas | Per-pod quota enforcement with CLI management | Details |
| CORS | Full cross-origin support with proper header exposure |
Authentication & Identity
| Feature | Description | Docs |
|---|---|---|
| Solid-OIDC | Token validation with DPoP proof-of-possession | Details |
| Built-in Identity Provider | Full OAuth2/OIDC login flows (--idp) | |
| Passkey / WebAuthn | Passwordless authentication using FIDO2 | |
| WebID-TLS | Client certificate authentication with X.509 certs | |
| Nostr NIP-98 | Schnorr signature-based HTTP auth, did:nostr identity | Details |
| Invite-only Registration | Restrict signups with invite codes (--invite-only) | Details |
| Token Management | DPoP validation, jti replay prevention |
Developer Tools
| Feature | Description | Docs |
|---|---|---|
| Live Reload | Edit a file, browser refreshes automatically (--live-reload) | Details |
| Public Mode | Skip authentication for local development (--public) | |
| Read-only Mode | Disable PUT/DELETE/PATCH for safe viewing (--read-only) | |
| Single-user Mode | Personal pod server, no registration needed (--single-user) | |
| File Watcher | Detects filesystem changes and triggers WebSocket notifications | |
| Mashlib / SolidOS | Data browser UI, local or CDN mode (--mashlib, --mashlib-cdn) | Details |
| SolidOS UI | Modern Nextcloud-style interface (--solidos-ui) | |
| Config System | CLI args > env vars > config file > defaults | |
| Print Config | Debug configuration with --print-config |
Federation & Social
| Feature | Description | Docs |
|---|---|---|
| ActivityPub | Full federation support with inbox, outbox, followers (--activitypub) | Details |
| Webfinger | Standard actor discovery for federation | |
| Nostr Relay | NIP-01 relay with configurable event limits (--nostr) | Details |
| Nostr Event Types | Replaceable, ephemeral, parameterized replaceable kinds | |
| Nostr-AP Linking | Link Nostr identity to ActivityPub actor (--ap-nostr-pubkey) | Details |
Security
| Feature | Description | Docs |
|---|---|---|
| Inbox & Spam Mitigation | Layered defenses on LDP inboxes | Details |
| Rate Limiting | Global (100/min), writes (60/min), pod creation (1/day) | |
| SSL/TLS | HTTPS with custom certificates (--ssl-key, --ssl-cert) | |
| Dotfile Protection | Blocks .git, .env, .htpasswd access | |
| SSRF Protection | URL validation for external fetches | |
| Path Traversal Protection | Sanitization in all handlers | |
| DPoP Replay Prevention | jti cache prevents token reuse | |
| Password Hashing | bcryptjs with minimum length validation |
Integrations
| Feature | Description | Docs |
|---|---|---|
| Git HTTP Backend | Clone and push repos via HTTPS (--git) | Details |
| servejss | npx serve alternative with write support and live reload | |
| Cross-platform | Runs on Android/Termux via sql.js and bcryptjs fallbacks |
HTTP Methods
| Method | Support |
|---|---|
| GET | Full |
| HEAD | Full |
| PUT | Full |
| POST | Full |
| DELETE | Full |
| PATCH | N3 Patch + SPARQL Update |
| OPTIONS | Full with CORS |
CLI Commands
jss start [options] # Start the server
jss init # Interactive configuration setup
jss invite create # Create invite code
jss invite list # List invite codes
jss invite revoke <code> # Revoke invite code
jss quota set <user> <size> # Set storage quota
jss quota show <user> # Show quota info
jss quota reconcile <user> # Recalculate from disk
What's New Since v0.0.42
| Version | Feature |
|---|---|
| v0.0.59 | Nostr relay (NIP-01) |
| v0.0.61 | ActivityPub federation |
| v0.0.75 | WebID-TLS authentication |
| v0.0.76 | SolidOS modern UI |
| v0.0.77 | Single-user mode, Passkey/WebAuthn auth |
| v0.0.80 | Cross-platform support (Android/Termux) |
| v0.0.82 | Public mode, Read-only mode |
| v0.0.84 | Live reload with filesystem watcher |
| v0.0.85 | File watcher for external changes |
| v0.0.86 | WebSocket fix for public mode, port fix for file watcher |