A transparent TCP proxy with Wake-On-Lan capabilities.
  • Rust 70.3%
  • Nix 29.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
threadexio a446a5c092
Some checks failed
CI / clippy (push) Has been cancelled
CI / build aarch64-unknown-linux-musl (push) Has been cancelled
CI / build x86_64-unknown-linux-musl (push) Has been cancelled
chore: bump dependencies
2026-09-02 23:11:24 +03:00
.cargo fix depending on the rust toolchain in nix builds 2026-01-31 21:56:43 +02:00
.github/workflows fix ci 2026-01-31 22:50:43 +02:00
nix remove left over lib.trace 2026-02-02 01:54:18 +02:00
src resend the wol packet before any initial connection attempt 2026-01-25 20:46:43 +02:00
.gitignore add ci 2025-07-19 17:21:01 +03:00
Cargo.lock chore: bump dependencies 2026-09-02 23:11:24 +03:00
Cargo.toml fix broken coloring in the logs 2026-01-31 22:57:11 +02:00
flake.lock chore: update flake 2026-09-02 23:11:02 +03:00
flake.nix fix depending on the rust toolchain in nix builds 2026-01-31 21:56:43 +02:00
LICENSE Initial commit 2025-07-09 14:30:56 +03:00
README.md add readme & flake 2025-07-09 16:26:19 +03:00
rust-toolchain.toml fix depending on the rust toolchain in nix builds 2026-01-31 21:56:43 +02:00
wolly.conf add readme & flake 2025-07-09 16:26:19 +03:00

wolly

wolly is a transparent reverse TCP proxy that uses Wake-On-Lan to wake up the target machine(s). It accepts incoming connections and forwards them to the configured host after waking up the host with Wake-On-Lan.

wolly is configured with only one file. This file contains rules as to where and how wolly should forward connections. It uses a line-based format that contains "directives". An example configuration:

upstream 10.0.0.42 mac 12:34:56:78:9a:bc brd 10.0.0.255
upstream 192.168.1.42 mac 00:00:00:00:00:00 brd 192.168.1.255

forward 0.0.0.0:8080 to 10.0.0.42:28080
forward 127.0.0.1:9999 to 10.0.0.42:9999
forward 0.0.0.0:10000-10100 to 192.168.1.42:2200-2300

The above configuration declares that there are 2 "upstream" hosts 10.0.0.42 and 192.168.1.42 which are available to forward connections to. It also declares that wolly should forward connections from port 8080 to 10.0.0.42:28080, 9999 to 10.0.0.42:9999 and every port in the range 10000-10100 to 192.168.1.42:2200-2300. wolly supports 3 types of forwarding:

  1. 1-1, one port is forwarded to another
  2. N-1, many ports are forwarded to one
  3. N-N, a port range is forwarded to another port range

What makes wolly different than other TCP proxies is that wolly will attempt to wake up the target host before it forwards the connection.

A full configuration file is available here: ./wolly.conf