CLI Options

serve provides a rich set of command-line options to customize its behavior. You can view all available options by running serve --help.

This page provides a detailed breakdown of each option.


--help

Shows the help message, which includes usage instructions and a list of all available options.

  • Usage: serve --help

-v, --version

Displays the currently installed version of serve.

  • Usage: serve -v

-l, --listen <uri>

Specify one or more URI endpoints for the server to listen on. This is a powerful option that allows you to listen on TCP ports, UNIX domain sockets, or Windows named pipes.

This option can be used multiple times to listen on multiple endpoints simultaneously.

  • Usage:

    # Listen on port 5000
    serve -l 5000
    
    # Listen on a specific host and port
    serve -l tcp://192.168.1.5:8080
    
    # Listen on a UNIX socket
    serve -l unix:/tmp/serve.sock

  • For more details, see the Advanced Endpoints documentation.

-p <port>

Specify a custom port to listen on. This is a legacy alias for -l <port>.

  • Usage: serve -p 5000

-s, --single

Rewrites all requests that would otherwise result in a 404 Not Found to /index.html. This is essential for single-page applications (SPAs) that use client-side routing.

  • Usage: serve -s

-d, --debug

Enables debug mode, which shows more detailed information in case of errors, such as a full stack trace if an update check fails.

  • Usage: serve -d

-c, --config <path>

Specify a custom path to a configuration file. By default, serve looks for serve.json in the directory being served.

  • Usage: serve -c my-config.json
  • See the Configuration documentation for more details.

-L, --no-request-logging

Disables the logging of incoming request information (IP address, method, URL, status code, response time) to the console.

  • Usage: serve -L

-C, --cors

Enables Cross-Origin Resource Sharing (CORS) by setting the Access-Control-Allow-Origin header to * and adding other necessary CORS headers.

  • Usage: serve -C

-n, --no-clipboard

Prevents serve from automatically copying the local server address to your clipboard upon startup.

  • Usage: serve -n

-u, --no-compression

Disables Gzip/Brotli compression for file responses.

  • Usage: serve -u

--no-etag

Disables ETag headers and sends the Last-Modified header instead for caching control.

  • Usage: serve --no-etag

Resolves symbolic links in the file system instead of treating them as non-existent and returning a 404 error.

  • Usage: serve -S

--ssl-cert <path>

Specifies the path to an SSL/TLS certificate file to enable serving content over HTTPS.

  • Supported Formats: PEM (default), PKCS12 (PFX, .pfx, .p12).
  • Usage: serve --ssl-cert path/to/cert.pem
  • For detailed instructions, see the Serving with HTTPS/SSL guide.

--ssl-key <path>

Specifies the path to the private key for the SSL/TLS certificate. This is only required for PEM-formatted certificates.

  • Usage: serve --ssl-cert cert.pem --ssl-key key.pem

--ssl-pass <passphrase>

Specifies the passphrase for the SSL/TLS certificate or private key, if it is encrypted.

  • Usage: serve --ssl-cert cert.pfx --ssl-pass mysecret

--no-port-switching

If the specified port is already in use, serve will exit instead of automatically trying to find another available port.

  • Usage: serve --no-port-switching -l 3000