These are the different tup commands. There are other tup commands as well, but they are mostly used for testing.
You run this once at the top of your source tree. It creates a .tup/ directory, which is where the database and some lock files go. You can run 'tup init --no-sync' if you want to disable sqlite's file synchronization up front, or use the tup config command later.
This starts the file monitor process that runs in the background. This is used to provide tup with a list of files that have changed since you last updated. Another option is to manually provide the list, but that would be error-prone, so I highly disrecommend it. This uses inotify, so it is linux specific. You can run it from any subdirectory of where your .tup directory is, but it will always monitor the entire source tree.
This updates your source tree. Once you have finished making your changes, you can run this to update everything. It will print out its progress as it goes.
This stops the monitor, if you wanted to do that for some reason. You could also just kill the monitor process. Usually you would want the monitor running, though.
This creates a graphviz .dot specification that can be used to graph the tup database. With no arguments, it will graph the nodes that have been changed since the last update, plus their dependencies. So you could use it to see what will be updated when you run 'upd'. You can also give it a list of files to start the graph, so if you do 'tup g foo.c', then it will show you foo.c and all of the things that depend on it. I usually run it like this:
tup g | dot -Tpng | miv -
The dot program comes from graphviz, and miv is Marf's Image Viewer, which you don't have. So you can replace that with xv or some program that you do have.
Displays or sets the configuration options. With no arguments the existing options are displayed. You can set one by using the first argument as the option name, and the second argument as its new value.