Nyx

Frequently Asked Questions

Frequently Asked Questions

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.

_images/main.png

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?

_images/vidalia.png

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...

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...

_images/acs_display_failure.png

... 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