| # mojo_run | 
 |  | 
 | `mojo_run` allows you to run a Mojo shell either on the host, or on an attached | 
 | Android device. | 
 |  | 
 | ```sh | 
 | mojo_run APP_URL  # Run on the host. | 
 | mojo_run APP_URL --android  # Run on Android device. | 
 | mojo_run "APP_URL APP_ARGUMENTS"  # Run an app with startup arguments | 
 | ``` | 
 |  | 
 | Unless running within a Mojo checkout, we need to indicate the path to the shell | 
 | binary: | 
 |  | 
 | ```sh | 
 | mojo_run --shell-path path/to/shell/binary APP_URL | 
 | ``` | 
 |  | 
 | Some applications are meant to be run embedded in a **window manager**. To run | 
 | these, you can pass the app url using the `--embed` flag. This will run the | 
 | window manager and pass the given url to it: | 
 |  | 
 | ```sh | 
 | mojo_run --embed APP_URL [--android] | 
 | ``` | 
 |  | 
 | By default, `mojo_run` uses mojo:kiosk_wm as the window manager. You can pass a | 
 | different window manager url using the `--window-manager` flag to override this. | 
 |  | 
 | ## Running multiple instances simultaneously | 
 |  | 
 | `mojo_run` sets up development servers on fixed ports to facilitate caching | 
 | between runs and allow the script to work remotely using `adb_remote_setup`. | 
 | This would normally prevent two or more instances of `mojo_run` from running | 
 | simulatenously as the development servers cannot be spawned twice on the same | 
 | ports. | 
 |  | 
 | In order to run the same set of binaries simultaneously one can use the | 
 | `--reuse-servers` switch for second and further instances. This will make the | 
 | second and further instances assume that development servers are already | 
 | spawned. | 
 |  | 
 | On **Android** one needs to indicate the id of the device to be targeted in each | 
 | run. For example, we could run the following in one shell: | 
 |  | 
 | ```sh | 
 | mojo_run APP_URL --android --target-device DEVICE_ID | 
 | ``` | 
 |  | 
 | and the following in another: | 
 |  | 
 | ```sh | 
 | mojo_run APP_URL --android --target-device ANOTHER_DEVICE_ID --reuse-servers | 
 | ``` | 
 |  | 
 | Device id can be obtained from `adb devices`. | 
 |  | 
 | On **Linux** one needs to use a different $HOME directory for each run, to avoid | 
 | collision of the cache storage. For example, we could run the following in one | 
 | shell: | 
 |  | 
 | ```sh | 
 | mojo_run APP_URL | 
 | ``` | 
 |  | 
 | and the following in another: | 
 |  | 
 | ```sh | 
 | mkdir ~/another_home | 
 | HOME=~/another_home mojo_run APP_URL --reuse-servers | 
 | ``` |