# Dash Dots (/docs/developer-resources/cli/dot-mini-apps)

`monime dot` creates, runs, builds and publishes **Dash Dots**, mini apps that run inside Dash. It uses the Dot tools, which need **Node.js 22.12 or newer**.

This page covers the commands. To learn to build a dot, start with the [developer overview](/docs/products/dash-dots/developers).

## Create and run a dot

1. **Create a dot**

   ```bash
   monime dot create my-dot
   ```

   The CLI asks for the dot's name, its package name and a template, then offers to install its dependencies with the package manager of your choice. The **starter** template is one page to build on; the **showcase** template has a page for each feature. Pass them up front to skip the questions:

   ```bash
   monime dot create my-dot --name "My Dot" --template starter --pm pnpm
   ```

2. **Run it in the simulator**

   ```bash
   cd my-dot
   monime dot dev
   ```

   `monime dot dev` builds the dot, runs it in the browser simulator on port `3680` (or the next free port), and rebuilds it each time you save. Press Ctrl+C to stop.

   Add `--device` to also serve the dot to phones on your local network, through a link and a QR code. Connected phones reload on each build. Dash opens the link only when it's signed with your [developer key](#developer-keys).

3. **Add a page**

   From inside the dot:

   ```bash
   monime dot create page settings/profile
   ```

   This adds `pages/settings/profile/` with a `view.dml` view, a `state.ts` and a `controller.ts`, and lists the page in `dot.ts`.

4. **Build it for release**

   ```bash
   monime dot build
   ```

   This builds the minified bundles Dash runs, and the archive it downloads, into `dist/`.

| Command                       | Flags                                                                                                            |
| ----------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| `monime dot create [DIR]`     | `--name NAME`, `--template starter\|showcase`, `--pm npm\|pnpm\|yarn\|bun`                                       |
| `monime dot create page PATH` | —                                                                                                                |
| `monime dot dev [ROOT]`       | `--port PORT`, `--device`, `--out-dir DIR`, `--conditions LIST`                                                  |
| `monime dot preview [ROOT]`   | `--port PORT`, `--out-dir DIR`, `--conditions LIST`. Runs the release build in the simulator, without rebuilding |
| `monime dot build [ROOT]`     | `--out-dir DIR`, `--conditions LIST`                                                                             |

`--conditions` adds comma-separated package export conditions to the build.

## Developer keys

Dash opens a `--device` link only when it's signed with a developer key registered to your Monime account. Keys belong to your account, not a Space; the dots you build belong to their Spaces. See [Run on a phone](/docs/products/dash-dots/developers/run-on-a-phone).

| Command                                    | What it does                                   |
| ------------------------------------------ | ---------------------------------------------- |
| `monime dot keys create [--label LABEL]`   | Create a key for this computer and register it |
| `monime dot keys register [--label LABEL]` | Register a key this computer already has       |
| `monime dot keys list`                     | Your keys, with this computer's first          |
| `monime dot keys revoke [KEY_ID]`          | Revoke this computer's key, or another one     |

## Publish and release

A dot belongs to a Space, and these commands act on it as a member of the Space you work in: choose it with `monime space use`, or pass `--space ID`. Commands about one dot use the dot in the current folder, or `--dot ID`. See [Publish and release](/docs/products/dash-dots/developers/publish-and-release).

| Command                                          | What it does                                                                                                                                                |
| ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `monime dot register [ROOT]`                     | Create the dot in the Space, once, and save its `id` in `dot.json`                                                                                          |
| `monime dot publish [ROOT]`                      | Build, upload and publish a version. `--subtitle`, `--description` set the listing; `--wait` waits for Monime's checks and fails if the version is rejected |
| `monime dot version list`                        | The dot's versions and their states. `--state STATE` filters them                                                                                           |
| `monime dot version describe VERSION`            | One version's state, size, checks and review                                                                                                                |
| `monime dot tester add\|list\|remove [@DASHTAG]` | Manage who gets each new version first                                                                                                                      |
| `monime dot release [VERSION]`                   | Give everyone a version, or roll back to an earlier one. `--to testers` points testers at a version                                                         |
| `monime dot switch-off [VERSION]`                | Stop Dash listing and opening the dot, or one version. Payments through it are refused. `--note` says why                                                   |
| `monime dot switch-on [VERSION]`                 | Turn it back on                                                                                                                                             |
| `monime dot list`                                | The Space's dots, and the versions testers and everyone get                                                                                                 |
| `monime dot describe`                            | One dot's listing, versions and state                                                                                                                       |
| `monime dot doctor [ROOT]`                       | Check your login, Space, Node.js, Dot tools, `dot.json`, registration and developer key                                                                     |

## Editor support

`monime dot lsp --stdio` serves `.dml` files to your editor over the Language Server Protocol. Editors start it themselves once configured, so you rarely run it by hand.

## Dot tools versions

Inside a dot, the CLI uses the version of the Dot tools that the dot depends on. Everywhere else, it uses its own copy, which it installs automatically the first time you need it.

| Command                        | What it does                                                                            |
| ------------------------------ | --------------------------------------------------------------------------------------- |
| `monime dot install [VERSION]` | Install the latest release of the Dot tools, or `VERSION`                               |
| `monime dot update`            | Update the Dot tools to the latest release                                              |
| `monime dot update --check`    | Show the version in use, the one installed, the latest release and your Node.js version |
| `monime dot uninstall`         | Remove the Dot tools installed with `monime dot install`                                |
