README.md

November 16, 2025 ยท View on GitHub

Version 2.0.1 Python 3.11+ MIT License sc0tfree Twitter

updog

Updog is a replacement for Python's SimpleHTTPServer. It allows uploading and downloading via HTTP/S, can set ad hoc SSL certificates and use HTTP basic auth.

Installation

Install using pip:

pip install updog

Or using pipx (recommended for CLI tools):

pipx install updog

For development:

git clone https://github.com/sc0tfree/updog.git
cd updog
poetry install
poetry run updog

Usage

updog [-d DIRECTORY] [-b ADDRESS] [-p PORT] [--password PASSWORD] [--ssl | --ssl-cert CERT --ssl-key KEY] [--cors] [--hide-base-path]

ArgumentDescription
-d DIRECTORY, --directory DIRECTORYRoot directory [Default=.]
-b ADDRESS, --bind ADDRESSBind to specific address [Default=0.0.0.0]
-p PORT, --port PORTPort to serve [Default=9090]
--password PASSWORDUse a password to access the page. (No username)
--sslEnable SSL with ad-hoc certificate
--ssl-cert CERTPath to custom SSL certificate
--ssl-key KEYPath to custom SSL private key
--corsEnable CORS headers
--hide-base-pathHide full directory path (show relative paths)
--versionShow version
-h, --helpShow help

Examples

Serve from your current directory:

updog

Serve from another directory:

updog -d /another/directory

Serve from port 1234:

updog -p 1234

Password protect the page:

updog --password examplePassword123!

Please note: updog uses HTTP basic authentication. To login, you should leave the username blank and just enter the password in the password field.

Use an SSL connection (ad-hoc certificate):

updog --ssl

Use an SSL connection with custom certificates:

updog --ssl-cert /path/to/cert.pem --ssl-key /path/to/key.pem

Bind to a specific IP address:

updog -b 192.168.1.10 -p 8080

Enable CORS for web application testing:

updog --cors

Hide full directory paths (OpSec):

updog --hide-base-path

What's updog?

Not much, how about you?

Thanks

A special thank you to Nicholas Smith for designing the updog logo.