npx skills add https://github.com/adaptationio/skrillz --skill bedrock-agentcoreSKILL.md
Amazon Bedrock AgentCore
Overview
Amazon Bedrock AgentCore is an agentic platform for building, deploying, and operating effective AI agents securely at scale—no infrastructure management needed. It provides framework-agnostic primitives that work with popular open-source frameworks (Strands, LangGraph, CrewAI, Autogen) and any model.
Purpose: Transform any AI agent into a production-ready application with enterprise-grade infrastructure
Pattern: Capabilities-based (6 independent service modules)
Key Principles (validated by AWS December 2025):
- Framework Agnostic - Works with any agent framework or model
- Zero Infrastructure - Fully managed, no ops overhead
- Session Isolation - Complete data isolation between sessions
- Enterprise Security - VPC, PrivateLink, identity integration
- Composable Services - Use only what you need
- Production Ready - Built for scale, reliability, and security
Quality Targets:
- Deployment: < 5 minutes from code to production
- Latency: Low-latency to 8-hour async workloads
- Observability: Full CloudWatch integration
When to Use
Use bedrock-agentcore when:
- Building production AI agents on AWS
- Need managed infrastructure for agent deployment
- Require session isolation and enterprise security
- Want to use existing agent frameworks (LangGraph, CrewAI, etc.)
- Need browser automation or code execution capabilities
- Integrating with existing identity providers
When NOT to Use:
- Simple Bedrock model invocations (use bedrock-runtime)
- Standard Bedrock Agents with action groups (use bedrock-agent)
- Non-AWS deployments
Prerequisites
Required
- AWS account with Bedrock access
- IAM permissions for AgentCore services
- Python 3.10+ (for SDK)
Recommended
bedrock-agentcore-sdk-pythoninstalledbedrock-agentcore-starter-toolkitCLI- Foundation model access enabled (Claude, etc.)
Installation
# Install SDK and CLI
pip install bedrock-agentcore strands-agents bedrock-agentcore-starter-toolkit
# Verify installation
agentcore --help
Core Services
1. AgentCore Runtime
Secure, session-isolated compute for running agent code.
Boto3 Client:
import boto3
# Data plane operations
client = boto3.client('bedrock-agentcore')
# Control plane operations
control = boto3.client('bedrock-agentcore-control')
Create Agent Runtime:
# Using starter toolkit
# agentcore configure -e main.py -n my-agent
# agentcore deploy
# Using boto3 control plane
response = control.create_agent_runtime(
name='my-production-agent',
description='Customer service agent',
agentRuntimeArtifact={
's3': {
'uri': 's3://my-bucket/agent-package.zip'
}
},
roleArn='arn:aws:iam::123456789012:role/AgentCoreExecutionRole',
pythonRuntime='PYTHON_3_13',
entryPoint=['main.py']
)
agent_runtime_arn = response['agentRuntimeArn']
Invoke Agent:
# Invoke deployed agent
response = client.invoke_agent_runtime(
agentRuntimeArn='arn:aws:bedrock-agentcore:us-east-1:123456789012:agent-runtime/xxx',
runtimeSessionId='session-123',
payload={
'prompt': 'What is my order status?',
'context': {'user_id': 'user-456'}
}
)
result = response['payload']
print(result)
Agent Entry Point Structure:
from bedrock_agentcore import BedrockAgentCoreApp
from strands import Agent
app = BedrockAgentCoreApp(debug=True)
agent = Agent()
@app.entrypoint
def invoke(payload):
"""Main agent entry point"""
user_message = payload.get("prompt", "Hello!")
app.logger.info(f"Processing: {user_message}")
result = agent(user_message)
return {"result": result.message}
if __name__ == "__main__":
app.run()
2. AgentCore Gateway
Transforms existing APIs and Lambda functions into agent-compatible tools with semantic search discovery.
Create Gateway:
response = control.create_gateway(
name='customer-service-gateway',
description='Gateway for customer service tools',
protocolType='REST'
)
gateway_arn = response['gatewayArn']
Add Gateway Target (Tool):
# Add an existing Lambda as a tool
response = control.create_gateway_target(
gatewayId='gateway-xxx',
name='GetOrderStatus',
description='Retrieves order status by order ID',
targetConfiguration={
'lambdaTarget': {
'lambdaArn': 'arn:aws:lambda:us-east-1:123456789012:function:GetOrder'
}
},
toolSchema={
'name': 'get_order_status',
'description': 'Get the current status of a customer order',
'inputSchema': {
'type': 'object',
'properties': {
'order_id': {
'type': 'string',
'description': 'The unique order identifier'
}
},
'required': ['order_id']
}
}
)
**
...