Maybe just add something like os:daemonize() ? main(Args) -> .... init stuff .... case lists:member("-d", Args) of true -> os:daemonize(); false -> launch_shell() end. ?