the fast, reliable localhost tunneling solution

QuickStart Guide

1. Download

Download for your computer. It works on the Mac, Windows and Linux!

2. Run

The first time you run the program, it will help you create an account and your first kite.

3. Fly!

PageKite is a very flexible tool. Read on to learn how to use it!

Here we go ...

1. Download

You can download the program here.

If you are more interested in tinkering with the source code or trying experimental versions, check out our Open Source wiki pages.

Note: version is currently optimized for web developers, and as such it is meant to be used from the command-line (cmd.exe in Windows, or Terminal on the Mac).

2. Run for the first time

The following command will walk you through the process of creating your first kite:

$ --signup

(On Windows, the first time you double-click on the icon, it will start the sign-up process automatically.)

Alternately, fly localhost:80 on a name of your choice like so:

$ 80

If detects that you haven't signed up yet or are trying to use a new kite name, it will trigger the sign-up process automatically.

This may be enough to get you started. For more tips and tricks, read on!

3: Using

Basic concepts

  • Kites: A kite connects one or more services on your computer to a publicly visible DNS name or URL. In the examples below, we use the name
  • Services: A service can be a file or folder, a local web server, or any other local TCP server (such as SSH) which you might want to expose to the wider Internet.
  • The program used to create, maintain and manage kites and their services.

Flying kites - Apache, nginx, ...

Assuming you have a web server (for example Apache or Nginx) running on port 80 on your local machine, the following command will make it publicly visible:

$ 80

This will connect your localhost:80 web server to the publicly visible More importantly, it will also allow you to use SSL/TLS encryption on We recommend using the encrypted versions whenever possible!

You can replace 80 with other port numbers (3000 and 8000 are common values for web development).

Flying kites without a webserver

If you don't have a web server already installed, but just want to quickly expose a folder full of files or images, you can do so using's built-in web server:

$ /path/to/folder

That will make the contents of that folder visible at:

Note that for security reasons, if the folder doesn't contain an index.html file then people will see an error when they visit the site. If you want to present them with a list of files instead, you can do this:

$ /path/to/folder +indexes

Some basic security controls

Access controls can be enabled for a particular service, by using the +ip and +password flags, like so:

$ 80 +ip/ +ip/4.5.6=ok
$ 80 +password/bjarni=testing

As illustrated in the IP example above, you grant access to multiple IP addresses (or /24 subnets), or multiple username/password pairs simply by adding multiple flags. When access controls are in use, unauthorized connections will be rejected.

If you just run with no arguments (or double-click on the program icon on your Desktop or in a file manager), it will fly all enabled kites and services present in your configuration file. See the management section below for details on how to manage these settings.

Naming your kites

When you sign up for service, you will be asked to choose a name for your default kite. You are not restricted to using just this name though:

  1. You can create unlimited sub-kites: or
  2. You can create a few new kites:
  3. You can use unlimited CNAMEs from your own domain instead.

To create a CNAME kite, read this HowTo. To create a new name, just use it! will detect that it is new and will walk you through the process of registering it.

$ 80

Note: Due to browser limitations, automatic SSL encryption support is only available for names ending in that contain no extra dots. This means will not have TLS support, but the slightly uglier will encrypt just fine - it is up to you which you choose.

Advanced kite flying

You can fly multiple kites at once, by using the AND keyword on the command-line, like so (yes it must be capitalized):

$ /var/www AND 80

If your local web development server expects incoming requests to use localhost or foo.local in the Host: header, and you would rather not reconfigure it, can rewrite the header for you:

$ localhost:80 +rewritehost
$ foo.local:80 +rewritehost

(Note that this technique incurs a slight performance penalty and reduces compatiblity, as it disables persistent HTTP/1.1 connections.) can also expose non-web services, or bind services to particular ports, and understands a familiar syntax for defining the publicly visible name.

$ 22
$ 3000

Note that only some public-facing ports are available - consult the output from to get a full list. Also, accessing non-web services requires HTTP Proxy support in the client. Please consult the HowTo wiki for details.

Kite management

The definition for each kite is stored in a plain-text configuration file stored in your home directory. This file is named .pagekite.rc on Linux and the Mac, and pagekite.cfg on Windows. You can edit this file by hand, but it is generally more convenient to let do the work.

Some examples:

# Print a list of all configured kites and services
$ --list

# Add services to
$ --add /var/www # Publish a folder
$ --add 80 # A local webserver
$ --add 22 # Enable SSH tunneling

# Disabling a service:
$ --disable

# Disabling an entire kite (all services):
$ --disable

# Removing kites or services completely:
$ --remove
$ --remove

4. More details...

Still feel like reading? Check out:

Welcome to PageKite!