Your First Pod
Get a Solid pod running and store your first data. Takes about 15 minutes.
What You'll Build
By the end of this guide, you'll have:
- A running Solid pod
- A WebID (your identity)
- Data stored in your pod
- Understanding of basic pod operations
Prerequisites
- Node.js 18+ installed
- A terminal
Step 1: Start Sandymount
The fastest way to get a pod is Sandymount:
npx sandymount
You'll see the SAND banner and status:
┌────────────────────────────────────┐
│ S Solid ✓ enabled │
│ A ActivityPub ○ --activitypub │
│ N Nostr ✓ enabled │
│ D DID ✓ enabled (IdP) │
└────────────────────────────────────┘
Port: 5420 Data: ./data Git: ✓ UI: classic
Your pod is now running at http://localhost:5420/.
Step 2: Open SolidOS
Open your browser to http://localhost:5420/.
You'll see the SolidOS data browser — a visual interface for your pod.
Step 3: Create an Account
- Click "Log in" or "Sign up"
- Since you're running your own IdP, you can create an account
- Choose a username and password
- Your WebID is created:
http://localhost:5420/profile/card#me
Step 4: Explore Your Pod
Your pod has a file structure:
http://localhost:5420/
├── profile/
│ └── card # Your WebID profile
├── public/ # Publicly accessible folder
├── private/ # Private folder
└── settings/ # App settings
Click around in SolidOS to see your data.
Step 5: Create a Resource
Let's create a simple note using the command line:
curl -X PUT http://localhost:5420/public/note.txt \
-H "Content-Type: text/plain" \
-d "Hello, Solid!"
Now visit http://localhost:5420/public/note.txt — there's your data!
Step 6: Create Linked Data
Solid really shines with Linked Data. Let's create a Turtle file:
curl -X PUT http://localhost:5420/public/me.ttl \
-H "Content-Type: text/turtle" \
-d '@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<#me> a foaf:Person ;
foaf:name "Your Name" ;
foaf:interest <https://solidproject.org> .'
Visit http://localhost:5420/public/me.ttl to see it rendered.
Step 7: Read Data Programmatically
Using JavaScript:
// Fetch Turtle data
const response = await fetch('http://localhost:5420/public/me.ttl', {
headers: { 'Accept': 'text/turtle' }
});
const turtle = await response.text();
console.log(turtle);
Or request JSON-LD:
const response = await fetch('http://localhost:5420/public/me.ttl', {
headers: { 'Accept': 'application/ld+json' }
});
const jsonld = await response.json();
console.log(jsonld);
What's Next?
You now have a working Solid pod! From here:
- Authentication — Learn about auth methods
- Building Solid Apps — Create apps that use pods
- Solid Protocol — Understand the spec
- Linked Data — Dive into RDF
Troubleshooting
Port already in use
sandymount --port 3000
Permission denied
Make sure you're authenticated when accessing protected resources.
Data not appearing
Check the Content-Type header matches your data format.