diff --git a/preprocessor/preprocessor/cli.py b/preprocessor/preprocessor/cli.py
index db8896fd670cbf9d0efcccd41e1e340d4fc5c69a..5fa8e00534a0d876d7e428e238a9d06f203fa40b 100644
--- a/preprocessor/preprocessor/cli.py
+++ b/preprocessor/preprocessor/cli.py
@@ -6,6 +6,7 @@ import yaml
 import jsonschema
 
 from .preprocess import preprocess_file
+from .daemon import run_daemon
 
 
 def setup_logging(debug=False):
@@ -44,8 +45,18 @@ def cli():
 
 
 @cli.command(help='Run the preprocess daemon, attaching to a Redis queue')
-def daemon(ctx):
-    click.echo(ctx['CONFIG'])
+@click.option('--config-file', type=click.File('r'))
+@click.option('--use-dir', type=str) # TODO: check dir
+@click.option('--validate/--no-validate', default=False)
+@click.option('--host', type=str)
+@click.option('--port', type=int)
+@click.option('--listen-queue', type=str)
+@click.option('--write-queue', type=str)
+def daemon(config_file=None, use_dir=None, validate=False, host=None, port=None, listen_queue=None, write_queue=None):
+    config = yaml.load(config_file)
+    if validate:
+        validate_config(config)
+    run_daemon(config, host, port, listen_queue, write_queue)
 
 
 @cli.command(help='Run a single, one-off preprocessing')
diff --git a/preprocessor/preprocessor/preprocess.py b/preprocessor/preprocessor/preprocess.py
index 2c167570bf9aeca762e3a75667b920137d08afc2..f7f3cad2befb19ccf0ee2a811e27261b2554df34 100644
--- a/preprocessor/preprocessor/preprocess.py
+++ b/preprocessor/preprocessor/preprocess.py
@@ -246,7 +246,9 @@ def preprocess_file(config: dict, file_path: os.PathLike, use_dir: os.PathLike=N
             % (upload_timer.elapsed)
         )
 
-    logger.info(
-        'Finished preprocessing of %s after %f seconds.'
-        % (file_path, preprocess_timer.elapsed)
-    )
+        logger.info(
+            'Finished preprocessing of %s after %f seconds.'
+            % (file_path, preprocess_timer.elapsed)
+        )
+
+        return upload_filenames