diff --git a/docs/Makefile b/docs/Makefile
new file mode 100644
index 00000000..2c95f0ba
--- /dev/null
+++ b/docs/Makefile
@@ -0,0 +1,20 @@
+# Minimal makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS =
+SPHINXBUILD = sphinx-build
+SPHINXPROJ = Heritrix
+SOURCEDIR = .
+BUILDDIR = _build
+
+# Put it first so that "make" without argument is like "make help".
+help:
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+.PHONY: help Makefile
+
+# Catch-all target: route all unknown targets to Sphinx using the new
+# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
+%: Makefile
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
\ No newline at end of file
diff --git a/docs/api.rst b/docs/api.rst
new file mode 100644
index 00000000..a040f7cf
--- /dev/null
+++ b/docs/api.rst
@@ -0,0 +1,1196 @@
+REST API
+========
+
+This manual describes the REST application programming interface (API)
+of the Heritrix Web crawler. Heritrix is the Internet Archive's open
+source, extensible, Web-scale, archival-quality Web crawler. For more
+information about Heritrix, visit \ http://crawler.archive.org/.
+
+This document is intended for application developers and administrators
+interested in controlling the Heritrix Web crawler through its REST API.
+
+Conventions and Assumptions
+---------------------------
+
+The following conventions are used in this document.
+
+.. raw:: html
+
+
+
+
+
+
+
+
+
+
+
+ (identifier) |
+ A identifier surrounded by parenthesis indicates a user-defined value. For example, (heritrixhostname) indicates a user-defined hostname that is running Heritrix. |
+
+
+ [identifier1,identifier2,...] |
+ Multiple identifiers surrounded by brackets indicate a predefined set of values. For example, [on,off] indicates a set of values comprised of the literals, "on" and "off". |
+
+
+
+
+The following curl parameters are used when invoking the API.
+
+.. raw:: html
+
+
+
+
+
+
+
+
+
+
+
+ -v |
+ Verbose. Output a detailed account of the curl command to standard out. |
+
+
+ -d |
+ Data. These are the name/value pairs that are send in the body of a POST. |
+
+
+ -k |
+ Insecure. Allows connections to SSL sites without certificates. |
+
+
+ -u
+ |
+ User. Allows the submission of a username and password to authenticate the HTTP request. |
+
+
+ --anyauth |
+ Any authentication type. Allows authentication of the request based on any type of authentication method. |
+
+
+ --location |
+ Follows HTTP redirects. This option is used so that API calls that return data (such as HTML) will not halt upon receipt of a redirect code (such as an HTTP 303). |
+
+
+ -H
+ |
+ Set the value of an HTTP header. For example, "Accept: application/xml". |
+
+
+
+
+It is assumed that the reader has a working knowledge of the HTTP
+protocol and Heritrix functionality. Also, the examples assume that
+Heritrix is run with an administrative username and password of "admin."
+
+REST
+----
+
+Representational State Transfer (REST) is a software architecture for
+distributed hypermedia systems such as the World Wide Web (WWW). REST is
+built on the concept of representations of resources. Resources can be
+any coherent and meaningful concept that may be addressed. A URI is an
+example of a resource. The representation of the resource is typically a
+document that captures the current or intended state of the resource. An
+example of a representation of a resource is an HTML page.
+
+Heritrix uses REST to expose its functionality. The REST implementation
+used by Heritrix is Restlet. Restlet implements the concepts defined by
+REST, including resources and representations. It also provides a REST
+container that processes RESTful requests. The container is the Noelios
+Restlet Engine. For detailed information on Restlet,
+visit \ http://www.restlet.org/.
+
+Heritrix Restlet API
+--------------------
+
+Heritrix exposes its REST functionality through HTTPS. The HTTPS
+protocol is used to send requests to retrieve or modify configuration
+settings and manage crawl jobs.
+
+Requirements for API Invocation
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Any client that supports HTTPS can be used to invoke the Heritrix API.
+The most common clients are command line tools such as curl and wget.
+These command line tools are typically found in Unix environments but
+can also be run on a Windows environment by
+installing \ `Cygwin `__. Cygwin is a free
+Linux emulation environment for Windows.
+
+API Format
+~~~~~~~~~~
+
+The format used to describe each API is as follows.
+
+.. raw:: html
+
+
+
+
+
+
+
+
+
+
+
+ API Name
+ |
+ The name assigned to the API. The name is a single word or short phrase that encapsulates the purpose of the API call. |
+
+
+ URI |
+ The URI to call when invoking the API. |
+
+
+ Description |
+ The description of the API. The description provides a detailed overview of what the API accomplishes and when the API should be called. |
+
+
+ HTTP Method |
+ The HTTP method to use when invoking the API. |
+
+
+ HTTP Data |
+ The name/value pairs that are submitted with the HTTP request. |
+
+
+ HTML Example |
+ An example call to the API. The curl command line utility is the HTTPS client used in the examples. The call returns HTML output.
+ |
+
+
+ XML Example
+ |
+ An example call to the API that returns XML output. The curl command line utility is the HTTPS client used in the examples. |
+
+
+
+
+API
+---
+
+Create New Job
+~~~~~~~~~~~~~~
+
+URI
+^^^
+
+https://(heritrixhost):8443/engine
+
+Description
+^^^^^^^^^^^
+
+This API creates a new crawl job configuration. It uses the default
+configuration provided by the profile-defaults profile.
+
+HTTP Method
+^^^^^^^^^^^
+
+POST
+
+HTTP Data
+^^^^^^^^^
+
+.. raw:: html
+
+
+
+
+
+
+
+
+
+
+
+
+ createpath
+ |
+ (jobname)
+ |
+ The name of the job.
+ |
+
+
+ action
+ |
+ create
+ |
+ The action to invoke.
+ |
+
+
+
+
+HTML Example
+^^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "createpath=myjob&action=create" -k -u admin:admin --anyauth --location https://localhost:8443/engine
+
+XML Example
+^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "createpath=myjob&action=create" -k -u admin:admin --anyauth --location -H "Accept: application/xml" https://localhost:8443/engine
+
+Add Job Directory
+~~~~~~~~~~~~~~~~~
+
+.. _uri-1:
+
+URI
+^^^
+
+https://(heritrixhost):8443/engine
+
+.. _description-1:
+
+Description
+^^^^^^^^^^^
+
+This API adds a new job directory to the Heritrix configuration. The
+directory must contain a cxml configuration file.
+
+.. _http-method-1:
+
+HTTP Method
+^^^^^^^^^^^
+
+POST
+
+.. _http-data-1:
+
+HTTP Data
+^^^^^^^^^
+
+.. raw:: html
+
+
+
+
+
+
+
+
+
+
+
+
+ addpath
+ |
+ (job directory to add)
+ |
+ The job directory to add.
+ |
+
+
+ action
+ |
+ add
+ |
+ The action to invoke
+ |
+
+
+
+
+.. _html-example-1:
+
+HTML Example
+^^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "action=add&addpath=/Users/hstern/job" -k -u admin:admin --anyauth --location https://localhost:8443/engine
+
+.. _xml-example-1:
+
+XML Example
+^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "action=add&addpath=/Users/hstern/job" -k -u admin:admin --anyauth --location -H "Accept: application/xml" https://localhost:8443/engine
+
+Build Job Configuration
+~~~~~~~~~~~~~~~~~~~~~~~
+
+.. _uri-2:
+
+URI
+^^^
+
+https://(heritrixhost):8443/engine/job/(jobname)
+
+.. _description-2:
+
+Description
+^^^^^^^^^^^
+
+This API builds the job configuration for the chosen job. It reads an
+XML descriptor file and uses Spring to build the Java objects that are
+necessary for running the crawl. Before a crawl can be run it must be
+built.
+
+.. _http-method-2:
+
+HTTP Method
+^^^^^^^^^^^
+
+POST
+
+.. _http-data-2:
+
+HTTP Data
+^^^^^^^^^
+
+.. raw:: html
+
+
+
+
+
+
+
+
+
+
+
+
+ action
+ |
+ build
+ |
+ The action to invoke.
+ |
+
+
+
+
+.. _html-example-2:
+
+HTML Example
+^^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "action=build" -k -u admin:admin --anyauth --location https://localhost:8443/engine/job/myjob
+
+.. _xml-example-2:
+
+XML Example
+^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "action=build" -k -u admin:admin --anyauth --location -H "Accept: application/xml" https://localhost:8443/engine/job/myjob
+
+Launch Job
+~~~~~~~~~~
+
+.. _uri-3:
+
+URI
+^^^
+
+https://(heritrixhost):8443/engine/job/(jobname)
+
+.. _description-3:
+
+Description
+^^^^^^^^^^^
+
+This API launches a crawl job. The job can be launched in the "paused"
+state or the "unpaused" state. If launched in the "unpaused" state the
+job will immediately begin crawling.
+
+.. _http-method-3:
+
+HTTP Method
+^^^^^^^^^^^
+
+POST
+
+.. _http-data-3:
+
+HTTP Data
+^^^^^^^^^
+
+.. raw:: html
+
+
+
+
+
+
+
+
+
+
+
+
+ action
+ |
+ launch
+ |
+ The action to invoke.
+ |
+
+
+
+
+.. _html-example-3:
+
+HTML Example
+^^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "action=launch" -k -u admin:admin --anyauth --location https://localhost:8443/engine/job/myjob
+
+.. _xml-example-3:
+
+XML Example
+^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "action=launch" -k -u admin:admin --anyauth --location -H "Accept: application/xml" https://localhost:8443/engine/job/myjob
+
+Rescan Job Directory
+~~~~~~~~~~~~~~~~~~~~
+
+.. _uri-4:
+
+URI
+^^^
+
+https://(heritrixhost):8443/engine
+
+.. _description-4:
+
+Description
+^^^^^^^^^^^
+
+This API rescans the main job directory and returns an HTML page
+containing all the job names. It also returns information about the
+jobs, such as the location of the job configuration file and the number
+of job launches.
+
+.. _http-method-4:
+
+HTTP Method
+^^^^^^^^^^^
+
+POST
+
+HTTP Data
+
+.. raw:: html
+
+
+
+
+
+
+
+
+
+
+
+
+ action
+ |
+ rescan
+ |
+ The action to invoke.
+ |
+
+
+
+
+.. _html-example-4:
+
+HTML Example
+^^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "action=rescan" -k -u admin:admin --anyauth --location https://localhost:8443/engine
+
+.. _xml-example-4:
+
+XML Example
+^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "action=rescan" -k -u admin:admin --anyauth --location -H "Accept: application/xml" https://localhost:8443/engine
+
+Pause Job
+~~~~~~~~~
+
+.. _uri-5:
+
+URI
+^^^
+
+https://(heritrixhost):8443/engine/job/(jobname)
+
+.. _description-5:
+
+Description
+^^^^^^^^^^^
+
+This API pauses an unpaused job. No crawling will occur while a job is
+paused.
+
+.. _http-method-5:
+
+HTTP Method
+^^^^^^^^^^^
+
+POST
+
+.. _http-data-4:
+
+HTTP Data
+^^^^^^^^^
+
+.. raw:: html
+
+
+
+
+
+
+
+
+
+
+
+
+ action
+ |
+ pause
+ |
+ The action to invoke.
+ |
+
+
+
+
+.. _html-example-5:
+
+HTML Example
+^^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "action=pause" -k -u admin:admin --anyauth --location https://localhost:8443/engine/job/myjob
+
+.. _xml-example-5:
+
+XML Example
+^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "action=pause" -k -u admin:admin --anyauth --location -H "Accept: application/xml" https://localhost:8443/engine/job/myjob
+
+Unpause Job
+~~~~~~~~~~~
+
+.. _uri-6:
+
+URI
+^^^
+
+https://(heritrixhost):8443/engine/job/(jobname)
+
+.. _description-6:
+
+Description
+^^^^^^^^^^^
+
+This API unpauses a paused job. Crawling will resume (or begin, in the
+case of a job launched in the paused state) if possible.
+
+.. _http-method-6:
+
+HTTP Method
+^^^^^^^^^^^
+
+POST
+
+.. _http-data-5:
+
+HTTP Data
+^^^^^^^^^
+
+.. raw:: html
+
+
+
+
+
+
+
+
+
+
+
+
+ action
+ |
+ unpause
+ |
+ The action to invoke.
+ |
+
+
+
+
+.. _html-example-6:
+
+HTML Example
+^^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "action=unpause" -k -u admin:admin --anyauth --location https://localhost:8443/engine/job/myjob
+
+.. _xml-example-6:
+
+XML Example
+^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "action=unpause" -k -u admin:admin --anyauth --location -H "Accept: application/xml" https://localhost:8443/engine/job/myjob
+
+Terminate Job
+~~~~~~~~~~~~~
+
+.. _uri-7:
+
+URI
+^^^
+
+https://(heritrixhost):8443/engine/job/(jobname)
+
+.. _description-7:
+
+Description
+^^^^^^^^^^^
+
+This API terminates a running job.
+
+.. _http-method-7:
+
+HTTP Method
+^^^^^^^^^^^
+
+POST
+
+.. _http-data-6:
+
+HTTP Data
+^^^^^^^^^
+
+.. raw:: html
+
+
+
+
+
+
+
+
+
+
+
+
+ action
+ |
+ terminate
+ |
+ The action to invoke.
+ |
+
+
+
+
+.. _html-example-7:
+
+HTML Example
+^^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "action=terminate" -k -u admin:admin --anyauth --location https://localhost:8443/engine/job/myjob
+
+.. _xml-example-7:
+
+XML Example
+^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "action=terminate" -k -u admin:admin --anyauth --location -H "Accept: application/xml" https://localhost:8443/engine/job/myjob
+
+Teardown Job
+~~~~~~~~~~~~
+
+.. _uri-8:
+
+URI
+^^^
+
+https://(heritrixhost):8443/engine/job/(jobname)
+
+.. _description-8:
+
+Description
+^^^^^^^^^^^
+
+This API removes the Spring code that is used to run the job. Once a job
+is torn down it must be rebuilt in order to run.
+
+.. _http-method-8:
+
+HTTP Method
+^^^^^^^^^^^
+
+POST
+
+.. _http-data-7:
+
+HTTP Data
+^^^^^^^^^
+
+.. raw:: html
+
+
+
+
+
+
+
+
+
+
+
+
+ action
+ |
+ teardown
+ |
+ The action to invoke.
+ |
+
+
+
+
+.. _html-example-8:
+
+HTML Example
+^^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "action=teardown" -k -u admin:admin --anyauth --location https://localhost:8443/engine/job/myjob
+
+.. _xml-example-8:
+
+XML Example
+^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "action=teardown" -k -u admin:admin --anyauth --location -H "Accept: application/xml" https://localhost:8443/engine/job/myjob
+
+Copy Job
+~~~~~~~~
+
+.. _uri-9:
+
+URI
+^^^
+
+https://(heritrixhost):8443/engine/job/(jobname)
+
+.. _description-9:
+
+Description
+^^^^^^^^^^^
+
+This API copies an existing job configuration to a new job
+configuration. If the "as profile" checkbox is selected, than the job
+configuration is copied as a non-runnable profile configuration.
+
+.. _http-method-9:
+
+HTTP Method
+^^^^^^^^^^^
+
+POST
+
+HTTP Data
+
+.. raw:: html
+
+
+
+
+
+
+
+
+
+
+
+
+ copyTo
+ |
+ (new job or profile configuration name) |
+ The name of the new job or profile configuration. |
+
+
+ asProfile |
+ [on]
+ |
+ Whether to copy the job as a runnable configuration or as a non-runnable profile. "On" means the job will be copied as a profile. If the "asProfile" parameter is ommitted, the job will be copied as a runnable configuration. |
+
+
+
+
+.. _html-example-9:
+
+HTML Example
+^^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "copyTo=mycopy&asProfile=on" -k -u admin:admin --anyauth --location https://localhost:8443/engine/job/myjob
+
+.. _xml-example-9:
+
+XML Example
+^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "copyTo=mycopy&asProfile=on" -k -u admin:admin --anyauth --location -H "Accept: application/xml" https://localhost:8443/engine/job/myjob
+
+Checkpoint Job
+~~~~~~~~~~~~~~
+
+.. _uri-10:
+
+URI
+^^^
+
+https://(heritrixhost):8443/engine/job/(jobname)
+
+.. _description-10:
+
+Description
+^^^^^^^^^^^
+
+This API checkpoints the chosen job. Checkpointing writes the current
+state of a crawl to the file system so that the crawl can be recovered
+if it fails.
+
+.. _http-method-10:
+
+HTTP Method
+^^^^^^^^^^^
+
+POST
+
+.. _http-data-8:
+
+HTTP Data
+^^^^^^^^^
+
+.. raw:: html
+
+
+
+
+
+
+
+
+
+
+
+
+ action
+ |
+ checkpoint
+ |
+ The action to invoke.
+ |
+
+
+
+
+.. _html-example-10:
+
+HTML Example
+^^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "action=checkpoint" -k -u admin:admin --anyauth --location https://localhost:8443/engine/job/myjob
+
+.. _xml-example-10:
+
+XML Example
+^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "action=checkpoint" -k -u admin:admin --anyauth --location -H "Accept: application/xml" https://localhost:8443/engine/job/myjob
+
+Execute Shell Script in Job
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. _uri-11:
+
+URI
+^^^
+
+https://(heritrixhost):8443/engine/job/(jobname)/script
+
+.. _description-11:
+
+Description
+^^^^^^^^^^^
+
+This API executes a shell script. The script can be written as
+Beanshell, ECMAScript, Groovy, or AppleScript.
+
+.. _http-method-11:
+
+HTTP Method
+^^^^^^^^^^^
+
+POST
+
+.. _http-data-9:
+
+HTTP Data
+^^^^^^^^^
+
+.. raw:: html
+
+
+
+
+
+
+
+
+
+
+
+
+ engine
+ |
+ [beanshell,js,groovy,AppleScriptEngine]
+ |
+ The script engine to use. |
+
+
+ script |
+ (code to execute) |
+ The script code to execute. |
+
+
+
+
+.. _html-example-11:
+
+HTML Example
+^^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "engine=beanshell&script=System.out.println%28%22test%22%29%3B" -k -u admin:admin --anyauth --location https://localhost:8443/engine/job/myjob/script
+
+.. _xml-example-11:
+
+XML Example
+^^^^^^^^^^^
+
+.. code:: bash
+
+ curl -v -d "engine=beanshell&script=System.out.println%28%22test%22%29%3B" -k -u admin:admin --anyauth --location -H "Accept: application/xml" https://localhost:8443/engine/job/myjob/script
+
+Submitting a CXML Job Configuration File
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. _uri-12:
+
+URI
+^^^
+
+https://(heritrixhost):8443/engine/job/(jobname)/jobdir/crawler-beans.cxml
+
+.. _description-12:
+
+Description
+^^^^^^^^^^^
+
+This API submits the contents of a CXML file for a chosen job. CXML
+files are the configuration files used to control a crawl job. Each job
+has a single CXML file.
+
+.. _http-method-12:
+
+HTTP Method
+^^^^^^^^^^^
+
+PUT
+
+.. _http-data-10:
+
+HTTP Data
+^^^^^^^^^
+
+.. raw:: html
+
+
+
+
+
+
+
+
+ (CXML file content) |
+ The XML-based text of the CXML file. |
+
+
+
+
+Example
+^^^^^^^
+
+.. code:: bash
+
+ curl -v -T my-crawler-beans.cxml -k -u admin:admin --anyauth --location https://localhost:8443/engine/job/myjob/jobdir/crawler-beans.cxml
+
+API Response
+^^^^^^^^^^^^
+
+On success, the Heritrix REST API will return a HTTP 200 with no body.
diff --git a/docs/conf.py b/docs/conf.py
new file mode 100644
index 00000000..ca4d236d
--- /dev/null
+++ b/docs/conf.py
@@ -0,0 +1,155 @@
+# -*- coding: utf-8 -*-
+#
+# Configuration file for the Sphinx documentation builder.
+#
+# This file does only contain a selection of the most common options. For a
+# full list see the documentation:
+# http://www.sphinx-doc.org/en/master/config
+
+# -- Path setup --------------------------------------------------------------
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#
+# import os
+# import sys
+# sys.path.insert(0, os.path.abspath('.'))
+
+
+# -- Project information -----------------------------------------------------
+
+project = 'Heritrix'
+copyright = '2018 Internet Archive and contributors'
+author = 'Internet Archive and contributors'
+
+# The short X.Y version
+version = '3.1'
+# The full version, including alpha/beta/rc tags
+release = ''
+
+
+# -- General configuration ---------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#
+# needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix(es) of source filenames.
+# You can specify multiple suffix as a list of string:
+#
+# source_suffix = ['.rst', '.md']
+source_suffix = '.rst'
+
+# The master toctree document.
+master_doc = 'index'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#
+# This is also used if you do content translation via gettext catalogs.
+# Usually you set "language" from the command line for these cases.
+language = None
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+# This pattern also affects html_static_path and html_extra_path .
+exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+
+# -- Options for HTML output -------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages. See the documentation for
+# a list of builtin themes.
+#
+html_theme = 'sphinx_rtd_theme'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further. For a list of options available for each theme, see the
+# documentation.
+#
+# html_theme_options = {}
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# Custom sidebar templates, must be a dictionary that maps document names
+# to template names.
+#
+# The default sidebars (for documents that don't match any pattern) are
+# defined by theme itself. Builtin themes are using these templates by
+# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
+# 'searchbox.html']``.
+#
+# html_sidebars = {}
+
+
+# -- Options for HTMLHelp output ---------------------------------------------
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'Heritrixdoc'
+
+
+# -- Options for LaTeX output ------------------------------------------------
+
+latex_elements = {
+ # The paper size ('letterpaper' or 'a4paper').
+ #
+ # 'papersize': 'letterpaper',
+
+ # The font size ('10pt', '11pt' or '12pt').
+ #
+ # 'pointsize': '10pt',
+
+ # Additional stuff for the LaTeX preamble.
+ #
+ # 'preamble': '',
+
+ # Latex figure (float) alignment
+ #
+ # 'figure_align': 'htbp',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title,
+# author, documentclass [howto, manual, or own class]).
+latex_documents = [
+ (master_doc, 'Heritrix.tex', 'Heritrix Documentation',
+ 'Internet Archive and contributors', 'manual'),
+]
+
+
+# -- Options for manual page output ------------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+ (master_doc, 'heritrix', 'Heritrix Documentation',
+ [author], 1)
+]
+
+
+# -- Options for Texinfo output ----------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+# dir menu entry, description, category)
+texinfo_documents = [
+ (master_doc, 'Heritrix', 'Heritrix Documentation',
+ author, 'Heritrix', 'Archival-quality web crawler.',
+ 'Miscellaneous'),
+]
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644
index 00000000..d78839a2
--- /dev/null
+++ b/docs/index.rst
@@ -0,0 +1,15 @@
+Heritrix 3 Documentation
+========================
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+
+ api
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`