A lightweight, high-performance HTTP(S) proxy — reverse / edge CLI, desktop Inspector, and optional Plus ops on Windows, Linux, and macOS. Embed the same engine in .NET via NuGet when you need a library.
Website · Download · Docs · Releases
- Intercept, inspect, modify, redirect, or block HTTP and HTTPS traffic
- Explicit, transparent, and SOCKS4/5 proxy endpoints
- Request and response body streaming across HTTP/1.x (plain and TLS), HTTP/2, and HTTP/3 (see the protocol support matrix)
- HTTP/2 support, on by default, opt-out via
ProxyServer.EnableHttp2(see the protocol support matrix for exact coverage) - HTTP/3 (QUIC) support, opt-in via
ProxyServer.EnableHttp3 = true(requires MsQuic; CLI/Inspector Release zips bundle natives per RID — see the HTTP/3 wiki for packaging and the protocol bridge matrix for every client→origin direction) - Upstream HTTP, HTTPS, and SOCKS proxies with automatic system proxy detection
- Proxy authentication, mutual TLS, Kerberos, and NTLM support
- Connection, certificate, and buffer pooling
- Built-in, zero-overhead-when-disabled logging (every caught exception, optionally to console/file or your own
ILoggerFactory) and opt-in structured request/connection timing. See Logging and diagnostics in the wiki.
| Product | What it is | How you get it |
|---|---|---|
Titanium.Cli (titanium / twp) |
Standalone reverse / edge proxy for any stack: run, test, version, update |
Download (Windows, Linux & Mac) |
| Titanium Inspector | Desktop MITM debugger (session grid, inspectors, AutoResponder, breakpoints, HAR) | Download (Windows, Linux & Mac) |
| Titanium.Plus | Optional advanced features: control plane, ops, observability, and dashboard | After installing CLI, run titanium update --plus |
| Titanium.Web.Proxy | Core library. Embed a MITM and/or reverse proxy in a .NET app | NuGet (dotnet add package Titanium.Web.Proxy) |
CLI and Plus target reverse-proxy / edge workloads (routing, load balancing, health, discovery) on Windows, Linux, and macOS. Inspector is the MITM debugging product. The Core library is the embed path for .NET. Requires .NET 10 or later.
Install the stable package from NuGet:
dotnet add package Titanium.Web.ProxyTo use the latest prerelease:
dotnet add package Titanium.Web.Proxy --prereleaseOn Windows, winget is stable-only:
winget install justcoding121.TitaniumCliFor beta, download self-contained zips from Download / GitHub Releases when a product release includes Titanium.Cli-*.zip assets (e.g. v7.0.4-beta; stable is v7.0.4). Extract and run:
titanium run -c twp.yaml
titanium test -c twp.yaml
titanium version --check
titanium updateEach CLI zip also includes a twp alias binary.
Optional Plus: run titanium update --plus (add --channel beta for prereleases), then enable Plus in config (plus.enabled: true with plus.controlPlane.sharedSecret). Check with titanium version --check --plus.
Prefer Download. On Windows, winget id justcoding121.TitaniumInspector is stable-only (currently v7.0.4); MSI / portable zip for beta come from the product v* release (e.g. v7.0.4-beta). Start interception from the Capture menu, install the root CA, then toggle system proxy.
The following example starts an explicit HTTP(S) proxy on 127.0.0.1:8000 and 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();
// Built-in console sink is a bounded channel + background writer, so LogInformation
// never blocks a session thread on Console I/O.
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;
}Configure your client to use 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.
Typically at or above YARP; ahead of nginx on H2/H3→H1 reverse, near parity for the rest (nginx still edges tiny keep-alive). Details: Performance.
- Website: product docs, download, and release notes
- Wiki: additional feature guides (also mirrored on the website), including performance measurements, streaming request/response bodies, the HTTP/3 setup guide, and a protocol feature support matrix (what's supported for HTTP/1.x, HTTP/2, and HTTP/3, including protocol bridges)
- Basic console proxy
- WPF proxy application
- Windows service
- Benchmarks: loopback throughput and allocation (BenchmarkDotNet)
- RPS saturation probe: concurrent breaking-point RPS
- API documentation
Titanium Inspector: session grid with request/response details:
Basic console example: compact per-request traffic tape:
- Report reproducible bugs and feature requests through GitHub Issues.
- Ask programming questions on Stack Overflow using the
titanium-web-proxytag. - Pull requests are welcome. See CONTRIBUTING.md.
This project is actively maintained by:
Past contributors:
Titanium.Web.Proxy and Titanium.Cli are available under the MIT License. Titanium Inspector and Titanium.Plus are licensed under PolyForm Noncommercial 1.0.0.

