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

Read the talk

Harness Engineering: From a Local Agent to Composable Production Infrastructure

Selected presentation frame from Harness Engineering: Building the Production Cage for Powerful Domain Agents — Mike Chambers, AWS at 1158 seconds
Harness Engineering: From a Local Agent to Composable Production Infrastructure

Mike Chambers explains what surrounds an agent’s model, then builds through tools, persistent sessions, managed memory, cloud runtime integration and a configuration-only harness.

From a talk by Mike Chambers

At a glance

Ideas worth remembering

  • A harness is everything surrounding the model. For a personal assistant that includes memory, skills and tools; for an agent serving users it also includes runtime, identity, scaling, context management, observability and evaluation.

  • Session restoration and long-term memory serve different purposes. The local example restores conversation history and separately stores memories in files; the cloud example moves memory management into connected infrastructure outside the running agent.

  • Chambers recommends retaining deployment ownership through infrastructure as code. He applies that principle both to coding assistants helping create cloud resources and to the AgentCore deployment workflow.

  • Production harness engineering separates components so they can scale independently. Managed runtime integration is presented as handling scaling and tenant isolation, but the recording does not establish load performance or explain the isolation mechanism.

  • A built-in harness can reduce an agent to model and system-prompt configuration, while composable services allow selective integration into existing agents. The suggested 80% coverage remains an unmeasured argument rather than a demonstrated limit on how much custom development is needed.

The path to production agents

Selected presentation frame from Harness Engineering: Building the Production Cage for Powerful Domain Agents — Mike Chambers, AWS at 99 seconds
The path to production agents

Mike Chambers introduces himself as a senior AI specialist developer advocate at AWS. His background connects model education with the infrastructure around models: he describes working on a three-week generative AI course in 2023, which he says was approaching half a million enrollments, and creating an MCP Lambda handler in 2025 to simplify serverless MCP serving. He reports about 35,000 downloads a month for that handler. The presentation moves from this background into harness engineering, with live coding intended to show how the surrounding infrastructure changes as an agent grows.

0:370:40
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

Two kinds of agents, one definition of a harness

Selected presentation frame from Harness Engineering: Building the Production Cage for Powerful Domain Agents — Mike Chambers, AWS at 196 seconds
Two kinds of agents, one definition of a harness

Chambers first separates agents people use from agents they build. Coding assistants such as Claude Code and Cursor belong to the first group, alongside productivity agents that do more than generate code. The second group consists of agents developers construct for an audience. These categories can connect—a developer can build an agent someone else uses—but they place different responsibilities on the engineer.

The distinction matters when choosing how an agent should consume resources and behave. Chambers leaves aggressive token consumption to the preferences of someone using an assistant, but asks builders to think carefully about whether their design will work for its intended audience. A personal usage pattern does not automatically become an appropriate design for a service offered to other people.

He introduces a harness through the ordinary idea of straps and fastenings controlling an animal, then substitutes a model as the thing being controlled. His more useful engineering definition works by subtraction: take an agent, remove the model, and everything remaining is the harness. This makes the harness the surrounding system rather than a particular framework or prompt.

2:402:42
Suggest correction

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

2:40 · section reference included

Assistant standards and ownership of deployments

Selected presentation frame from Harness Engineering: Building the Production Cage for Powerful Domain Agents — Mike Chambers, AWS at 387 seconds
Assistant standards and ownership of deployments

For a coding assistant running on a developer’s machine with access to files, the harness includes memory behavior, skills, tools and MCP servers. Those servers can connect the assistant to documentation and other resources. A developer can assemble this environment individually, or an engineering organization can distribute it. Chambers describes harness standards as an extension of the coding standards teams have maintained for decades: shared expectations now reach into the configuration and capabilities of everyone’s coding assistant.

He presents the agent toolkit for AWS as an installable aid for agents helping with AWS development and deployment. The engineering concern behind that recommendation is what he calls slop ops: replacing manual, ad hoc cloud changes with equally ad hoc changes performed by an agent. Clicking through a console can help someone understand a system, but Chambers rejects it as the way to deploy production infrastructure.

His concrete example is asking an agent to create an S3 bucket or obtain an EC2 instance directly. He recommends asking it to produce infrastructure as code that performs those operations instead. The cloud resources still get created, but the deployment is represented in code the developer owns. The assistant can explain what is happening and help build the deployment definition without becoming the sole place where deployment decisions reside.

5:025:09
Suggest correction

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

5:02 · section reference included

Production harnesses need independently scalable parts

An agent built for users still needs memory, skills and tools, potentially exposed through MCP. Chambers emphasizes that tools can extend an agent into many kinds of activity. At cloud scale, however, those capabilities are only part of the surrounding system. The builder also has to manage the agent loop, scaling, payments, identity, runtime and context management.

He adds observability and evaluations last, then says they should have come first. They are central responsibilities of the production harness, although this part of the presentation does not specify evaluation methods or acceptance criteria. His architectural decision is more explicit: putting every responsibility into one container and scaling that container is insufficient for the thousands of users he has in mind. Each component needs its own scaling consideration. Harness engineering, in his account, is the work of arranging those parts so the agent can operate at real scale.

6:597:08
Suggest correction

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

6:59 · section reference included

A small harness: tools and a framework-managed loop

Selected presentation frame from Harness Engineering: Building the Production Cage for Powerful Domain Agents — Mike Chambers, AWS at 571 seconds
A small harness: tools and a framework-managed loop

The first code example uses the Strands agents SDK. Chambers describes importing an agent and a tool decorator, supplying a system prompt and passing in two tools. The calculator comes from an installable library, while a time tool supplies another simple capability. Asking for the time would exercise the agent’s access to that tool, but he explicitly skips running this first example.

This already qualifies as a small harness: tools surround the model, and the framework manages the loop. The developer does not have to implement that loop in the example. Its limitation is the operating environment. It would run on Chambers’s laptop, without meaningful cloud scale and without several attributes he wants in an agent he can deploy. A working SDK agent is therefore a starting layer, with more infrastructure still required.

9:059:09
Suggest correction

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

8:33 · section reference included

Restoring conversation state between invocations

Selected presentation frame from Harness Engineering: Building the Production Cage for Powerful Domain Agents — Mike Chambers, AWS at 658 seconds
Restoring conversation state between invocations

The next Strands example adds a session manager. Its purpose is to maintain session state between invocations and restore conversation history when the user returns. Chambers describes this as short- or medium-term memory rather than proper long-term memory. The example also has a separate file-based mechanism for longer-lived memories, including a remember tool the agent can choose to call to retain information about him.

He tests the local agent with a greeting and a question about who will win the World Cup. Chambers says the response recognizes that he wants Australia to win because of previous conversations. That is the relevant demonstration: information from an earlier interaction influences a later response. It does not establish predictive ability. He also says the agent acknowledges that it does not know the winner, keeping remembered preference separate from knowledge of a future outcome.

Persistence improves the local agent, but the memory pieces are still included in a program running on his machine. The next architectural step is to deploy memory separately so it can scale separately. Chambers also names the loop as something to separate for scaling, with further capabilities attached afterward. The aim is to move from adding features inside a local agent to composing independently operated parts around it.

10:0710:16
Suggest correction

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

10:07 · section reference included

Choosing an interface and provisioning managed memory

Selected presentation frame from Harness Engineering: Building the Production Cage for Powerful Domain Agents — Mike Chambers, AWS at 910 seconds
Choosing an interface and provisioning managed memory

Chambers uses Amazon Bedrock AgentCore for the cloud deployment example. Its command-line tool walks through creating an agent, and he deliberately skips the option labeled harness for now. The selected path creates a hello-world agent that can be customized. Bringing existing code is another option; for this demonstration he asks the tool to create code and chooses Python from the offered Python and TypeScript choices.

The setup also asks how callers will connect to the agent. Chambers chooses HTTP, while describing MCP serving and an interactive chat interface as alternatives. He presents the runtime as permitting different frameworks, including custom code, and models beyond Amazon’s own models or those accessed through Amazon Bedrock. In the example he keeps the offered default model. The interface, framework and model are therefore choices within the deployment rather than a single fixed combination.

Memory is the central infrastructure choice he highlights. Requesting short-term and long-term memory causes the setup to create cloud infrastructure that manages those memories separately from the running agent. Chambers describes it as connected to the agent but running asynchronously from it. This separates the execution of the agent from the operation of its memory service. The tool begins creating the local configuration, after which he switches to an example he had already prepared; this walkthrough does not establish a fresh deployment completing onstage.

12:3712:39
Suggest correction

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

12:37 · section reference included

Runtime integration, local development and inspection

Selected presentation frame from Harness Engineering: Building the Production Cage for Powerful Domain Agents — Mike Chambers, AWS at 987 seconds
Runtime integration, local development and inspection

The prepared Strands agent adds integration with the Amazon Bedrock AgentCore app. Chambers says this connection lets the runtime scale an agent and provide tenant isolation, allowing a developer to write for one user without implementing all the multi-tenant machinery. He presents that as a reduction in development work and in the complexity of security and identity handling. The walkthrough does not explain the isolation mechanism or demonstrate its behavior under load, so the supported conclusion is the responsibility he assigns to the managed runtime.

Other portions of the agent remain recognizable: tools, an MCP connection, and connections to the session manager and memory. The runtime integration surrounds these application capabilities rather than requiring the agent’s entire behavior to be reinvented. Chambers also notes that developers can use their own code, although he moves through the implementation without giving enough detail to reconstruct its invocation or memory wiring.

For local development, he runs agentcore dev from the generated project folder. It opens a browser interface connected to the locally running agent. He interacts with it and explains that code adjustments appear live in that interface. Although the project already has a deployed version, the connection he identifies during this interaction is local; the interface can also switch to the deployed agent.

Chambers describes agentcore deploy as using infrastructure as code to deploy the agent, memory, runtime and additional selected components. He then connects deployment to debugging: the interface can expose traces and stored memories so a developer can inspect what is happening. This gives concrete observability surfaces for execution and persistence, though he does not work through a trace or an evaluation result in this example.

15:3515:36
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

A configuration-only harness and selective adoption

Selected presentation frame from Harness Engineering: Building the Production Cage for Powerful Domain Agents — Mike Chambers, AWS at 1180 seconds
A configuration-only harness and selective adoption

Chambers returns to the harness option he skipped in the CLI. His argument starts from how little application behavior he had needed to specify: a system prompt and tools. He suggests that perhaps 80% of agentic use cases or agent development might already be covered by a prompt connected to MCP tools. This is a proposed estimate, without supporting measurements or a defined set of use cases in the presentation; it should not be read as an established coverage rate.

The concrete alternative is a harness built into AgentCore, configured through a simple JSON file naming a model and a system prompt. Chambers says this configuration can also be deployed with agentcore deploy, without writing agentic code. The surrounding implementation is supplied by the built-in harness, while the developer specifies the model and instructions. His explanation does not establish the configuration’s complete schema or show how tools are declared in this particular file.

His closing architectural point is composability. AgentCore capabilities can be used together or separately. An existing production agent that is already working can adopt managed, serverless long-term memory alone, integrating that component without taking the entire system. This makes selective adoption a substantive part of the design: a managed harness can supply the surrounding system, but an individual managed capability can also support an agent that keeps its existing architecture.

Chambers finishes by describing Strands agents as an open-source, model-first framework and identifying it as the framework he regularly uses. He invites further discussion and closes the session. The final distinction remains useful: the framework assembles the agent, while the composable infrastructure supplies capabilities around its operation.

17:5818:03
Suggest correction

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

17:58 · section reference included

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.