Are Upstart and Supervisord interchangeable? Do they work together? I am looking to run a python program as root when my system (debian) boots. After the boot, I would like the process manager to continue running the program if it crashes. Which would be better suited to do this?
Upstart was developed as a replacement for the traditional init daemon. Supervisord is a process manager (with a lot of features), but it still needs to be run by an init daemon in itself.
I personally find Upstart is enough for most of my use cases, and from your question I think it will do just fine for you as well.
There are four upstart stanzas that should be of particular interest to you: start on, stop on, respawn and exec. You can read more about them at http://upstart.ubuntu.com/cookbook/.
If you still prefer to go for the Supervisord route this seems like a good thread to get you started - https://serverfault.com/questions/96499/how-to-automatically-start-supervisord-on-linux-ubuntu