diff --git a/loop/agent.go b/loop/agent.go
index 2bd0776..1ce67e5 100644
--- a/loop/agent.go
+++ b/loop/agent.go
@@ -73,9 +73,9 @@
 
 	// OS returns the operating system of the client.
 	OS() string
-	HostOS() string
-	HostHostname() string
-	HostWorkingDir() string
+	OutsideOS() string
+	OutsideHostname() string
+	OutsideWorkingDir() string
 	GitOrigin() string
 }
 
@@ -239,10 +239,10 @@
 	originalBudget ant.Budget
 	title          string
 	codereview     *claudetool.CodeReviewer
-	// Host information
-	hostHostname   string
-	hostOS         string
-	hostWorkingDir string
+	// Outside information
+	outsideHostname   string
+	outsideOS         string
+	outsideWorkingDir string
 	// URL of the git remote 'origin' if it exists
 	gitOrigin string
 
@@ -294,19 +294,19 @@
 	return a.config.ClientGOOS
 }
 
-// HostOS returns the operating system of the host.
-func (a *Agent) HostOS() string {
-	return a.hostOS
+// OutsideOS returns the operating system of the outside system.
+func (a *Agent) OutsideOS() string {
+	return a.outsideOS
 }
 
-// HostHostname returns the hostname of the host.
-func (a *Agent) HostHostname() string {
-	return a.hostHostname
+// OutsideHostname returns the hostname of the outside system.
+func (a *Agent) OutsideHostname() string {
+	return a.outsideHostname
 }
 
-// HostWorkingDir returns the working directory on the host.
-func (a *Agent) HostWorkingDir() string {
-	return a.hostWorkingDir
+// OutsideWorkingDir returns the working directory on the outside system.
+func (a *Agent) OutsideWorkingDir() string {
+	return a.outsideWorkingDir
 }
 
 // GitOrigin returns the URL of the git remote 'origin' if it exists.
@@ -441,26 +441,26 @@
 	ClientGOOS       string
 	ClientGOARCH     string
 	UseAnthropicEdit bool
-	// Host information
-	HostHostname   string
-	HostOS         string
-	HostWorkingDir string
+	// Outside information
+	OutsideHostname   string
+	OutsideOS         string
+	OutsideWorkingDir string
 }
 
 // NewAgent creates a new Agent.
 // It is not usable until Init() is called.
 func NewAgent(config AgentConfig) *Agent {
 	agent := &Agent{
-		config:         config,
-		ready:          make(chan struct{}),
-		inbox:          make(chan string, 100),
-		outbox:         make(chan AgentMessage, 100),
-		startedAt:      time.Now(),
-		originalBudget: config.Budget,
-		seenCommits:    make(map[string]bool),
-		hostHostname:   config.HostHostname,
-		hostOS:         config.HostOS,
-		hostWorkingDir: config.HostWorkingDir,
+		config:            config,
+		ready:             make(chan struct{}),
+		inbox:             make(chan string, 100),
+		outbox:            make(chan AgentMessage, 100),
+		startedAt:         time.Now(),
+		originalBudget:    config.Budget,
+		seenCommits:       make(map[string]bool),
+		outsideHostname:   config.OutsideHostname,
+		outsideOS:         config.OutsideOS,
+		outsideWorkingDir: config.OutsideWorkingDir,
 	}
 	return agent
 }
diff --git a/loop/server/loophttp.go b/loop/server/loophttp.go
index 8a43fce..271375b 100644
--- a/loop/server/loophttp.go
+++ b/loop/server/loophttp.go
@@ -59,12 +59,12 @@
 	OS            string               `json:"os"`          // deprecated
 	GitOrigin     string               `json:"git_origin,omitempty"`
 
-	HostHostname      string `json:"host_hostname,omitempty"`
-	RuntimeHostname   string `json:"runtime_hostname,omitempty"`
-	HostOS            string `json:"host_os,omitempty"`
-	RuntimeOS         string `json:"runtime_os,omitempty"`
-	HostWorkingDir    string `json:"host_working_dir,omitempty"`
-	RuntimeWorkingDir string `json:"runtime_working_dir,omitempty"`
+	OutsideHostname   string `json:"outside_hostname,omitempty"`
+	InsideHostname    string `json:"inside_hostname,omitempty"`
+	OutsideOS         string `json:"outside_os,omitempty"`
+	InsideOS          string `json:"inside_os,omitempty"`
+	OutsideWorkingDir string `json:"outside_working_dir,omitempty"`
+	InsideWorkingDir  string `json:"inside_working_dir,omitempty"`
 }
 
 type InitRequest struct {
@@ -356,12 +356,12 @@
 			InitialCommit:     agent.InitialCommit(),
 			Title:             agent.Title(),
 			OS:                agent.OS(),
-			HostHostname:      agent.HostHostname(),
-			RuntimeHostname:   s.hostname,
-			HostOS:            agent.HostOS(),
-			RuntimeOS:         agent.OS(),
-			HostWorkingDir:    agent.HostWorkingDir(),
-			RuntimeWorkingDir: getWorkingDir(),
+			OutsideHostname:   agent.OutsideHostname(),
+			InsideHostname:    s.hostname,
+			OutsideOS:         agent.OutsideOS(),
+			InsideOS:          agent.OS(),
+			OutsideWorkingDir: agent.OutsideWorkingDir(),
+			InsideWorkingDir:  getWorkingDir(),
 			GitOrigin:         agent.GitOrigin(),
 		}
 
diff --git a/loop/webui/src/types.ts b/loop/webui/src/types.ts
index 68b6045..7874a3b 100644
--- a/loop/webui/src/types.ts
+++ b/loop/webui/src/types.ts
@@ -67,12 +67,12 @@
 	initial_commit: string;
 	title: string;
 	os: string;
-	host_hostname?: string;
-	runtime_hostname?: string;
-	host_os?: string;
-	runtime_os?: string;
-	host_working_dir?: string;
-	runtime_working_dir?: string;
+	outside_hostname?: string;
+	inside_hostname?: string;
+	outside_os?: string;
+	inside_os?: string;
+	outside_working_dir?: string;
+	inside_working_dir?: string;
 	git_origin?: string;
 }
 
diff --git a/loop/webui/src/web-components/sketch-container-status.ts b/loop/webui/src/web-components/sketch-container-status.ts
index c6aa811..9e542cb 100644
--- a/loop/webui/src/web-components/sketch-container-status.ts
+++ b/loop/webui/src/web-components/sketch-container-status.ts
@@ -75,59 +75,63 @@
   }
 
   formatHostname() {
-    const hostHostname = this.state?.host_hostname;
-    const runtimeHostname = this.state?.runtime_hostname;
+    const outsideHostname = this.state?.outside_hostname;
+    const insideHostname = this.state?.inside_hostname;
 
-    if (!hostHostname || !runtimeHostname) {
+    if (!outsideHostname || !insideHostname) {
       return this.state?.hostname;
     }
 
-    if (hostHostname === runtimeHostname) {
-      return hostHostname;
+    if (outsideHostname === insideHostname) {
+      return outsideHostname;
     }
 
-    return `${hostHostname}:${runtimeHostname}`;
+    return `${outsideHostname}:${insideHostname}`;
   }
 
   formatWorkingDir() {
-    const hostWorkingDir = this.state?.host_working_dir;
-    const runtimeWorkingDir = this.state?.runtime_working_dir;
+    const outsideWorkingDir = this.state?.outside_working_dir;
+    const insideWorkingDir = this.state?.inside_working_dir;
 
-    if (!hostWorkingDir || !runtimeWorkingDir) {
+    if (!outsideWorkingDir || !insideWorkingDir) {
       return this.state?.working_dir;
     }
 
-    if (hostWorkingDir === runtimeWorkingDir) {
-      return hostWorkingDir;
+    if (outsideWorkingDir === insideWorkingDir) {
+      return outsideWorkingDir;
     }
 
-    return `${hostWorkingDir}:${runtimeWorkingDir}`;
+    return `${outsideWorkingDir}:${insideWorkingDir}`;
   }
 
   getHostnameTooltip() {
-    const hostHostname = this.state?.host_hostname;
-    const runtimeHostname = this.state?.runtime_hostname;
-
-    if (!hostHostname || !runtimeHostname || hostHostname === runtimeHostname) {
-      return "";
-    }
-
-    return `Host: ${hostHostname}, Runtime: ${runtimeHostname}`;
-  }
-
-  getWorkingDirTooltip() {
-    const hostWorkingDir = this.state?.host_working_dir;
-    const runtimeWorkingDir = this.state?.runtime_working_dir;
+    const outsideHostname = this.state?.outside_hostname;
+    const insideHostname = this.state?.inside_hostname;
 
     if (
-      !hostWorkingDir ||
-      !runtimeWorkingDir ||
-      hostWorkingDir === runtimeWorkingDir
+      !outsideHostname ||
+      !insideHostname ||
+      outsideHostname === insideHostname
     ) {
       return "";
     }
 
-    return `Host: ${hostWorkingDir}, Runtime: ${runtimeWorkingDir}`;
+    return `Outside: ${outsideHostname}, Inside: ${insideHostname}`;
+  }
+
+  getWorkingDirTooltip() {
+    const outsideWorkingDir = this.state?.outside_working_dir;
+    const insideWorkingDir = this.state?.inside_working_dir;
+
+    if (
+      !outsideWorkingDir ||
+      !insideWorkingDir ||
+      outsideWorkingDir === insideWorkingDir
+    ) {
+      return "";
+    }
+
+    return `Outside: ${outsideWorkingDir}, Inside: ${insideWorkingDir}`;
   }
 
   // See https://lit.dev/docs/components/lifecycle/
