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

# Console commands

> Every command available through Aikeedo's console, what it does, and which options it accepts.

```bash theme={null}
php bin/console list
php bin/console help app:locale:extract
```

The console boots the same application as a web request, so commands see the same configuration, services and plugins. Entity changes are flushed when the command finishes.

<Note>
  Without a database configured, only the three `app:locale:*` commands are registered. Everything else needs a connection.
</Note>

## Application commands

### `app:import:seeds`

Imports the starter templates and categories shipped with the release, from `data/seeds`.

| Option        | Purpose                                                 |
| ------------- | ------------------------------------------------------- |
| `--set`, `-s` | Import only the named set; repeatable. Defaults to all. |

Also available as `app:import:presets`. See [Starter content](/advanced/seed-data).

### `app:locale:extract`

Scans sources and updates `.po` catalogs.

| Option             | Purpose                                                 |
| ------------------ | ------------------------------------------------------- |
| `--target`, `-t`   | `core` or a package name; repeatable                    |
| `--all`, `-a`      | The application and every package                       |
| `--path`, `-p`     | Scan an arbitrary directory, such as a theme repository |
| `--locale-dir`     | Where `--path` writes catalogs                          |
| `--domain`         | Override the gettext domain                             |
| `--language`, `-l` | Restrict to specific languages                          |
| `--no-prune`       | Keep entries no longer present in the source            |
| `--no-build`       | Skip rebuilding the browser catalogs                    |

### `app:locale:translate`

Fills in missing translations using an AI model.

| Option                           | Purpose                                             |
| -------------------------------- | --------------------------------------------------- |
| `--lang`, `-l`                   | Languages to translate                              |
| `--all`, `-a`                    | Every language with a catalog                       |
| `--target`, `-t`, `--path`, `-p` | Same targeting as extraction                        |
| `--force`, `-f`                  | Retranslate entries that already have a translation |
| `--dry-run`                      | Show what would change                              |
| `--no-build`                     | Skip rebuilding the browser catalogs                |

Model and API credentials are read from options and the environment.

### `app:locale:build`

Rebuilds the browser translation catalogs under the web root.

| Option            | Purpose               |
| ----------------- | --------------------- |
| `--lang`, `-l`    | Specific languages    |
| `--enabled`, `-e` | Only the enabled ones |

### `app:update`

Applies an update archive: backs up what must survive, extracts the release, runs migrations, reinstalls plugins, restores translations.

| Argument | Purpose                    |
| -------- | -------------------------- |
| `file`   | Path to the update archive |

Most installations update through the admin panel, which runs the same process. See [How to update](/versioning/how-to-update).

## Doctrine commands

### Migrations

| Command                                       | Purpose                                                |
| --------------------------------------------- | ------------------------------------------------------ |
| `migrations:status`                           | Current state                                          |
| `migrations:migrate`                          | Apply pending migrations                               |
| `migrations:list`                             | List known migrations                                  |
| `migrations:current`, `migrations:latest`     | Current and latest versions                            |
| `migrations:execute`                          | Run or revert one migration                            |
| `migrations:generate`, `migrations:diff`      | Create a migration, empty or from mapping differences  |
| `migrations:dump-schema`, `migrations:rollup` | Squash history                                         |
| `migrations:sync-metadata-storage`            | Repair the tracking table                              |
| `migrations:up-to-date`                       | Exit code friendly check, useful in deployment scripts |

### ORM

| Command                                                   | Purpose                            |
| --------------------------------------------------------- | ---------------------------------- |
| `orm:validate-schema`                                     | Compare mappings with the database |
| `orm:info`                                                | List mapped entities               |
| `orm:mapping:describe`                                    | Inspect one entity's mapping       |
| `orm:schema-tool:create`, `update`, `drop`                | Manipulate the schema directly     |
| `orm:generate-proxies`                                    | Regenerate proxy classes           |
| `orm:run-dql`                                             | Run a DQL query                    |
| `orm:clear-cache:metadata`, `query`, `result`, `region:*` | Clear Doctrine caches              |

### DBAL

| Command        | Purpose     |
| -------------- | ----------- |
| `dbal:run-sql` | Run raw SQL |

<Warning>
  `orm:schema-tool:update --force` changes the schema without recording a migration, which leaves the migration table out of step. Use migrations on anything but a scratch database.
</Warning>

## Running commands in production

* Run as the web server user, so cache and log files stay writable.
* Redirect output when running from cron; the console writes to standard output.
* Commands exit with a non-zero status on failure, so deployment scripts can check.

## Plugins and commands

Plugins can't register console commands: the command map is static. Expose the action as an admin endpoint, or run it from the cron event instead. See [Data and persistence](/development/plugins/data-and-persistence).

## Related

* [Database and migrations](/development/core/database-and-migrations)
* [Localization internals](/development/core/localization-internals)
* [Background jobs and cron](/development/core/background-jobs-and-cron)
