From 4eedbc365600bfbdd607276b5ad51d8d028a096c Mon Sep 17 00:00:00 2001 From: notgitika Date: Wed, 20 May 2026 00:39:03 -0400 Subject: [PATCH] fix(dev): skip deploy for plain agents without harnesses `agentcore dev` was triggering a full CDK deploy even for plain agents (Strands, LangGraph, etc.) that only need a local dev server. This blocked users from iterating locally without AWS credentials/targets configured. Now `runCliDeploy()` is only invoked when the project has harnesses (cloud-dependent resources). Plain agents start the local server immediately. Closes #1189 --- src/cli/commands/dev/browser-mode.ts | 4 +++- src/cli/commands/dev/command.tsx | 4 ++-- src/cli/tui/hooks/useDevDeploy.ts | 13 +++++++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/cli/commands/dev/browser-mode.ts b/src/cli/commands/dev/browser-mode.ts index 77342e7f1..3489e0cc0 100644 --- a/src/cli/commands/dev/browser-mode.ts +++ b/src/cli/commands/dev/browser-mode.ts @@ -129,7 +129,9 @@ export async function launchBrowserDev(): Promise { process.exit(1); } - await runCliDeploy(); + if (hasHarnesses) { + await runCliDeploy(); + } const configRoot = findConfigRoot(workingDir); const persistTracesDir = path.join(configRoot ?? workingDir, '.cli', 'traces'); diff --git a/src/cli/commands/dev/command.tsx b/src/cli/commands/dev/command.tsx index d34dfa3e2..f588f3996 100644 --- a/src/cli/commands/dev/command.tsx +++ b/src/cli/commands/dev/command.tsx @@ -389,8 +389,8 @@ export const registerDev = (program: Command) => { // Get provider info from agent config const providerInfo = '(see agent code)'; - // Deploy resources before starting dev server - if (!opts.skipDeploy) { + // Deploy resources before starting dev server (only when harnesses need it) + if (!opts.skipDeploy && hasHarnesses) { await runCliDeploy(); } diff --git a/src/cli/tui/hooks/useDevDeploy.ts b/src/cli/tui/hooks/useDevDeploy.ts index e081a4eec..f815e8dbc 100644 --- a/src/cli/tui/hooks/useDevDeploy.ts +++ b/src/cli/tui/hooks/useDevDeploy.ts @@ -49,6 +49,19 @@ export function useDevDeploy({ skip, ready = true }: UseDevDeployOptions = {}): try { const configIO = new ConfigIO(); + // Only deploy if the project has harnesses (cloud-dependent resources). + // Plain agents (Strands, LangGraph, etc.) run locally and don't need deployment. + try { + const projectSpec = await configIO.readProjectSpec(); + const hasHarnesses = (projectSpec.harnesses ?? []).length > 0; + if (!hasHarnesses) { + onProgress('Local agent — no deploy needed', 'success'); + return; + } + } catch { + // If we can't read project spec, proceed with deploy as a safe default + } + // Auto-populate aws-targets.json if empty try { const targets = await configIO.readAWSDeploymentTargets();