1. A method for providing a remote user interface for a computing device, comprising: receiving capability information at the computing device from a remote user interface (UI) that is connected to the computing device via a network connection, wherein the capability information describes at least software capabilities of the remote UI; emulating the capabilities described by the received capability information by creating a software stack on the computing device; executing a software application within a sandbox environment on the computing device; and capturing by the sandbox environment commands generated by the software application for the software stack or generated by the software stack responsive to the execution of the software application and redirecting the captured commands to the remote UI; receiving updated capability information from the remote UI; and dynamically modifying the software stack based on the updated capability information.