Updo is a command-line tool for monitoring website uptime and performance. It provides real-time metrics on website status, response time, SSL certificate expiry, and more, with alert notifications.
- Real-time monitoring of website uptime and performance
- Displays various metrics like uptime percentage, average response time, and SSL certificate expiry
- Desktop alert notifications for website status changes
- Customizable refresh intervals and request timeouts
- Supports HTTP and HTTPS, with options to skip SSL verification
- Assertion on response body content
- Command-line interface with simple usage
- Simple mode with fancy or plain text output
- Automatic terminal capability detection
Screen.Recording.2024-01-05.at.4.02.27.PM.mov
Quick install script (Linux, macOS, Windows/MSYS)
curl -sSL https://raw.githubusercontent.com/Owloops/updo/main/install.sh | bash
This script automatically:
- Detects your OS and architecture
- Downloads the latest release
- Makes the binary executable
- Installs to /usr/local/bin (or ~/.local/bin if permission denied)
- Removes quarantine attribute on macOS
Build from source
Make sure your system has Go installed.
git clone https://github.com/Owloops/updo.git cd updo go build
To include version information in the binary, use ldflags:
go build -ldflags="-X 'main.version=v1.0.0' -X 'main.commit=$(git rev-parse HEAD)' -X 'main.date=$(date)'"
Check the version with:
./updo --version
GOBIN="absolute_path_where_you_want_binaries_to_be_installed" go install github.com/Owloops/updo@latest
Note
You may get a warning message on Windows and MacOS, which is discussed in this issue #4
macOS may prevent running downloaded binaries due to security measures. If you get a warning message like "cannot be opened because the developer cannot be verified", you can remove the quarantine attribute with this command:
xattr -d com.apple.quarantine /path/to/updo
Replace /path/to/updo
with the actual path to the downloaded binary (e.g. ~/Downloads/updo_Darwin_arm64/updo
)
Run Updo using the following command:
# Basic usage
./updo [options] <website-url>
# Explicit monitor command
./updo monitor [options] <website-url>
# Generate shell completions
./updo completion bash > updo_completion.bash
You can run Updo using Docker:
# Build Docker image from locally cloned repo
docker build -t updo .
# ... or build straight from repo URL (no cloning needed):
docker build -t updo https://github.com/Owloops/updo.git
# And now you can run Updo from the built image:
docker run -it updo [options] --url <website-url>
-u, --url
: URL of the website to monitor-r, --refresh
: Refresh interval in seconds (default: 5)-f, --should-fail
: Invert status code success (default: false)-t, --timeout
: HTTP request timeout in seconds (default: 10)-l, --follow-redirects
: Follow redirects (default: true)-s, --skip-ssl
: Skip SSL certificate verification (default: false)-a, --assert-text
: Text to assert in the response body-n, --receive-alert
: Enable alert notifications (default: true)--simple
: Use simple output instead of TUI--no-fancy
: Disable fancy terminal formatting in simple mode-c, --count
: Number of checks to perform (0 = infinite)-h, --help
: Display help message
# Basic monitoring with defaults (using --url flag)
./updo --url https://example.com
# Or use the monitor subcommand (URL as argument)
./updo monitor https://example.com
# Set custom refresh and timeout
./updo monitor -r 10 -t 5 https://example.com
# Use simple mode with a set number of checks
./updo monitor --simple -c 10 https://example.com
# Simple mode with plain text output
./updo monitor --simple --no-fancy https://example.com
# Assert text in the response
./updo monitor -a "Welcome" https://example.com
q
orCtrl+C
: Quit the application
Contributions to Updo are welcome! Feel free to create issues or submit pull requests.
This project is licensed under the MIT License.