Disclosed is a method for one computing device (the “provider”) to provide peripheral services to another device (the “host”). A user directly runs the host. The host accesses the provider as if the provider were a set of peripheral devices attached to the host. In this way, the host and provider become, in effect, one device with the combined capabilities of both devices. The provider switches between two modes: In standalone mode, the provider acts as an individual device; upon switching to auxiliary mode, the provider provides peripheral services to the host but can still run applications and present an input/output interface to its own user. When the peripheral device provided to the host is a display screen, the host can map the provided screen into the host's own video memory, thus hiding implementation details from applications that use the screens. One device can simultaneously act as provider and host.