One question: on the source install, the start command currently causes the agent to run in the foreground. This makes the restart command interesting - should it also run supervisor in the foreground like the start command? We could break its functionality into two cases:

1. running restart when is supervisor not running: restart starts supervisor and displays the output of start in the foreground.
2. running restart when supervisor is already running: restart simply restarts the process and exits, as we assume that start is running in the foreground somewhere else.

Does that get too confusing for the user though? I don't know if it's good practice for one command to have such different output for two cases that the user doesn't need to understand. What do you think?