Sender CLI Reference
Sender CLI Reference
cloud-share-sender is the NuGet global tool that starts the local web server, creates the Dev Tunnel, and manages the queue of items to be shared.
Synopsis
cloud-share-sender [options]
Flags
| Flag | Short | Default | Description |
|---|---|---|---|
--port | -p | 5000 | The local port to listen on |
--log | -l | warnings | Log level: verbose, warnings, or errors |
--reset | Re-authenticate with DevTunnels (clears saved login) | ||
--no-auto-open | Do not open the web UI in the browser on startup | ||
--help | -h | Show help text | |
--version | Show the tool version |
Flag details
--port / -p
Sets the local TCP port the sender’s HTTP server listens on. The Dev Tunnel proxies to this port.
# Use port 8080 instead of the default 5000
cloud-share-sender --port 8080
cloud-share-sender -p 8080
ℹ️ Info: The tunnel URL always uses port 443 (HTTPS) regardless of your local port. The local port only affects what port the browser uses when opening
http://localhost:<port>.
--log / -l
Controls the verbosity of console log output.
| Level | What is shown |
|---|---|
verbose | All log messages including debug info, request traces, DevTunnel output |
warnings | Warning and error messages only (default) |
errors | Error messages only |
cloud-share-sender --log verbose
cloud-share-sender -l errors
Use verbose when troubleshooting DevTunnel connectivity or unexpected behavior.
--reset
Clears the saved DevTunnels authentication from preferences.json and forces re-authentication on next start. Use this if your login token has expired or you want to switch accounts.
cloud-share-sender --reset
After clearing, the tool will prompt you to authenticate with Microsoft or GitHub OAuth on the next run.
--no-auto-open
By default, the sender opens the web UI (http://localhost:<port>) in your default browser automatically on startup. Use this flag to suppress that behavior.
cloud-share-sender --no-auto-open
Useful for:
- Headless servers
- Scripted/automated use
- Environments without a browser
Startup output
When the sender starts successfully, you will see output similar to:
██████╗██╗ ██████╗ ██╗ ██╗██████╗
██╔════╝██║ ██╔═══██╗██║ ██║██╔══██╗
██║ ██║ ██║ ██║██║ ██║██║ ██║
██║ ██║ ██║ ██║██║ ██║██║ ██║
╚██████╗███████╗╚██████╔╝╚██████╔╝██████╔╝
╚═════╝╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝
SHARE
[12:34:56] Checking devtunnel CLI...
[12:34:56] Starting tunnel...
[12:34:58] Tunnel ready.
Tunnel URL : https://abc123def456.devtunnels.ms
Secret : aB3kP9mQ2rTs
[12:34:58] Opening browser...
[12:34:58] Listening on http://localhost:5000
Tunnel URL format
The tunnel URL follows the pattern:
https://<random-identifier>.devtunnels.ms
This URL is publicly accessible over HTTPS (port 443) and proxies to your local sender. Share this URL along with the secret with your recipient.
Secret token
The secret is a fresh 12-character alphanumeric string generated on each run. It:
- Authenticates all API requests (
?secret=<token>) - Provides the key material for AES-256-GCM encryption
- Is never saved to disk or logged
- Is invalidated when the sender stops
Examples
Start with defaults
cloud-share-sender
Start on a custom port without opening the browser
cloud-share-sender --port 8000 --no-auto-open
Start with verbose logging for troubleshooting
cloud-share-sender --log verbose
Re-authenticate and start
cloud-share-sender --reset
API endpoints (reference)
The sender exposes these HTTP endpoints (all require ?secret=<token>):
| Method | Path | Description |
|---|---|---|
GET | / | Serves the sender web UI |
GET | /queue | Returns the current queue as a JSON array |
POST | /upload/text | Queue a text item ({"text": "..."}) |
POST | /upload/file | Queue a file (multipart form, file field) |
POST | /upload/zip | Queue a zip bundle (multipart form, file[] + password fields) |
GET | /item/{id} | Download an encrypted item; marks it as received |
DELETE | /item/{id} | Remove an item from the queue |
GET | /events | SSE stream of queue change events |
All endpoints except GET / require the ?secret=<token> query parameter.