asd expose — zero-config tunnelsThe shortest path from a local port to a public HTTPS URL. No manifest, no project required.
asd exposeis its own top-level verb and a group of management subcommands.
Two distinct surfaces share the expose name:
asd expose <port> — create a tunnel.asd expose <subcommand> — manage existing exposures.asd expose <port> [name] [flags]
| Argument / flag | What it does |
|---|---|
<port> |
Local TCP port to expose. Required. |
[name] |
Optional subdomain (defaults to the port number). |
--subdomain <s> |
Set the subdomain explicitly (alternative to positional [name]). |
--name <s> |
Name the service in the registry (defaults to subdomain). |
--auth=basic |
Force basic auth on the tunnel (default). |
--auth=none |
Disable auth on the tunnel (fully public). |
--local-only |
Skip the public tunnel — Caddy route only, accessible at <name>.localhost. |
--direct |
Skip Caddy — tunnel straight to the port (rare, e.g. for non-HTTP protocols). |
Examples:
asd expose 3000 # default name = "3000", auth = basic
asd expose 3000 demo # public URL is demo-<id>.<tunnel>
asd expose 3000 --auth=none # publicly open, no password prompt
asd expose 5432 --local-only # database on host.localhost, not public
| Command | What it does |
|---|---|
asd expose list |
Show exposed services + orphan tunnel processes. Add --prune to kill orphans. |
asd expose stop <name\|port> |
Stop a specific exposure. Frees the subdomain and the tunnel daemon. |
asd expose auth |
Show the project-wide basic-auth credentials (username + password). |
asd expose cleanup |
Drop stale entries from the registry (where the underlying process is gone but the row remains). |
| Goal | Command |
|---|---|
Share localhost:3000 for 30 minutes |
asd expose 3000 demo |
| See what's currently exposed | asd expose list |
| Stop one exposure | asd expose stop demo |
| Get credentials to share | asd expose auth |
| Public URL with no password prompt | asd expose 3000 --auth=none |
| Local-only URL (no public tunnel) | asd expose 3000 --local-only |
| After a crash, clean stale entries | asd expose cleanup |
asd exposeFor services that should survive restarts, live in version control,
have their own subdomain conventions, or coexist with other services
— write a packages/<svc>/net.manifest.yaml instead and use
asd net apply. The two systems coexist; expose is ephemeral,
net apply is durable. See learn/02-first-service.
learn/01-hello-world — asd expose as the first-touch experience.cookbook/share-via-public-url — the 30-minute demo recipe.cookbook/tunnel-a-dev-server — asd expose with Vite/Next/React gotchas.learn/05-add-authentication — basic auth defaults and overrides.