Skip to main content

cm-proxy

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>

Metadata

Release files for cm-proxy 0.2.4

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

Source distribution (sdist)

Source distribution for cm-proxy 0.2.4
File Size Uploaded
cm_proxy-0.2.4.tar.gz 8.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cm-proxy 0.2.4
File Interpreter ABI Platform
cm_proxy-0.2.4-py3-none-any.whl Python 3 none any Details

Total release size: 18.4 kB

Release files / cm_proxy-0.2.4.tar.gz

Download URL cm_proxy-0.2.4.tar.gz
Size 8.6 kB
Tags Source
SHA-256 checksum
How to use checksums
e1d9d1079493adfcee229260780e94fb71b0f64681d85b4e105a5692f27f40d5
BLAKE2b-256 checksum
How to use checksums
3fbb00128a3091107e6000aa907a8df4f19576c5b99a0ba83fd2d4abbf445f12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","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}

Release files / cm_proxy-0.2.4-py3-none-any.whl

Download URL cm_proxy-0.2.4-py3-none-any.whl
Size 9.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
75708b8fda43ed645dd05ec0ec9212871ce487587876459defc5e0ad2b8cbff2
BLAKE2b-256 checksum
How to use checksums
0398021229ac19c6b7963b610615eb41b1a0cb4b189e2f26b36640597f5925a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","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}

Release history Release notifications | RSS feed

This release

0.2.4 This release

2 release files

0.2.3

2 release files

0.2.2

2 release files

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