diff --git a/fedora_openqa_schedule/cli.py b/fedora_openqa_schedule/cli.py
--- a/fedora_openqa_schedule/cli.py
+++ b/fedora_openqa_schedule/cli.py
@@ -41,6 +41,7 @@
 # Internal dependencies
 import fedora_openqa_schedule.schedule as schedule
 import fedora_openqa_schedule.report as report
+from fedora_openqa_schedule.config import CONFIG
 
 logger = logging.getLogger(__name__)
 
@@ -121,7 +122,7 @@
     """
     try:
         report.report_results(
-            args.jobs, client=client, wiki=wiki, report=args.report)
+            args.jobs, client=client, wiki=wiki, report=args.submit)
     except report.LoginError:
         # Module logs for us, no need to dupe it.
         sys.exit(1)
@@ -174,46 +175,52 @@
         "release validation test event can be found and --submit-results is passed, results "
         "will be reported.")
     parser_compose.add_argument(
-        '-r', '--release', type=int, required=False, choices=range(12, 100), metavar="12-99",
+        '--release', '-r', type=int, choices=range(12, 100), metavar="12-99",
         help="Release number of a specific compose to run against. Must be passed for "
         "validation event discovery to succeed.")
     parser_compose.add_argument(
-        '-m', '--milestone', help="The milestone to operate on (Alpha, Beta, Final, Branched, "
+        '--milestone', '-m', help="The milestone to operate on (Alpha, Beta, Final, Branched, "
         "Rawhide). Must be specified for a TC/RC; for a nightly, will be guessed if not "
-        "specified", required=False, choices=['Alpha', 'Beta', 'Final', 'Branched', 'Rawhide'])
+        "specified", choices=['Alpha', 'Beta', 'Final', 'Branched', 'Rawhide'])
     parser_compose.add_argument(
-        '-c', '--compose', help="The version to run for; either the compose (for a TC/RC), or "
-        "the date (for a nightly build)", required=False, metavar="{T,R}C1-19 or YYYYMMDD")
+        '--compose', '-c', help="The version to run for; either the compose (for a TC/RC), or "
+        "the date (for a nightly build)", metavar="{T,R}C1-19 or YYYYMMDD")
     parser_compose.add_argument(
-        '-a', '--arch', help="The arch to run for", required=False, choices=('x86_64', 'i386'))
+        '--arch', '-a', help="The arch to run for", choices=('x86_64', 'i386'))
     parser_compose.add_argument(
-        '-s', '--submit-results', help="Submit the results to the release validation event for "
-        "this compose, if possible", required=False, action='store_true')
+        '--wait', '-w', help="Wait NNN minutes for the compose to appear, if it doesn't yet "
+        "exist", default=CONFIG.getint('schedule', 'compose-wait'), type=int, metavar="NNN")
     parser_compose.add_argument(
-        '-w', '--wait', help="Wait NN minutes for the compose to appear, if it doesn't yet "
-        "exist", type=int, metavar="NN", default=0, required=False)
-    parser_compose.add_argument(
-        '-i', '--ifnotcurrent', help="Only run if the compose is not the 'current' validation "
+        '--ifnotcurrent', '-i', help="Only run if the compose is not the 'current' validation "
         "compose. Mainly intended for cron runs on nightly builds, to avoid duplicating jobs "
         "run by a 'current' cron job. Requires wikitcms", action='store_true')
     parser_compose.set_defaults(func=command_compose)
 
     parser_report = subparsers.add_parser(
         'report', description="Map openQA job results to Wikitcms test results and optionally "
         "submit them to the wiki")
     parser_report.add_argument('jobs', type=int, nargs='+')
-    parser_report.add_argument('-r', '-s', '--report', '--submit-results', action='store_true',
-    help="Submit the results to the wiki (instead of simply displaying them)")
     parser_report.set_defaults(func=command_report)
 
+    submitgroup = parser.add_mutually_exclusive_group()
+    submitgroup.add_argument('--submit', '-s', '--submit-results', action='store_true',
+    dest="submit", help="Where appropriate, submit results to the wiki")
+    submitgroup.add_argument('--no-submit', '-ns', '--no-submit-results', action='store_false',
+    dest="submit", help="Do not submit results to the wiki")
+    # This will result in getting the 'submit' value from config file
+    # if not explicitly specified, overriding the implied defaults of
+    # store_true and store_false
+    parser.set_defaults(submit=None)
+
     parser.add_argument(
-        '-t', '--test', help=test_help, required=False, action='store_true')
+        '--test', '-t', help=test_help, action='store_true')
     parser.add_argument(
-        '-f', '--log-file', help="If given, log into specified file. When not provided, stdout"
-        " is used", required=False)
+        '--log-file', '-f', help="If given, log into specified file. When not provided, stdout"
+        " is used", default=CONFIG.get('cli', 'log-file'))
     parser.add_argument(
-        '-l', '--log-level', help="Specify log level to be outputted",
-        choices=('debug', 'info', 'warning', 'error', 'critical'), default='info')
+        '--log-level', '-l', help="Specify log level to be outputted",
+        choices=('debug', 'info', 'warning', 'error', 'critical'),
+        default=CONFIG.get('cli', 'log-level'))
 
     return parser.parse_args()
 
diff --git a/fedora_openqa_schedule/config.py b/fedora_openqa_schedule/config.py
--- a/fedora_openqa_schedule/config.py
+++ b/fedora_openqa_schedule/config.py
@@ -26,10 +26,17 @@
 from six.moves import configparser
 
 # Read in config from /etc/fedora-openqa/schedule.conf or
-# ~/.config/fedora-openqa/schedule.conf after setting a default value
-# for iso_path.
+# ~/.config/fedora-openqa/schedule.conf after setting some default
+# values.
 CONFIG = configparser.ConfigParser()
+CONFIG.add_section('cli')
+CONFIG.add_section('report')
 CONFIG.add_section('schedule')
-CONFIG.set('schedule', 'iso_path', '/var/lib/openqa/factory/iso/')
+CONFIG.set('cli', 'log-file', '')
+CONFIG.set('cli', 'log-level', 'info')
+CONFIG.set('report', 'submit', 'true')
+CONFIG.set('report', 'jobs-wait', '360')
+CONFIG.set('schedule', 'iso-path', '/var/lib/openqa/factory/iso/')
+CONFIG.set('schedule', 'compose-wait', '480')
 CONFIG.read('/etc/fedora-openqa/schedule.conf')
 CONFIG.read('{0}/.config/fedora-openqa/schedule.conf'.format(os.path.expanduser('~')))
diff --git a/fedora_openqa_schedule/report.py b/fedora_openqa_schedule/report.py
--- a/fedora_openqa_schedule/report.py
+++ b/fedora_openqa_schedule/report.py
@@ -33,6 +33,7 @@
 
 # Internal dependencies
 import fedora_openqa_schedule.conf_test_suites as conf_test_suites
+from fedora_openqa_schedule.config import CONFIG
 
 logger = logging.getLogger(__name__)
 
@@ -42,15 +43,18 @@
     pass
 
 
-def get_passed_testcases(job_ids, client):
+def get_passed_testcases(job_ids, client, waittime=None):
     """
     job_ids ~ list of int (job ids)
+    waittime ~ int or None - how long to wait for jobs, None == read from config
     Returns ~ list of str - names of passed testcases
     """
+    if waittime is None:
+        waittime = CONFIG.getint('report', 'jobs-wait')
     # Use the openQA client lib to wait for jobs to be done. We'll
     # wait 6 hours, what the hell. Will raise an openQA client error
     # on wait expiry.
-    jobs = client.wait_jobs(job_ids, waittime=360)
+    jobs = client.wait_jobs(job_ids, waittime=waittime)
     passed_testcases = set()
     for job in jobs:
         if job['result'] == 'passed':
@@ -79,13 +83,16 @@
     return sorted(list(passed_testcases), key=attrgetter('testcase'))
 
 
-def report_results(job_ids, client, wiki=None, report=True):
+def report_results(job_ids, client, wiki=None, report=None):
     """Report results from a list of openQA job IDs to Wikitcms. If
     report is False, will just print out the python-wikitcms ResTups
-    for inspection.
+    for inspection. If report is None, will read the setting from the
+    config file; if no config file is present, default is True.
     """
     passed_testcases = get_passed_testcases(job_ids, client)
     logger.info("passed testcases: %s", passed_testcases)
+    if report is None:
+        report = CONFIG.getboolean('report', 'submit')
 
     if report:
         logger.info("reporting test passes")
diff --git a/fedora_openqa_schedule/schedule.py b/fedora_openqa_schedule/schedule.py
--- a/fedora_openqa_schedule/schedule.py
+++ b/fedora_openqa_schedule/schedule.py
@@ -41,7 +41,7 @@
 PERSISTENT = "/var/tmp/openqa_watcher.json"
 ARCHES = ['x86_64', 'i386']
 # Default value is '/var/lib/openqa/factory/iso/'
-ISO_PATH = CONFIG.get('schedule', 'iso_path')
+ISO_PATH = CONFIG.get('schedule', 'iso-path')
 
 class TriggerException(Exception):
     pass
diff --git a/schedule.conf.sample b/schedule.conf.sample
new file mode 100644
--- /dev/null
+++ b/schedule.conf.sample
@@ -0,0 +1,27 @@
+# fedora-openqa-schedule (both CLI and module) will read configuration from
+# /etc/fedora-qa/schedule.conf or ~/.config/fedora-qa/schedule.conf (with the
+# latter taking priority if both exist). Most of these settings may be
+# overridden with CLI arguments, when using the CLI. Values in this sample
+# config indicate the defaults.
+
+[cli]
+# File to log to (if not set, will log to stdout)
+log-file:
+
+# Logging level (debug, info, warning, error, critical)
+log-level: info
+
+[report]
+# Whether to submit results to the Wiki (if false, just log them)
+submit: true
+
+# Minutes to wait for openQA jobs to be complete (0 means 'do not wait')
+wait-jobs: 360
+
+[schedule]
+# Where to download ISOs (should be the directory openQA will look in)
+iso-path: /var/lib/openqa/factory/iso/
+
+# Minutes to wait for the compose to be complete, when scheduling jobs for a
+# specific compose. 'current' never waits.
+compose-wait: 480

