skillfed

hupper

Integrated process monitor for developing and reloading daemons.

hupper v1.12.1 2.9M downloads/30d#2,847 on PyPI223
Permissive license MIT Active released

What it is and what it does

Hupper is a process monitor designed for development workflows that automatically detects changes to imported Python files and restarts the process. It tracks all modules in sys.modules plus any custom paths you specify, making it useful for iterative development where you want code changes to take effect immediately without manual restarts.

You can use it either from the command line (hupper -m myapp) or programmatically by calling start_reloader() with an importable entry point. The reloader runs as a parent process that monitors file changes and spawns child processes to run your code, allowing you to add extra files to watch via the watch_files() method. It has no runtime dependencies and supports modern Python versions from 3.7 onward.

Use it for:

  • Developing web applications where you want the server to reload automatically when you edit source files.
  • Running long-lived daemons during development and having them pick up code changes without manual restarts.
  • Monitoring configuration files alongside Python source and triggering restarts when either changes.
  • Building development scripts that need to reload when dependencies or imported modules are modified.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Hupper monitors Python source files for changes and automatically restarts the process when files are modified, supporting both command-line and programmatic usage patterns.

Yes. Hupper is a stable, actively maintained tool with no dependencies and broad Python version support. It solves a genuine development friction point—automatic process restart on file changes—and is lightweight enough to add to any development workflow. No known security issues.

Install

hupper on PyPI

pip

pip install hupper

uv

uv add hupper

poetry

poetry add hupper

Installing hupper

Before you install

Low friction installation with no runtime dependencies. The package is actively maintained with recent commits and supports Python 3.7 through 3.12, including PyPy.

License in practice

MIT license permits use in commercial and private projects with minimal restrictions; attribution required.

Quickstart

pip install hupper

import hupper

reloader = hupper.start_reloader('myapp.scripts.serve.main')
reloader.watch_files(['foo.ini'])

Entry point must be an importable string path; the reloader only returns in a monitored subprocess.

Verify before relying

  • Whether watch_files() supports glob patterns or directory recursion beyond explicit file paths.
  • Performance characteristics when monitoring large numbers of files or deep directory structures.

Package facts

License MIT (permissive)
Python support supports the current Python release (>=3.7)
Install friction low — pure-Python wheel
Runtime dependencies none
Maintenance actively maintained — 931 days since the last release
Last repo commit
First released
Downloads 2,877,176/month — #2,847 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: hupper-1.12.1-py3-none-any.whl

Keywords: server, daemon, autoreload, reloader, hup, file, watch, process

Development Status :: 5 - Production/StableIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseNatural Language :: EnglishProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Programming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPy

Tags

python auto reload on file changeprocess monitor file watcherdevelopment server auto restartdaemon process reloaderwatch files and restart processpython autoreload development toolfile change detection restart
development-toolsauto-reloadprocess-monitoring

More Monitoring packages

tqdm

Wraps any iterable to display a real-time…

copyleft · top 100 on PyPI

opentelemetry-semantic-conventions

Provides generated Python code for…

permissive · top 100 on PyPI

opentelemetry-sdk

Provides the reference implementation of the…

permissive · top 100 on PyPI

opentelemetry-api

Provides the abstract API and interfaces for…

permissive · top 100 on PyPI

opentelemetry-exporter-otlp-proto-http

Exports OpenTelemetry observability data to an…

permissive · top 1,000 on PyPI

opentelemetry-instrumentation

Provides automatic instrumentation commands and…

permissive · top 1,000 on PyPI

watchgod

Watches a directory for file changes and…

permissive · top 15,000 on PyPI

setproctitle

Allows a Python process to change its own title…

permissive · top 1,000 on PyPI

pyinotify

Monitors Linux filesystem events (file…

permissive · top 5,000 on PyPI

httpwatcher

httpwatcher is a simple HTTP server and library…

permissive · top 15,000 on PyPI

watchfiles

Watches file system changes and triggers…

permissive · top 1,000 on PyPI

pywatchman

pywatchman is a Python client for Watchman, a…

permissive · top 15,000 on PyPI

pytest-watcher

Automatically reruns pytest (or another test…

permissive · top 5,000 on PyPI

aiousbwatcher

Watches for USB devices being plugged in and…

permissive · top 15,000 on PyPI

jupyter-server-fileid

A Jupyter Server extension that provides a File…

permissive · top 5,000 on PyPI

uwsgitop

A terminal monitoring tool that connects to…

permissive · top 15,000 on PyPI