D1VD1V

Public Expose

Publish a local HTTP service through a temporary HTTPS hostname without opening an inbound router port.

How a request reaches localhost

PUBLIC
HTTPS visitor

Requests the generated cli-free.d1v.dev hostname.

INGRESS
Host router

Resolves the active binding from the request hostname.

RELAY
Authenticated agent

Carries HTTP over the CLI outbound WebSocket connection.

LOCAL
127.0.0.1:5173

The local HTTP server receives the original request.

No inbound port is opened on the developer machine. The public URL works only while the foreground relay remains connected.

Expose a local server

First prove that the service works locally:

curl http://127.0.0.1:5173

Then start the public relay:

d1v expose 5173

The command prints an https://*.cli-free.d1v.dev URL and stays in the foreground. Open that URL from a second network or verify it with curl.

Binding lifecycle

d1v expose list
d1v expose close <binding_id>

Pressing Ctrl-C stops the foreground relay and closes the binding. The generated URL should be treated as temporary unless your workflow explicitly recreates it.

Protocol and security boundaries

  • CLI-free expose targets HTTP services.
  • The local side uses an authenticated, outbound-only relay.
  • The public hostname is internet-accessible while the binding is active; your application still needs its own authorization for sensitive routes.
  • Relay traffic is not currently zero-knowledge. Platform metadata follows the normal d1v persistence model.

Troubleshooting

SymptomCheck
Local curl failsStart the service and confirm the exact port.
Public URL stops workingConfirm the d1v expose foreground process is still running.
Device or relay offlineRe-authenticate and inspect CLI logs before recreating the binding.
HTML loads but assets failCheck application base URLs, host validation, and absolute asset paths.