An extension machine suitable for use in a development tool system and configured to interoperate with a local development tool extension, "extension", which upon execution on the extension machine performs software development operations on local file contents, the extension machine comprising: a processor; a memory in operable communication with the processor; a local extension host agent, "agent", which upon execution with the processor communicates with a remote development tool user interface renderer, "renderer", that resides on a developer machine external to the extension machine; a local extension host, "host", which is configured for operable communication with the agent and with the extension and with a local store which has a filesystem containing software development files, "files",; wherein multiple files in the local store are identified in at least one place outside the extension machine by respective uniform resource identifiers, URI, file IDs, and those URI file IDs are mapped to filesystem paths for use in the extension to identify the files in order to obtain the file contents; wherein the local extension host agent, local extension host, local agent, local extension, and local store are each local to the extension machine and remote from the developer machine; wherein the renderer is further configured to specify in one or more of the inter-machine communications 212 one or more development processes to be spawned on the extension machine instead of the renderer spawning the one or more development processes on the developer machine; wherein the URI file IDs are mapped into a filesystem path file identification, "path file ID", of the software development file, and are accessed by the software development file in the extension machine store using the path file ID. a processor; a memory in operable communication with the processor; a local extension host agent, "agent", which upon execution with the processor communicates with a remote development tool user interface renderer, "renderer", that resides on a developer machine external to the extension machine; a local extension host, "host", which is configured for operable communication with the agent and with the extension and with a local store which has a filesystem containing software development files, "files",; wherein multiple files in the local store are identified in at least one place outside the extension machine by respective uniform resource identifiers, URI, file IDs, and those URI file IDs are mapped to filesystem paths for use in the extension to identify the files in order to obtain the file contents; wherein the local extension host agent, local extension host, local agent, local extension, and local store are each local to the extension machine and remote from the developer machine; wherein the renderer is further configured to specify in one or more of the inter-machine communications 212 one or more development processes to be spawned on the extension machine instead of the renderer spawning the one or more development processes on the developer machine; wherein the URI file IDs are mapped into a filesystem path file identification, "path file ID", of the software development file, and are accessed by the software development file in the extension machine store using the path file ID.