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.3.tar.gz (7.6 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.3-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cm_proxy-0.2.3.tar.gz
  • Upload date:
  • Size: 7.6 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.3.tar.gz
Algorithm Hash digest
SHA256 342bce83943bdd491d0c51caa4945893832303f2f4c94ac8a5a65bb6262e4366
MD5 c1576e3be556384d53495b6c718b338b
BLAKE2b-256 619fe0adfa9a1d07777b131909f7afc73497cba0317da6b60be5430795a1a05d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cm_proxy-0.2.3-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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 92cf3fa4c2832c124fe38210c8291c8bad9f030f5646ea822f1ae385bb48f150
MD5 395b88da5d239c91d93158f48f51a43f
BLAKE2b-256 aa7235cae7461ab63804d8a0904159baa388f433d7eeec55714d27b2be1d2ea4

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