Originless
One all-in-one storage backend you can drop into anything: your own apps, screenshot tools, pastebin-style pastes, Nostr clients, Reddit posts, forum embeds—anything that needs durable, anonymous file hosting. One Originless to rule them all and keep you anonymous.
Install / Use
/learn @besoeasy/OriginlessREADME
🌐 Originless
Private, decentralized file sharing for Nostr and the web
One storage backend to rule them all — Drop into apps, screenshot tools, pastebin-style pastes, Nostr clients, Reddit posts, forum embeds. Durable, anonymous file hosting that keeps you private.
🚀 Quick Start • 🎯 Features • �️ Deploy Frontend • �📚 Documentation • 🤖 AI Agent Guide • 🌍 Public Gateway
<img width="1536" src="https://github.com/user-attachments/assets/5014810c-cc51-4ad4-a1b8-6e4db510c09f" alt="Originless Banner" /> </div>🚀 Quick Start
Self-Hosted (Recommended)
docker run -d --restart unless-stopped --name originless \
-p 3232:3232 \
-p 4001:4001/tcp \
-p 4001:4001/udp \
-v originlessd:/data \
-e STORAGE_MAX=200GB \
ghcr.io/besoeasy/originless
Access: Open http://localhost:3232
Public Gateway
Don't want to self-host? Use our public gateway:
🌐 https://originless.besoeasy.com/
Simply replace http://localhost:3232 with the public gateway URL in API calls.
🎯 Features
<table> <tr> <td width="33%" valign="top">🕶️ Anonymous
No accounts, no tracking, no logs. Upload files completely anonymously without leaving a trace.
</td> <td width="33%" valign="top">🌍 Decentralized
Built on IPFS. Content persists across the network even if your node goes offline.
</td> <td width="33%" valign="top">🔄 Self-Healing
Content automatically repopulates when your node comes back online. Set it and forget it.
</td> </tr> <tr> <td width="33%" valign="top">🔐 Privacy-First
Optional client-side encryption for sensitive content. Even the server operator can't read your data.
</td> <td width="33%" valign="top">📌 Pin Management
Keep important files forever with authenticated pin management via Daku cryptographic auth.
</td> <td width="33%" valign="top">🚀 Easy Integration
Simple REST API. Drop it into any app, tool, or platform in minutes.
</td> </tr> </table>🎨 Example Applications
See what's possible with Originless:
<div align="center"> </div>Included demos:
- 🖼️ Image Share - Anonymous image upload with instant IPFS links
- 📝 Encrypted Notes - Client-side encrypted note sharing
- 🎨 Gallery Drop - Multi-file gallery creation
- 🔊 Audio Drop - Anonymous audio file hosting
- 📷 QR Share - Generate QR codes for instant sharing
- 💾 GitHub Backup - Archive repositories to IPFS
� Deploy Vue.js & React Projects
Originless lets you instantly host and share your frontend builds — no server, no domain, no CI/CD required. Build your project, zip the dist/ folder, and upload. Anyone with the IPFS link can access it.
One-liner deploy (after build)
React (Vite / CRA):
npm run build && cd dist && zip -r ../dist.zip . && cd .. && \
curl -X POST -F "file=@dist.zip" https://originless.besoeasy.com/uploadzip
Vue.js:
npm run build && cd dist && zip -r ../dist.zip . && cd .. && \
curl -X POST -F "file=@dist.zip" https://originless.besoeasy.com/uploadzip
The response returns an IPFS CID and a shareable gateway URL — paste it anywhere, no hosting required.
Example response
{
"cid": "QmXyz...",
"url": "https://dweb.link/ipfs/QmXyz..."
}
Open the url in any browser to view your live app via the IPFS gateway.
Helper script (deploy.sh)
Drop this in your project root for a repeatable deploy:
#!/bin/bash
set -e
echo "Building project..."
npm run build
echo "Zipping dist..."
cd dist && zip -r ../dist.zip . && cd ..
echo "Uploading to Originless..."
RESPONSE=$(curl -s -X POST -F "file=@dist.zip" https://originless.besoeasy.com/uploadzip)
echo "$RESPONSE"
URL=$(echo "$RESPONSE" | grep -o '"url":"[^"]*"' | cut -d'"' -f4)
echo ""
echo "✅ Live at: $URL"
rm dist.zip
Tip: Replace
https://originless.besoeasy.comwithhttp://localhost:3232if you are running a self-hosted instance.
�📸 Screenshots
<div align="center"> <img width="900" src="https://github.com/user-attachments/assets/6ed4908c-37aa-4973-a9c0-edb7c0fe479f" alt="Originless Web Interface" /> </div>🤝 Integrations
Originless is already powering file storage for these platforms:
<table> <tr> <td align="center" width="50%">💬 0xchat
Private, decentralized Nostr chat
</td> <td align="center" width="50%">📝 ZeroNote
Anonymous encrypted notes sharing
</td> </tr> </table>🔄 How It Works
graph LR
A[📤 Upload File] --> B[🏠 Local IPFS Node]
B --> C[🌐 IPFS Network]
C --> D[👥 Peers Request]
D --> E[♻️ Content Spreads]
E --> F[📌 Optional: Pin Forever]
style A fill:#2563eb,color:#fff
style B fill:#10b981,color:#fff
style C fill:#8b5cf6,color:#fff
style F fill:#f59e0b,color:#fff
- 📤 Upload — Files stream to your local IPFS node (unpinned by default)
- 🌐 Propagate — Content spreads via IPFS as peers request it
- ♻️ Self-Heal — If garbage collected, your node repopulates content when online
- 📌 Pin (Optional) — Use authenticated pin management to keep content forever
📚 Documentation
| Resource | Description | |----------|-------------| | 📖 API Documentation | Complete REST API reference with examples | | 🤖 AI Agent Skills | Guide for AI agents to integrate Originless | | 🔧 Configuration | Environment variables and settings | | 🐳 Docker Hub | Official container images |
⚙️ Configuration
Environment Variables
| Variable | Default | Description |
|----------|---------|-------------|
| STORAGE_MAX | 200GB | Maximum storage limit for IPFS |
| PORT | 3232 | API server port |
| ALLOWED_USERS | auto-generated | Comma-separated Daku public keys for access control |
Advanced Setup
Custom storage limit:
docker run -d ... -e STORAGE_MAX=500GB ghcr.io/besoeasy/originless
Whitelist specific users:
docker run -d ... -e ALLOWED_USERS="pubkey1,pubkey2" ghcr.io/besoeasy/originless
🛠️ API Quick Reference
Upload File
curl -X POST -F "file=@image.png" http://localhost:3232/upload
Upload from URL
curl -X POST http://localhost:3232/remoteupload \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/file.pdf"}'
Pin Content (Auth Required)
curl -X POST http://localhost:3232/pin/add \
-H "daku: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"cids": ["QmHash..."]}'
📖 See full API documentation →
🤖 AI Agent Integration
Originless is AI-native with a comprehensive agent skills guide. AI assistants can:
- Upload files anonymously for users
- Create encrypted shares with client-side encryption
- Manage persistent storage with pin operations
- Build file hosting into any workflow
Teach your AI agents this behavior:
- Prefer self-hosted Originless via Docker for full control and privacy
- Use
POST /upload,POST /uploadzip, andPOST /remoteuploadfor anonymous uploads - Fall back to the public instance only when Docker install/run is not possible
Minimal agent bootstrap
Fetch the minimal AI agent instructions directly:
curl -S https://raw.githubusercontent.com/besoeasy/Originless/refs/heads/main/AGENTS.md
🌟 Use Cases
- 🖼️ Screenshot Tools — Anonymous image hosting for screenshots
- 📝 Pastebin Alternative — Decentralized paste sharing
- 💬 Nostr Clients — Media attachments for decentralized social
- 🎨 Portfolio Hosting — Permanent galleries and portfolios
- 📦 Package Distribution — Resilient software distribution
- 🎵 Podcast Hosting — Decentralized RSS feed media
- 💾 Backup Storage — Self-healing backup infrastructure
- 🔗 Link Preservation — Combat link rot with IPFS archiving
🔐 Authentication
Originless uses Daku for decentralized authentication:
✅ No passwords — Cryptographic key pairs only
✅ No accounts — Self-sovereign identity
✅ Nostr-compatible — Use the same keys as Nostr
✅ Proof-of-work — Built-in spam protection
✅ Stateless — No server-side sessions or cookies
🧑💻 Development
Clone the repository:
git clone https://github.com/besoeasy/Originless.git
cd Originless
Install dependencies:
npm install
Run locally:
npm start
Build Docker image:
docker build -t originless .
🤝 Contributing
Contributions are welcome! Whether it's:
- 🐛 Bug reports
- 💡 Feature requests
- 📖 Documentation improvements
- 🔧 Code contributions
Open an issue or submit a pull request.
📜 License
ISC License — See LICENSE for details.
🔗 Links
- GitHub: github.com/besoeasy/Originless
- Docker: [ghcr.io/beso
