These docs are for version 1.x of Rasa Open Source.

# Command Line Interface

## Cheat Sheet
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 [Running the Server](https://legacy-docs-v1.rasa.com/1.7.1/user-guide/running-the-server/#running-the-server) 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 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.

## 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`.

### Arguments for Configuring 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} ...

positional arguments:
  {core,nlu}
    core                Trains a Rasa Core model using your stories.
    nlu                 Trains a Rasa NLU model using your NLU data.

optional arguments:
  -h, --help            show this help message and exit
  --data DATA [DATA ...]
                        Paths to the Core and NLU data files. (default:
                        ['data'])
  -c CONFIG, --config CONFIG
                        The policy and NLU pipeline configuration of your bot.
                        (default: config.yml)
  -d DOMAIN, --domain DOMAIN
                        Domain specification (yml file). (default: domain.yml)
  --out OUT             Directory where your models should be stored.
                        (default: models)
  --augmentation AUGMENTATION
                        How much data augmentation to use during training.
                        (default: 50)
  --debug-plots         If enabled, will create plots showing checkpoints and
                        their connections between story blocks in a file
                        called `story_blocks_connections.html`. (default:
                        False)
  --fixed-model-name FIXED_MODEL_NAME
                        If set, the name of the model file/directory will be
                        set to the given name. (default: None)
  --persist-nlu-data    Persist the nlu training data in the saved model.
                        (default: False)
  --force               Force a model training even if the data has not
                        changed. (default: False)
```

## Interactive Learning
To start an interactive learning session with your assistant, run

```
rasa interactive
```

The full list of arguments that can be set for `rasa interactive` is:

```
usage: rasa interactive [-h] [-v] [-vv] [--quiet] [--e2e] [-m MODEL]
                        [--data DATA [DATA ...]] [--skip-visualization]
                        [--conversation-id CONVERSATION_ID]
                        [--endpoints ENDPOINTS] [-c CONFIG] [-d DOMAIN]
                        [--out OUT] [--augmentation AUGMENTATION]
                        [--debug-plots] [--force] [--persist-nlu-data]
                        {core} ... [model-as-positional-argument]

positional arguments:
  {core}
    core                Starts an interactive learning session model to create
                        new training data for a Rasa Core model by chatting.
                        Uses the 'RegexInterpreter', i.e. `/<intent>` input
                        format.
  model-as-positional-argument
                        Path to a trained Rasa model. If a directory is
                        specified, it will use the latest model in this
                        directory. (default: None)

optional arguments:
  -h, --help            show this help message and exit
  --e2e                 Save story files in e2e format. In this format user
                        messages will be included in the stories. (default:
                        False)
  -m MODEL, --model MODEL
                        Path to a trained Rasa model. If a directory is
                        specified, it will use the latest model in this
                        directory. (default: None)
  --data DATA [DATA ...]
                        Paths to the Core and NLU data files. (default:
                        ['data'])
  --skip-visualization  Disable plotting the visualization during interactive
                        learning. (default: False)
  --conversation-id CONVERSATION_ID
                        Specify the id of the conversation the messages are
                        in. Defaults to a UUID that will be randomly
                        generated. (default: 846497fe3cc54084b67a59f691c23bf4)
  --endpoints ENDPOINTS
                        Configuration file for the model server and the
                        connectors as a yml file. (default: None)
```

## 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`.

To increase the logging level for debugging, run:

```
rasa shell --debug
```

## Start a Server
To start a server running your Rasa model, run:

```
rasa run
```

## Start an Action Server
To run your action server run

```
rasa run actions
```

## Visualize your Stories
To open a browser tab with a graph showing your stories:

```
rasa visualize
```

## Evaluate a Model on Test Data
To evaluate your model on test data, run:

```
rasa test
```

## Create a Train-Test Split
To create a split of your NLU data, run:

```
rasa data split nlu
```

## Convert Data Between Markdown and JSON
To convert NLU data from LUIS data format, WIT data format, Dialogflow data format, JSON, or Markdown to JSON or Markdown, run:

```
rasa data convert nlu
```

## Start Rasa X
Rasa X is a toolset that helps you leverage conversations to improve your assistant. You can start Rasa X locally by executing

```
rasa x
```
