## getting started

Quickstart

Get a local app online with a public HTTPS URL in under two minutes. Install the agent, connect your account, and start a tunnel.

Overview

devgate exposes a service running on your machine at a public URL, with TLS terminated for you. The devgate agent runs on your host and opens a secure tunnel back to our edge. You'll need a devgate account — sign up free to grab your authtoken.

1 · Install the agent

On macOS or Linux, install with Homebrew — this keeps the agent up to date via brew upgrade devgate:

$ brew install dmitryhawk/devgate/devgate

Or use the install script, which drops a single binary on your PATH:

$ curl -fsSL devgate.online/install.sh | sh

Prefer a raw binary? Grab it from the downloads page and put it on your PATH yourself.

2 · Connect your account

Run this once. It stores your authtoken in the default config file so every tunnel is tied to your account:

$ devgate config add-authtoken <YOUR_AUTHTOKEN>

Your authtoken is on your dashboard.

3 · Start your first tunnel

Point the agent at any local port. devgate prints a public HTTPS URL you can share instantly — it stays up as long as the command is running:

$ devgate http 3000

4 · Reserve a static endpoint

Ephemeral tunnels get a fresh URL each run. For a stable address that survives restarts, reserve a static endpoint in the dashboard under Endpoints, then bring all your reserved endpoints online at once with a bare run:

$ devgate

Your plan caps how many endpoints you can reserve and keep online at once. See pricing for the limits per plan.

5 · Serve a local vhost

If your site is served as a named vhost — a Herd, Valet or docker setup you open at http://myapp.test rather than http://localhost:8080 — you need two flags, not one.

--host is where the agent connects. --host-header is what your service sees in the Host header. The agent forwards raw TCP and never rewrites Host , so without the second flag your vhost receives the public devgate hostname, fails to match its server_name, and answers with the wrong site or a 404.

$ devgate http 80 --host=myapp.test --host-header=rewrite

rewrite sends whatever --host points at, adding :port when the port is not 80. When your service listens on loopback but answers to a vhost name, name it directly instead:

$ devgate http 8080 --host-header=myapp.test

Wrong page, a 404, or “blocked request” through the tunnel? Local vhosts explained walks through every symptom.

Leave the flag off for a plain server on localhost. Passing the public hostname through is the default, and it is what an app generating absolute URLs, redirects or e-mail links needs. The same setting is editable per endpoint in the dashboard under Endpoints.

Next steps