Command Line Interface

This section describes how to use WsgiDAV from the command line.

The WsgiDAV server was tested with these platforms

  • Mac OS X

  • Ubuntu

  • Windows

To serve the /tmp folder as WebDAV / share, simply run:

$ wsgidav --host --port 80 --root /tmp --auth anonymous
Running without configuration file.
10:54:16.597 - INFO    : WsgiDAV/4.0.0-a1 Python/3.9.1 macOS-12.0.1-x86_64-i386-64bit
10:54:16.598 - INFO    : Lock manager:      LockManager(LockStorageDict)
10:54:16.598 - INFO    : Property manager:  None
10:54:16.598 - INFO    : Domain controller: SimpleDomainController()
10:54:16.598 - INFO    : Registered DAV providers by route:
10:54:16.598 - INFO    :   - '/:dir_browser': FilesystemProvider for path '/Users/martin/prj/git/wsgidav/wsgidav/dir_browser/htdocs' (Read-Only) (anonymous)
10:54:16.599 - INFO    :   - '/': FilesystemProvider for path '/tmp' (Read-Write) (anonymous)
10:54:16.599 - WARNING : Basic authentication is enabled: It is highly recommended to enable SSL.
10:54:16.599 - WARNING : Share '/' will allow anonymous write access.
10:54:16.599 - WARNING : Share '/:dir_browser' will allow anonymous read access.
10:54:16.599 - WARNING : Could not import lxml: using xml instead (up to 10% slower). Consider `pip install lxml`(see
10:54:16.813 - INFO    : Running WsgiDAV/4.0.0-a1 Cheroot/8.5.2 Python 3.9.1
10:54:16.813 - INFO    : Serving on ...


Here, WsgiDAV will publish the folder for anonymous access. Read Configuration how to set up authentication.

CLI Options

Use the --help or -h argument to get help:

$ wsgidav --help
usage: wsgidav [-h] [-p PORT] [-H HOST] [-r ROOT_PATH] [--auth {anonymous,nt,pam-login}] [--server {cheroot,ext-wsgiutils,gevent,gunicorn,paste,uvicorn,wsgiref}]
              [--ssl-adapter {builtin,pyopenssl}] [-v | -q] [-c CONFIG_FILE | --no-config] [--browse] [-V]

Run a WEBDAV server to share file system folders.


  Share filesystem folder '/temp' for anonymous access (no config file used):
    wsgidav --port=80 --host= --root=/temp --auth=anonymous

  Run using a specific configuration file:
    wsgidav --port=80 --host= --config=~/my_wsgidav.yaml

  If no config file is specified, the application will look for a file named
  'wsgidav.yaml' in the current directory.
  for some explanation of the configuration file format.

optional arguments:
  -h, --help            show this help message and exit
  -p PORT, --port PORT  port to serve on (default: 8080)
  -H HOST, --host HOST  host to serve from (default: localhost). 'localhost' is only accessible from the local computer. Use to make your application public
  -r ROOT_PATH, --root ROOT_PATH
                        path to a file system folder to publish as share '/'.
  --auth {anonymous,nt,pam-login}
                        quick configuration of a domain controller when no config file is used
  --server {cheroot,ext-wsgiutils,gevent,gunicorn,paste,uvicorn,wsgiref}
                        type of pre-installed WSGI server to use (default: cheroot).
  --ssl-adapter {builtin,pyopenssl}
                        used by 'cheroot' server if SSL certificates are configured (default: builtin).
  -v, --verbose         increment verbosity by one (default: 3, range: 0..5)
  -q, --quiet           decrement verbosity by one
                        configuration file (default: ('wsgidav.yaml', 'wsgidav.json') in current directory)
  --no-config           do not try to load default ('wsgidav.yaml', 'wsgidav.json')
  --browse              open browser on start
  -V, --version         print version info and exit (may be combined with --verbose)

Licensed under the MIT license.
See for additional information.

Use a Configuration File

Much more options are available when a configuration file is specified.

See also