# Overview

###### Public URLs let local apps or websites be reachable on the public internet.

Also known as tunnels, they're useful when you want to test apps in a real-world setting, test webhooks, run OAuth flows, or share work in progress with clients, stakeholders, or anyone outside your local network.

AI agents can create and manage Public URLs too, over MCP or the CLI. See [AI agents](/docs/ai-agents/overview).

#### Creating a Public URL

**In the app.** Click **Add Public URL** on an app's card and choose **New Public URL**. If the app already has a local domain like `api.myapp.local`, the Public URL appears as `api-myapp-12.localcan.dev` and routes directly to your local app.

**From the CLI.** Run `localcan http 3000` to get a Public URL for any port. See [Quick tunnels](/docs/cli/quick-tunnels).

**In a project file.** Add a `provider: localcan` endpoint to a service:

```yaml title="~/.localcan/projects/my-app.yml"
name: My App
services:
  web:
    target: http://localhost:3000
    endpoints:
      - provider: localcan
```

Leave `url:` empty and LocalCan assigns one on the next `localcan reload`, writing it back into the file. See [Configuration → Projects](/docs/configuration/projects) for pinned URLs and custom domains.

#### Advanced features

* **Traffic Inspection**: monitor all incoming HTTP requests to your Public URLs in real time. Helpful for debugging webhooks, analysing API calls, and troubleshooting integrations.
* **Snapshots**: keep a static copy of your app serving at the Public URL while your machine is offline, or publish a folder straight to a new Public URL with no app running. See [Snapshots](/docs/public-urls/snapshots).
* **Host Header Customization**: rewrite the `Host` header before requests reach your local app. Useful when testing domain-specific features or multi-tenant apps. See [Configuration → Headers](/docs/configuration/headers).
* **Access control**: choose who can open a Public URL with a password page, a secret link, or IP rules. Enforced on LocalCan's servers, so it keeps working while your machine is asleep and covers Snapshots too. See [Access control](/docs/public-urls/access-control).
* **Comments**: let reviewers leave pinned feedback right on a Snapshot and triage the threads in the app. See [Comments](/docs/public-urls/comments).
* **Basic Authentication**: protect a Public URL with one or more username/password pairs, checked by LocalCan running on your machine. See [Configuration → Basic auth](/docs/configuration/basic-auth).

#### Pausing and resuming

Public URLs have pause and resume. If you pause one, it goes offline but the URL stays reserved for up to 7 days. The menu items live next to each Public URL in the desktop app.

If you close LocalCan entirely, your Public URLs are still reserved. You can switch off your computer, return after a few days, and resume the same Public URLs.

#### The Free plan

The [Free plan](https://www.localcan.com/dashboard/get-started?plan=free) includes one Public URL at a time. Each URL is temporary: it lives on the trylocalcan.com domain, lasts up to 60 minutes, and a new session gets a new random URL. Traffic is capped at 1 GB per calendar month.

Within the 60-minute window, pause and resume work like on paid plans and keep the same URL. When the session ends, the app shows "Session ended" and the New URL button starts a fresh one. Visitors who open an expired link see a LocalCan offline page.

Free sessions are HTTPS Public URLs for web apps, and Snapshots are included with 150 MB of storage. TCP tunnels, custom domains, Access control, and Comments are available on paid plans.

