diff --git a/book/src/help_vm.md b/book/src/help_vm.md
new file mode 100644
index 0000000000..be62e3549c
--- /dev/null
+++ b/book/src/help_vm.md
@@ -0,0 +1,100 @@
+# Validator Manager
+
+```
+Utilities for managing a Lighthouse validator client via the HTTP API.
+
+USAGE:
+ lighthouse validator_manager [FLAGS] [OPTIONS] [SUBCOMMAND]
+
+FLAGS:
+ --disable-log-timestamp If present, do not include timestamps in logging output.
+ --disable-malloc-tuning If present, do not configure the system allocator. Providing this flag will
+ generally increase memory usage, it should only be provided when debugging
+ specific memory allocation issues.
+ -h, --help Prints help information
+ --log-color Force outputting colors when emitting logs to the terminal.
+ --logfile-compress If present, compress old log files. This can help reduce the space needed to
+ store old logs.
+ --logfile-no-restricted-perms If present, log files will be generated as world-readable meaning they can be
+ read by any user on the machine. Note that logs can often contain sensitive
+ information about your validator and so this flag should be used with caution.
+ For Windows users, the log file permissions will be inherited from the parent
+ folder.
+ -V, --version Prints version information
+
+OPTIONS:
+ -d, --datadir
+ Used to specify a custom root data directory for lighthouse keys and databases. Defaults to
+ $HOME/.lighthouse/{network} where network is the value of the `network` flag Note: Users should specify
+ separate custom datadirs for different networks.
+ --debug-level
+ Specifies the verbosity level used when emitting logs to the terminal. [default: info] [possible values:
+ info, debug, trace, warn, error, crit]
+ --genesis-state-url
+ A URL of a beacon-API compatible server from which to download the genesis state. Checkpoint sync server
+ URLs can generally be used with this flag. If not supplied, a default URL or the --checkpoint-sync-url may
+ be used. If the genesis state is already included in this binary then this value will be ignored.
+ --genesis-state-url-timeout
+ The timeout in seconds for the request to --genesis-state-url. [default: 180]
+
+ --log-format
+ Specifies the log format used when emitting logs to the terminal. [possible values: JSON]
+
+ --logfile
+ File path where the log file will be stored. Once it grows to the value specified in `--logfile-max-size` a
+ new log file is generated where future logs are stored. Once the number of log files exceeds the value
+ specified in `--logfile-max-number` the oldest log file will be overwritten.
+ --logfile-debug-level
+ The verbosity level used when emitting logs to the log file. [default: debug] [possible values: info,
+ debug, trace, warn, error, crit]
+ --logfile-format
+ Specifies the log format used when emitting logs to the logfile. [possible values: DEFAULT, JSON]
+
+ --logfile-max-number
+ The maximum number of log files that will be stored. If set to 0, background file logging is disabled.
+ [default: 5]
+ --logfile-max-size
+ The maximum size (in MB) each log file can grow to before rotating. If set to 0, background file logging is
+ disabled. [default: 200]
+ --network
+ Name of the Eth2 chain Lighthouse will sync and follow. [possible values: mainnet, prater, goerli, gnosis,
+ chiado, sepolia, holesky]
+ --safe-slots-to-import-optimistically
+ Used to coordinate manual overrides of the SAFE_SLOTS_TO_IMPORT_OPTIMISTICALLY parameter. This flag should
+ only be used if the user has a clear understanding that the broad Ethereum community has elected to override
+ this parameter in the event of an attack at the PoS transition block. Incorrect use of this flag can cause
+ your node to possibly accept an invalid chain or sync more slowly. Be extremely careful with this flag.
+ -s, --spec
+ This flag is deprecated, it will be disallowed in a future release. This value is now derived from the
+ --network or --testnet-dir flags.
+ --terminal-block-hash-epoch-override
+ Used to coordinate manual overrides to the TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH parameter. This flag should
+ only be used if the user has a clear understanding that the broad Ethereum community has elected to override
+ the terminal PoW block. Incorrect use of this flag will cause your node to experience a consensus failure.
+ Be extremely careful with this flag.
+ --terminal-block-hash-override
+ Used to coordinate manual overrides to the TERMINAL_BLOCK_HASH parameter. This flag should only be used if
+ the user has a clear understanding that the broad Ethereum community has elected to override the terminal
+ PoW block. Incorrect use of this flag will cause your node to experience a consensus failure. Be extremely
+ careful with this flag.
+ --terminal-total-difficulty-override
+ Used to coordinate manual overrides to the TERMINAL_TOTAL_DIFFICULTY parameter. Accepts a 256-bit decimal
+ integer (not a hex value). This flag should only be used if the user has a clear understanding that the
+ broad Ethereum community has elected to override the terminal difficulty. Incorrect use of this flag will
+ cause your node to experience a consensus failure. Be extremely careful with this flag.
+ -t, --testnet-dir
+ Path to directory containing eth2_testnet specs. Defaults to a hard-coded Lighthouse testnet. Only effective
+ if there is no existing database.
+
+SUBCOMMANDS:
+ create Creates new validators from BIP-39 mnemonic. A JSON file will be created which contains all the
+ validator keystores and other validator data. This file can then be imported to a validator client
+ using the "import-validators" command. Another, optional JSON file is created which contains a list of
+ validator deposits in the same format as the "ethereum/staking-deposit-cli" tool.
+ help Prints this message or the help of the given subcommand(s)
+ import Uploads validators to a validator client using the HTTP API. The validators are defined in a JSON file
+ which can be generated using the "create-validators" command.
+ move Uploads validators to a validator client using the HTTP API. The validators are defined in a JSON file
+ which can be generated using the "create-validators" command. This command only supports validators
+ signing via a keystore on the local file system (i.e., not Web3Signer validators).
+```
\ No newline at end of file
diff --git a/help_vm_move.md b/help_vm_move.md
new file mode 100644
index 0000000000..5b9a8e9f6d
--- /dev/null
+++ b/help_vm_move.md
@@ -0,0 +1,115 @@
+# Validator Manager Move
+
+```
+Uploads validators to a validator client using the HTTP API. The validators are defined in a JSON file which can be
+generated using the "create-validators" command. This command only supports validators signing via a keystore on the
+local file system (i.e., not Web3Signer validators).
+
+USAGE:
+ lighthouse validator_manager move [FLAGS] [OPTIONS] --dest-vc-token --dest-vc-url --src-vc-token --src-vc-url
+
+FLAGS:
+ --disable-log-timestamp If present, do not include timestamps in logging output.
+ --disable-malloc-tuning If present, do not configure the system allocator. Providing this flag will
+ generally increase memory usage, it should only be provided when debugging
+ specific memory allocation issues.
+ -h, --help Prints help information
+ --log-color Force outputting colors when emitting logs to the terminal.
+ --logfile-compress If present, compress old log files. This can help reduce the space needed to
+ store old logs.
+ --logfile-no-restricted-perms If present, log files will be generated as world-readable meaning they can be
+ read by any user on the machine. Note that logs can often contain sensitive
+ information about your validator and so this flag should be used with caution.
+ For Windows users, the log file permissions will be inherited from the parent
+ folder.
+ --stdin-inputs If present, read all user inputs from stdin instead of tty.
+ -V, --version Prints version information
+
+OPTIONS:
+ --builder-proposals
+ When provided, all created validators will attempt to create blocks via builder rather than the local EL.
+ [possible values: true, false]
+ --count The number of validators to move.
+ -d, --datadir
+ Used to specify a custom root data directory for lighthouse keys and databases. Defaults to
+ $HOME/.lighthouse/{network} where network is the value of the `network` flag Note: Users should specify
+ separate custom datadirs for different networks.
+ --debug-level
+ Specifies the verbosity level used when emitting logs to the terminal. [default: info] [possible values:
+ info, debug, trace, warn, error, crit]
+ --dest-vc-token
+ The file containing a token required by the destination validator client.
+
+ --dest-vc-url
+ A HTTP(S) address of a validator client using the keymanager-API. This validator client is the "destination"
+ and will have new validators added as they are removed from the "source" validator client.
+ --gas-limit
+ All created validators will use this gas limit. It is recommended to leave this as the default value by not
+ specifying this flag.
+ --genesis-state-url
+ A URL of a beacon-API compatible server from which to download the genesis state. Checkpoint sync server
+ URLs can generally be used with this flag. If not supplied, a default URL or the --checkpoint-sync-url may
+ be used. If the genesis state is already included in this binary then this value will be ignored.
+ --genesis-state-url-timeout
+ The timeout in seconds for the request to --genesis-state-url. [default: 180]
+
+ --log-format
+ Specifies the log format used when emitting logs to the terminal. [possible values: JSON]
+
+ --logfile
+ File path where the log file will be stored. Once it grows to the value specified in `--logfile-max-size` a
+ new log file is generated where future logs are stored. Once the number of log files exceeds the value
+ specified in `--logfile-max-number` the oldest log file will be overwritten.
+ --logfile-debug-level
+ The verbosity level used when emitting logs to the log file. [default: debug] [possible values: info,
+ debug, trace, warn, error, crit]
+ --logfile-format
+ Specifies the log format used when emitting logs to the logfile. [possible values: DEFAULT, JSON]
+
+ --logfile-max-number
+ The maximum number of log files that will be stored. If set to 0, background file logging is disabled.
+ [default: 5]
+ --logfile-max-size
+ The maximum size (in MB) each log file can grow to before rotating. If set to 0, background file logging is
+ disabled. [default: 200]
+ --network
+ Name of the Eth2 chain Lighthouse will sync and follow. [possible values: mainnet, prater, goerli, gnosis,
+ chiado, sepolia, holesky]
+ --safe-slots-to-import-optimistically
+ Used to coordinate manual overrides of the SAFE_SLOTS_TO_IMPORT_OPTIMISTICALLY parameter. This flag should
+ only be used if the user has a clear understanding that the broad Ethereum community has elected to override
+ this parameter in the event of an attack at the PoS transition block. Incorrect use of this flag can cause
+ your node to possibly accept an invalid chain or sync more slowly. Be extremely careful with this flag.
+ -s, --spec
+ This flag is deprecated, it will be disallowed in a future release. This value is now derived from the
+ --network or --testnet-dir flags.
+ --src-vc-token
+ The file containing a token required by the source validator client.
+
+ --src-vc-url
+ A HTTP(S) address of a validator client using the keymanager-API. This validator client is the "source" and
+ contains the validators that are to be moved.
+ --suggested-fee-recipient
+ All created validators will use this value for the suggested fee recipient. Omit this flag to use the
+ default value from the VC.
+ --terminal-block-hash-epoch-override
+ Used to coordinate manual overrides to the TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH parameter. This flag should
+ only be used if the user has a clear understanding that the broad Ethereum community has elected to override
+ the terminal PoW block. Incorrect use of this flag will cause your node to experience a consensus failure.
+ Be extremely careful with this flag.
+ --terminal-block-hash-override
+ Used to coordinate manual overrides to the TERMINAL_BLOCK_HASH parameter. This flag should only be used if
+ the user has a clear understanding that the broad Ethereum community has elected to override the terminal
+ PoW block. Incorrect use of this flag will cause your node to experience a consensus failure. Be extremely
+ careful with this flag.
+ --terminal-total-difficulty-override
+ Used to coordinate manual overrides to the TERMINAL_TOTAL_DIFFICULTY parameter. Accepts a 256-bit decimal
+ integer (not a hex value). This flag should only be used if the user has a clear understanding that the
+ broad Ethereum community has elected to override the terminal difficulty. Incorrect use of this flag will
+ cause your node to experience a consensus failure. Be extremely careful with this flag.
+ -t, --testnet-dir
+ Path to directory containing eth2_testnet specs. Defaults to a hard-coded Lighthouse testnet. Only effective
+ if there is no existing database.
+ --validators
+ The validators to be moved. Either a list of 0x-prefixed validator pubkeys or the keyword "all".
+```
\ No newline at end of file
diff --git a/scripts/cli.sh b/scripts/cli.sh
index 5c6c85ad47..b7c2c19309 100755
--- a/scripts/cli.sh
+++ b/scripts/cli.sh
@@ -1,6 +1,6 @@
#! /usr/bin/env bash
-set -e
+#set -e
# A function to generate formatted .md files
write_to_file() {