An open source project by Plabayo BV

Build network services without limitations.

Rama® is a modular service framework for Rust that gives you programmable control over your entire network stack.

Build production-ready proxies, servers, clients, API gateways, traffic inspection tools, and custom network services using composable building blocks instead of rigid abstractions.

mitm proxy

  1. client
  2. http connect · socks5proxy
  3. tls mitm relaysecurity
  4. http capture + inspectinspect
  5. tls + tcp connectortransport
  6. upstream

rama-http · rama-tls-boring · rama-inspect

Why rama

Why teams build on Rama

Off-the-shelf proxies and web servers work until the network stack becomes part of your product. Rama gives you the building blocks to build exactly the stack you need, plug in your own modules, and keep every decision in code, in a language that empowers you: Rust.

for security vendors & platform teams

Own the traffic you need to secure

Security products need to see and steer traffic, often on the device itself. Rama gives you the whole stack, from transparent capture to TLS interception, as modules you compose and extend in Rust. Firewall rules, routing and setup become your code, not the config file of someone else's proxy.

Explore MITM proxies

for researchers & data teams

Look like a browser, without running one

Collecting public data at scale with headless browsers is slow and expensive. Rama clients emulate real browsers down to their TLS and HTTP fingerprints, rotate through upstream proxies and process what comes back, all from lean async Rust.

Read about UA emulation

for teams running their own services

Run your edge, end to end

Serve your services from the socket to the response, with security you control at every layer: certificates, client fingerprints and bot defence included. Keep a PHP app running behind the same binary, as the only backend or as a fallback while you migrate.

See the FastCGI gateway

Two ways to use rama

Get Started with Rama

Choose your preferred installation method. Either add Rama as a framework dependency to your Rust project for maximum flexibility and control, or install the pre-built Rama CLI binary for immediate use as a standalone tool without writing code.

As a framework library

Use Rama as the foundation of your own codebase. Add it as a dependency to your Rust project:

Then start from an example that does something real:

Browse all 100+ examples

As a CLI binary

Run the Rama CLI for traffic inspection, intelligence gathering, tunneling, and network diagnostics, without writing any code.

Install Rama CLI using curl, or from source:

terminal
# HTTP client for HTTP/1.1, H2 and H3, with curl-like flags
$ rama https://ramaproxy.org

# emulate a browser with the embedded User-Agent profiles
$ rama send --emulate https://example.com

# HTTP + SOCKS5 proxy with a traffic inspection web UI
$ rama serve proxy --mitm

# resolve DNS records, open a WebSocket, probe TLS, ...
$ rama resolve ramaproxy.org HTTPS
$ rama wss://echo.ramaproxy.org
Rama CLI guide

What you can build

Framework Properties

Proxies, servers and clients are all made from the same building blocks, so you can combine them into exactly the network service you need.

Proxies

Build reverse proxies, TLS termination proxies, HTTP(S) proxies, SOCKS5 proxies, SNI proxies, MITM proxies, transparent proxies and distortion proxies. Or combine them, as they are all made from the same building blocks.

Web Services

Web servers, REST APIs, static content, WebSockets, SSE and gRPC, served over HTTP/1.1, H2 or H3. Built on Tokio.

HTTP Clients

HTTP clients for HTTP/1.1, H2 and H3, with User-Agent emulation, upstream proxy support and a connector stack you can change at every layer.

Modular Architecture

Pick and choose components from TCP, UDP and QUIC up to TLS, DNS and HTTP. Services and layers all the way down, so you compose exactly the stack you need.

Traffic Inspection

Capture, inspect and intercept HTTP, WebSocket and TLS traffic, with HAR export. Use it as a library or through the MITM proxy and its web UI in the rama CLI.

Proxy Routing

Follow the system proxy settings on macOS, iOS, Windows and Linux, respect HTTP_PROXY and NO_PROXY, or evaluate PAC scripts to decide how each request leaves the machine.

Fingerprinting

JA3, JA4, JA4H, PeetPrint and Akamai H2 fingerprints for the TLS and HTTP layers. Useful for emulation, bot detection and security testing.

Platform Integrations

Transparent proxies on Apple devices via Network Extension, on Windows via WFP and on Linux via TPROXY. XPC for Apple IPC.

Async Core, Blocking Boundaries

Everything is async and built on Tokio. When synchronous code needs it, you can put a blocking API in front of the same service stack.

Type-Safe

Rust's type system helps you build network services that are easier to maintain, and catches a lot of errors at compile time.

Binary

Use Rama as a standalone CLI tool. HTTP client, DNS resolving, TLS probes, proxies, echo and test services, all without writing any code.

How it works

Built for Modularity

Rama is built around a service model where services are fallible async methods that can be stacked, branched, and composed. You can wire together transport, TLS, HTTP, proxy logic, and telemetry as a set of reusable building blocks instead of a single large framework.

  • Flexible middleware layers and service composition
  • Custom service implementations using your preferred Rust libraries or custom code
  • Easy integration with existing crates, tools, and infrastructure
  1. transport tcp
    • tcp
    • udp
    • quic
    • unix
  2. security rustls
    • rustls
    • boring
    • mtls
    • acme
  3. protocol http/1.1
    • http/1.1
    • h2
    • h3
    • socks5
  4. middleware trace
    • trace
    • auth
    • retry
    • rate limit
  5. service your service
    • handler
    • router
    • proxy relay
request travels in response travels out every layer can be kept, swapped or written yourself

Bring your own stack

You can keep using your existing HTTP or TLS stack, such as curl or OpenSSL, and attach Rama only where you need it. Or you can start from the built in Rama services and swap out parts of the stack as your needs grow.

For developers and organisations

If you are a developer, you get a composable toolkit for building proxies, servers, and clients that fit your codebase. If you are an organisation, you can treat Rama as a platform component and rely on our professional services for design, integration, and long term maintenance.

Minimal by design

Our built in services are intentionally minimal, which makes them easy to extend or modify. The entire codebase is open for you to use as inspiration, adapt to your own environment, or harden for production workloads.

Everything in the box

Batteries Included

Every item links to its documentation or an example.

available on our radar passes a conformance suite or is interop tested against independent implementations, in CI

Transports

HTTP

Web Server

HTTP Client

HTTP Middleware

TLS

DNS

Proxy Protocols

Web Protocols

Service Model

Diagnostics

Man-In-The-Middle Proxy

User Agent (UA)

Fingerprinting

Utilities

Apple Platform

Binary

Browser

🗒️ Note

Items marked as on our radar have no immediate plans. Please open an issue to request a feature if you have an immediate need for it. Please add sufficient motivation/reasoning and consider becoming a sponsor to help accelerate its priority.

Supported by

🎙️ If you like Rama, you might also like Netstack.FM

Netstack.FM is a podcast about networking, Rust, and everything in between — exploring the stack from protocols and packet flows to the people and projects building the modern internet.

Visit Netstack.FM for more information about the podcast and all its episodes.

Created by Plabayo — the company behind Rama.