diff --git a/loop/agent.go b/loop/agent.go
index 0cfc35b..52fafbd 100644
--- a/loop/agent.go
+++ b/loop/agent.go
@@ -141,6 +141,8 @@
 	CompactConversation(ctx context.Context) error
 	// GetPortMonitor returns the port monitor instance for accessing port events
 	GetPortMonitor() *PortMonitor
+	// SkabandAddr returns the skaband address if configured
+	SkabandAddr() string
 }
 
 type CodingAgentMessageType string
@@ -2348,3 +2350,11 @@
 func (a *Agent) GetPortMonitor() *PortMonitor {
 	return a.portMonitor
 }
+
+// SkabandAddr returns the skaband address if configured
+func (a *Agent) SkabandAddr() string {
+	if a.config.SkabandClient != nil {
+		return a.config.SkabandClient.Addr()
+	}
+	return ""
+}
diff --git a/loop/server/loophttp.go b/loop/server/loophttp.go
index 0204a38..cc5ccc3 100644
--- a/loop/server/loophttp.go
+++ b/loop/server/loophttp.go
@@ -96,6 +96,7 @@
 	OutsideWorkingDir    string                        `json:"outside_working_dir,omitempty"`
 	InsideWorkingDir     string                        `json:"inside_working_dir,omitempty"`
 	TodoContent          string                        `json:"todo_content,omitempty"` // Contains todo list JSON data
+	SkabandAddr          string                        `json:"skaband_addr,omitempty"` // URL of the skaband server
 }
 
 type InitRequest struct {
@@ -1304,6 +1305,7 @@
 		FirstMessageIndex:    s.agent.FirstMessageIndex(),
 		AgentState:           s.agent.CurrentStateName(),
 		TodoContent:          s.agent.CurrentTodoContent(),
+		SkabandAddr:          s.agent.SkabandAddr(),
 	}
 }
 
diff --git a/loop/server/loophttp_test.go b/loop/server/loophttp_test.go
index 0d28fca..bb5bd21 100644
--- a/loop/server/loophttp_test.go
+++ b/loop/server/loophttp_test.go
@@ -32,6 +32,7 @@
 	sessionID                string
 	slug                     string
 	retryNumber              int
+	skabandAddr              string
 }
 
 func (m *mockAgent) NewIterator(ctx context.Context, nextMessageIdx int) loop.MessageIterator {
@@ -258,6 +259,7 @@
 }
 
 func (m *mockAgent) GetPortMonitor() *loop.PortMonitor { return loop.NewPortMonitor() }
+func (m *mockAgent) SkabandAddr() string               { return m.skabandAddr }
 
 // TestSSEStream tests the SSE stream endpoint
 func TestSSEStream(t *testing.T) {
diff --git a/skabandclient/skabandclient.go b/skabandclient/skabandclient.go
index 5abff35..7295a7b 100644
--- a/skabandclient/skabandclient.go
+++ b/skabandclient/skabandclient.go
@@ -268,6 +268,14 @@
 	return s[0:4] + "-" + s[4:8] + "-" + s[8:12] + "-" + s[12:16]
 }
 
+// Addr returns the skaband server address
+func (c *SkabandClient) Addr() string {
+	if c == nil {
+		return ""
+	}
+	return c.addr
+}
+
 // NewSkabandClient creates a new skaband client
 func NewSkabandClient(addr, publicKey string) *SkabandClient {
 	// Apply localhost-to-docker-internal transformation if needed
diff --git a/webui/src/types.ts b/webui/src/types.ts
index 81d2d1d..2ecd412 100644
--- a/webui/src/types.ts
+++ b/webui/src/types.ts
@@ -88,6 +88,7 @@
 	outside_working_dir?: string;
 	inside_working_dir?: string;
 	todo_content?: string;
+	skaband_addr?: string;
 }
 
 export interface TodoItem {
diff --git a/webui/src/web-components/mobile-shell.ts b/webui/src/web-components/mobile-shell.ts
index 583549d..ea9c305 100644
--- a/webui/src/web-components/mobile-shell.ts
+++ b/webui/src/web-components/mobile-shell.ts
@@ -151,6 +151,7 @@
         <mobile-title
           .connectionStatus=${this.connectionStatus}
           .isThinking=${isThinking}
+          .skabandAddr=${this.state?.skaband_addr}
         ></mobile-title>
 
         <mobile-chat
diff --git a/webui/src/web-components/mobile-title.ts b/webui/src/web-components/mobile-title.ts
index 95198fa..d000a3f 100644
--- a/webui/src/web-components/mobile-title.ts
+++ b/webui/src/web-components/mobile-title.ts
@@ -10,6 +10,9 @@
   @property({ type: Boolean })
   isThinking = false;
 
+  @property({ type: String })
+  skabandAddr?: string;
+
   static styles = css`
     :host {
       display: block;
@@ -31,6 +34,26 @@
       margin: 0;
     }
 
+    .title a {
+      color: inherit;
+      text-decoration: none;
+      transition: opacity 0.2s ease;
+      display: flex;
+      align-items: center;
+      gap: 8px;
+    }
+
+    .title a:hover {
+      opacity: 0.8;
+      text-decoration: underline;
+    }
+
+    .title img {
+      width: 18px;
+      height: 18px;
+      border-radius: 3px;
+    }
+
     .status-indicator {
       display: flex;
       align-items: center;
@@ -127,7 +150,18 @@
   render() {
     return html`
       <div class="title-container">
-        <h1 class="title">Sketch</h1>
+        <h1 class="title">
+          ${this.skabandAddr
+            ? html`<a
+                href="${this.skabandAddr}"
+                target="_blank"
+                rel="noopener noreferrer"
+              >
+                <img src="${this.skabandAddr}/sketch.dev.png" alt="sketch" />
+                Sketch
+              </a>`
+            : html`Sketch`}
+        </h1>
 
         <div class="status-indicator">
           ${this.isThinking
diff --git a/webui/src/web-components/sketch-app-shell.ts b/webui/src/web-components/sketch-app-shell.ts
index 89ebcd5..967f502 100644
--- a/webui/src/web-components/sketch-app-shell.ts
+++ b/webui/src/web-components/sketch-app-shell.ts
@@ -164,6 +164,57 @@
       text-overflow: ellipsis;
     }
 
+    .banner-title a {
+      color: inherit;
+      text-decoration: none;
+      transition: opacity 0.2s ease;
+      display: flex;
+      align-items: center;
+      gap: 8px;
+    }
+
+    .banner-title a:hover {
+      opacity: 0.8;
+      text-decoration: underline;
+    }
+
+    .banner-title img {
+      width: 20px;
+      height: 20px;
+      border-radius: 3px;
+    }
+
+    /* Mobile-specific styles for banner link */
+    @media (max-width: 768px) {
+      .title-container {
+        max-width: 50%; /* Allow more space on mobile */
+      }
+
+      .banner-title {
+        font-size: 16px; /* Slightly smaller on mobile */
+      }
+
+      .banner-title img {
+        width: 18px;
+        height: 18px;
+      }
+    }
+
+    @media (max-width: 480px) {
+      .title-container {
+        max-width: 60%; /* Even more space on very small screens */
+      }
+
+      .banner-title {
+        font-size: 14px;
+      }
+
+      .banner-title img {
+        width: 16px;
+        height: 16px;
+      }
+    }
+
     .slug-title {
       margin: 0;
       padding: 0;
@@ -1160,7 +1211,21 @@
     return html`
       <div id="top-banner">
         <div class="title-container">
-          <h1 class="banner-title">sketch</h1>
+          <h1 class="banner-title">
+            ${this.containerState?.skaband_addr
+              ? html`<a
+                  href="${this.containerState.skaband_addr}"
+                  target="_blank"
+                  rel="noopener noreferrer"
+                >
+                  <img
+                    src="${this.containerState.skaband_addr}/sketch.dev.png"
+                    alt="sketch"
+                  />
+                  sketch
+                </a>`
+              : html`sketch`}
+          </h1>
           <h2 class="slug-title">${this.slug}</h2>
         </div>
 
