Developer Tool

Share any folder
to the internet

One command. No cloudflared. No ngrok. Your files, your tunnel, your rules.

terminal
$ shareiscare --dir ./my-project
📁 Sharing: /Users/you/my-project
🌍 Public: https://a1b2c3d4e5f6a7b8.shareiscare.dev
🔐 Admin: http://127.0.0.1:9898?token=f3a1...
Tunnel connected
$
How It Works

Three steps, zero friction

Run

Start the binary. A unique URL is generated instantly.

Share

Send the URL. Files served through Cloudflare's edge.

Control

Hide sensitive files with gitignore-style patterns.

Built for developers

Zero Config

One command, instant URL, no accounts. Just run it and share.

Privacy Rules

Gitignore-style patterns. .env, .git, and keys blocked by default.

Admin Panel

Local web UI to toggle files, manage visibility rules, all in real time.

ZIP Downloads

Download entire folders as ZIP archives. Respects all visibility rules.

Auto Reconnect

Exponential backoff on disconnect. Your URL stays the same.

No Cloudflared

Direct WebSocket tunnel to Cloudflare's edge. No third-party daemon needed.

Get started in seconds

# Install via Homebrew (macOS & Linux)
$ brew install rodrwan/tap/shareiscare
# Share current directory
$ shareiscare
# Share a specific folder with a custom hash
$ shareiscare --hash myfiles --dir ./public
Flag Default Description
--hash auto (16-char hex) Subdomain hash for your URL
--new-hash false Force a new hash and URL, ignoring persisted values
--password Require password for public access (HTTP Basic Auth)
--max-bandwidth 0 (unlimited) Max daily bandwidth in MB
--dir . Directory to share
--admin-port 9898 Admin panel port
--config <dir>/.shareiscare.json Path to config file
--no-admin false Disable admin panel
--no-defaults false Don't seed default sensitive patterns
--max-zip 100 MB Max total size for ZIP downloads
--version Print version and exit

How it works under the hood

Browser
User request
Cloudflare Edge
Worker + Durable Object
WebSocket
Your Machine
Go binary (shareHandler)

Requests are routed by subdomain hash to a Durable Object, which holds a persistent WebSocket connection to your local Go binary. HTTP requests and responses are serialized as JSON with base64 bodies over the WebSocket—no port forwarding, no daemon, no configuration.

Self-Hosting

Run it on your own Cloudflare

shareiscare runs entirely on Cloudflare's free tier. You can deploy your own instance with your own domain in a few minutes.

0 Prerequisites

Cloudflare account (free plan works)
Domain added to Cloudflare DNS
Node.js ≥ 20 for Wrangler CLI
Go ≥ 1.25 to build the binary

1 Fork & clone the repo

$ git clone https://github.com/YOUR_USER/shareiscare.git
$ cd shareiscare

2 Replace the domain in 3 files

Replace every occurrence of shareiscare.dev with your own domain. For example, if your domain is files.example.com:

worker/wrangler.toml
# Change routes to your domain
pattern = "*.files.example.com/*"
zone_name = "example.com"
worker/src/worker.js
# Update the bare-domain check (line ~161)
if (!hash || hash === "files")
cmd/shareiscare/main.go
# Two lines reference the domain
// Tunnel URL (~line 538)
wss://%s.files.example.com/__tunnel_connect
// Log output (~line 113)
https://%s.files.example.com

3 Deploy the Worker

# Login to Cloudflare (first time only)
$ npx wrangler login
# Deploy
$ make deploy

4 Build & run

$ make build
$ ./bin/shareiscare --dir ./my-folder
# Your files are now at https://<hash>.files.example.com
Cloudflare free tier includes Workers, Durable Objects with SQLite, and WebSocket Hibernation—everything shareiscare needs. You won't be charged unless you exceed free tier limits (100k requests/day, 1GB Durable Object storage).