Implements #24, allows programmatic execution when there's no TTY