Skip to main content

A cheap, secure, and straightforward serverless localhost proxy

Project description

cm-proxy provides a quick, cheap, secure, and straightforward serverless localhost proxy, useful for receiving webhooks from third-party services on a local development server. It is an inexpensive alternative to services such as ngrok or localtunnel.

We at CauseMatch integrate many external providers, including messaging services, donor funds, and over a dozen payment processors. Naturally, we process a lot of webhooks. Our engineers occasionally need to test those webhooks on a local development server. We don’t love exposing local ports on the big bad internet and we’ve had enough of expensive commercial solutions to a simple problem. So we built a proxy using dirt-cheap, pay-as-you-go AWS serverless building blocks. And we cancelled our ngrok subscription.

Our solution seemed so obvious, we’re surprised we didn’t find any similar utilities out there. So we’re making ours available. We hope others will find it useful. Drop us a line if you do!

Features

  • unidirectional and bidirectional proxy configurations

  • https endpoint

  • localhost is not publicly exposed

  • easily moved from one dev host to another

  • incoming webhooks are queued and can be processed at a later time

  • optional integration with mitmproxy and mitmweb UI

Non-goals

  • high performance

  • support for protocols other than http

  • support for streaming responses

  • support for non-utf8 responses

Requirements

  • Python >= 3.12

  • AWS credentials

Read more about security.

Installation

pip install cm-proxy

Quickstart

cm-proxy <local-endpoint>

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cm_proxy-0.2.2.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cm_proxy-0.2.2-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file cm_proxy-0.2.2.tar.gz.

File metadata

  • Download URL: cm_proxy-0.2.2.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cm_proxy-0.2.2.tar.gz
Algorithm Hash digest
SHA256 d30a1c936eeafe88c9ac9d34b1b7e473008969e804c152423eee795a355fb728
MD5 fc8a533d9c52b18c30247476eaba2d34
BLAKE2b-256 6da042adbe89212f0a502539f5e02b4be84991736545d9a1d1c381c3b1060e2b

See more details on using hashes here.

File details

Details for the file cm_proxy-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: cm_proxy-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cm_proxy-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 88640c173f5f82cab2ee215d1373a293cad1fe5923babc81c51965c42c4eb410
MD5 019735094fed1965d4b8f70f14c78481
BLAKE2b-256 1b272b6b5b3e7b454f787cd67d3e17bc4dba0c89ffd17dacbd13d59c79df68b7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page