---
summary: Every command-line tool that ships with ScaiCMS.
title: CLI reference
path: reference/cli
status: published
---

# CLI reference

All commands are run from `backend/` after `source .venv/bin/activate`.

## Database

```bash
alembic upgrade head                              # apply migrations
alembic revision --autogenerate -m "description"  # create migration
alembic downgrade -1                              # rollback one
alembic check                                     # detect model drift
```

## Seeding

```bash
python -m scaicms.scripts.seed --email admin@example.com --password secret
python scripts/seed_scailabs_docs.py        # 6 default doc namespaces
python scripts/seed_product_dev_teams.py    # 15 dev teams + API keys
python scripts/seed_scaicms_docs.py         # populate this very page
```

## Background worker

```bash
scaicms-worker                                # preferred
arq scaicms.tasks.worker.WorkerSettings       # equivalent
```

## Content search index

```bash
python -m scaicms.cli.index_management sites     # list sites
python -m scaicms.cli.index_management reindex    # reindex all content
python -m scaicms.cli.index_management check      # consistency check
python -m scaicms.cli.index_management reset      # destructive
```

## Docs search index

```bash
python -m scaicms.cli docs-index status
python -m scaicms.cli docs-index ensure-schema
python -m scaicms.cli docs-index reindex
python -m scaicms.cli docs-index reindex --namespace scaicms
python -m scaicms.cli docs-index reset
```

## Template packs

```bash
python -m scaicms.cli.template_packs verify ./my-pack --check-syntax
python -m scaicms.cli.template_packs package ./my-pack -o /tmp/my-pack.zip
```

## Agent bundle

```bash
python -m scaicms.scripts.build_agent_bundle           # regenerate bundle
python -m scaicms.scripts.build_agent_bundle --tar     # plus tarball
```

## Tests

```bash
pytest                                            # all backend tests
pytest tests/test_documentation_api.py -v         # single file
pytest -k "scope"                                 # by name
```
