Solid Lite

A minimal, composable protocol for the decentralized web

Implement a working server in 10 minutes →

Version 0.0.2 draft

Modular by Design

Solid Lite is a collection of SLIPs (Solid Lite Implementation Proposals) — small, focused specs you can combine. Different combinations create different profiles:

Minimal
4 SLIPs → 10 min
LWS
W3C target
ActivityPub
Fediverse
JSS
All SLIPs
Nostr-Native
Passwordless

Linked Web Storage (W3C Working Group, targeting REC in 2026) is one combination of SLIPs. Pick the SLIPs you need for your use case.

Composable Building Blocks

Pick the SLIPs you need. Each is a small, focused feature. Mix and match.

Core Foundation (10-minute server)

Authentication

Identity

Authorization

Data & Formats

Federation

Features

Recipes: Combine SLIPs

Minimal Server

SLIP-10 + SLIP-11 + SLIP-12 + SLIP-80

10 minutes to implement

Single-User

Minimal + SLIP-81 + SLIP-90

Personal data store

LWS Profile

Core + SLIP-20 + SLIP-83 + SLIP-91 + SLIP-40

W3C target

ActivityPub

Minimal + SLIP-50 + SLIP-51 + SLIP-52

Fediverse

Full JSS

All SLIPs combined

Complete Solid server

Nostr-Native

Minimal + SLIP-21 + SLIP-82 + SLIP-91

Passwordless, no registration

1. Introduction

Solid Lite is a minimal protocol for building decentralized web applications based on Social Linked Data principles. It prioritizes simplicity and composability—start with a basic server you can build in 10 minutes, then add features via SLIPs as needed.

Quick Start

A minimal Solid Lite server needs:

That's it. Add authentication, authorization, and other features via SLIPs.

2. HTTP Protocol

2.1 Server Requirements

2.2 Client Requirements

3. Resources

3.1 URIs

Resources are identified by URIs conforming to RFC3987. URIs provide consistent identification across the Solid Lite ecosystem.

3.2 CRUD Operations

OperationMethodSuccessNot Found
CreatePUT201 Created-
ReadGET, HEAD200 OK404
UpdatePUT200 / 204404
DeleteDELETE200 / 204404

Servers MUST support GET, HEAD, OPTIONS, PUT, and DELETE methods.

4. CORS

Servers MUST include CORS headers to allow browser-based applications to access resources across origins:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, HEAD, OPTIONS, PUT, DELETE, POST
Access-Control-Allow-Headers: Content-Type, Authorization

5. Identity

Identity in Solid Lite can be established via:

The profile SHOULD live at the root of storage for human-friendly URLs. See did:nostr spec for details.

6. Authentication

Authentication verifies identity. Solid Lite defines a layered approach—choose the level appropriate for your use case:

6.1 Null Auth (SLIP-80)

Testing only. Everyone can read and write. MUST NOT be used in production.

6.2 Bearer Auth (SLIP-81)

Single-user mode. A shared API key sent via header:

Authorization: Bearer <SOLID_API_KEY>

Server returns 401 if key is missing or invalid.

6.3 Schnorr Auth (SLIP-82)

Multi-user mode. Uses NIP-98 HTTP authentication with Schnorr signatures:

Authorization: Nostr <base64-encoded-signed-event>

The signed event (kind 27235) contains the URL and HTTP method, verified against the user's Nostr public key. No certificates or passwords required.

7. Authorization

The default authorization policy (SLIP-90):

Access denial returns:

8. Data Format

Resources use JSON-LD 1.1 for structured, linked data. Example profile:

{
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/webid"
  ],
  "@id": "#me",
  "type": "Person",
  "name": "Alyssa P. Hacker",
  "preferredUsername": "alyssa",
  "summary": "Lisp enthusiast",
  "storage": "/",
  "nostr": "did:nostr:abcd0123..."
}

9. Extending Solid Lite

Solid Lite is extended via SLIPs (Solid Lite Implementation Proposals). Each SLIP adds a composable feature:

Combine SLIPs to build the server you need—from a minimal 10-minute implementation to a full-featured system like JSS.

Related Projects

The Solid Lite ecosystem