Frequently Asked Questions
**************************

* **General Information**

   * What is Nyx?

   * Why is it called Nyx?

   * Does Nyx have any dependencies?

   * What Python versions is Nyx compatible with?

   * Are there any other user interfaces for Tor?

   * What license is Nyx under?

* **Usage**

   * When running an exit will I see people's traffic?

   * Is it harmful to share the information provided by Nyx?

   * Is there any chance that nyx will leak data?

   * Why don't I see the bandwidth graph?

   * Why are there borders like 'mwqqqqqqqqj'?

   * Why are relay details for connections missing?

* **Development**

   * How do I get started?

   * How do I run the tests?

   * How do I build the site?

   * What is the copyright for patches?


General Information
*******************


What is Nyx?
============

Nyx is a command-line application for monitoring real time Tor status
information. This includes bandwidth usage, logs, connections,
configuration, and more.

[image]

As a curses interface Nyx is particularly well suited for ssh
connections, tty terminals, and command-line aficionados.


Why is it called Nyx?
=====================

Simple - because it's short and memorable. Terminal applications are
handiest when they're easy to remember and type, such as *top*, *ssh*,
etc. Anything longer is just asking to be aliased down.

Besides, Nyx is the Greek goddess of night.


Does Nyx have any dependencies?
===============================

**Yes**, Nyx requires Stem 1.4.5 or later.


What Python versions is Nyx compatible with?
============================================

Nyx works with **Python 2.6 and greater**, including the Python 3.x
series.


Are there any other user interfaces for Tor?
============================================

[image]

Yes, though sadly this isn't a space that gets much attention.

For years Vidalia was the default interface of Tor until it was
replaced in 2013 by Tor Browser. Vidalia includes a launcher, settings
editor, map, and more. TorK is similar, providing connection
information as well but never reached the same level of prominence.
Both interfaces are now unmaintained.

Smaller widgets include...

* Syboa - General interface

* OnionLauncher - Tor launcher

* TorNova - Tor launcher

* OnionView - Circuit information

* OnionCircuits - Circuit information

* or-applet - Circuit information

If I missed any then please let me know!


What license is Nyx under?
==========================

Nyx is under the GPLv3.


Usage
*****


When running an exit will I see people's traffic?
=================================================

**No**. Potential client and exit connections are scrubbed of
sensitive information. Be aware that it's highly discouraged (and
possibly illegal) for relay operators to view this data, so please
don't.


Is it harmful to share the information provided by Nyx?
=======================================================

**Not really**, but show some moderation. Screenshots of Nyx are
unlikely to do any harm but try to avoid exposing data en mass.


Is there any chance that nyx will leak data?
============================================

**No**. Nyx is a completely passive listener, fetching all information
from either Tor or the local system.


Why don't I see the bandwidth graph?
====================================

On some terminals such as Gentoo screen sessions appear to have a bug
where highlighted spaces aren't shown. Try running...

   export TERM="rxvt-unicode"


Why are there borders like 'mwqqqqqqqqj'?
=========================================

If you're getting something that looks like...

[image]

... you are encountering a terminal bug where alternate character
support (ACS) is unavailable.

Unfortunately there doesn't seem to be a way for Nyx to automatically
detect or correct this. To work around this you can set the following
in your nyxrc to not use ACS borders...

   features.acsSupport false


Why are relay details for connections missing?
==============================================

Relays publish information about themselves in documents called
*descriptors*. These documents are downloaded by Tor. New documents
available on an hourly basis but Tor will only download them if it
needs them, so the descriptors you have may be older.

Nyx's connections page use these descriptors to enrich connection
information with data about the relay you're connected with. If Tor
doesn't have this information the data may be stale or missing.

**This is fine.** Descriptor information we use changes infrequently
so even if they're a few hours old it won't matter. However, if you
really need up-to-date information you can add the following to your
torrc...

   # download new descriptors even if our cache is still valid

   FetchDirInfoEarly 1
   FetchDirInfoExtraEarly 1
   FetchUselessDescriptors 1


Development
***********


How do I get started?
=====================

The best way of getting involved with any project is to jump right in!
Our bug tracker lists several development tasks. In particular look
for the 'easy' keyword when getting started. If you have any questions
then I'm always more than happy to help! I'm **atagar** on oftc and
also available via email.

To start hacking on Nyx please do the following and don't hesitate to
let me know if you get stuck or would like to discuss anything!

1. Clone our git repository: **git clone
   https://git.torproject.org/nyx.git**

2. Install the development version of Stem: **git clone
   https://git.torproject.org/stem.git; cd stem; sudo python setup.py
   install**.

3. Get our test dependencies: **sudo pip install mock pep8
   pyflakes**.

4. Find a bug or feature that sounds interesting.

5. When you have something that you would like to contribute back
   do the following...

   * If you don't already have a publicly accessible Nyx repository
     then set one up. GitHub in particular is great for this.

   * File a trac ticket, the only fields you'll need are...

      * Summary: short description of your change

      * Description: longer description and a link to your
        repository with either the git commits or branch that has your
        change

      * Type: 'defect' if this is a bug fix and 'enhancement'
        otherwise

      * Priority: rough guess at the priority of your change

      * Component: Core Tor / Nyx

   * I'll review the change and give suggestions. When we're both
     happy with it I'll push your change to the official repository.


How do I run the tests?
=======================

Nyx has unit tests, including tests that exercise our curses
functionality. When you run the tests you may notice your console
flicker as these are exercised.

If you have them installed we run pyflakes to do static error checking
and pycodestyle for style checking as part of our tests.

Tests are run with...

   % run_tests.py


How do I build the site?
========================

If you have Sphinx version 1.1 or later installed then building our
site is as easy as...

   ~$ cd nyx/docs
   ~/nyx/docs$ make html

When it's finished you can direct your browser to the *_build*
directory with a URI similar to...

   file:///home/atagar/nyx/docs/_build/html/index.html


What is the copyright for patches?
==================================

Nyx is under the GPLv3 which is a fine license, but poses a bit of a
problem for sharing code with our other projects (which are mostly
BSD). To share code without needing to hunt down prior contributors we
need Tor to have the copyright for the whole Nyx codebase. Presently
the copyright of Nyx is jointly held by its main author (Damian) and
the Tor Project.

If you submit a substantial patch I'll ask if you're fine with it
being in the public domain. This would mean that there are no legal
restrictions for using your contribution, and hence won't pose a
problem if we reuse Nyx code in other projects.
