218 lines
11 KiB
Markdown
218 lines
11 KiB
Markdown
# AgentCore Project
|
|
|
|
This project contains configuration and infrastructure for an Amazon Bedrock AgentCore application.
|
|
|
|
The `agentcore/` directory is a declarative model of the project. The `agentcore/cdk/` subdirectory uses the
|
|
`@aws/agentcore-cdk` L3 constructs to deploy the configuration to AWS.
|
|
|
|
## Mental Model
|
|
|
|
The project uses a **flat resource model**. Agents, memories, credentials, gateways, evaluators, and policies are
|
|
independent top-level arrays in `agentcore.json`. There is no binding between resources in the schema — each resource is
|
|
provisioned independently. Agents discover memories and credentials at runtime via environment variables or SDK calls.
|
|
Tags defined in `agentcore.json` flow through to deployed CloudFormation resources.
|
|
|
|
## Critical Invariants
|
|
|
|
1. **Schema-First Authority:** The `.json` files are the source of truth. Do not modify agent behavior by editing
|
|
generated CDK code in `cdk/`.
|
|
2. **Resource Identity:** The `name` field determines the CloudFormation Logical ID.
|
|
- **Renaming** a resource will **destroy and recreate** it.
|
|
- **Modifying** other fields will update the resource **in-place**.
|
|
3. **Schema Validation:** If your JSON conforms to the types in `.llm-context/`, it will deploy successfully. Run
|
|
`agentcore validate` to check.
|
|
4. **Resource Removal:** Use `agentcore remove` to remove resources. Run `agentcore deploy` after removal to tear down
|
|
deployed infrastructure.
|
|
5. **Invocation Input:** Validate runtime payloads and require text prompts to be strings. If a Strands app accepts a
|
|
caller-supplied message history, normalize the history tail with `strip_trailing_tool_use()` before invocation.
|
|
|
|
## Directory Structure
|
|
|
|
```
|
|
myProject/
|
|
├── AGENTS.md # This file — AI coding assistant context
|
|
├── agentcore/
|
|
│ ├── agentcore.json # Main project config (AgentCoreProjectSpec)
|
|
│ ├── aws-targets.json # Deployment targets (account + region)
|
|
│ ├── .env.local # Secrets — API keys (gitignored)
|
|
│ ├── .llm-context/ # TypeScript type definitions for AI assistants
|
|
│ │ ├── README.md # Guide to using schema files
|
|
│ │ ├── agentcore.ts # AgentCoreProjectSpec types
|
|
│ │ └── aws-targets.ts # AWS deployment target types
|
|
│ └── cdk/ # AWS CDK project (@aws/agentcore-cdk L3 constructs)
|
|
├── app/ # Agent application code
|
|
└── evaluators/ # Custom evaluator code (if any)
|
|
```
|
|
|
|
## Schema Reference
|
|
|
|
The `agentcore/.llm-context/` directory contains TypeScript type definitions optimized for AI coding assistants. Each
|
|
file maps to a JSON config file and includes validation constraints as comments (`@regex`, `@min`, `@max`).
|
|
|
|
| JSON Config | Schema File | Root Type |
|
|
| --- | --- | --- |
|
|
| `agentcore/agentcore.json` | `agentcore/.llm-context/agentcore.ts` | `AgentCoreProjectSpec` |
|
|
| `agentcore/aws-targets.json` | `agentcore/.llm-context/aws-targets.ts` | `AwsDeploymentTarget[]` |
|
|
|
|
### Key Types
|
|
|
|
- **AgentCoreProjectSpec**: Root config with runtimes, memories, knowledge bases, credentials, evaluators, online evals and insights, gateways, policy engines, config bundles, A/B tests, harness registrations, datasets, and payment managers
|
|
- **AgentEnvSpec**: Agent configuration (build type, entrypoint, code location, runtime version, network mode)
|
|
- **Memory**: Memory resource with strategies (SEMANTIC, SUMMARIZATION, USER_PREFERENCE, EPISODIC) and expiry
|
|
- **Credential**: API key or OAuth credential provider
|
|
- **AgentCoreGateway**: MCP gateway with targets (Lambda, MCP server, OpenAPI, Smithy, API Gateway, web-search, knowledge-base)
|
|
- **Evaluator**: LLM-as-a-Judge or code-based evaluator
|
|
- **OnlineEvalConfig**: Continuous evaluation pipeline bound to an agent
|
|
- **OnlineInsightsConfig** _[preview]_: Continuous failure-pattern analysis bound to an agent
|
|
- **KnowledgeBase**: Managed Bedrock Knowledge Base auto-wired to a gateway
|
|
- **Harness**: Declarative agent — runtime + tools + skills + memory + observability without writing agent code
|
|
- **PolicyEngine** + **Policy**: Cedar policy engine with form-based guardrails (Bedrock content filters, prompt-attack, sensitive-info) or raw Cedar policies
|
|
- **PaymentManager** + **PaymentConnector**: x402-protocol payment orchestration with provider credentials (CoinbaseCDP, StripePrivy)
|
|
- **ConfigBundle**: Versioned runtime configuration as a separately-deployable resource
|
|
- **Dataset**: Curated session dataset for batch evaluation and recommendation runs
|
|
- **RuntimeEndpoint**: Named endpoint (e.g. `PROMPT_V1`) targeting a specific runtime version
|
|
|
|
### Common Enum Values
|
|
|
|
- **BuildType**: `'CodeZip'` | `'Container'`
|
|
- **NetworkMode**: `'PUBLIC'` | `'VPC'`
|
|
- **RuntimeVersion**: `'PYTHON_3_10'` | `'PYTHON_3_11'` | `'PYTHON_3_12'` | `'PYTHON_3_13'` | `'PYTHON_3_14'` | `'NODE_18'` | `'NODE_20'` | `'NODE_22'`
|
|
- **MemoryStrategyType**: `'SEMANTIC'` | `'SUMMARIZATION'` | `'USER_PREFERENCE'` | `'EPISODIC'`
|
|
- **GatewayTargetType**: `'lambda'` | `'mcpServer'` | `'openApiSchema'` | `'smithyModel'` | `'apiGateway'` | `'lambdaFunctionArn'` | `'connector'` (web-search, bedrock-knowledge-bases)
|
|
- **ModelProvider**: `'Bedrock'` | `'Gemini'` | `'OpenAI'` | `'Anthropic'`
|
|
- **PaymentProvider**: `'CoinbaseCDP'` | `'StripePrivy'`
|
|
- **PolicyEnforcementMode**: `'ACTIVE'` | `'PASSIVE'`
|
|
- **GuardrailContentFilter**: `'VIOLENCE'` | `'HATE'` | `'SEXUAL'` | `'MISCONDUCT'` | `'INSULTS'`
|
|
|
|
### Build Types
|
|
|
|
- **CodeZip**: Python source packaged as a zip and deployed directly to AgentCore Runtime.
|
|
- **Container**: Docker image built in CodeBuild (ARM64), pushed to a per-agent ECR repository. Requires a `Dockerfile`
|
|
in the agent's `codeLocation` directory. For local development (`agentcore dev`), the container is built and run
|
|
locally with volume-mounted hot-reload.
|
|
|
|
### Supported Frameworks (for template agents)
|
|
|
|
- **Strands** — Bedrock, Anthropic, OpenAI, Gemini
|
|
- **LangChain/LangGraph** — Bedrock, Anthropic, OpenAI, Gemini
|
|
- **GoogleADK** — Gemini
|
|
- **OpenAI Agents** — OpenAI
|
|
- **Autogen** — Bedrock, Anthropic, OpenAI, Gemini
|
|
|
|
### Protocols
|
|
|
|
- **HTTP** — Standard HTTP agent endpoint
|
|
- **MCP** — Model Context Protocol server
|
|
- **A2A** — Agent-to-Agent protocol (Google A2A)
|
|
|
|
## Deployment
|
|
|
|
Deployments are orchestrated through the CLI:
|
|
|
|
```bash
|
|
agentcore deploy # Synthesizes CDK and deploys to AWS
|
|
agentcore status # Shows deployment status
|
|
```
|
|
|
|
Alternatively, deploy directly via CDK:
|
|
|
|
```bash
|
|
cd agentcore/cdk
|
|
npm install
|
|
npx cdk synth
|
|
npx cdk deploy
|
|
```
|
|
|
|
## Editing Schemas
|
|
|
|
When modifying JSON config files:
|
|
|
|
1. Read the corresponding `agentcore/.llm-context/*.ts` file for type definitions
|
|
2. Check validation constraint comments (`@regex`, `@min`, `@max`)
|
|
3. Use exact enum values as string literals
|
|
4. Use CloudFormation-safe names (alphanumeric, start with letter)
|
|
5. Run `agentcore validate` to verify changes
|
|
|
|
## Harness Export
|
|
|
|
`agentcore export harness` converts a harness configuration into a deployable Strands Python agent under `app/<agentName>/`.
|
|
|
|
**After every export, you MUST read `app/<agentName>/EXPORT_NOTES.md` before proceeding.**
|
|
|
|
This file lists any manual follow-up items required before the agent will deploy or run correctly — missing files to create, IAM policies to add, or configuration steps the exporter could not automate. A clean export produces "No manual steps required." Complete every item in the file before running `agentcore deploy`.
|
|
|
|
```bash
|
|
agentcore export harness --name <harnessName> # generates app/<agentName>/EXPORT_NOTES.md
|
|
cat app/<agentName>/EXPORT_NOTES.md # read this before touching anything else
|
|
```
|
|
|
|
## CLI Commands
|
|
|
|
Run `agentcore --help` or `agentcore <command> --help` for full flags. Commonly used:
|
|
|
|
**Project lifecycle**
|
|
|
|
| Command | Description |
|
|
| --- | --- |
|
|
| `agentcore create` | Create a new project |
|
|
| `agentcore dev` | Run agent locally with hot-reload |
|
|
| `agentcore deploy` | Deploy to AWS |
|
|
| `agentcore invoke` | Invoke agent (local or deployed) |
|
|
| `agentcore status` | Show deployment status |
|
|
| `agentcore validate` | Validate configuration |
|
|
| `agentcore package` | Package agent artifacts |
|
|
| `agentcore import` | Import resources from a Bedrock AgentCore Starter Toolkit project |
|
|
|
|
**Resources**
|
|
|
|
| Command | Description |
|
|
| --- | --- |
|
|
| `agentcore add <resource>` | Add agent, memory, credential, gateway, gateway-target, evaluator, online-eval, online-insights, knowledge-base, harness, policy-engine, policy, payment-manager, payment-connector, config-bundle, dataset, runtime-endpoint |
|
|
| `agentcore remove <resource>` | Remove any resource |
|
|
| `agentcore export harness` | Export a harness to a Strands runtime agent under `app/<agentName>/` |
|
|
|
|
**Jobs (run, view, archive, lifecycle)**
|
|
|
|
| Command | Description |
|
|
| --- | --- |
|
|
| `agentcore run eval` | Run on-demand evaluation against agent traces |
|
|
| `agentcore run batch-evaluation` | Run evaluators across all sessions at scale |
|
|
| `agentcore run recommendation` | Optimize prompts or tool descriptions from real traces |
|
|
| `agentcore run insights` _[preview]_ | Run failure-pattern analysis across sessions |
|
|
| `agentcore run ab-test` | Start an A/B test (config-bundle or target-based) |
|
|
| `agentcore run ingest` | Start a fresh ingestion job for every data source on a deployed knowledge base |
|
|
| `agentcore view <type>` | List or view jobs (recommendation, batch-evaluation, ab-test, insights) |
|
|
| `agentcore archive <type>` | Delete a job on the service + clear local history |
|
|
| `agentcore stop <type>` | Stop a running batch-evaluation or ab-test |
|
|
| `agentcore promote ab-test` | Apply the winning variant to `agentcore.json` |
|
|
| `agentcore pause <type>` / `agentcore resume <type>` | Pause/resume a deployed online-eval, online-insights, or ab-test |
|
|
|
|
**Config bundles & datasets**
|
|
|
|
| Command | Description |
|
|
| --- | --- |
|
|
| `agentcore config-bundle versions` (alias `cb versions`) | List version history for a bundle |
|
|
| `agentcore config-bundle diff` | Diff two versions of a bundle |
|
|
| `agentcore config-bundle create-branch` | Create a new branch on an existing bundle |
|
|
| `agentcore dataset download` | Download a dataset version locally |
|
|
| `agentcore dataset publish-version` | Publish a new dataset version |
|
|
| `agentcore dataset remove-version` | Remove a dataset version |
|
|
|
|
**Observability & history**
|
|
|
|
| Command | Description |
|
|
| --- | --- |
|
|
| `agentcore logs` | Stream/search agent runtime logs |
|
|
| `agentcore logs evals` | Stream/search online-eval logs |
|
|
| `agentcore traces list` / `agentcore traces get` | List recent traces or download one to JSON |
|
|
| `agentcore evals history` | View past on-demand eval results |
|
|
|
|
**Utilities**
|
|
|
|
| Command | Description |
|
|
| --- | --- |
|
|
| `agentcore fetch access` | Fetch access info for deployed gateway or agent |
|
|
| `agentcore feedback` | Send feedback (with optional screenshot) to the AgentCore team |
|
|
| `agentcore update` | Check for and install CLI updates |
|
|
| `agentcore telemetry` | View or change telemetry preferences |
|