1. A method for providing gesture recognition services to a user application, comprising: storing sets of training data in a database at a server, the training data received from a sensor associated with the user application, the training data being indicative of characteristics of a gesture, the user application running on a client device; training a gesture recognition algorithm with the sets of training data to generate a trained gesture recognition algorithm, the output of the trained gesture recognition algorithm being an indication of the gesture; storing the trained gesture recognition algorithm in a client library at the server; receiving raw data from the sensor via the user application and storing the raw data in the client library; applying the trained gesture recognition algorithm to the raw data; and, when the trained gesture recognition algorithm recognizes the gesture, sending the indication of the gesture from the client library to the user application.