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

FlagShortDefaultDescription
--port-p5000The local port to listen on
--log-lwarningsLog level: verbose, warnings, or errors
--resetRe-authenticate with DevTunnels (clears saved login)
--no-auto-openDo not open the web UI in the browser on startup
--help-hShow help text
--versionShow 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.

LevelWhat is shown
verboseAll log messages including debug info, request traces, DevTunnel output
warningsWarning and error messages only (default)
errorsError 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>):

MethodPathDescription
GET/Serves the sender web UI
GET/queueReturns the current queue as a JSON array
POST/upload/textQueue a text item ({"text": "..."})
POST/upload/fileQueue a file (multipart form, file field)
POST/upload/zipQueue 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/eventsSSE stream of queue change events

All endpoints except GET / require the ?secret=<token> query parameter.