A lightweight, high-performance HTTP(S) proxy for Windows, Linux, and macOS.
Website · Download · Docs · Releases
| Product | Best for |
|---|---|
Titanium.Cli (titanium / twp)Download |
Standalone reverse / edge proxy from the command line |
| Titanium Inspector Download |
Desktop MITM debugger — session grid, inspectors, AutoResponder, breakpoints, HAR export |
Titanium.Plustitanium update --plus (after installing CLI) |
Optional extra features for CLI such as control plane, dashboard, observability |
| Titanium.Web.Proxy NuGet |
Embed a proxy (MITM and/or reverse) in a .NET app |
Requires .NET 10 or later for the library. CLI and Inspector downloads are self-contained (no SDK needed to run them).
- Decrypt and inspect HTTPS in a native desktop Inspector on Windows, macOS, and Linux — AutoResponder, Map Local/Remote, breakpoints, Composer, HAR, curl/fetch
- Speak modern HTTP — HTTP/2 by default, optional HTTP/3, WebSocket, gRPC, SSE, GraphQL rules in the same grid
- Run the same engine as a reverse / edge proxy from the CLI — YAML routes, load balancing and failover, retries, rate limits, response compression, gRPC-Web, TCP and UDP relay, ACME, live reload
- Deploy on Kubernetes with a hardened container image, a Helm chart, probes, and a Gateway API and Ingress controller
- Observe it with Prometheus text, OTLP traces and metrics, and an access log; Plus adds a dashboard, OpenID Connect login, a response cache, and WAF screening
- Embed in .NET via NuGet (MIT); Inspector is free for personal and education use
- When a server blocks the proxy (TLS fingerprinting or other reasons), we detect it and automatically tunnel that traffic
Full catalog: Features. What is supported, partial, and not supported: capability coverage. Protocol coverage: protocol support matrix. HTTP/3 packaging: HTTP/3 wiki.
Tiny keep-alive GET (~56 B) on common reverse wires, plus WebSocket and unary gRPC:
Heavier reverse load (64 KB GET/POST on typical wires):
RPS is requests per second (gRPC bars are RPC/s). Compared on the same harness vs YARP, nginx, HAProxy, and Envoy. See Performance.
Inspector and CLI (Windows, Linux, macOS): use Download — MSI / DMG / AppImage / .deb / .rpm / zip. Short walkthrough: Install.
After the CLI is on your PATH (or in the current folder):
titanium run -c twp.yaml
titanium test -c twp.yaml
titanium version --check
titanium updatetitanium run is foreground (Ctrl+C to stop). Boot persistence: titanium service install -c twp.yaml — CLI — service. Each CLI zip also includes a twp alias.
Optional Plus: titanium update --plus, then plus.enabled: true — Plus.
Container and Helm: the CLI ships as a hardened image (ghcr.io/justcoding121/titanium-web-proxy, linux/amd64 and linux/arm64) and a chart in deploy/helm/titanium — Kubernetes. To run Titanium behind Gateway API or Ingress resources, see Gateway API.
docker run --rm -p 8080:8080 --read-only --tmpfs /tmp -v "$PWD/conf:/etc/titanium:ro" ghcr.io/justcoding121/titanium-web-proxy:latest
helm install titanium deploy/helm/titanium -n proxy --create-namespace -f my-values.yamldotnet add package Titanium.Web.Proxy
# Prerelease / beta:
dotnet add package Titanium.Web.Proxy --prereleaseExplicit HTTP(S) proxy on 127.0.0.1:8000 that logs each requested URL:
using System;
using System.Net;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Titanium.Web.Proxy;
using Titanium.Web.Proxy.EventArguments;
using Titanium.Web.Proxy.Models;
using var proxyServer = new ProxyServer();
proxyServer.Logging.MinimumLevel = LogLevel.Information;
proxyServer.BeforeRequest += OnRequest;
var endPoint = new ExplicitProxyEndPoint(IPAddress.Loopback, 8000, decryptSsl: true);
proxyServer.AddEndPoint(endPoint);
// Create and trust the root certificate used to decrypt HTTPS traffic.
proxyServer.CertificateManager.EnsureRootCertificate(
userTrustRootCertificate: true,
machineTrustRootCertificate: false);
proxyServer.Start();
proxyServer.Logger.LogInformation("Proxy listening on 127.0.0.1:8000. Press Enter to stop.");
await Console.In.ReadLineAsync();
proxyServer.Stop();
Task OnRequest(object sender, SessionEventArgs e)
{
proxyServer.Logger.LogInformation("{Url}", e.HttpClient.Request.Url);
return Task.CompletedTask;
}Point your client at 127.0.0.1:8000 as its HTTP and HTTPS proxy. Trusting a generated root certificate changes the current user's certificate store — only do this on a machine you control.
- Website — product docs, download, getting started, features, release notes
- Wiki — deeper guides (performance, streaming bodies, HTTP/3, protocol support) and a short Features pointer
- Basic console proxy
- WPF desktop example
- Windows service example
- API reference
- Bugs and feature requests: GitHub Issues
- Programming questions: Stack Overflow (
titanium-web-proxytag) - Pull requests welcome — see CONTRIBUTING.md (includes local QA tooling for maintainers)
Actively maintained by justcoding121. Past collaborator: honfika.
Titanium.Web.Proxy and Titanium.Cli are MIT. Titanium Inspector and Titanium.Plus are PolyForm Noncommercial 1.0.0.



