Building software for devices that cannot locally support development tools can be challenging. These devices have either limited computing power to run an IDE (smart-phones), lack appropriate input/output interfaces (display, keyboard, mouse) for programming (mobile robots) or are simply unreachable for local development (cloud-servers). Yet remote debugging solutions can prove awkward to use due to their distributed nature. Empirical studies show us that on average 10.5 minutes per coding hour are spend for re-deploying applications. Moreover current solutions lack facilities that would otherwise be available in a local setting. In this dissertation in order to overcome these issues we first identify four desirable properties that an ideal solution for remote debugging should exhibit, namely: interactiveness, instrumentation, distribution and security. Given these properties we propose Mercury, a remote debugging model and architecture for reflective OO languages.