@@ -416,6 +416,45 @@ S3_BUCKET=$(aws cloudformation describe-stacks --stack-name $STACK_NAME --region
416416 --query ' Stacks[0].Outputs[?OutputKey==`TenantWorkspaceBucketName`].OutputValue' --output text)
417417```
418418
419+ ### Step 1.5: Build and Push Exec-Agent Image (Executive Tier)
420+
421+ The Executive Runtime uses a separate Docker image with all skills pre-installed and Claude Sonnet 4.6 as the default model. Build and push it from the repo root:
422+
423+ ``` bash
424+ ACCOUNT_ID=$( aws sts get-caller-identity --query Account --output text)
425+ ECR_EXEC=" ${ACCOUNT_ID} .dkr.ecr.${REGION} .amazonaws.com/openclaw-multitenancy-exec-agent"
426+
427+ aws ecr get-login-password --region $REGION | \
428+ docker login --username AWS --password-stdin " ${ACCOUNT_ID} .dkr.ecr.${REGION} .amazonaws.com"
429+
430+ docker build --platform linux/arm64 \
431+ -f enterprise/exec-agent/Dockerfile \
432+ -t " ${ECR_EXEC} :latest" .
433+
434+ docker push " ${ECR_EXEC} :latest"
435+ ```
436+
437+ Then update the Exec Runtime to pick up the new image:
438+
439+ ``` bash
440+ EXEC_RUNTIME_ID=$( aws ssm get-parameter \
441+ --name " /openclaw/${STACK_NAME} /exec-runtime-id" \
442+ --query Parameter.Value --output text --region $REGION 2> /dev/null)
443+
444+ EXEC_ROLE=$( aws cloudformation describe-stacks --stack-name $STACK_NAME --region $REGION \
445+ --query ' Stacks[0].Outputs[?OutputKey==`AgentContainerExecutionRoleArn`].OutputValue' --output text)
446+
447+ aws bedrock-agentcore-control update-agent-runtime \
448+ --agent-runtime-id " $EXEC_RUNTIME_ID " \
449+ --agent-runtime-artifact " {\" containerConfiguration\" :{\" containerUri\" :\" ${ECR_EXEC} :latest\" }}" \
450+ --role-arn " $EXEC_ROLE " \
451+ --network-configuration ' {"networkMode":"PUBLIC"}' \
452+ --environment-variables " {\" AWS_REGION\" :\" ${REGION} \" ,\" BEDROCK_MODEL_ID\" :\" global.anthropic.claude-sonnet-4-6\" ,\" S3_BUCKET\" :\" ${S3_BUCKET} \" ,\" STACK_NAME\" :\" ${STACK_NAME} \" ,\" DYNAMODB_TABLE\" :\" openclaw-enterprise\" ,\" DYNAMODB_REGION\" :\" ${DYNAMODB_REGION} \" ,\" SYNC_INTERVAL\" :\" 120\" }" \
453+ --region $REGION
454+ ```
455+
456+ > The standard agent image (` openclaw-multitenancy-multitenancy-agent ` ) is built automatically by ` deploy-multitenancy.sh ` . You only need this step for the executive tier.
457+
419458### Step 2: Create DynamoDB Table
420459
421460``` bash
@@ -457,6 +496,7 @@ python3 seed_knowledge.py --region $DYNAMODB_REGION
457496python3 seed_ssm_tenants.py --region $REGION --stack $STACK_NAME
458497
459498export S3_BUCKET=$S3_BUCKET
499+ export AWS_REGION=$REGION # seed_skills_final.py and seed_workspaces.py read this
460500python3 seed_skills_final.py
461501python3 seed_workspaces.py
462502python3 seed_all_workspaces.py --bucket $S3_BUCKET
0 commit comments