> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mercurjs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# CLI

> Install blocks, scaffold projects, and generate types from the command line.

The Mercur CLI (`@mercurjs/cli@latest`) manages your marketplace project — creating projects, installing blocks, generating types, and checking for updates.

## Installation

```bash theme={null}
bun add -g @mercurjs/cli@latest
```

## Commands

### create

Scaffold a new Mercur project from a template.

```bash theme={null}
bunx @mercurjs/cli@latest create my-marketplace
```

The CLI will prompt you for database credentials and install dependencies automatically.

| Option                            | Description                        |
| --------------------------------- | ---------------------------------- |
| `-t, --template <template>`       | Template to use (default: `basic`) |
| `--no-deps`                       | Skip dependency installation       |
| `--skip-db`                       | Skip database configuration        |
| `--db-connection-string <string>` | PostgreSQL connection string       |

### init

Initialize an existing project by creating a `blocks.json` configuration file.

```bash theme={null}
bunx @mercurjs/cli@latest init
```

This sets up path aliases so the CLI knows where to place blocks in your project:

```json theme={null}
{
  "aliases": {
    "api": "packages/api/src",
    "vendor": "apps/vendor/src",
    "admin": "apps/admin/src"
  }
}
```

| Option           | Description                         |
| ---------------- | ----------------------------------- |
| `-d, --defaults` | Use default paths without prompting |
| `-s, --silent`   | Suppress output                     |

### add

Install blocks from the registry into your project.

```bash theme={null}
bunx @mercurjs/cli@latest add wishlist
bunx @mercurjs/cli@latest add product-review order-tracking
```

Blocks are copied directly into your project as source code. The CLI resolves dependencies, transforms imports to match your path aliases, and installs required packages.

| Option            | Description              |
| ----------------- | ------------------------ |
| `-o, --overwrite` | Overwrite existing files |
| `-y, --yes`       | Skip confirmation        |
| `-s, --silent`    | Suppress output          |

### search

Find available blocks in the registry.

```bash theme={null}
bunx @mercurjs/cli@latest search --query wishlist
```

| Option                      | Description                               |
| --------------------------- | ----------------------------------------- |
| `-q, --query <query>`       | Search by name or description             |
| `-r, --registry <registry>` | Registry to search (default: `@mercurjs`) |

### view

Display detailed information about a block.

```bash theme={null}
bunx @mercurjs/cli@latest view wishlist
```

### diff

Compare local blocks against registry versions to check for updates.

```bash theme={null}
bunx @mercurjs/cli@latest diff wishlist
```

If there are changes you want, update with:

```bash theme={null}
bunx @mercurjs/cli@latest add wishlist --overwrite
```

### codegen

Generate TypeScript types from your API routes. Used by the [API Client](/developer-guide/api-client) for type-safe requests.

```bash theme={null}
bunx @mercurjs/cli@latest codegen
```

| Option        | Description                                    |
| ------------- | ---------------------------------------------- |
| `-w, --watch` | Watch for changes and regenerate automatically |

### registry:build

Build a custom registry from a `registry.json` file.

```bash theme={null}
bunx @mercurjs/cli@latest build
```

| Option                | Description                       |
| --------------------- | --------------------------------- |
| `-o, --output <path>` | Output directory (default: `./r`) |
| `-v, --verbose`       | Show detailed output              |

### info

Display project configuration and diagnostics.

```bash theme={null}
bunx @mercurjs/cli@latest info
```

### telemetry

Control anonymous usage data collection.

```bash theme={null}
bunx @mercurjs/cli@latest telemetry --disable
bunx @mercurjs/cli@latest telemetry --enable
```

## Custom registries

Add custom block registries to your `blocks.json`:

```json theme={null}
{
  "registries": {
    "@mercurjs": "https://registry.mercurjs.com/{name}",
    "@my-registry": "https://my-registry.com/blocks/{name}.json"
  }
}
```

Use `{name}` as a placeholder for block names. Reference custom registries with the `-r` flag:

```bash theme={null}
bunx @mercurjs/cli@latest search --query review --registry @my-registry
```
