Having just spent some time fiddling with Synergy on OS X, it seems that there aren’t any current instructions on how to make Synergy start automatically on OS X Leopard (and starting it manually is kind of a hassle). My approach is based on Jan Varwig’s instructions, which needed yet more modification for my purposes. Having configured synergy.conf (nota bene: Synergy treats hostnames as case-sensitive, so read the results of hostname carefully!), I set the server and client machines to automatically start their Synergy processes on login.

This requires creating a Launch Agent on each machine (the server and the clients) to start the processes. I use Lingon, mostly because it validates my XML and lets me use the GUI, sometimes (this, by the way, was a time when the GUI failed me — it tended to trim off parameters, be forewarned and use the Expert view).

On the server, I created a new My Agent thus:

< ?xml version="1.0" encoding="UTF-8"?>
< !DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>net.sourceforge.synergy2.server</string>
    <key>OnDemand</key>
    <false />
    <key>ProgramArguments</key>
    <array>
        <string>/path/to/synergys</string>
        <string>--no-daemon</string>
        <string>--no-restart</string>
        <string>--debug</string>
        <string>WARNING</string>
	<string>/path/to/synergy.conf</string>
    </array>
    <key>RunAtLoad</key>
    <true />
</dict>
</plist>

And on the client, I created a similar My Agent thus:

< ?xml version="1.0" encoding="UTF-8"?>
< !DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>net.sourceforge.synergy2.client</string>
    <key>OnDemand</key>
    <false />
    <key>ProgramArguments</key>
    <array>
        <string>/path/to/synergyc</string>
	<string>-f</string>
	<string>Server-Hostname</string>
    </array>
    <key>RunAtLoad</key>
    <true />
</dict>
</plist>

A reboot on each machine (server first) and all is ready to go (and, in fact, going).