The application has to be somewhere. You decide whether that is on the server or the application. As for "behave as if it was started on the remote machine", what exactly do you mean by that? Just accessing files on the remote machine, or using the remote machine's hardware? Basically, if this end result is desired, the ideal solution is that the program supports such a feature. There are many programs that do support this concept (in one way or another). Clarifying better, what you want to have happen, might lead to a more detailed solution that provides you with more specific details on accomplishing just what you want.
Since it sounds like you're trying to free up CPU server, I would say that lots of applications run the CPU instructions on the clients, and store data on the server. That is often done by using SQL over a network, or having clients access a data file that is located in a folder that is shared over the network. Whether either of these ideas are feasible (typically only one of those ideas is an option, if either of them are) often depends on the software being used.