# Command-Line Interface

> Source: https://docs.synthesized.io/tdk/latest/user_guide/040_reference/api_reference/command_line_interface
> For the complete documentation index, see [llms.txt](https://docs.synthesized.io/llms.txt).

## Requirements

In order to run the application, the host needs to have the following installed:

- `Java JDK 17` or higher. The version can be checked with `java --version`.

## Run CLI

To see the available options when running the CLI, execute `tdk` command with the `--help` flag.

```shell
tdk --help
```

```console
Usage: tdk [-hV] [-c=<config-file>] [-i=<inventory-file>]
           [-ip=<input-password>] [-ips=<input-password-secret>]
           [-iu=<input-url>] [-iU=<input-username>]
           [-iUs=<input-username-secret>] [-op=<output-password>]
           [-ops=<output-password-secret>] [-ou=<output-url>]
           [-oU=<output-username>] [-oUs=<output-username-secret>] [COMMAND]
TDK
  -c, --config-file=<config-file>
                  Configuration file
  -h, --help      Show this help message and exit.
  -i, --inventory-file=<inventory-file>
                  Inventory file with information about using data sources
      -ip, --input-password=<input-password>
                  Input password, default to null
      -ips, --input-password-secret=<input-password-secret>
                  Input password secret in JSON format, default to null
      -iu, --input-url=<input-url>
                  Input database URL
      -iU, --input-username=<input-username>
                  Input username, default to null
      -iUs, --input-username-secret=<input-username-secret>
                  Input username secret in JSON format, default to null
      -op, --output-password=<output-password>
                  Output password, default to null
      -ops, --output-password-secret=<output-password-secret>
                  Output password secret in JSON format, default to null
      -ou, --output-url=<output-url>
                  Output database URL
      -oU, --output-username=<output-username>
                  Output username, default to null
      -oUs, --output-username-secret=<output-username-secret>
                  Output username secret in JSON format, default to null
  -V, --version   Print version information and exit.
Commands:
  help                    Display help information about the specified command.
  diagnostic, dg          Collect diagnostic information
  default-config, dc      Print built-in default configuration (can be
                            overridden in the user config)
  dry-run, dr             Print the effective configuration instead of running
                            the transformation to the console (by default) or
                            to the file (specified as `-ec` parameter value)
  json-schema, js         Print json schema for configuration YAML file
  license-expiration, le  Print the expiration date of the license key
  matchers-report, mr     Print matchers report
  release-lock, rl        Release lock that is hold by TDK for output database
  validate-config, vc     Validate YAML config using json schema
```

If you need to set additional properties for the CLI, you can create an `application.properties` file in the same directory and set values there, e.g. `SECRETS_GCP_SECRET_MANAGER_ENABLED = true`.

You can find a list of supported application properties in the configuration reference.
