diff --git a/apps/canvas/front/src/components/actions.tsx b/apps/canvas/front/src/components/actions.tsx
index 0814d52..24198cb 100644
--- a/apps/canvas/front/src/components/actions.tsx
+++ b/apps/canvas/front/src/components/actions.tsx
@@ -1,4 +1,4 @@
-import { AppNode, nodeLabel, useEnv, useMessages, useProjectId, useStateStore } from "@/lib/state";
+import { AppNode, nodeLabelFull, useEnv, useMessages, useProjectId, useStateStore } from "@/lib/state";
 import { Button } from "./ui/button";
 import { useCallback, useEffect, useState } from "react";
 import { generateDodoConfig } from "@/lib/config";
@@ -75,7 +75,7 @@
 				if (n.type === "network") {
 					continue;
 				}
-				const d = data.find((d) => n.type === toNodeType(d.type) && nodeLabel(n) === d.name);
+				const d = data.find((d) => n.type === toNodeType(d.type) && nodeLabelFull(n) === d.name);
 				if (d !== undefined) {
 					store.updateNodeData(n.id, {
 						state: d?.status,
@@ -113,11 +113,11 @@
 				info("Deployment succeeded");
 				monitor();
 			} else {
-				error("Deployment failed", await resp.text());
+				error("Deployment failed");
 			}
 			store.refreshEnv();
-		} catch (e) {
-			error("Deployment failed", e instanceof Error ? e.message : undefined);
+		} catch {
+			error("Deployment failed");
 		} finally {
 			setLoading(false);
 		}
diff --git a/apps/canvas/front/src/components/node-rect.tsx b/apps/canvas/front/src/components/node-rect.tsx
index 7cc3520..a0a1842 100644
--- a/apps/canvas/front/src/components/node-rect.tsx
+++ b/apps/canvas/front/src/components/node-rect.tsx
@@ -1,4 +1,4 @@
-import { NodeType, useNodeMessages } from "@/lib/state";
+import { NodeType, useMode, useNodeMessages } from "@/lib/state";
 import { Icon } from "./icon";
 import { useEffect, useState } from "react";
 
@@ -12,11 +12,12 @@
 
 export function NodeRect(p: Props) {
 	const { id, selected, children, state } = p;
+	const mode = useMode();
 	const messages = useNodeMessages(id);
 	const hasFatal = messages.some((m) => m.type === "FATAL");
 	const hasWarning = messages.some((m) => m.type === "WARNING");
 	const [classes, setClasses] = useState<string[]>([]);
-	const [_, setStateClasses] = useState<string[]>([]);
+	const [stateClasses, setStateClasses] = useState<string[]>([]);
 	useEffect(() => {
 		const classes = ["px-4", "py-2", "rounded-md", "bg-white"];
 		classes.push("border");
@@ -49,18 +50,19 @@
 			<div style={{ position: "absolute", top: "5px", left: "5px" }}>
 				<Icon type={p.type} />
 			</div>
-			{/* TODO(gio): add state badge */}
-			{/* <div
-				style={{
-					position: "absolute",
-					top: "5px",
-					right: "5px",
-					borderRadius: "50%",
-					width: "5px",
-					height: "5px",
-				}}
-				className={stateClasses.join(" ")}
-			></div> */}
+			{mode === "deploy" && (
+				<div
+					style={{
+						position: "absolute",
+						top: "5px",
+						right: "5px",
+						borderRadius: "50%",
+						width: "5px",
+						height: "5px",
+					}}
+					className={stateClasses.join(" ")}
+				></div>
+			)}
 			{children}
 		</div>
 	);
diff --git a/apps/canvas/front/src/lib/state.ts b/apps/canvas/front/src/lib/state.ts
index c86199f..b7413d9 100644
--- a/apps/canvas/front/src/lib/state.ts
+++ b/apps/canvas/front/src/lib/state.ts
@@ -226,6 +226,14 @@
 	return "Unknown Node";
 }
 
+export function nodeLabelFull(n: AppNode): string {
+	if (n.type === "gateway-https") {
+		return `https://${n.data.subdomain}.${n.data.network}`;
+	} else {
+		return nodeLabel(n);
+	}
+}
+
 export function nodeIsConnectable(n: AppNode, handle: string): boolean {
 	switch (n.type) {
 		case "network":
