Agentic AI AcademyAgentic AI Academy

Pricing, Regions & the Two CLIs

Reading the consumption model and the fast-moving facts

Beginner 13 minBuilderDecision-maker
What you'll be able to do
  • Explain consumption-based pricing by its five dimensions (per-session active compute, per-request, per-record, pass-through, free/preview) instead of memorizing rates
  • Describe active-compute billing as vCPU-hours + GB-hours that excludes I/O wait, and identify where Identity is free behind Runtime/Gateway
  • Reason about region availability and the GA timeline as volatile facts, defaulting examples to us-east-1 / us-west-2
  • Disambiguate the legacy Python `bedrock-agentcore-starter-toolkit` from the new npm `@aws/agentcore` CLI, and map each one's verbs
  • Explain that both CLIs wrap the agent with the same `bedrock-agentcore` Python SDK and deploy to the same serverless Runtime
  • Read any `[VOLATILE]` fact correctly: learn the concept, cite the official live page, and re-verify the number before relying on it
At a glance

AgentCore bills on a consumption model with no upfront commitment, and almost every concrete number — rates, regions, GA dates, package versions — is volatile. This lesson teaches the durable parts: the five pricing patterns and the active-compute dimension behind Runtime/Browser/Code Interpreter, how to reason about region availability, and the single most common setup trip-up — two different CLIs that both ship an `agentcore` binary with different verbs but deploy to the same Runtime.

  1. 1Consumption pricing: learn the five patterns, not the numbers
  2. 2Active-compute billing: vCPU-hours + GB-hours, I/O wait excluded
  3. 3Regions and the GA timeline are volatile — default to us-east-1 / us-west-2
  4. 4The two CLIs: same binary name, different verbs, one Runtime
  5. 5Both CLIs wrap the same SDK and deploy to the same Runtime
  6. 6How to read a [VOLATILE] fact without getting burned

Consumption pricing: learn the five patterns, not the numbers

AWS describes AgentCore as "flexible, consumption-based pricing with no upfront commitments or minimum fees." There is no per-seat license and no reserved capacity — you pay for what your agents actually consume. Across roughly twelve independently billable components (one or more per service), every line item falls into one of five patterns:

#PatternWhat it metersWhere you see it
1Per-session active computevCPU-hours + GB-hours while code is actively runningRuntime, Browser, Code Interpreter
2Per-requesteach API/tool/token callGateway (per invocation, separate search rate), Identity (per token/API-key request), Policy (per authorization)
3Per-recordeach stored/retrieved unitMemory (short-term events, long-term records/month, retrievals), Registry (per record)
4Pass-throughyou pay the downstream service, not AgentCoreObservability (→ CloudWatch rates), Payments (→ wallet provider)
5Free / previewno charge in current statusIdentity behind Runtime/Gateway; Optimization recommendations (preview)

If you internalize these five patterns, you can estimate the shape of a bill for any architecture — a chatty Gateway-fronted tool layer is request-dominated; a long-conversation memory app is record-dominated; a code-heavy data agent is compute-dominated — without ever memorizing a rate.

Every rate in the dossier and on the pricing page is tagged [VOLATILE]. As of writing, the illustrative figures look like this — treat them as ballpark only and confirm on the live page:

text
# Illustrative only — VOLATILE, verify https://aws.amazon.com/bedrock/agentcore/pricing/
Runtime / Browser / Code Interpreter  ~$0.0895 / vCPU-hr   + ~$0.00945 / GB-hr
Gateway                               ~$0.005 / 1k invocations; ~$0.025 / 1k search
Identity                              ~$0.010 / 1k token requests to non-AWS (free via Runtime/Gateway)
Memory                                ~$0.25 / 1k short-term events; ~$0.50 / 1k retrievals
Policy                                ~$0.000025 / authorization request

There are also incidental storage costs that are easy to forget: container images land in ECR storage, direct-code (CodeZip) packages land in S3 Standard, and Browser profiles land in S3 Standard.

Watch out

Never quote a rate as a timeless fact

Pricing changed once already: preview was free through Sept 16 2025, and standard pricing began Sept 17 2025. The numbers above are research-time ballparks tagged [VOLATILE]. In any estimate you give a stakeholder, link https://aws.amazon.com/bedrock/agentcore/pricing/ and label your figures "as of <date>, verify the live page."

Tip

Free Tier exists, but verify the amount

As of writing, new customers get up to ~$200 in Free Tier credits plus per-module preview allotments (e.g. Registry's first 5k records free). That figure is [VOLATILE] — confirm the current credit and allotments on the pricing page before you bank on them for a proof-of-concept budget.

Active-compute billing: vCPU-hours + GB-hours, I/O wait excluded

The pattern worth understanding in detail is per-session active compute, because it governs the three services where your code (or a managed runtime) executes: Runtime, Browser, and Code Interpreter. These bill on two metered dimensions:

  • vCPU-hours — CPU consumed while your session is actively running.
  • GB-hours — memory consumed while your session is actively running.

The metering is fine-grained: per-second, with a 1-second minimum and a 128 MB memory minimum. The crucial nuance — and the one that makes AgentCore cheaper than a naively-sized container for agent workloads — is that I/O wait is excluded. When your agent is blocked waiting on a model response, a slow tool, or a downstream HTTP call, you are not billed for active compute during that wait. Agents spend a large fraction of wall-clock time waiting on LLMs and tools, so excluding I/O wait can make the effective cost dramatically lower than the session's elapsed duration would suggest.

A mental sketch of the meter (conceptual, not an SDK call):

text
session elapsed:  |--run--|----wait on model----|--run--|--wait on tool--|--run--|
billed compute:   |XXXXXXX|                      |XXXXXXX|                |XXXXXXX|
                  ^ vCPU-hrs + GB-hrs accrue ONLY during the run segments (I/O wait excluded)

Two more cost facts that catch people:

  • Identity is free when used behind Runtime or Gateway. You only pay Identity's per-request rate (~$0.010/1k as of writing, [VOLATILE]) for token/API-key requests made to non-AWS providers outside that path. Inbound auth and the workload-token flow that Runtime/Gateway drive for you are not a separate Identity charge.
  • Pass-through services hide cost elsewhere. Observability is a cheap AgentCore line item because the real spend is in CloudWatch (logs, metrics, traces). Payments adds no AWS charge — you pay the wallet provider. Don't read a tiny AgentCore line and conclude the feature is nearly free.

Key insight

Why "excludes I/O wait" is the headline number

An agent turn might take 8 seconds of wall time but only 0.4s of actual CPU — the rest is the model thinking and tools responding. Because active-compute billing excludes I/O wait, you pay roughly for that 0.4s of vCPU-hours, not the 8s. This is the structural reason serverless agent hosting can undercut an always-on container you'd otherwise keep warm.

Note

Memory has several sub-dimensions

Memory is per-record, but it splits into short-term events, long-term records per month, and retrievals — each metered separately. A memory-heavy app can accumulate cost across all three at once, so model them independently when estimating.

Regions and the GA timeline are volatile — default to us-east-1 / us-west-2

Region availability and GA dates change as AWS expands the service, so treat both as [VOLATILE] and never hard-code a region list from memory. The durable skill is knowing where to look and which regions are the safe default for examples.

The GA timeline (as of writing — confirm on AWS What's New):

  • July 16 2025 — Preview announced at AWS Summit NY (the original 7 services).
  • Sept 16 2025 — end of the preview free window.
  • Sept 17 2025 — standard pricing begins.
  • October 13 2025GA: Runtime, Memory, Gateway, Identity, and Observability reached general availability (Browser and Code Interpreter are part of the platform too). Newer modules followed: Evaluations went GA in early 2026; Registry, Payments, and Optimization remained in preview. (A reported Policy GA around March 2026 is unverified in first-party sources — don't state it as fact.)

Regions (as of writing — verify the live regions page): at GA, AgentCore was available in 9 regions:

text
# VOLATILE — verify https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/agentcore-regions.html
us-east-1   us-east-2   us-west-2
ap-south-1  ap-southeast-1  ap-southeast-2  ap-northeast-1
eu-central-1  eu-west-1

Throughout this course, examples default to us-east-1 or us-west-2 — they were available at GA, host the broadest Bedrock model selection, and keep snippets copy-pasteable. When you deploy for real, pick the region closest to your users and confirm it is on the live regions list and that the Bedrock models you need are enabled there.

In the CLIs, region is explicit. With the starter toolkit you pass -r/--region; with either CLI your ambient AWS config (AWS_REGION / ~/.aws/config) and credentials apply:

bash
# Starter toolkit: pin the region explicitly
agentcore configure -e my_agent.py -r us-west-2

# Or rely on ambient AWS config (applies to both CLIs)
export AWS_REGION=us-east-1

Watch out

"Available in a region" is not "your model is enabled there"

AgentCore being in a region tells you nothing about whether a specific Bedrock model is enabled in your account there. Model access is granted per-region in the Bedrock console. A deploy that fails to invoke a model is often a region/model-access mismatch, not an AgentCore problem.

The two CLIs: same binary name, different verbs, one Runtime

This is the single most common setup trip-up in AgentCore. There are two different command-line tools, both of which install a binary called agentcore, and they expose different verbs. Copy-pasting commands across tutorials that assume different CLIs is the number-one reason a "get started" walkthrough fails.

Starter Toolkit (legacy)AgentCore CLI (current / recommended)
Packagebedrock-agentcore-starter-toolkit (PyPI)@aws/agentcore (npm)
Installpip install bedrock-agentcore-starter-toolkitnpm install -g @aws/agentcore
Runtime neededPython ≥3.10Node.js 20+ (plus Python 3.10+)
GitHubaws/bedrock-agentcore-starter-toolkitaws/agentcore-cli
Core verbsconfigure, launch/deploy, invoke, status, destroycreate, dev, deploy, invoke, status, add, remove, logs, traces
Build infraAWS CodeBuild (default) / local DockerAWS CDK + CloudFormation
Config files.bedrock_agentcore.yaml + generated Dockerfileagentcore/agentcore.json, aws-targets.json, .env.local

The toolkit's README now marks itself (legacy) and points users to the new AgentCore CLI.

Legacy starter toolkit — the configure → launch → invoke flow:

bash
pip install bedrock-agentcore-starter-toolkit
agentcore configure -e my_agent.py            # writes .bedrock_agentcore.yaml + Dockerfile
agentcore launch                              # default: AWS CodeBuild, no local Docker
agentcore invoke '{"prompt":"Hello"}'
agentcore status                              # agent ARN, endpoint, log group
agentcore destroy --force                     # teardown

New AgentCore CLI — the create → dev → deploy → invoke flow:

bash
npm install -g @aws/agentcore
agentcore create --name MyAgent --framework Strands --protocol HTTP --model-provider Bedrock --memory none
cd MyAgent
agentcore dev                                 # hot-reload server + inspector on :8080
agentcore deploy                              # package + CDK synth + CloudFormation deploy
agentcore invoke "Tell me a joke"             # --stream, --session-id, --runtime
agentcore status; agentcore logs; agentcore traces list
agentcore remove all && agentcore deploy      # teardown

Note the launch vs deploy wrinkle even within the legacy tool: the devguide and the Python Runtime API use launch / .launch(), while the current starter-toolkit CLI (v0.3.x) renamed the verb to deploy (with destroy for teardown) — same operation, different word. The Python method always stays .launch().

Watch out

Pin which CLI a tutorial assumes

If a guide says agentcore configure it is the legacy Python toolkit; if it says agentcore create it is the new npm CLI. Mixing them — agentcore configure then agentcore deploy, or agentcore create then agentcore launch — fails because the verbs belong to different tools. Decide which CLI you're following and stick to it for the whole walkthrough.

Tip

Prereqs differ, and that bites first

The legacy toolkit needs only Python ≥3.10. The new CLI needs Node.js 20+ AND Python 3.10+, plus AWS CDK with cdk bootstrap already run in the target account/region — a fresh account that skips cdk bootstrap will fail the first agentcore deploy.

Both CLIs wrap the same SDK and deploy to the same Runtime

Despite the different verbs, both CLIs are thin orchestration over the same two things: the bedrock-agentcore Python SDK that wraps your agent, and the same serverless AgentCore Runtime they deploy it to. The CLI you pick changes the developer experience and the build/deploy plumbing (CodeBuild vs CDK/CloudFormation), not the artifact or where it runs.

The invariant in every case is the SDK wrapper. You turn a plain function into the Runtime's HTTP service contract with BedrockAgentCoreApp, @app.entrypoint, and app.run():

python
from bedrock_agentcore import BedrockAgentCoreApp

app = BedrockAgentCoreApp()

@app.entrypoint
def invoke(payload):
    user_message = payload.get("prompt", "")
    # ... call your framework / model here ...
    return {"result": f"You said: {user_message}"}

if __name__ == "__main__":
    app.run()   # binds 0.0.0.0:8080; serves /invocations + /ping

This exact my_agent.py is what the legacy toolkit points agentcore configure -e my_agent.py at, and it is the same SDK the new CLI scaffolds for you with agentcore create. Both then deploy to the identical serverless Runtime, which gives you per-session isolation, autoscaling, and CloudWatch logging regardless of which CLI pushed the build.

The build paths differ but converge:

text
              ┌─ legacy toolkit ─ configure/launch ─→ CodeBuild → ARM64 image / CodeZip ─┐
your agent ──▶│  (bedrock-agentcore SDK wrapper)                                          ├─▶ same AgentCore Runtime
              └─ new CLI ──────── create/dev/deploy ─→ CDK → CloudFormation ─────────────┘

Practical consequence: your agent code is portable across the two CLIs. If you start on the legacy toolkit and later move to the new CLI (or vice-versa), the BedrockAgentCoreApp entrypoint doesn't change — only the surrounding config files and the deploy command do. That portability is exactly why understanding the SDK matters more than memorizing either CLI's flags.

Key insight

One artifact, two front doors

Think of the bedrock-agentcore SDK as the contract and the Runtime as the destination. The two CLIs are just different front doors to the same building: the legacy toolkit drives CodeBuild, the new CLI drives CDK/CloudFormation, but both deliver the same SDK-wrapped agent to the same serverless Runtime endpoint.

How to read a [VOLATILE] fact without getting burned

Half of "setup" knowledge in a fast-moving service is facts that expire: pricing, region lists, GA dates, preview-vs-GA status, SDK/CLI versions, and model IDs. The dossier tags every one of these [VOLATILE]. The professional discipline is a three-step rule:

  1. Learn the concept, not the number. Know that Runtime bills on active vCPU-hours + GB-hours excluding I/O wait — not the exact dollar figure. Know that there's a regions page — not the exact count today.

  2. Cite the official live source. Every volatile claim should travel with the canonical AWS URL so anyone (including future-you) can re-check it. Bookmark the four that matter most:

    text
    Pricing   https://aws.amazon.com/bedrock/agentcore/pricing/
    Regions   https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/agentcore-regions.html
    Quotas    https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/bedrock-agentcore-limits.html
    GA / What's New  https://aws.amazon.com/about-aws/whats-new/2025/10/amazon-bedrock-agentcore-available/
  3. Re-verify before you rely on it. Before a cost estimate, a region decision, a customer commitment, or pinning a package version, open the live page and confirm. Package versions are a classic example — as of writing the SDK reported bedrock-agentcore 1.13.0 and the starter toolkit 0.3.9, but those move; check PyPI before pinning.

There's also a stricter tier: facts marked UNVERIFIED in the dossier (e.g. the exact Policy GA date, which exists only in third-party reporting). For those, either omit them or hedge explicitly ("reportedly… — not confirmed in first-party docs"). Never launder an unverified rumor into an asserted fact.

A quick way to caption a volatile figure in your own notes or docs:

text
Runtime active compute ≈ $0.0895/vCPU-hr  [as of <today's date>; VOLATILE — verify pricing page]

That one-line habit — value, date, source, VOLATILE tag — is what separates an estimate a stakeholder can trust from a number that quietly goes stale.

Example

Spot the volatile claim

"AgentCore is in 9 regions and Runtime costs $0.0895 per vCPU-hour" packs two volatile facts (region count, rate) and zero sources — a reviewer should reject it. Rewrite: "AgentCore is available in several regions (verify the regions page) and Runtime bills per vCPU-hour and GB-hour of active compute; for the current rate see the pricing page."

Try it: Estimate a bill by pattern, then prove the two CLIs out

Goal: reason about cost without memorizing rates, confirm the volatile facts against live AWS pages, and see firsthand that both CLIs target the same SDK and Runtime.

  1. Classify by pattern. For a hypothetical agent that (a) runs a code-analysis tool, (b) is fronted by a Gateway exposing 30 tools, and (c) remembers user preferences across sessions, list which of the five pricing patterns each part falls under (active compute / per-request / per-record / pass-through / free-preview). Don't look up any rate yet — just classify.

  2. Verify the volatile numbers. Open https://aws.amazon.com/bedrock/agentcore/pricing/ and fill in the current vCPU-hour, GB-hour, Gateway-per-1k-invocations, and Memory-per-1k-events rates. Write each as value [as of <today>, source: pricing page]. Note anything that differs from the research-time ballparks in this lesson.

  3. Confirm regions and GA. Open the regions page and the What's New GA post. Record how many regions are listed today, whether us-east-1 and us-west-2 are present, and the GA date. Flag any region that has appeared since the 9 listed in this lesson.

  4. Install and identify both CLIs. In a scratch environment, pip install bedrock-agentcore-starter-toolkit and npm install -g @aws/agentcore. Run agentcore --help for each and capture the verb list. Confirm that the legacy tool shows configure/launch(or deploy)/invoke and the new one shows create/dev/deploy/invoke.

  5. Wrap one agent, two ways (no deploy needed). Write a minimal my_agent.py using BedrockAgentCoreApp, @app.entrypoint, and app.run(). Point the legacy toolkit at it with agentcore configure -e my_agent.py -r us-west-2 and inspect the generated .bedrock_agentcore.yaml. Separately run agentcore create --name MyAgent --framework Strands --defaults with the new CLI and inspect its agentcore/agentcore.json. Confirm both reference the same SDK wrapper concept even though the config files differ.

  6. Reflect (3-4 sentences). Which pricing pattern would dominate the bill for your hypothetical agent, and why? Which two numbers in this lesson were most out of date when you checked the live pages? And if a colleague pasted agentcore configure followed by agentcore deploy, what would you tell them?

Key takeaways

  1. 1AgentCore is consumption-based with no upfront commitment; ~12 billable components reduce to 5 patterns: per-session active compute, per-request, per-record, pass-through, and free/preview. Learn the pattern, link the live pricing page — never memorize a rate.
  2. 2Active compute (Runtime, Browser, Code Interpreter) bills on vCPU-hours + GB-hours, per-second with a 1s and 128 MB minimum, and crucially EXCLUDES I/O wait — so time spent waiting on models/tools isn't billed. Identity is free behind Runtime/Gateway; Observability and Payments are pass-through.
  3. 3Regions and GA dates are volatile: GA was Oct 13 2025 across the original modules, with ~9 regions at GA. Verify the live regions page; course examples default to us-east-1 / us-west-2.
  4. 4Two CLIs both ship an `agentcore` binary with DIFFERENT verbs: legacy Python `bedrock-agentcore-starter-toolkit` (`configure`/`launch`/`invoke`/`status`/`destroy`) vs new npm `@aws/agentcore` (`create`/`dev`/`deploy`/`invoke`/`status`). Pin which CLI a tutorial assumes; mixing verbs fails.
  5. 5Both CLIs wrap the agent with the same `bedrock-agentcore` Python SDK (`BedrockAgentCoreApp`, `@app.entrypoint`, `app.run()`) and deploy to the same serverless Runtime. Only the build/deploy plumbing differs (CodeBuild vs CDK/CloudFormation), so your agent code is portable across them.
  6. 6Read every [VOLATILE] fact with discipline: learn the concept, cite the official source URL, and re-verify before relying on a number. Omit or explicitly hedge anything marked UNVERIFIED (e.g. the Policy GA date).

Quiz

Lock in what you learned

Check your understanding

0 / 4 answered

1.A teammate sizes an AgentCore Runtime bill by multiplying the session's total wall-clock duration by the vCPU-hour and GB-hour rates. Why is this estimate too high?

2.You're following a tutorial that says to run `agentcore configure -e my_agent.py`, then a second tutorial whose next step is `agentcore deploy`. The deploy command errors. What's the most likely cause?

3.Which statement about the relationship between the two CLIs and the Runtime is correct?

4.A draft doc states: "AgentCore runs in 9 regions and Runtime costs $0.0895 per vCPU-hour." According to the volatile-fact discipline, what's the best fix?

Go deeper

Hand-picked sources to keep learning