A computer-implemented method performed by a data processing apparatus, comprising: accessing specification data for a second user device that specifies a set of user device actions that the second user device is configured to perform, wherein each user device action is an action performed by a respective application installed on the second user device; receiving command inputs for a first user device, wherein the first user device and the second user device are associated with a same user account; for each command input, determining whether the command input resolves to one of the user device actions of the set of user device actions for the second user device, the one of the user device actions being an action that can be performed by a respective application installed on the second user device; and for each command input determined to resolve to one of the user device actions at the second user device: generating data that causes the first user device to display a dialog in a user interface of the first user device by which a user of the first user device may either accept or deny invoking the user device action of the respective application at the second user device in response to the command input; in response to an acceptance: generating a command communication that includes data, specifying the user device action and arguments, that, when processed by an application programming interface on the second user device, causes the second user device to invoke the user device action and process the command input as the input for the user device action; and sending the command communication to the second user device; and in response to a denial, through the dialog and by the user at the first user device, to invoke the user device action at the second user device: causing the first user device to invoke the user device action of a respective application installed on the first user device and process the command input as an input for the user device action. accessing specification data for a second user device that specifies a set of user device actions that the second user device is configured to perform, wherein each user device action is an action performed by a respective application installed on the second user device; receiving command inputs for a first user device, wherein the first user device and the second user device are associated with a same user account; for each command input, determining whether the command input resolves to one of the user device actions of the set of user device actions for the second user device, the one of the user device actions being an action that can be performed by a respective application installed on the second user device; and for each command input determined to resolve to one of the user device actions at the second user device: generating data that causes the first user device to display a dialog in a user interface of the first user device by which a user of the first user device may either accept or deny invoking the user device action of the respective application at the second user device in response to the command input; in response to an acceptance: generating a command communication that includes data, specifying the user device action and arguments, that, when processed by an application programming interface on the second user device, causes the second user device to invoke the user device action and process the command input as the input for the user device action; and sending the command communication to the second user device; and in response to a denial, through the dialog and by the user at the first user device, to invoke the user device action at the second user device: causing the first user device to invoke the user device action of a respective application installed on the first user device and process the command input as an input for the user device action. generating data that causes the first user device to display a dialog in a user interface of the first user device by which a user of the first user device may either accept or deny invoking the user device action of the respective application at the second user device in response to the command input; in response to an acceptance: generating a command communication that includes data, specifying the user device action and arguments, that, when processed by an application programming interface on the second user device, causes the second user device to invoke the user device action and process the command input as the input for the user device action; and sending the command communication to the second user device; and generating a command communication that includes data, specifying the user device action and arguments, that, when processed by an application programming interface on the second user device, causes the second user device to invoke the user device action and process the command input as the input for the user device action; and sending the command communication to the second user device; and in response to a denial, through the dialog and by the user at the first user device, to invoke the user device action at the second user device: causing the first user device to invoke the user device action of a respective application installed on the first user device and process the command input as an input for the user device action.