Harness Engineering: Building the Production Cage for Powerful Domain Agents — Mike Chambers, AWS

Read the talk

Harness Engineering: Building the Production Cage for Powerful Domain Agents

Mike Chambers builds from a small Strands agent to persistent sessions, separately managed memory and a cloud runtime, then shows how a built-in harness can replace application code with configuration.

From a talk by Mike Chambers

At a glance

Ideas worth remembering

  • A harness is everything left after removing the model from an agent. Serving users adds runtime, identity, scaling, context management, observability and evaluation to the assistant's memory, skills and tools.

  • Session restoration carries conversation history across invocations; an explicit remembering tool retains selected information separately. The World Cup example shows remembered preference influencing a later answer.

  • Infrastructure as code keeps deployment definitions under developer control, whether an assistant helps create cloud resources or the AgentCore CLI deploys the agent and its surrounding services.

  • Separately managed memory changes the architecture: persistence becomes connected infrastructure outside agent execution, with its own scaling consideration.

  • A built-in harness can reduce application work to configuration, while composable services let an existing agent adopt managed memory alone.

Using an agent and building one create different responsibilities

A coding assistant on your machine and an agent serving an audience can use similar models while demanding very different engineering. Mike Chambers, a senior AI specialist developer advocate at AWS, approaches that difference through the infrastructure surrounding the model. His opening background moves from generative AI education in 2023 to an MCP Lambda handler in 2025 that simplifies serverless tool serving. The live examples will make the same progression: start with an agent that works locally, then change how its surrounding parts operate.

Recording frame at 99 seconds
Recording frame at 99 seconds

The first distinction is between agents we use and agents we build. Claude Code, Cursor and Kiro belong to the first category, alongside productivity assistants. The second category consists of agents developers offer to other people. These roles can connect—you can build an agent somebody else uses—but the builder has to choose behavior and resource use for that audience. A user's enthusiasm for consuming tokens does not settle how a service should operate.

A harness begins with the ordinary image of straps and fastenings controlling an animal; substitute a model and the analogy works. The more useful engineering definition is subtraction: take an agent, remove its model, and everything remaining is the harness. This definition includes the machinery that gives the model context, connects it to actions and manages its operation. It does not require a particular framework.

0:160:46
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:16 · section reference included

Assistant standards should preserve ownership of deployments

For a coding assistant with access to local files, the harness determines how it uses memory, which skills it follows and which tools or MCP servers it can reach. Documentation servers are one concrete destination. Teams can distribute these choices across their developers' assistants, extending familiar coding standards into shared harness standards. The environment becomes part of how the team asks software to be written.

Recording frame at 387 seconds
Recording frame at 387 seconds

The Agent Toolkit for AWS is presented as an installable aid for assistants helping with AWS development and deployment. Its purpose connects to Chambers's objection to “slop ops”: letting an agent make ad hoc cloud changes reproduces the problem of clicking through a console, only through a different operator. Console exploration can help explain a system. Production provisioning needs a representation the developer continues to own.

Consider the request to create an S3 bucket or obtain an EC2 instance. A direct agent action leaves the resource creation in the agent's interaction with the cloud. Chambers's preferred sequence asks the assistant to produce infrastructure as code, then uses that code to create the resources. The desired cloud result remains the same; the deployment definition now exists as code under the developer's control. The assistant helps describe and construct the deployment rather than becoming the only place its decisions live.

4:455:15
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

4:45 · section reference included

A production harness has parts that must scale separately

An agent built for users still needs memory, skills and tools. MCP can connect it to many kinds of functionality, but those connections are only part of operating a service. The builder also has to place the loop, payments, identity, runtime and context management somewhere. Observability and evaluations appear last in Chambers's list, followed immediately by his correction: they should come first.

Putting every responsibility into one container makes the container the unit you replicate. Chambers rejects that as the architecture for the thousands of users he has in mind: each component needs its own scaling consideration. The next examples focus especially on memory. Adding persistence inside a local program improves its behavior; moving memory into a connected service changes how that capability can operate and scale. That separation is his working meaning of harness engineering.

6:447:14
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

6:44 · section reference included

From tools on a laptop to a conversation that survives an invocation

The first example in Kiro uses the Strands Agents SDK. An agent receives a system prompt and two tools: an installable calculator and a time function defined with a tool decorator. This is already a small harness. The tools supply capabilities around the model, and Strands manages the agent loop. Chambers skips executing the proposed time query; the example establishes the structure of a laptop agent, with deployment capabilities still to add. He also enjoys pointing out that he wrote this one himself: “I deserve a round of applause.”

Recording frame at 571 seconds
Recording frame at 571 seconds

The second Strands example, generated with Kiro, adds two distinct ways to retain information:

  • Session restoration: A session manager maintains state between invocations and rehydrates conversation history when the user returns. This carries the conversation forward instead of making each invocation start without its earlier context.
  • Explicit remembering: A remember tool lets the agent choose to retain information about the user, with longer-lived memories stored in files. This is separate from restoring the conversation itself.

The observable change appears in a World Cup question. Chambers starts the local agent, enters a greeting, then asks who will win. The response recognizes that he wants Australia to win, a preference he attributes to their previous conversations. The causal sequence is useful: earlier interaction leaves retained context; the session manager restores history on a later invocation; that context influences the new answer. The walkthrough does not distinguish whether this particular preference also passed through the file-based remember mechanism.

Remembering a preference does not give the model knowledge of the winner. Chambers says the agent also acknowledges that it does not know. The result is personalization: a later answer can refer to what the user cares about while leaving the outcome uncertain. Persistence supplies context for the answer, rather than evidence for a prediction.

What crosses the gap between two conversations? The flow below follows the history-restoration path in the example. The important relationship is between retained conversation state and the later response: the later invocation can use earlier information because the harness restores it. Both the agent and its persistence mechanisms still run on Chambers's machine, so the next step changes where memory is managed.

How it fits togetherConversation history connects separate invocations

Contain context about the user's preference for Australia.

The session manager restores earlier conversation context before the returning user receives a personalized answer.

8:148:44
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

8:14 · section reference included

Choose the interface, then provision memory beside the agent

Amazon Bedrock AgentCore supplies the cloud infrastructure in the next example. Its CLI walks through an agent setup, initially skipping the option called harness. This route can accept existing code or create a hello-world agent for customization. Chambers chooses generated Python code from the offered Python and TypeScript options.

Recording frame at 911 seconds
Recording frame at 911 seconds

Several choices remain separate in this setup:

  • Caller interface: HTTP is the selected entry point. MCP serving and AG-UI for interactive chat agents are presented as alternatives.
  • Agent implementation: Strands is the example framework, but Chambers describes support for other frameworks or custom code.
  • Model access: The runtime is presented as supporting models beyond Amazon's own offerings and those accessed through Bedrock. The demonstration keeps the offered default model.

Memory is the consequential infrastructure choice. Selecting short-term and long-term memory causes the setup to create cloud infrastructure to manage those capabilities separately from the running agent. Chambers describes the memory infrastructure as connected to the agent and running asynchronously from it. The agent can use memory without containing the memory service inside its own execution environment.

What changes when memory moves outside the agent? The topology below shows the selected HTTP entry point, the agent's runtime integration and the separate memory infrastructure. The separation makes independent operation visible: memory remains connected to the agent while becoming its own managed component. After beginning local configuration, Chambers switches to a prepared project he had already deployed, so this sequence is a setup walkthrough rather than a fresh deployment completing onstage.

How it fits togetherAgent execution and memory become separate components

The caller interface selected in the CLI.

The selected deployment connects an HTTP-facing agent to memory infrastructure outside the running agent.

12:3513:05
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

12:35 · section reference included

Keep the agent recognizable while changing how it runs

The prepared project is still a recognizable Strands agent, now linked to the AgentCore app. Chambers assigns scaling and multi-tenant isolation to the managed runtime: developers can write an agent for one user without writing all the machinery for multiple tenants themselves. That is a substantial shift in responsibility, although the walkthrough does not explain the isolation mechanism or measure behavior under load.

The application capabilities remain familiar: tools, an MCP connection, a session manager, memory connections and a system prompt. Runtime integration surrounds them. The design therefore separates what the agent does from infrastructure that operates it, while still requiring the application to connect to the selected services.

agentcore dev opens a browser interface connected to the locally running agent. Chambers interacts with that local instance and describes seeing code updates appear live. The same interface can switch to a deployed version. Local iteration and hosted interaction share a development interface, but they address different running instances.

agentcore deploy applies the earlier infrastructure-as-code principle to the harness itself. It deploys the agent, runtime, memory and other selected components. Inspection then reaches both execution and persistence: traces help reveal what happened during a run, and stored memories help reveal what information survived it. These are concrete ways to investigate behavior; the talk emphasizes evaluation as a priority without developing an evaluation method.

15:3516:05
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

15:35 · section reference included

The skipped harness option removes the agent code

The ending returns to the CLI option Chambers deliberately skipped. His examples needed relatively little application behavior: a system prompt and tools. He suggests that perhaps 80% of agentic use cases or agent development could be covered by a prompt connected to MCP tools. This is his proposed estimate, with no measured coverage rate or defined population of use cases, so its useful implication is a design question: how much custom orchestration does this particular agent actually need?

Recording frame at 1180 seconds
Recording frame at 1180 seconds

The built-in harness offers a concrete alternative. The configuration shown is a simple JSON file naming a model and a system prompt, deployable with agentcore deploy without writing agentic code. The harness supplies the surrounding implementation while the developer specifies the model and instructions. The shown fields illustrate the simplified entry point; they do not explain how tools are declared in that configuration.

There are therefore two useful adoption choices:

  • Use the built-in harness: Supply configuration and let the provided implementation run the agent, when that implementation meets the use case.
  • Adopt a component: Keep an existing production agent and integrate a selected capability. Chambers's closing example adds managed, serverless long-term memory to an agent that already works.

Selective adoption preserves the point of separating the parts in the first place. A useful memory service need not require replacing the entire agent architecture. Strands, which Chambers closes by describing as an open-source, model-first framework, assembles the agent in these examples; AgentCore capabilities provide composable infrastructure around its operation. The final choice is how much of that surrounding work to build yourself and how much to take as a managed component.

18:0418:34
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

18:04 · section reference included

Resources

From the talk

  • Sample code for the serverless MCP work introduced at the opening, including a Strands client and a time tool. The README distinguishes this example repository from the separately maintained handler package.

  • A hands-on continuation through runtime, tools, memory, identity, policy, observability and evaluations. Its progressive assistant examples develop the integration details beyond this short walkthrough.

Read the complete timestamped transcript
  1. 0:16

    Hello everybody. Hello AI engineers. Are

  2. 0:19

    we all having a good time still?

  3. 0:22

    >> I'm having a good time. I mean, look at

  4. 0:24

    me. I'm up here. I'm loving this. Um, so

  5. 0:26

    yeah, thanks so much for joining me. Um,

  6. 0:28

    I want to come and talk to you all about

  7. 0:30

    harness engineering and all that kind of

  8. 0:32

    stuff. Um, let me tell you who I am in

  9. 0:35

    case you've not met me before. Um, my

  10. 0:37

    name is Mike Chambers and I'm a senior

  11. 0:40

    AI specialist developer advocate. Um,

  12. 0:42

    and I work at Amazon at AWS. Um, little

  13. 0:47

    bit about like uh how I managed to get

  14. 0:50

    to stand here which is a very exciting

  15. 0:52

    time for me. Um so um quite a while ago

  16. 0:56

    in terms of generative AI anyway back in

  17. 0:58

    2023 um I had the amazing awesome

  18. 1:02

    privilege uh to work with Antia my

  19. 1:05

    colleague at the time and now she works

  20. 1:06

    for Amazon AGI you've probably seen her

  21. 1:09

    on this stage before um and the amazing

  22. 1:11

    Dr. Andrew Ing on on a course about

  23. 1:14

    generative AI with LLMs um sort of can I

  24. 1:18

    say that we're approaching half a

  25. 1:19

    million enrollments with that? It looks

  26. 1:21

    like that's the case. And on a

  27. 1:22

    three-week course, that's pretty cool.

  28. 1:23

    If you can't tell, in that image, um,

  29. 1:26

    I'm playing Transformers with Android.

  30. 1:28

    That seemed like a really funny thing to

  31. 1:29

    do at the time. Um, in 2025, I created

  32. 1:32

    an MCP Lambda handler. It's downloaded

  33. 1:35

    still to this day about 35,000 times a

  34. 1:37

    month. Um, to help people in some of the

  35. 1:39

    simplest ways of getting serverless MCP

  36. 1:42

    serving happening. Um, I'm going to talk

  37. 1:44

    about other things in relation to that

  38. 1:46

    this time. So, we've moved on from that.

  39. 1:48

    Um and in 2026, so the AWS is actually

  40. 1:51

    one of the founding members of the

  41. 1:53

    Aentka Foundation, part of the Linux

  42. 1:56

    Foundation. Um I'm doing a little bit of

  43. 1:58

    work behind the scenes on that. Hope to

  44. 1:59

    do a lot more of that as well. So little

  45. 2:01

    bit about me. Um so as I've been um

  46. 2:06

    preparing for this, oh by the way, I did

  47. 2:08

    reread the abstract for this session and

  48. 2:10

    realized I said I'd be doing some live

  49. 2:12

    coding and so I will. So all combined

  50. 2:16

    fingers crossed please that that all

  51. 2:18

    works for us. Um but as I've been sort

  52. 2:20

    of traveling around a little bit as I do

  53. 2:22

    and I was at the AI engineers uh session

  54. 2:25

    uh summit uh uh conference in Melbourne

  55. 2:28

    um and took a lot of it in and also from

  56. 2:30

    the beginning of this week as well. I

  57. 2:32

    just wanted to to to summarize some of

  58. 2:35

    the things that I'm seeing and I'm

  59. 2:36

    thinking and I really want to get across

  60. 2:38

    and and what really matters to me and

  61. 2:40

    that's this. There are two different

  62. 2:42

    types of agents. Um, so we talk about

  63. 2:45

    agents all the time, but I see two

  64. 2:48

    distinct types of agents. And as I say

  65. 2:50

    this, it's going to become really

  66. 2:52

    obvious, but they're the agents that we

  67. 2:54

    use. And so, you know, this is claude

  68. 2:57

    code and cursor and kirao and all of

  69. 2:59

    those types of things. And also things

  70. 3:01

    that don't just generate code, things

  71. 3:02

    that we use for productivity and the

  72. 3:04

    like as well. And so those agents we use

  73. 3:07

    in a certain type of way. There's the

  74. 3:09

    agents that we use. And then on the

  75. 3:11

    other side of it, we've got the agents

  76. 3:13

    that we build. And that's actually more

  77. 3:15

    to do with me and and actually it's more

  78. 3:17

    to do with this presentation as well.

  79. 3:18

    It's agents that we build and how we

  80. 3:21

    think about agents that we build. Um and

  81. 3:23

    and so I do really think that these

  82. 3:26

    don't two things are quite separate and

  83. 3:28

    they chain together as well. I might

  84. 3:29

    build an agent that you use and this

  85. 3:32

    still holds true. So token maxing, all

  86. 3:34

    that kind of stuff, go for it if that's

  87. 3:36

    what you want to do with an agent that

  88. 3:38

    you use. But with an agent that you

  89. 3:39

    build, think about it carefully. Make

  90. 3:42

    sure that you're putting it together in

  91. 3:43

    a way that's going to work for the

  92. 3:45

    audience who's going to use that. So, I

  93. 3:47

    promised that we were talking about

  94. 3:48

    harnesses and harness engineering. So,

  95. 3:50

    let's define harness. I'm sure I'm not

  96. 3:52

    the only person to have put something

  97. 3:54

    like this up. I don't usually do this

  98. 3:55

    kind of thing and apologize if it makes

  99. 3:57

    your skin crawl. This is a dictionary

  100. 3:59

    definition of harness. A harness is a

  101. 4:02

    set of straps and fastenings used to

  102. 4:04

    control an animal. But if we took animal

  103. 4:06

    out of here and put model in there, then

  104. 4:08

    actually it's pretty right, right, that

  105. 4:10

    that's kind of what a harness is. Other

  106. 4:12

    people have done a much better job than

  107. 4:14

    just the basic dictionary definition of

  108. 4:16

    what a harness is. So Lang Chain has got

  109. 4:19

    a article out. You've probably seen

  110. 4:20

    stuff like that. Martinfowler.com

  111. 4:22

    although Martin didn't write it. It was

  112. 4:24

    Pitta wrote this. Harness engineering

  113. 4:26

    for coding agents. Agents that we use,

  114. 4:29

    right? So there are other ways of

  115. 4:30

    looking at harnesses. What about Amazon

  116. 4:33

    then? How do we see um harnesses? Well,

  117. 4:36

    um no, okay, this is the wrong kind of

  118. 4:38

    harness. Sorry, we do have strong

  119. 4:40

    opinions on harnesses. I'm going to show

  120. 4:41

    you all of that, but we sell all kinds

  121. 4:43

    of things. So, in a nutshell, and if you

  122. 4:46

    read those articles, um and if you've

  123. 4:49

    had the conversations around here at

  124. 4:51

    this event, of course, um a harness, you

  125. 4:54

    take an agent, remove the model part

  126. 4:56

    from it, and everything that you have

  127. 4:57

    left, that's the harness. Okay, so let's

  128. 5:02

    think about that in context of an agent

  129. 5:04

    that we use. And so it's pretty, I

  130. 5:08

    think, fairly straightforward. I have

  131. 5:09

    this coding assistant. It's probably on

  132. 5:11

    my machine. It has access to my files.

  133. 5:13

    And I create a harness or the place I

  134. 5:16

    work at has created a harness for me

  135. 5:18

    which contains um how it's going to use

  136. 5:21

    memory, the skills that I want it to

  137. 5:23

    use, tools and MCP servers to allow it

  138. 5:25

    to go to be able to go and connect to

  139. 5:27

    documentation servers and the like. and

  140. 5:30

    and well set up engineering teams have

  141. 5:33

    got their standards that they've had.

  142. 5:35

    They've had coding standards for

  143. 5:36

    decades, but now they have basically

  144. 5:38

    harness standards, the things that they

  145. 5:40

    want to deploy to everybody's coding

  146. 5:42

    assistance. So, in a nutshell, that's

  147. 5:45

    what it is. I'm not going to talk to too

  148. 5:47

    much more about that. Um, but I do want

  149. 5:49

    to share one QR code with you, and I'll

  150. 5:50

    try and give you a little bit of warning

  151. 5:52

    before I bring QR codes out. This is the

  152. 5:54

    agent toolkit for AWS. This is u

  153. 5:57

    available on GitHub. Of course, it's

  154. 5:59

    free. You can install it and it helps

  155. 6:01

    you if this is what you're doing and

  156. 6:03

    you're deploying code. If you're

  157. 6:04

    deploying on AWS or you're thinking

  158. 6:07

    about deploying on AWS or or maybe you

  159. 6:09

    will one day, grab this toolkit, enable

  160. 6:12

    your um uh agent to to help you in the

  161. 6:14

    right direction. It's instructions for

  162. 6:16

    how to install it on pretty much

  163. 6:17

    everything. And the reason why I get

  164. 6:20

    passionate about this is because I don't

  165. 6:22

    want to see any more slop ops. Um, so we

  166. 6:25

    always used to push back against click

  167. 6:27

    ops in, you know, in the professional

  168. 6:29

    cloud development space. Clicking around

  169. 6:31

    on the console is great for being able

  170. 6:32

    to figure out what's going on, but it's

  171. 6:34

    not how you deploy things into

  172. 6:36

    production. We can ask an agent what's

  173. 6:38

    going on, but we don't want to ask the

  174. 6:40

    agent to spin up an S3 bucket, get me an

  175. 6:43

    EC2 instance, whatever it might be. We

  176. 6:45

    want the agent to build up our

  177. 6:48

    infrastructure as code which is going to

  178. 6:50

    go and do that so that we still own our

  179. 6:53

    deployments in the cloud. So no more

  180. 6:54

    swap ops. Okay. So that's the agent that

  181. 6:57

    we use. Now let's go and talk about the

  182. 6:59

    agent that we're going to build. And I'm

  183. 7:01

    going to get into the code as quickly as

  184. 7:02

    I can and we'll do as much as it has

  185. 7:05

    time for. So how do we think about a

  186. 7:08

    harness in relation to the agent that

  187. 7:09

    we're building? Exactly the same to a

  188. 7:12

    point. Yes. We still want to have how

  189. 7:14

    are we going to manage the memory? How

  190. 7:16

    are we going to manage the skills and

  191. 7:18

    tools in MCP by the way that that belies

  192. 7:21

    a lot of stuff, right? Because you can

  193. 7:22

    pretty much extend an agent to do almost

  194. 7:24

    anything you want with a whole bunch of

  195. 7:26

    different types of tools which could be

  196. 7:28

    via MCP.

  197. 7:30

    But with an agent that I am building, I

  198. 7:33

    need to think about a lot more than just

  199. 7:35

    that. especially if um like at Amazon

  200. 7:38

    and like at cloud scale I'm deploying my

  201. 7:41

    agent out to the masses. So how do I

  202. 7:44

    actually manage the loop? How do I

  203. 7:47

    manage um scaling payments, memory,

  204. 7:49

    identity, skills, runtime, context

  205. 7:51

    management, the rest of it and I have

  206. 7:53

    left it to the last thing but it should

  207. 7:54

    be the first thing that I say.

  208. 7:56

    Observability and evaluations super

  209. 7:59

    super important. How do we actually deal

  210. 8:01

    with this? Do I write all of this code

  211. 8:04

    down into one container and just deploy

  212. 8:06

    it and scale that? Not really. If I want

  213. 8:08

    to be scaling to thousands of users, I

  214. 8:10

    need to think about each individual of

  215. 8:12

    these components and how I'm going to

  216. 8:14

    scale them out individually. And that to

  217. 8:16

    me is harness engineering. This is the

  218. 8:19

    serious side of stuff. This is the big

  219. 8:21

    stuff that we want to get harnesses

  220. 8:23

    working at real scale. Okay, let's see

  221. 8:26

    if this works. I can feel your combined

  222. 8:29

    goodwill being sent my way that we're

  223. 8:31

    going to try and make some code work.

  224. 8:33

    So, I'm here in Kira. This is my IDE of

  225. 8:35

    choice here. And I've got a few

  226. 8:37

    different samples that we're just going

  227. 8:38

    to race through watching that clock

  228. 8:40

    countdown fast. So, um just just make

  229. 8:44

    sure that we're all on the same page

  230. 8:45

    here and hopefully you can all see this.

  231. 8:48

    Um of the code which I'm about to show

  232. 8:50

    you, by the way, one piece of code, not

  233. 8:52

    this one, has been generated by Curo.

  234. 8:55

    Everything else is either a tool or this

  235. 8:57

    one I actually wrote it myself. I didn't

  236. 9:00

    use an agent for this. I know I deserve

  237. 9:02

    a round of applause, but it's okay.

  238. 9:04

    [laughter]

  239. 9:05

    So, this is uh this is a Strand agent.

  240. 9:09

    So, I've just taken the Strands agents

  241. 9:10

    SDK. Um, and hopefully this kind of

  242. 9:12

    thing is kind of familiar. I've brought

  243. 9:14

    in an agent. I brought in the tool

  244. 9:16

    decorator and I'm creating myself an

  245. 9:18

    agent. The tool definition is down here.

  246. 9:20

    Um, and so I just pass in my system

  247. 9:23

    prompt. Things are pretty simple at this

  248. 9:25

    stage and I've passed in a couple of

  249. 9:26

    tools. Calculator is something that's a

  250. 9:28

    library I can install and get time is

  251. 9:31

    the one that we always use because I

  252. 9:33

    don't tend to use agents to book flights

  253. 9:35

    certainly not ones like this. Um and so

  254. 9:37

    I can say something simple here like

  255. 9:39

    what is the time? I'm not going to run

  256. 9:40

    this because you know the time but you

  257. 9:42

    can see generally how this works. Is

  258. 9:44

    this a harness? Sort of. There's not an

  259. 9:48

    awful lot to it, right? We've got the

  260. 9:49

    tools in there. Our loop is being

  261. 9:51

    managed for us by the framework. This is

  262. 9:53

    pretty cool. So that's good. But

  263. 9:55

    obviously if I was to run this, this is

  264. 9:57

    running on my laptop. It's not running

  265. 9:59

    at any particular scale. And we're

  266. 10:01

    missing some of the attributes that I

  267. 10:03

    want from the agents that I'm going to

  268. 10:04

    deploy. Let me move on to my next agent

  269. 10:07

    quickly. So this is also a strand agent,

  270. 10:10

    but this one I actually asked Kira to

  271. 10:12

    write it for me for this session um

  272. 10:14

    because I wanted to include some more

  273. 10:16

    stuff. And so inside of this agent, the

  274. 10:20

    one main thing that I want to point out

  275. 10:21

    is that I am uh included a session

  276. 10:24

    manager. So my session manager is

  277. 10:27

    helping me to maintain session state

  278. 10:29

    between invocations. So this is a sort

  279. 10:32

    of memory. It's a kind of medium-term

  280. 10:34

    short-term memory kind of thing. It's

  281. 10:35

    not proper long-term memory, but it is

  282. 10:37

    there. And actually, it does store

  283. 10:40

    long-term memories in files which are

  284. 10:42

    down the side here that it's uh included

  285. 10:44

    for us. So, if I just scroll down here,

  286. 10:47

    you can see uh yeah, here's the agent

  287. 10:49

    definition itself. Um, and we've got a

  288. 10:52

    bit more of a system prompt because Kira

  289. 10:53

    couldn't help itself. Um, and we've got

  290. 10:55

    some tools here defined. Um, including a

  291. 10:58

    remember tool that the agent can decide

  292. 11:00

    to use to remember stuff about me. Um,

  293. 11:02

    and then I've got my uh session manager

  294. 11:05

    down there. And that session manager is

  295. 11:06

    going to rehydrate the conversation

  296. 11:08

    history when I come back to chat to it

  297. 11:11

    the next time. and maybe the next time

  298. 11:14

    is now. So, let's see if we can get this

  299. 11:16

    working. Now, again, this is running on

  300. 11:17

    my local machine. Um, and this is a demo

  301. 11:20

    here. So, let's just type in hello

  302. 11:22

    because I'm scared of typing too much

  303. 11:24

    and spelling it wrong. Um, and it says,

  304. 11:26

    uh, yeah, keep testing me. Bring it on.

  305. 11:28

    Excellent. Um, um, who will win the

  306. 11:33

    World Cup? So, obviously I need to know

  307. 11:37

    this. And, um, what does it say? Yeah.

  308. 11:40

    So, while you could just say Australia,

  309. 11:42

    it knows I want Australia to win. It's

  310. 11:44

    where I'm currently living. I'm

  311. 11:45

    Australia. So, obviously Australia is

  312. 11:48

    going to win the World Cup, but why has

  313. 11:50

    it got that? It's because of previous

  314. 11:52

    conversations that we've had. And

  315. 11:54

    obviously, it's being honest that it has

  316. 11:56

    no clue because that's coming from the

  317. 11:58

    large language model, of course. So,

  318. 12:01

    okay, looks at a couple of different

  319. 12:02

    agents there, blasted through this. This

  320. 12:05

    is um running on my machine. So this

  321. 12:07

    isn't really getting me to clouds scale

  322. 12:09

    of course and I'm I'm picking up and I'm

  323. 12:12

    including various pieces in this like

  324. 12:14

    memory. So let's go next. How do we get

  325. 12:17

    to the point where I can deploy

  326. 12:19

    something like this if not this actual

  327. 12:21

    agent out at cloudscale and take things

  328. 12:24

    like memory and deploy that separately

  329. 12:27

    so it can scale separately. taking our

  330. 12:29

    loop out so it can scale separately and

  331. 12:32

    we can then bolt in all kinds of other

  332. 12:34

    things as well. So in order to do that

  333. 12:37

    I'm going to use something called um

  334. 12:39

    agent core um and so we have bedrock

  335. 12:41

    agent core. It's part of the stack that

  336. 12:43

    we have at AWS and that's how I'm doing

  337. 12:45

    this and how I'm deploying. So I've done

  338. 12:48

    that already but I want to show you how

  339. 12:50

    to start out with that and how we do

  340. 12:52

    this. So if I go to here uh yeah I'm

  341. 12:56

    ready to go. So, I have a command line

  342. 12:58

    tool on my machine, the agent core

  343. 13:00

    command line. Um, and so there's a QR

  344. 13:02

    code at the end, as you might imagine,

  345. 13:04

    so that you can get hold of this. Um,

  346. 13:06

    but I can use this to help me deploy my

  347. 13:08

    agent. Now, this steps me through like

  348. 13:11

    many of these types of tools do. Um, and

  349. 13:13

    it sort of steps me through what do you

  350. 13:14

    want to do? So, this is my woohoo agent.

  351. 13:17

    Um, and it's going to ask me a bunch of

  352. 13:19

    stuff. And I wanted to show you some of

  353. 13:20

    this as we step through. Now, strangely,

  354. 13:23

    I'm not going to select harness. And

  355. 13:25

    we'll come back to why I'm not selecting

  356. 13:26

    harness in a second, but I'm saying I

  357. 13:28

    wanted to deploy an agent. And what's

  358. 13:30

    going to happen here is this command

  359. 13:31

    line tool is actually going to step me

  360. 13:34

    through and actually write an entire

  361. 13:36

    agent. It's basically a hello world

  362. 13:38

    agent that I can then go and customize

  363. 13:40

    myself. Um, and so using this command

  364. 13:42

    line is an easy way to get started with

  365. 13:44

    agent core. So I'm going to keep the

  366. 13:46

    default name. In fact, I'm probably

  367. 13:48

    going to keep all the defaults here just

  368. 13:49

    so we can see what's the option. Of

  369. 13:51

    course, I can bring code if I want, but

  370. 13:53

    I'm going to ask it to create some code

  371. 13:55

    for me. So, it says, well, what do you

  372. 13:57

    want? Python or TypeScript? And back in

  373. 13:59

    the day, I used to do things like

  374. 14:01

    activate functions and back propagation

  375. 14:03

    in the machine learning space. So,

  376. 14:04

    Python it is for me. So, I will choose

  377. 14:07

    that. Um, and there's some deployment

  378. 14:09

    options. There's also this I just want

  379. 14:11

    to point this out like how can we

  380. 14:13

    actually go and connect into our agent.

  381. 14:15

    So, our agent that's running at scale in

  382. 14:17

    the cloud, HTTP is probably the obvious

  383. 14:19

    one, but we might want to have it being

  384. 14:21

    served behind MCP. We might want to use

  385. 14:23

    awesome little things like AGUI so we

  386. 14:26

    can make nice interactive chat agents,

  387. 14:29

    but I'm going to say HTTP. We can use

  388. 14:31

    any um framework we want. I happen to

  389. 14:34

    use Strand's agents SDK, but anything

  390. 14:37

    you could write your own framework if

  391. 14:38

    you want to um or your own own base

  392. 14:41

    code. Any model is supported by this as

  393. 14:44

    well. So, we don't just have to use the

  394. 14:46

    Amazon models. Um, and we don't have to

  395. 14:48

    use the ones from Amazon Bedrock, but we

  396. 14:50

    can use any model. I'm using the one

  397. 14:51

    here. I'm using Sonic 4.5 just because

  398. 14:53

    that's offered to me at default. And

  399. 14:56

    here's memory. So, this is the one thing

  400. 14:58

    I wanted to show you. So, I can come in

  401. 14:59

    here and ask for long-term and

  402. 15:01

    short-term memory to be deployed. And

  403. 15:03

    we'll see what this means in just a

  404. 15:04

    second, but it's basically going to

  405. 15:06

    create for us cloud infrastructure which

  406. 15:08

    is going to manage those memories for us

  407. 15:10

    separately from our running agent

  408. 15:13

    running asynchronously from our agent

  409. 15:14

    and connected of course. So there's

  410. 15:17

    obviously other kinds of things we can

  411. 15:18

    do. We can hit enter and it will start

  412. 15:20

    to create the configuration of this

  413. 15:21

    agent on my machine. Now I'm going to

  414. 15:24

    skip over here and come back to the

  415. 15:27

    actual code I have because I've already

  416. 15:29

    done this of course. Um, and this is the

  417. 15:31

    agent that it would be currently

  418. 15:33

    deploying. Something like this. So,

  419. 15:35

    we've built up here. This is a little

  420. 15:36

    bit more complex. So, this is a strands

  421. 15:39

    agent. You'll notice that it's got a few

  422. 15:41

    more things added in. So, it's got the

  423. 15:43

    linkage into Amazon Bedrock agent core

  424. 15:45

    app, but pretty much apart from that,

  425. 15:48

    that's all you need in order to be able

  426. 15:50

    to scale this agent out at runtime and

  427. 15:53

    do multi-tenant isolation. So you can

  428. 15:56

    write an agent that works for one user

  429. 15:58

    and then scale that out without you

  430. 16:01

    having to write all the multi-tenented

  431. 16:03

    code. It's a massive saver and from a

  432. 16:05

    security and identity perspective, it's

  433. 16:08

    makes it so much simpler. It's um it's

  434. 16:10

    very very useful. So if I scroll down

  435. 16:12

    through here, you can see the rest of it

  436. 16:14

    is looking pretty similar. We've got

  437. 16:16

    some test tools in here. We've got a

  438. 16:18

    connection to MCP, so we can see how

  439. 16:20

    that is done. Um, and we've got the uh

  440. 16:23

    connection into our session manager and

  441. 16:25

    our memory which is all built in here.

  442. 16:28

    So, if I scroll down a bit more, we'll

  443. 16:30

    be able to see somewhere where we

  444. 16:32

    actually invoke the thing um which is

  445. 16:34

    there. Um, and the system prompt is is

  446. 16:36

    somewhere at the top. So, we can we can

  447. 16:38

    scroll through this code. I'm going

  448. 16:40

    through it quickly. You can write your

  449. 16:41

    own code and do this with it as well. If

  450. 16:43

    I go back over to my um uh code here for

  451. 16:46

    just one second. I'm in the folder now

  452. 16:49

    that has been created with that code

  453. 16:51

    locally, it is actually deployed, but

  454. 16:53

    let's assume it's not deployed quite

  455. 16:55

    yet. I can come back in and type in

  456. 16:57

    agentcore dev. And what that's going to

  457. 16:59

    do for me um Wi-Fi permitting is it will

  458. 17:02

    spin up for us a web uh browser. And

  459. 17:05

    inside of that web browser, we're now

  460. 17:07

    connected to that agent running locally.

  461. 17:09

    So if I make updates to that code, we

  462. 17:11

    would see that happen in real time here.

  463. 17:14

    So I can say hello, I am doing the press

  464. 17:19

    now. Um it knows that I'm coming to do a

  465. 17:22

    presentation, but I think it does

  466. 17:23

    anyway. Um and so yeah, you can interact

  467. 17:25

    with the agent here. You can make

  468. 17:26

    adjustments to the um to the code and

  469. 17:29

    you'll see it update live here. Um but

  470. 17:31

    you can also use this to switch over to

  471. 17:33

    the live um deployed version. So with

  472. 17:37

    agent core deploy it will use

  473. 17:39

    infrastructure as co code like I talked

  474. 17:42

    about before to deploy your agent out at

  475. 17:45

    scale with the memory with the agent

  476. 17:47

    with runtime and with many other

  477. 17:48

    components if you choose to do so you

  478. 17:50

    can use this interface then to go and

  479. 17:52

    look at traces look at memory stored

  480. 17:54

    look at all that stuff so that you can

  481. 17:55

    debug and see what's going on. Now, when

  482. 17:58

    we stepped through the um the the the

  483. 18:02

    console just a second ago through the

  484. 18:03

    the CLI app a second ago, we didn't

  485. 18:05

    choose harness. I skipped out on that

  486. 18:07

    one and I'm just going to show you that

  487. 18:09

    quickly now. So, one thing we can do

  488. 18:12

    instead is I think we can get to the

  489. 18:14

    point you've seen I've deployed agents.

  490. 18:16

    I didn't do very much. I just did a

  491. 18:17

    system prompt and some tools and go. And

  492. 18:20

    there's an argument to be made that

  493. 18:21

    essentially if that's possible then

  494. 18:23

    maybe 80% of um agentic use cases 80% of

  495. 18:27

    agent development is kind of solved

  496. 18:28

    already. We don't need to do much more

  497. 18:30

    than system prompt connect to some MCP

  498. 18:32

    tools and we've got what we want. And if

  499. 18:35

    that's the case then we have harness

  500. 18:37

    built into agent core. This is the

  501. 18:40

    configuration for an agent. I just have

  502. 18:42

    a simple JSON which is showing me which

  503. 18:44

    model do I want to use and what system

  504. 18:47

    prompt do I want to use. Can't get much

  505. 18:49

    more simpler than that system prompt.

  506. 18:51

    Um, and then this can also be deployed

  507. 18:53

    with agent core deploy. So at this point

  508. 18:55

    we don't have even any agentic code

  509. 18:58

    either. We can just deploy it straight

  510. 19:00

    out. If you want to know any more about

  511. 19:02

    any of this then please do come and see

  512. 19:03

    us down on the booth or see me after

  513. 19:05

    this session. I'll be more than happy to

  514. 19:07

    talk to you at length about this. 18

  515. 19:09

    minutes is such a short amount of time

  516. 19:11

    for me to be able to talk about almost

  517. 19:13

    anything. But this is essentially all of

  518. 19:17

    these components on here. There's a

  519. 19:18

    mapping somewhere into something that

  520. 19:20

    Agent Core has. I apologize for the

  521. 19:23

    colors. It seemed like a good idea at

  522. 19:24

    the time. Um, but this is an overview of

  523. 19:28

    the different capabilities that are

  524. 19:30

    composable out of agent core. So, you

  525. 19:32

    can take any of these and use any of

  526. 19:35

    them together or separately. If you have

  527. 19:38

    an agent that's running in production

  528. 19:40

    very happily at the moment, but you like

  529. 19:42

    the idea of having long-term memory

  530. 19:45

    managed for you serverless, then you can

  531. 19:47

    just take that part and integrate it.

  532. 19:49

    That's totally something you can do.

  533. 19:50

    Here's a QR code. Sorry, probably should

  534. 19:51

    have put that there a second ago. I'm

  535. 19:53

    moving this QR code in just a moment,

  536. 19:55

    but Amazon Bedrock agent core is that if

  537. 19:58

    you're interested in the Strands agents,

  538. 20:00

    which I happen to be using for this,

  539. 20:02

    it's obviously it's it's free because

  540. 20:04

    it's open source. Um, and it's a um a

  541. 20:07

    model first framework for putting

  542. 20:09

    together agents. It's super fast, it's

  543. 20:11

    super powerful, and it's what I use all

  544. 20:13

    the time. Thank you so much for being

  545. 20:16

    with me in this presentation. Please

  546. 20:18

    feel free to connect with me on

  547. 20:19

    LinkedIn. I'd love to carry on the

  548. 20:21

    conversation with you. have a fantastic

  549. 20:24

    rest of show and have a safe travel as

  550. 20:26

    you go home after the event. Thank you

  551. 20:28

    so much.