use some apps on ethernet, others on wifi? Is there any way to tell an application to use a specific network interface? 
I'Ve got the problem that iMessage and other apps need to run on the proxy-free wifi network while other apps such as Xcode need to run on ethernet to connect to the repository in the wired network.

Is there any way to do this?
Some programs specifically gives you the option to choose the source interface. That's the easiest way if this is the case.

Another possibility is to use source routing (policy routing) to ensure that requests from your specific source is routed via the interface you need. This is often quite complicated to setup and maintain.

A third possibility, which is really not about choosing a specific interface, is a practical approach where you change the routing based on the destination instead.

I.e. if it is only important for you that your app uses the wired ethernet conncetion when talking to the specific repository, you could determine which IP address (or addresses) that repository has - and then add a specific route for that IP over the wired interface. This route would take priority over your default route.

From the Terminal run:

  route -n add -host xxx.xxx.xxx.xxx -interface en0


(for net local)

or

  route -n add -host xxx.xxx.xxx.xxx gw yyy.yyy.yyy.yyy -interface en0


(for routed destinations)

where xxx.xxx.xxx.xxx should be replaced with the IP of the repository. Similarly yyy.yyy.yyy.yyy is to be replaced with the IP of your gateway for the wired interface.

If you have several wired interfaces, change en0 to the specific interface.

If your repository have multiple IP addresses, run the command above multiple times with the various IPs.