Skip to main content

Mirror — Expose & Tunnel

Mirror lets you expose local services to the internet through secure reverse tunnels. Share a local development server, demo an app, or provide temporary access to a service running on your machine.

Features

  • Expose localhost — Make local ports accessible via public URLs
  • Secure tunnels — All traffic is encrypted in transit
  • Session management — Create, monitor, and tear down tunnels from the UI
  • Multiple tunnels — Run several tunnels simultaneously

Getting Started

  1. Start a local server on any port (e.g. serve -s . on port 3000)

Local HTTP server running on port 3000

  1. Open Camouflage Hub and click the Mirror card (or use the New Mirror quick action)
  2. Enter the local port and choose HTTP or HTTPS, then click Start Mirror

Create a new mirror on port 3000

  1. A public URL is generated for your tunnel — share it with anyone

Mirror does not require authentication to use.

Mirror Window

The Mirror window is a full-size (1400 x 900) resizable window where you can manage all your tunnels.

Mirror tunnel list

The left sidebar lists all your mirrors with their status (Live / Stopped). The center panel shows the active tunnel with its public URL, request log, and stats. The request log shows every HTTP request hitting your tunnel in real time — method, path, status code, timing, and size.

Each tunnel gets a public URL on *.mirror.camouflage.network that anyone can access:

Mirror browser view

Hub Status

On the Hub, Mirror shows:

  • N active (green) — Number of currently running tunnels
  • No tunnels (grey) — No active tunnels

CLI Usage (Linux)

On headless Linux servers, Mirror is available via the CLI:

# Authenticate (one-time setup)
camouflage-client login

# Expose a local port
camouflage-client mirror 3000

# Specify protocol
camouflage-client mirror 3000 --protocol http

The CLI uses a device code flow for authentication — it displays a code and URL, you enter the code at camouflage.network/activate in your browser, and the CLI picks up the auth automatically.

Requires the camouflage-client daemon to be running:

sudo systemctl enable --now camouflage-client

Use Cases

  • Development — Share a local dev server with teammates for review
  • Demos — Give a client a live URL to preview work in progress
  • Webhooks — Receive webhook callbacks to a local service during development
  • Testing — Expose a local API for integration testing
  • Headless servers — Expose services running on Linux servers without a GUI