Open "Terminal" and login as root (type sudo su -) Put the two files "Barrier" and "StartupParameters.plist" in /Library/StartupItems/Barrier/ create the Barrier directory if needed. Change BARRIER, SCREEN_NAME and SERVER to suit your setup. copy the barrierc binary from /Applications/Barrier.app/Contents/MacOS/barrierc to /Library/StartupItems/Barrier/barrierc_prelogin Create a launchd script which creates the file /tmp/barrierc_user_running when you log in. Barrier runs as root pre-login, checks for the presence of the "barrierc_user_running" file, and if so, terminates root's copy of barrierc (barrierc_prelogin) and deletes that file. When you log out, your (user) barrierc process stops, and barrierc_prelogin is restarted as root user. There are probably better ways to do this, I read about logout and login hooks, but their usage is not reccomended by Apple. You might want to get rid of the logging statements in the script, but the logs will go away on reboot anyways, they are just there to help with debugging. Give me a shout if you have any ideas for improvements.