# Command Line Interface

The command line interface (CLI) gives you easy-to-remember commands for common tasks.

| Command | Effect |
| --- | --- |
| `rasa init` | Creates a new project with example training data, actions, and config files. |
| `rasa train` | Trains a model using your NLU data and stories, saves trained model in `./models`. |
| `rasa interactive` | Starts an interactive learning session to create new training data by chatting. |
| `rasa shell` | Loads your trained model and lets you talk to your assistant on the command line. |
| `rasa run` | Starts a Rasa server with your trained model. See the [Configuring the HTTP API](https://legacy-docs-v1.rasa.com/1.10.24/user-guide/configuring-http-api/#configuring-http-api) docs for details. |
| `rasa run actions` | Starts an action server using the Rasa SDK. |
| `rasa visualize` | Visualizes stories. |
| `rasa test` | Tests a trained Rasa model using your test NLU data and stories. |
| `rasa data split nlu` | Performs a split of your NLU data according to the specified percentages. |
| `rasa data convert nlu` | Converts NLU training data between different formats. |
| `rasa export` | Export conversations from a tracker store to an event broker. |
| `rasa x` | Launch Rasa X locally. |
| `rasa -h` | Shows all available commands. |

## Create a new project

A single command sets up a complete project for you with some example training data.

```
rasa init
```

This creates the following files:

```
.
├── __init__.py
├── actions.py
├── config.yml
├── credentials.yml
├── data
│   ├── nlu.md
│   └── stories.md
├── domain.yml
├── endpoints.yml
└── models
    └── <timestamp>.tar.gz
```

The `rasa init` command will ask you if you want to train an initial model using this data.
If you answer no, the `models` directory will be empty.

With this project setup, common commands are very easy to remember.
To train a model, type `rasa train`, to talk to your model on the command line, `rasa shell`,
to test your model type `rasa test`.

## Train a Model

The main command is:

```
rasa train
```

This command trains a Rasa model that combines a Rasa NLU and a Rasa Core model.
If you only want to train an NLU or a Core model, you can run `rasa train nlu` or `rasa train core`.
However, Rasa will automatically skip training Core or NLU if the training data and config haven’t changed.

`rasa train` will store the trained model in the directory defined by `--out`. The name of the model
is per default `<timestamp>.tar.gz`. If you want to name your model differently, you can specify the name
using `--fixed-model-name`.

The following arguments can be used to configure the training process:

```
usage: rasa train [-h] [-v] [-vv] [--quiet] [--data DATA [DATA ...]]
                  [-c CONFIG] [-d DOMAIN] [--out OUT]
                  [--augmentation AUGMENTATION] [--debug-plots]
                  [--fixed-model-name FIXED_MODEL_NAME] [--persist-nlu-data]
                  [--force]
                  {core,nlu} ...
```

## Interactive Learning

To start an interactive learning session with your assistant, run

```
rasa interactive
```

If you provide a trained model using the `--model` argument, the interactive learning process
is started with the provided model. If no model is specified, `rasa interactive` will
train a new Rasa model with the data located in `data/` if no other directory was passed to the
`--data` flag. After training the initial model, the interactive learning session starts.
Training will be skipped if the training data and config haven’t changed.

## Talk to your Assistant

To start a chat session with your assistant on the command line, run:

```
rasa shell
```

The model that should be used to interact with your bot can be specified by `--model`.
If you start the shell with an NLU-only model, `rasa shell` allows
you to obtain the intent and entities of any text you type on the command line.
If your model includes a trained Core model, you can chat with your bot and see
what the bot predicts as a next action.
If you have trained a combined Rasa model but nevertheless want to see what your model
extracts as intents and entities from text, you can use the command `rasa shell nlu`.

## Start a Server

To start a server running your Rasa model, run:

```
rasa run
```

The following arguments can be used to configure your Rasa server:

```
usage: rasa run [-h] [-v] [-vv] [--quiet] [-m MODEL] [--log-file LOG_FILE]
                [--endpoints ENDPOINTS] [-p PORT] [-t AUTH_TOKEN]
                [--cors [CORS [CORS ...]]] [--enable-api]
                [--response-timeout RESPONSE_TIMEOUT]
                [--remote-storage REMOTE_STORAGE]
                [--ssl-certificate SSL_CERTIFICATE]
                [--ssl-keyfile SSL_KEYFILE] [--ssl-ca-file SSL_CA_FILE]
                [--ssl-password SSL_PASSWORD] [--credentials CREDENTIALS]
                [--connector CONNECTOR] [--jwt-secret JWT_SECRET]
                [--jwt-method JWT_METHOD]
                {actions} ... [model-as-positional-argument]
```

### Visualize your Stories

To open a browser tab with a graph showing your stories:

```
rasa visualize
```

Normally, training stories in the directory `data` are visualized.
If your stories are located somewhere else, you can specify their location with `--stories`.
