Skip to main content

Chat on Gitter Chat on Matrix

Px

An HTTP(s) proxy server that allows applications to authenticate through an NTLM or Kerberos proxy server, typically used in corporate deployments, without having to deal with the actual handshake. Px leverages Windows SSPI or single sign-on and automatically authenticates using the currently logged in Windows user account. It is also possible to run Px on Windows, Linux and MacOS without single sign-on by configuring the domain, username and password to authenticate with.

Px uses libcurl and supports all the authentication mechanisms supported by libcurl.

Requires Python ≥ 3.10

Installation

pip install px-proxy
uv tool install px-proxy
pipx install px-proxy

On Windows, Winget and Scoop can also be used:

winget install genotrance.px
scoop install px

Prebuilt binaries and offline wheel packages are available on the releases page. See the installation guide for all options including Docker, WinSW, and source installs.

Quick start

# Run with an upstream proxy
px --proxy=proxyserver.com:8080

# Run with a PAC file
px --pac=http://example.com/proxy.pac

# Run with verbose logging
px --proxy=proxyserver.com:80 --verbose

# Save configuration to px.ini
px --proxy=proxyserver.com:8080 --save

# Test connectivity
px --test

Configuration

Px can be configured via command-line flags, environment variables (PX_*), dotenv files, or px.ini. See px --help for all options.

Common options:

Flag Description
--proxy=HOST:PORT Upstream proxy server(s), comma-separated
--pac=URL PAC file URL or local path
--port=NUM Listening port (default 3128)
--gateway Allow remote clients
--hostonly Restrict to local interfaces
--noproxy=LIST Hosts/IPs that bypass the upstream proxy
--auth=TYPE Force upstream auth type (ANY, NTLM, NEGOTIATE, BASIC, NONE)
--username=DOMAIN\user Username for upstream proxy auth
--log=4 Log to stdout (verbose mode)

Full reference: Configuration

Credentials

If SSPI is not available, provide --username in domain\username format. The password is stored in the system keyring:

px --username=domain\username --password

PX_PASSWORD can be used as an alternative when keyring is not available.

See the usage guide for platform-specific keyring setup and client authentication.

Documentation

User guides
Installation pip, wheels, binary, Docker, Winget, Scoop, WinSW, uninstallation
Usage Credentials, client auth, examples, dependencies, limitations
Configuration All CLI flags, environment variables, INI keys, auth types
Developer guides
Architecture Runtime model, package layout, data flow, state management
Build Build system, pyproject.toml, GitHub Actions, wheels, Nuitka, Docker
Testing Test suite layout, running tests, fixtures, coverage
Reference
Changelog Release history

Development

Requires uv.

git clone https://github.com/genotrance/px.git
cd px
make install
make test
Target Description
make install Create venv, install dependencies, install pre-commit hooks
make check Run linters (ruff) and type checking (mypy)
make test Run tests with coverage
make benchmark Run concurrency benchmarks
make test-large-data Run large data transfer reliability tests
make docker Build local Docker images (full and mini)
make test-kerberos Build KDC images and run Kerberos integration tests
make build Build sdist and wheel
make clean Remove build artifacts

Contributing

Bug reports and pull requests are welcome at https://github.com/genotrance/px/issues.

  1. Fork and clone the repository.
  2. make install to set up the venv and pre-commit hooks.
  3. Create a feature branch, make changes, add tests in tests/.
  4. make check && make test — all checks must pass.
  5. Open a pull request.

Feedback

Px is definitely a work in progress and any feedback or suggestions are welcome. It is hosted on GitHub with an MIT license so issues, forks and PRs are most appreciated. Join us on the discussion board, Gitter or Matrix to chat about Px.

Credits

Thank you to all contributors for their PRs and all issue submitters.

Px is based on code from all over the internet and acknowledges innumerable sources.

Metadata

Release files for px-proxy 0.12.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for px-proxy 0.12.0
File Size Uploaded
px_proxy-0.12.0.tar.gz 76.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for px-proxy 0.12.0
File Interpreter ABI Platform
px_proxy-0.12.0-py3-none-any.whl Python 3 none any Details

Total release size: 124.3 kB

Release files / px_proxy-0.12.0.tar.gz

Download URL px_proxy-0.12.0.tar.gz
Size 76.5 kB
Tags Source
SHA-256 checksum
How to use checksums
84aff8bbac4c395a064467f7f04df47f144d7e00b61b1d0fac7851498776a29b
BLAKE2b-256 checksum
How to use checksums
3b7fbe871b0689832cd66319a88e8c1991c7b06bedb7214975e6f0a7e4069546
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 21, 2026.

Transparency log

Release files / px_proxy-0.12.0-py3-none-any.whl

Download URL px_proxy-0.12.0-py3-none-any.whl
Size 47.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
908cf3c987e55a0d428b3dd2992ab91c3307896cf1a8c1275881e782e062f731
BLAKE2b-256 checksum
How to use checksums
7556fba30935b651ad23da61aa15fdab56bee752981ff43a1dff4a365a0b4527
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 21, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.12.0 This release

2 release files

0.10.3

2 release files

0.10.0

2 release files

0.9.2

3 release files

0.9.1

3 release files

0.9.0

3 release files

0.8.4

3 release files

0.8.3

3 release files

0.8.2

3 release files

0.8.1

3 release files

0.8.0

3 release files

0.7.2

3 release files

0.7.1

3 release files

0.7.0

3 release files

0.6.3

1 release file

0.6.2

1 release file

0.6.1

1 release file

0.6.0

1 release file

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.2

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page