1. A method for allowing distributed running of an application between a device and a server connected via a network, the method comprising the following steps carried out by the device: obtaining, by said device, a device profile including resource capacity characteristics of said device; obtaining, by said device, an application profile including resource consumption characteristics of said application before said application is run; obtaining, by said device, device metrics relating to real-time resource usage with respect to said device; obtaining, by said device, offload rules defining conditions under which said application is to be run at least in part on said server and/or on said device, the conditions involving device resource capacity, application resource consumption and device real-time resource usage; making a decision, by an inference engine of said device, to run said application completely locally on said device, completely remotely on said server or partially on said device and partially on said server, by evaluating the offload rules applied to said device profile, application profile and device metrics; and controlling distribution of the application running between the device and the server based on said decision.