A beautiful terminal-based pastebin application built with Bubble Tea that uses the Walrus Protocol for decentralized file storage and Fluence Network for decentralized deployment.
π€ Built @ ETHGlobal Delhi 2025 with Decentralized Technologies
- π€ Upload Files: Store any file on the Walrus decentralized storage network
- π Read Files: Retrieve files using their Blob ID
- π¨ Beautiful TUI: Intuitive terminal user interface built with Bubble Tea
- π Decentralized: Powered by Walrus Protocol on Sui blockchain
- πΎ Save Locally: Download retrieved files to your local system
- π Fast & Reliable: Built with Go for performance
- β‘ Zero Configuration: Pre-configured with reliable Walrus endpoints
- π± Responsive: Adapts to any terminal size
- π Clipboard Integration: Automatic Blob ID copying to clipboard
- π Browser Integration: Open files directly in your browser
- π WalrusScan Integration: Explore blobs on WalrusScan
- π― Post-Upload Actions: Multiple options after successful upload
- π File Metadata: Stores filename, extension, size, and upload time
- π Smart Retrieval: Preserves original filenames and file information
- Storage: Walrus Protocol - Decentralized storage on Sui blockchain
- Deployment: Fluence Network - Decentralized cloud infrastructure
- Frontend: Bubble Tea - Terminal UI framework
- Language: Go - High-performance systems programming
- Web UI: Native Go HTTP server with Templ templates
- Go 1.19 or later
- Internet connection for accessing Walrus network
# Install latest version
go install github.com/smrnjeet222/oxbin/cmd/oxbin@latest
# Run from anywhere (make sure $GOPATH/bin is in your PATH)
oxbin# Clone the repository
git clone https://github.com/smrnjeet222/oxbin.git
cd oxbin
# Build using Make
make build
# Or build manually
go build -o bin/oxbin ./cmd/oxbin
# Run the application
./bin/oxbin- Install OxBin using any method above
- Run the application:
oxbin
- Upload your first file:
- Select "π€ Upload File"
- Choose a file from your system
- Copy the generated Blob ID
- Retrieve the file:
- Select "π Read File"
- Enter the Blob ID
- View or save the file
OxBin also ships with a browser UI for uploading, viewing, previewing, and downloading Walrus blobs.
# Generate templates and build the web server
make webui
# Run locally
PORT=8080 ./bin/oxbin-webuiOpen http://localhost:8080 to upload a file directly from the web, or paste an existing blob ID to view it. Web uploads use the same OxBin metadata wrapper as the CLI, so filenames, file sizes, content types, and upload times are preserved.
Files uploaded to Walrus are public to anyone with the blob ID. Do not upload secrets, credentials, private documents, or confidential files.
For public deployments behind a proxy, keep the proxy body limit aligned with the app limit. OxBin currently enforces a default max upload size of 10MB.
Command not found
# Make sure the binary is in your PATH
echo $PATH
which oxbin
# Or run from current directory
./oxbinPermission denied
# Make the binary executable
chmod +x oxbinFile upload fails
- Check file size (default limit: 10MB)
- Verify file permissions
- Try with a smaller file first
OxBin automatically stores and preserves file metadata when uploading files:
- Filename: Original filename with extension
- File Size: Size in bytes (displayed in human-readable format)
- Content Type: MIME type based on file extension
- Upload Time: When the file was uploaded
- Version: Metadata format version
- Files are wrapped in a JSON structure with metadata before uploading to Walrus
- Original file content is base64-encoded within the wrapper
- When retrieving files, OxBin automatically detects and unwraps the metadata
- non-oxbin files (uploaded elsewhere) are displayed as raw content
When you upload a file through OxBin, it's stored in this JSON format:
{
"metadata": {
"filename": "example.txt",
"extension": ".txt",
"size": 1024,
"contentType": "text/plain",
"uploadTime": "2024-01-15T10:30:00Z",
"version": "1.0"
},
"content": "SGVsbG8gV29ybGQh",
"type": "oxbin-file"
}- metadata: Contains file information (name, size, type, upload time)
- content: Base64-encoded original file content
- type: Always "oxbin-file" to identify OxBin uploads
This format ensures:
- β Backward Compatibility: Works with any Walrus blob
- β Rich Metadata: Preserves file context and information
- β Content Integrity: Original file is perfectly preserved
- β Type Detection: Automatic identification of OxBin vs raw blobs
- Preserve Context: Know what file you're looking at
- Smart Saving: Original filenames are suggested when saving
- Better Organization: See upload dates and file types at a glance
- Backward Compatible: Works with any blob stored on Walrus
OxBin uses hardcoded, reliable Walrus endpoints for optimal performance and simplicity:
- Primary Publisher:
https://publisher.walrus-testnet.walrus.space - Primary Aggregator:
https://aggregator.walrus-testnet.walrus.space - Backup Publisher:
https://walrus-publisher-testnet.staking4all.org - Backup Aggregator:
https://walrus-testnet-aggregator.staking4all.org
The application automatically uses backup endpoints if primary ones are unavailable.
The interface automatically adapts to your terminal size:
- Small terminals (< 50 chars): Compact layout with essential information
- Medium terminals (50-80 chars): Standard layout with full features
- Large terminals (> 80 chars): Expanded layout with detailed information
- Network timeouts: 60 seconds for uploads, 30 seconds for downloads
- Connection issues: Automatic retry suggestions
- Invalid files: Clear error messages with guidance
- Endpoint failures: Automatic fallback to alternative endpoints
- Bubble Tea - TUI framework
- Bubbles - TUI components (filepicker, textinput, viewport, spinner)
- Lip Gloss - Terminal styling
- Walrus Go SDK - Walrus Protocol integration
Contributions are welcome! Please feel free to submit a Pull Request.
Built with β€οΈ using Go, Bubble Tea, and Walrus Protocol

