diff --git a/apps/canvas/front/src/lib/config.ts b/apps/canvas/front/src/lib/config.ts
index f6dee32..e2ad19d 100644
--- a/apps/canvas/front/src/lib/config.ts
+++ b/apps/canvas/front/src/lib/config.ts
@@ -1,12 +1,12 @@
-import { AppNode, NodeType } from "config";
+import { AppNode, Env, NodeType, ServiceNode } from "config";
 import { Message, MessageType } from "./state";
 
 export interface Validator {
-	(nodes: AppNode[]): Message[];
+	(nodes: AppNode[], env: Env): Message[];
 }
 
 function CombineValidators(...v: Validator[]): Validator {
-	return (n) => v.flatMap((v) => v(n));
+	return (n, env) => v.flatMap((v) => v(n, env));
 }
 
 function MessageTypeToNumber(t: MessageType) {
@@ -44,9 +44,9 @@
 }
 
 function SortingValidator(v: Validator): Validator {
-	return (n) => {
-		const nt = new Map(n.map((n) => [n.id, NodeTypeToNumber(n.type)]));
-		return v(n).sort((a, b) => {
+	return (nodes, env) => {
+		const nt = new Map(nodes.map((n) => [n.id, NodeTypeToNumber(n.type)]));
+		return v(nodes, env).sort((a, b) => {
 			const at = MessageTypeToNumber(a.type);
 			const bt = MessageTypeToNumber(b.type);
 			if (a.nodeId === undefined && b.nodeId === undefined) {
@@ -86,6 +86,7 @@
 			ServiceAnalyzisValidator,
 			GatewayHTTPSValidator,
 			GatewayTCPValidator,
+			AgentApiKeyValidator,
 		),
 	);
 }
@@ -391,3 +392,15 @@
 		}));
 	return noNetwork.concat(notConnected);
 }
+
+function AgentApiKeyValidator(nodes: AppNode[], env: Env): Message[] {
+	return nodes
+		.filter((n): n is ServiceNode => n.type === "app" && n.data.type === "sketch:latest")
+		.filter((n) => n.data.agent?.geminiApiKey == null && !env.integrations.gemini)
+		.map((n) => ({
+			id: `${n.id}-no-agent-api-key`,
+			type: "FATAL",
+			nodeId: n.id,
+			message: "Configure Gemini API key either on the service or in the project integrations",
+		}));
+}
diff --git a/apps/canvas/front/src/lib/state.ts b/apps/canvas/front/src/lib/state.ts
index b5eac42..8f21c26 100644
--- a/apps/canvas/front/src/lib/state.ts
+++ b/apps/canvas/front/src/lib/state.ts
@@ -322,9 +322,11 @@
 		setOg(state);
 	};
 	const setN = (nodes: AppNode[]) => {
+		const env = get().env;
+		console.log("---env", env);
 		set({
 			nodes,
-			messages: v(nodes),
+			messages: v(nodes, env),
 		});
 	};
 
@@ -624,7 +626,7 @@
 		nodes: [],
 		edges: [],
 		categories: defaultCategories,
-		messages: v([]),
+		messages: [],
 		env: defaultEnv,
 		viewport: {
 			transformX: 0,
