Skip to content


Use the following options to configure Uvicorn, when running from the command line.

If you're running using programmatically, using, then use equivalent keyword arguments, eg., port=5000, debug=True, access_log=False).


  • APP - The ASGI application to run, in the format "<module>:<attribute>".

Socket Binding

  • --host <str> - Bind socket to this host. Use --host to make the application available on your local network. Default: ''.
  • --port <int> - Bind to a socket with this port. Default: 8000.
  • --uds <str> - Bind to a UNIX domain socket. Useful if you want to run Uvicorn behind a reverse proxy.
  • --fd <int> - Bind to socket from this file descriptor. Useful if you want to run Uvicorn within a process manager.


  • --reload - Enable auto-reload.
  • --reload-dir <path> - Specify which directories to watch for python file changes. May be used multiple times. If unused, then by default all directories in sys.path will be watched.


  • --workers <int> - Use multiple worker processes.


  • --log-level <str> - Set the log level. Options: 'critical', 'error', 'warning', 'info', 'debug'. Default: 'info'.
  • --no-access-log - Disable access log only, without changing log level.


  • --loop <str> - Set the event loop implementation. The uvloop implementation provides greater performance, but is not compatible with Windows or PyPy. Options: 'auto', 'asyncio', 'uvloop'. Default: 'auto'.
  • --http <str> - Set the HTTP protocol implementation. The httptools implementation provides greater performance, but it not compatible with PyPy, and requires compilation on Windows. Options: 'auto', 'h11', 'httptools'. Default: 'auto'.
  • --ws <str> - Set the WebSockets protocol implementation. Either of the websockets and wsproto packages are supported. Use 'none' to deny all websocket requests. Options: 'auto', 'none', 'websockets', 'wsproto'. Default: 'auto'.
  • --lifespan <str> - Set the Lifespan protocol implementation. Options: 'auto', 'on', 'off'. Default: 'auto'.

Application Interface

  • --interface - Select ASGI3, ASGI2, or WSGI as the application interface. Note that WSGI mode always disables WebSocket support, as it is not supported by the WSGI interface. Options: 'auto', 'asgi3', 'asgi2', 'wsgi'. Default: 'auto'.


  • --root-path <str> - Set the ASGI root_path for applications submounted below a given URL path.
  • --proxy-headers - Use the X-Forwarded-Proto and X-Forwarded-For headers to populate remote scheme/address info.


  • --ssl-keyfile <path> - SSL key file
  • --ssl-certfile <path> - SSL certificate file
  • --ssl-version <int> - SSL version to use (see stdlib ssl module's)
  • --ssl-cert-reqs <int> - Whether client certificate is required (see stdlib ssl module's)
  • --ssl-ca-certs <str> - CA certificates file
  • --ssl-ciphers <str> - Ciphers to use (see stdlib ssl module's)

Resource Limits

  • --limit-concurrency <int> - Maximum number of concurrent connections or tasks to allow, before issuing HTTP 503 responses. Useful for ensuring known memory usage patterns even under over-resourced loads.
  • --limit-max-requests <int> - Maximum number of requests to service before terminating the process. Useful when running together with a process manager, for preventing memory leaks from impacting long-running processes.


  • --timeout-keep-alive <int> - Close Keep-Alive connections if no new data is received within this timeout. Default: 5.