Skip to content

Repository files navigation

Titanium Web Proxy

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

Build NuGet NuGet downloads

Code Quality

Quality Gate Coverage Lines of Code Bugs Vulnerabilities Code Smells Security Rating Reliability Rating Maintainability Rating Duplicated Lines Technical Debt

Features

  • 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.

Editions

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.

Installation

Install the stable package from NuGet:

dotnet add package Titanium.Web.Proxy

To use the latest prerelease:

dotnet add package Titanium.Web.Proxy --prerelease

CLI (titanium / twp)

On Windows, winget is stable-only:

winget install justcoding121.TitaniumCli

For 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 update

Each 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.

Titanium Inspector

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.

Quick start

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.

Performance

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.

Examples and documentation

Screenshots

Titanium Inspector: session grid with request/response details:

Titanium Inspector screenshot

Basic console example: compact per-request traffic tape:

Basic console proxy screenshot

Support and contributing

Maintainers

This project is actively maintained by:

Past contributors:

License

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.

About

A cross-platform high performing HTTP(S) proxy server in C#.

Topics

Resources

Contributing

Security policy

Stars

2.0k stars

Watchers

6 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages