๐ 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
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
Public Gateways
| Gateway | URL |
|---|---|
| besoeasy | https://originless.besoeasy.com/ |
| gupt.app | https://originless.gupt.app/ |
| 0xchat | https://originless.0xchat.com/ |
๐ Use Cases
- ๐ Decentralized Apps โ Build your frontend and upload the
distfolder to host your live DApp on IPFS - ๐ผ๏ธ Screenshot Tools โ Anonymous image hosting for screenshots and screen recordings
- ๐ Pastebin Alternative โ Decentralized paste and snippet sharing
- ๐ฌ Nostr Clients โ Media attachments for decentralized social apps
- ๐จ Portfolio Hosting โ Permanent galleries and portfolios that survive link rot
- ๐ฆ Package Distribution โ Resilient software and asset distribution
- ๐ต Podcast Hosting โ Decentralized RSS feed media hosting
- ๐พ Backup Storage โ Self-healing backup infrastructure
๐ How It Works
- 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
๐ค Integrations
| Platform | Description |
|---|---|
| 0xchat | Private, decentralized Nostr chat |
| ZeroNote | Anonymous encrypted notes sharing |
| gupt.app | Private, anonymous file sharing |
โ๏ธ Configuration
| Variable | Default | Description |
|---|---|---|
STORAGE_MAX |
200GB |
Maximum storage limit for IPFS |
PORT |
3232 |
API server port |
๐ ๏ธ API Reference
Base URL: http://localhost:3232
POST /upload
Upload a single file.
curl -X POST -F "[email protected]" http://localhost:3232/upload
{
"status": "success",
"cid": "QmX...",
"url": "https://dweb.link/ipfs/QmX...?filename=yourfile.pdf",
"size": 12345,
"type": "application/pdf",
"filename": "yourfile.pdf"
}
POST /uploadzip
Upload a .zip archive. Originless extracts it and stores the entire folder to IPFS as a directory. Use this for static site and DApp deploys.
curl -X POST -F "[email protected]" http://localhost:3232/uploadzip
{
"status": "success",
"cid": "QmX...",
"url": "https://dweb.link/ipfs/QmX.../",
"filename": "dist.zip",
"fileCount": 12
}
๐ค AI Agent Integration
Teach your agents (Cursor, GitHub Copilot, Claude, etc.) to use Originless โ no API keys, no accounts, no configuration required. Just point them at a running instance.
Example Prompts
- "What's the current Bitcoin price? Create a beautiful
index.htmlreport and upload it tohttps://originless.besoeasy.com/uploadso I can share it." - "Generate a complex 3D fractal image, save it as a PNG, and upload it to my local Originless node at
http://localhost:3232/upload." - "Build a React Pomodoro timer app, zip the
distoutput, and publish it live to IPFS viahttps://originless.besoeasy.com/uploadzip."