# Launching your app

> Opens your app in a browser, running on the local platform. It compiles the current source first, so what opens reflects what is on disk, then opens the app's local URL.

<!-- id: local-launching-your-app · area: local · stability: stable · html: https://osysharp.com/reference/local/launching-your-app/ -->

## Summary        {#summary}

Opens your app in a browser, served by the local platform ([Running a local platform](https://osysharp.com/reference/local/running-a-local-platform/)). It compiles the source
on your disk into the app first — so what you see is what you just wrote — and then opens the app's local address. Your
app serves its own login and access rules exactly as in production; this only opens the page.

## Signature      {#signature}

```console
osy launch [path] [--print-url] [--no-compile]
```

## Description    {#description}

`osy launch` finds the local platform for your project, ensures your app exists there, compiles the current source into
it, and opens `http://<your-app>.localhost:<port>/` in your browser. Edit, `osy launch`, see the result. If no platform
is running for the project, it **starts one for you** in the background first, so a single command takes you from source
to an open page ([Running a local platform](https://osysharp.com/reference/local/running-a-local-platform/); [Stopping the local platform](https://osysharp.com/reference/local/stopping-the-local-platform/) shuts it down).

- `--print-url` prints the app's URL and opens nothing — for an editor that wants to open the page its own way. In this
  mode the URL is the only thing written to standard output.
- `--no-compile` opens the app as it was last compiled, without recompiling first — a quick re-open.

A brand-new app has no page yet, so its address returns "not found" until you add one — the app is there; it just has
nothing to show at `/`.

If the browser runtime your pages are drawn with is not being served, `launch` says so **before** it opens anything,
and names the command that builds it. Pages are drawn in the browser, so without it the address answers perfectly well
and shows a blank screen — the one failure that looks exactly like a bug in the app you just wrote.

## Examples       {#examples}

```console
osy launch                 # starts the platform if needed, compiles, opens in the browser
osy launch --print-url     # just print http://<app>.localhost:<port>/
```

## See also       {#see-also}

[Launching the page you're on](https://osysharp.com/reference/local/launching-the-page-youre-on/) — press F5 in your editor and land on the page you are editing, not on `/`.

[Running a local platform](https://osysharp.com/reference/local/running-a-local-platform/) — the local platform your app runs on, and how to start it.

[Running tests locally](https://osysharp.com/reference/testing/running-tests-locally/) — run your app's tests against the same local platform.
