Tor Browser plus I2P, without a browser fork

Route .i2p through I2P and keep everything else on Tor Browser.

i2tor is a Go desktop launcher that composes Tor Browser and Java I2P without patching Tor Browser, forking its source, or changing system-wide proxy settings.

Independent project. Not affiliated with, endorsed by, or sponsored by the Tor Project or the I2P Project.

Upstream-first

i2tor launches an isolated Tor Browser profile instead of maintaining a custom browser fork.

Fail-closed routing

It generates a PAC file so .i2p goes to the local I2P HTTP proxy and other traffic stays on Tor Browser.

Linux-first packaging

The current product path targets Linux, with AppImage, AUR, and Nix install options.

Install

Pick the Linux path that matches your setup.

Arch Linux (AUR)

The recommended Arch package is i2tor-bin.

yay -S i2tor-bin

Nix

Run directly or install into your profile.

nix run github:SethMcGuire/i2tor -- run
nix profile install github:SethMcGuire/i2tor

Plain binary

If you do not want the AppImage, use the Linux release binary.

chmod +x i2tor-*-linux-x86_64
./i2tor-*-linux-x86_64 run

How It Works

A launcher, not a browser fork.

i2tor owns a dedicated Tor Browser profile, starts I2P, waits for the local I2P HTTP proxy at 127.0.0.1:4444, starts the bundled Tor daemon from Tor Browser, waits for the SOCKS proxy at 127.0.0.1:9150, writes proxy.pac, and then launches the browser.

If I2P is not ready, the browser is not launched. That keeps .i2p from silently falling back somewhere else.

Launch sequence

  1. Resolve paths, config, and launcher state
  2. Reuse or install Tor Browser, Java, and I2P
  3. Start I2P and wait for the HTTP proxy
  4. Start bundled Tor and wait for the SOCKS proxy
  5. Write the PAC file and dedicated browser profile
  6. Launch the browser and clean up launcher-owned processes on exit

Security And Limits

Clear boundaries matter here.

Managed installs

Downloads are verified before extraction or execution, and extraction rejects unsafe archive paths.

No system proxy changes

Routing stays inside the launcher-managed browser profile instead of touching system-wide proxy settings.

Linux-first

Windows and macOS paths exist in the codebase, but Linux is the primary implementation target right now.

Advanced options stay opt-in

Localhost access is off by default because it weakens the normal local-service isolation posture.

Project Links

Read the code, releases, and packaging details.