<type>documentation</type>
<domain>proj</domain>
<id>remote-hosts</id>
<title>Remote Development</title>
<date>$Date: 2010-05-14 11:53:19 -0400 (Fri, 14 May 2010) $</date>
<version>$Revision: 22093 $</version>
<product-version>6+</product-version>
<product>pro+</product>

Wing Pro can work with Python code that is stored on a remote host, device, or container
in the same way that you work with code stored locally. This includes editing, debugging,
testing, searching, version control, running a Python shell, executing command lines,
and project management.

Remote development is supported to OS X and Linux (Intel or ARM). A detailed
list of supported remote host types is available in `Supported Platforms
<ref:install/supported-platforms>`__. Wing Pro itself can be running on
Windows, Linux, or OS X.

How it Works
------------

Wing's remote development support works by installing a remote agent that carries out
operations on the remote host. All communication to the remote host is over secure SSH
tunnels, one to access the remote agent, and one for each debug process.

.. image:: remote-agent.png

Files are stored on the remote host, and everything you do is run on the remote host,
including running tests, debugging, executing files and command lines, searching, and
issuing version control operations.

The remote agent replaces the need for setting up file sharing to the remote host,
manually establishing SSH tunnels, defining file location maps, and other manual
configuration steps required for remote debugging in Wing 5 and earlier.

If you have used ``wingdbstub`` for `manually configured remote debugging
<ref:debug/manual-remote-debugging>`__ in the past, you can continue to use that approach.
Or you can switch to the new approach, which supports both launching your remote debug
process directly from Wing or continuing to use `wingdbstub through the remote agent
<ref:debug/remote-debugging>`__ if you need to launch your code from outside of the IDE.

If you prefer to store the master copy of your code on your local system, you can do this
as well by setting up file sharing to the remote host using Samba, NFS, or other method.
However, you will still use the remote agent to access the files on the remote system,
rather than opening them directly from local disk into the IDE.

Configuration Overview
----------------------

There are several steps in setting up remote development:

**1) Setting up SSH and connecting to it from Wing** using an SSH user agent, so that
connections can be made without asking for a password. Many developers already have this
set up. Wing just invokes the ``ssh`` or ``plink`` command line tools that you may already
be using.

**2) Defining a remote host configuration** to tell Wing about the remote host and how to
access it.

**3) Setting up a remote project** in much the same way as is done for local projects.

These steps are detailed in the next three sections.
