# @mosaicstack/mosaic

CLI package for the Mosaic self-hosted AI agent platform.

## Usage

```bash
mosaic wizard           # First-run setup wizard
mosaic gateway install  # Install the gateway daemon
mosaic config show      # View current configuration
mosaic config hooks list  # Manage Claude hooks
```

## Headless / CI Installation

Set `MOSAIC_ASSUME_YES=1` (or ensure stdin is not a TTY) to skip all interactive prompts. The following environment variables control the install:

### Gateway configuration (`mosaic gateway install`)

| Variable                   | Default                 | Required           |
| -------------------------- | ----------------------- | ------------------ |
| `MOSAIC_STORAGE_TIER`      | `local`                 | No                 |
| `MOSAIC_GATEWAY_PORT`      | `14242`                 | No                 |
| `MOSAIC_DATABASE_URL`      | _(none)_                | Yes if tier=`team` |
| `MOSAIC_VALKEY_URL`        | _(none)_                | Yes if tier=`team` |
| `MOSAIC_ANTHROPIC_API_KEY` | _(none)_                | No                 |
| `MOSAIC_CORS_ORIGIN`       | `http://localhost:3000` | No                 |

### Admin user bootstrap

| Variable                | Default  | Required       |
| ----------------------- | -------- | -------------- |
| `MOSAIC_ADMIN_NAME`     | _(none)_ | Yes (headless) |
| `MOSAIC_ADMIN_EMAIL`    | _(none)_ | Yes (headless) |
| `MOSAIC_ADMIN_PASSWORD` | _(none)_ | Yes (headless) |

`MOSAIC_ADMIN_PASSWORD` must be at least 8 characters. In headless mode a missing or too-short password causes a non-zero exit.

### Example: Docker / CI install

```bash
export MOSAIC_ASSUME_YES=1
export MOSAIC_ADMIN_NAME="Admin"
export MOSAIC_ADMIN_EMAIL="admin@example.com"
export MOSAIC_ADMIN_PASSWORD="securepass123"

mosaic gateway install
```

## Hooks management

After running `mosaic wizard`, Claude hooks are installed in `~/.claude/hooks-config.json`.

```bash
mosaic config hooks list              # Show all hooks and enabled/disabled status
mosaic config hooks disable PostToolUse  # Disable a hook (reversible)
mosaic config hooks enable PostToolUse   # Re-enable a disabled hook
```

Set `CLAUDE_HOME` to override the default `~/.claude` directory.
