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.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.”
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
remembertool 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.
Contain context about the user's preference for Australia.
The session manager restores earlier conversation context before the returning user receives a personalized answer.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
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.
The caller interface selected in the CLI.
The selected deployment connects an HTTP-facing agent to memory infrastructure outside the running agent.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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?
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Further reading
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.
Related talks
- Ship it! Building Production-Ready Agents
Chambers's earlier dice-rolling example develops the model, prompt, loop, history and tool responsibilities that this talk expands into a production harness.
- Introducing Strands Agents, an Open Source AI Agents SDK
A focused next recording on the SDK used throughout the local and runtime-integrated examples.
Read the complete timestamped transcript
- 0:16
Hello everybody. Hello AI engineers. Are
- 0:19
we all having a good time still?
- 0:22
>> I'm having a good time. I mean, look at
- 0:24
me. I'm up here. I'm loving this. Um, so
- 0:26
yeah, thanks so much for joining me. Um,
- 0:28
I want to come and talk to you all about
- 0:30
harness engineering and all that kind of
- 0:32
stuff. Um, let me tell you who I am in
- 0:35
case you've not met me before. Um, my
- 0:37
name is Mike Chambers and I'm a senior
- 0:40
AI specialist developer advocate. Um,
- 0:42
and I work at Amazon at AWS. Um, little
- 0:47
bit about like uh how I managed to get
- 0:50
to stand here which is a very exciting
- 0:52
time for me. Um so um quite a while ago
- 0:56
in terms of generative AI anyway back in
- 0:58
2023 um I had the amazing awesome
- 1:02
privilege uh to work with Antia my
- 1:05
colleague at the time and now she works
- 1:06
for Amazon AGI you've probably seen her
- 1:09
on this stage before um and the amazing
- 1:11
Dr. Andrew Ing on on a course about
- 1:14
generative AI with LLMs um sort of can I
- 1:18
say that we're approaching half a
- 1:19
million enrollments with that? It looks
- 1:21
like that's the case. And on a
- 1:22
three-week course, that's pretty cool.
- 1:23
If you can't tell, in that image, um,
- 1:26
I'm playing Transformers with Android.
- 1:28
That seemed like a really funny thing to
- 1:29
do at the time. Um, in 2025, I created
- 1:32
an MCP Lambda handler. It's downloaded
- 1:35
still to this day about 35,000 times a
- 1:37
month. Um, to help people in some of the
- 1:39
simplest ways of getting serverless MCP
- 1:42
serving happening. Um, I'm going to talk
- 1:44
about other things in relation to that
- 1:46
this time. So, we've moved on from that.
- 1:48
Um and in 2026, so the AWS is actually
- 1:51
one of the founding members of the
- 1:53
Aentka Foundation, part of the Linux
- 1:56
Foundation. Um I'm doing a little bit of
- 1:58
work behind the scenes on that. Hope to
- 1:59
do a lot more of that as well. So little
- 2:01
bit about me. Um so as I've been um
- 2:06
preparing for this, oh by the way, I did
- 2:08
reread the abstract for this session and
- 2:10
realized I said I'd be doing some live
- 2:12
coding and so I will. So all combined
- 2:16
fingers crossed please that that all
- 2:18
works for us. Um but as I've been sort
- 2:20
of traveling around a little bit as I do
- 2:22
and I was at the AI engineers uh session
- 2:25
uh summit uh uh conference in Melbourne
- 2:28
um and took a lot of it in and also from
- 2:30
the beginning of this week as well. I
- 2:32
just wanted to to to summarize some of
- 2:35
the things that I'm seeing and I'm
- 2:36
thinking and I really want to get across
- 2:38
and and what really matters to me and
- 2:40
that's this. There are two different
- 2:42
types of agents. Um, so we talk about
- 2:45
agents all the time, but I see two
- 2:48
distinct types of agents. And as I say
- 2:50
this, it's going to become really
- 2:52
obvious, but they're the agents that we
- 2:54
use. And so, you know, this is claude
- 2:57
code and cursor and kirao and all of
- 2:59
those types of things. And also things
- 3:01
that don't just generate code, things
- 3:02
that we use for productivity and the
- 3:04
like as well. And so those agents we use
- 3:07
in a certain type of way. There's the
- 3:09
agents that we use. And then on the
- 3:11
other side of it, we've got the agents
- 3:13
that we build. And that's actually more
- 3:15
to do with me and and actually it's more
- 3:17
to do with this presentation as well.
- 3:18
It's agents that we build and how we
- 3:21
think about agents that we build. Um and
- 3:23
and so I do really think that these
- 3:26
don't two things are quite separate and
- 3:28
they chain together as well. I might
- 3:29
build an agent that you use and this
- 3:32
still holds true. So token maxing, all
- 3:34
that kind of stuff, go for it if that's
- 3:36
what you want to do with an agent that
- 3:38
you use. But with an agent that you
- 3:39
build, think about it carefully. Make
- 3:42
sure that you're putting it together in
- 3:43
a way that's going to work for the
- 3:45
audience who's going to use that. So, I
- 3:47
promised that we were talking about
- 3:48
harnesses and harness engineering. So,
- 3:50
let's define harness. I'm sure I'm not
- 3:52
the only person to have put something
- 3:54
like this up. I don't usually do this
- 3:55
kind of thing and apologize if it makes
- 3:57
your skin crawl. This is a dictionary
- 3:59
definition of harness. A harness is a
- 4:02
set of straps and fastenings used to
- 4:04
control an animal. But if we took animal
- 4:06
out of here and put model in there, then
- 4:08
actually it's pretty right, right, that
- 4:10
that's kind of what a harness is. Other
- 4:12
people have done a much better job than
- 4:14
just the basic dictionary definition of
- 4:16
what a harness is. So Lang Chain has got
- 4:19
a article out. You've probably seen
- 4:20
stuff like that. Martinfowler.com
- 4:22
although Martin didn't write it. It was
- 4:24
Pitta wrote this. Harness engineering
- 4:26
for coding agents. Agents that we use,
- 4:29
right? So there are other ways of
- 4:30
looking at harnesses. What about Amazon
- 4:33
then? How do we see um harnesses? Well,
- 4:36
um no, okay, this is the wrong kind of
- 4:38
harness. Sorry, we do have strong
- 4:40
opinions on harnesses. I'm going to show
- 4:41
you all of that, but we sell all kinds
- 4:43
of things. So, in a nutshell, and if you
- 4:46
read those articles, um and if you've
- 4:49
had the conversations around here at
- 4:51
this event, of course, um a harness, you
- 4:54
take an agent, remove the model part
- 4:56
from it, and everything that you have
- 4:57
left, that's the harness. Okay, so let's
- 5:02
think about that in context of an agent
- 5:04
that we use. And so it's pretty, I
- 5:08
think, fairly straightforward. I have
- 5:09
this coding assistant. It's probably on
- 5:11
my machine. It has access to my files.
- 5:13
And I create a harness or the place I
- 5:16
work at has created a harness for me
- 5:18
which contains um how it's going to use
- 5:21
memory, the skills that I want it to
- 5:23
use, tools and MCP servers to allow it
- 5:25
to go to be able to go and connect to
- 5:27
documentation servers and the like. and
- 5:30
and well set up engineering teams have
- 5:33
got their standards that they've had.
- 5:35
They've had coding standards for
- 5:36
decades, but now they have basically
- 5:38
harness standards, the things that they
- 5:40
want to deploy to everybody's coding
- 5:42
assistance. So, in a nutshell, that's
- 5:45
what it is. I'm not going to talk to too
- 5:47
much more about that. Um, but I do want
- 5:49
to share one QR code with you, and I'll
- 5:50
try and give you a little bit of warning
- 5:52
before I bring QR codes out. This is the
- 5:54
agent toolkit for AWS. This is u
- 5:57
available on GitHub. Of course, it's
- 5:59
free. You can install it and it helps
- 6:01
you if this is what you're doing and
- 6:03
you're deploying code. If you're
- 6:04
deploying on AWS or you're thinking
- 6:07
about deploying on AWS or or maybe you
- 6:09
will one day, grab this toolkit, enable
- 6:12
your um uh agent to to help you in the
- 6:14
right direction. It's instructions for
- 6:16
how to install it on pretty much
- 6:17
everything. And the reason why I get
- 6:20
passionate about this is because I don't
- 6:22
want to see any more slop ops. Um, so we
- 6:25
always used to push back against click
- 6:27
ops in, you know, in the professional
- 6:29
cloud development space. Clicking around
- 6:31
on the console is great for being able
- 6:32
to figure out what's going on, but it's
- 6:34
not how you deploy things into
- 6:36
production. We can ask an agent what's
- 6:38
going on, but we don't want to ask the
- 6:40
agent to spin up an S3 bucket, get me an
- 6:43
EC2 instance, whatever it might be. We
- 6:45
want the agent to build up our
- 6:48
infrastructure as code which is going to
- 6:50
go and do that so that we still own our
- 6:53
deployments in the cloud. So no more
- 6:54
swap ops. Okay. So that's the agent that
- 6:57
we use. Now let's go and talk about the
- 6:59
agent that we're going to build. And I'm
- 7:01
going to get into the code as quickly as
- 7:02
I can and we'll do as much as it has
- 7:05
time for. So how do we think about a
- 7:08
harness in relation to the agent that
- 7:09
we're building? Exactly the same to a
- 7:12
point. Yes. We still want to have how
- 7:14
are we going to manage the memory? How
- 7:16
are we going to manage the skills and
- 7:18
tools in MCP by the way that that belies
- 7:21
a lot of stuff, right? Because you can
- 7:22
pretty much extend an agent to do almost
- 7:24
anything you want with a whole bunch of
- 7:26
different types of tools which could be
- 7:28
via MCP.
- 7:30
But with an agent that I am building, I
- 7:33
need to think about a lot more than just
- 7:35
that. especially if um like at Amazon
- 7:38
and like at cloud scale I'm deploying my
- 7:41
agent out to the masses. So how do I
- 7:44
actually manage the loop? How do I
- 7:47
manage um scaling payments, memory,
- 7:49
identity, skills, runtime, context
- 7:51
management, the rest of it and I have
- 7:53
left it to the last thing but it should
- 7:54
be the first thing that I say.
- 7:56
Observability and evaluations super
- 7:59
super important. How do we actually deal
- 8:01
with this? Do I write all of this code
- 8:04
down into one container and just deploy
- 8:06
it and scale that? Not really. If I want
- 8:08
to be scaling to thousands of users, I
- 8:10
need to think about each individual of
- 8:12
these components and how I'm going to
- 8:14
scale them out individually. And that to
- 8:16
me is harness engineering. This is the
- 8:19
serious side of stuff. This is the big
- 8:21
stuff that we want to get harnesses
- 8:23
working at real scale. Okay, let's see
- 8:26
if this works. I can feel your combined
- 8:29
goodwill being sent my way that we're
- 8:31
going to try and make some code work.
- 8:33
So, I'm here in Kira. This is my IDE of
- 8:35
choice here. And I've got a few
- 8:37
different samples that we're just going
- 8:38
to race through watching that clock
- 8:40
countdown fast. So, um just just make
- 8:44
sure that we're all on the same page
- 8:45
here and hopefully you can all see this.
- 8:48
Um of the code which I'm about to show
- 8:50
you, by the way, one piece of code, not
- 8:52
this one, has been generated by Curo.
- 8:55
Everything else is either a tool or this
- 8:57
one I actually wrote it myself. I didn't
- 9:00
use an agent for this. I know I deserve
- 9:02
a round of applause, but it's okay.
- 9:04
[laughter]
- 9:05
So, this is uh this is a Strand agent.
- 9:09
So, I've just taken the Strands agents
- 9:10
SDK. Um, and hopefully this kind of
- 9:12
thing is kind of familiar. I've brought
- 9:14
in an agent. I brought in the tool
- 9:16
decorator and I'm creating myself an
- 9:18
agent. The tool definition is down here.
- 9:20
Um, and so I just pass in my system
- 9:23
prompt. Things are pretty simple at this
- 9:25
stage and I've passed in a couple of
- 9:26
tools. Calculator is something that's a
- 9:28
library I can install and get time is
- 9:31
the one that we always use because I
- 9:33
don't tend to use agents to book flights
- 9:35
certainly not ones like this. Um and so
- 9:37
I can say something simple here like
- 9:39
what is the time? I'm not going to run
- 9:40
this because you know the time but you
- 9:42
can see generally how this works. Is
- 9:44
this a harness? Sort of. There's not an
- 9:48
awful lot to it, right? We've got the
- 9:49
tools in there. Our loop is being
- 9:51
managed for us by the framework. This is
- 9:53
pretty cool. So that's good. But
- 9:55
obviously if I was to run this, this is
- 9:57
running on my laptop. It's not running
- 9:59
at any particular scale. And we're
- 10:01
missing some of the attributes that I
- 10:03
want from the agents that I'm going to
- 10:04
deploy. Let me move on to my next agent
- 10:07
quickly. So this is also a strand agent,
- 10:10
but this one I actually asked Kira to
- 10:12
write it for me for this session um
- 10:14
because I wanted to include some more
- 10:16
stuff. And so inside of this agent, the
- 10:20
one main thing that I want to point out
- 10:21
is that I am uh included a session
- 10:24
manager. So my session manager is
- 10:27
helping me to maintain session state
- 10:29
between invocations. So this is a sort
- 10:32
of memory. It's a kind of medium-term
- 10:34
short-term memory kind of thing. It's
- 10:35
not proper long-term memory, but it is
- 10:37
there. And actually, it does store
- 10:40
long-term memories in files which are
- 10:42
down the side here that it's uh included
- 10:44
for us. So, if I just scroll down here,
- 10:47
you can see uh yeah, here's the agent
- 10:49
definition itself. Um, and we've got a
- 10:52
bit more of a system prompt because Kira
- 10:53
couldn't help itself. Um, and we've got
- 10:55
some tools here defined. Um, including a
- 10:58
remember tool that the agent can decide
- 11:00
to use to remember stuff about me. Um,
- 11:02
and then I've got my uh session manager
- 11:05
down there. And that session manager is
- 11:06
going to rehydrate the conversation
- 11:08
history when I come back to chat to it
- 11:11
the next time. and maybe the next time
- 11:14
is now. So, let's see if we can get this
- 11:16
working. Now, again, this is running on
- 11:17
my local machine. Um, and this is a demo
- 11:20
here. So, let's just type in hello
- 11:22
because I'm scared of typing too much
- 11:24
and spelling it wrong. Um, and it says,
- 11:26
uh, yeah, keep testing me. Bring it on.
- 11:28
Excellent. Um, um, who will win the
- 11:33
World Cup? So, obviously I need to know
- 11:37
this. And, um, what does it say? Yeah.
- 11:40
So, while you could just say Australia,
- 11:42
it knows I want Australia to win. It's
- 11:44
where I'm currently living. I'm
- 11:45
Australia. So, obviously Australia is
- 11:48
going to win the World Cup, but why has
- 11:50
it got that? It's because of previous
- 11:52
conversations that we've had. And
- 11:54
obviously, it's being honest that it has
- 11:56
no clue because that's coming from the
- 11:58
large language model, of course. So,
- 12:01
okay, looks at a couple of different
- 12:02
agents there, blasted through this. This
- 12:05
is um running on my machine. So this
- 12:07
isn't really getting me to clouds scale
- 12:09
of course and I'm I'm picking up and I'm
- 12:12
including various pieces in this like
- 12:14
memory. So let's go next. How do we get
- 12:17
to the point where I can deploy
- 12:19
something like this if not this actual
- 12:21
agent out at cloudscale and take things
- 12:24
like memory and deploy that separately
- 12:27
so it can scale separately. taking our
- 12:29
loop out so it can scale separately and
- 12:32
we can then bolt in all kinds of other
- 12:34
things as well. So in order to do that
- 12:37
I'm going to use something called um
- 12:39
agent core um and so we have bedrock
- 12:41
agent core. It's part of the stack that
- 12:43
we have at AWS and that's how I'm doing
- 12:45
this and how I'm deploying. So I've done
- 12:48
that already but I want to show you how
- 12:50
to start out with that and how we do
- 12:52
this. So if I go to here uh yeah I'm
- 12:56
ready to go. So, I have a command line
- 12:58
tool on my machine, the agent core
- 13:00
command line. Um, and so there's a QR
- 13:02
code at the end, as you might imagine,
- 13:04
so that you can get hold of this. Um,
- 13:06
but I can use this to help me deploy my
- 13:08
agent. Now, this steps me through like
- 13:11
many of these types of tools do. Um, and
- 13:13
it sort of steps me through what do you
- 13:14
want to do? So, this is my woohoo agent.
- 13:17
Um, and it's going to ask me a bunch of
- 13:19
stuff. And I wanted to show you some of
- 13:20
this as we step through. Now, strangely,
- 13:23
I'm not going to select harness. And
- 13:25
we'll come back to why I'm not selecting
- 13:26
harness in a second, but I'm saying I
- 13:28
wanted to deploy an agent. And what's
- 13:30
going to happen here is this command
- 13:31
line tool is actually going to step me
- 13:34
through and actually write an entire
- 13:36
agent. It's basically a hello world
- 13:38
agent that I can then go and customize
- 13:40
myself. Um, and so using this command
- 13:42
line is an easy way to get started with
- 13:44
agent core. So I'm going to keep the
- 13:46
default name. In fact, I'm probably
- 13:48
going to keep all the defaults here just
- 13:49
so we can see what's the option. Of
- 13:51
course, I can bring code if I want, but
- 13:53
I'm going to ask it to create some code
- 13:55
for me. So, it says, well, what do you
- 13:57
want? Python or TypeScript? And back in
- 13:59
the day, I used to do things like
- 14:01
activate functions and back propagation
- 14:03
in the machine learning space. So,
- 14:04
Python it is for me. So, I will choose
- 14:07
that. Um, and there's some deployment
- 14:09
options. There's also this I just want
- 14:11
to point this out like how can we
- 14:13
actually go and connect into our agent.
- 14:15
So, our agent that's running at scale in
- 14:17
the cloud, HTTP is probably the obvious
- 14:19
one, but we might want to have it being
- 14:21
served behind MCP. We might want to use
- 14:23
awesome little things like AGUI so we
- 14:26
can make nice interactive chat agents,
- 14:29
but I'm going to say HTTP. We can use
- 14:31
any um framework we want. I happen to
- 14:34
use Strand's agents SDK, but anything
- 14:37
you could write your own framework if
- 14:38
you want to um or your own own base
- 14:41
code. Any model is supported by this as
- 14:44
well. So, we don't just have to use the
- 14:46
Amazon models. Um, and we don't have to
- 14:48
use the ones from Amazon Bedrock, but we
- 14:50
can use any model. I'm using the one
- 14:51
here. I'm using Sonic 4.5 just because
- 14:53
that's offered to me at default. And
- 14:56
here's memory. So, this is the one thing
- 14:58
I wanted to show you. So, I can come in
- 14:59
here and ask for long-term and
- 15:01
short-term memory to be deployed. And
- 15:03
we'll see what this means in just a
- 15:04
second, but it's basically going to
- 15:06
create for us cloud infrastructure which
- 15:08
is going to manage those memories for us
- 15:10
separately from our running agent
- 15:13
running asynchronously from our agent
- 15:14
and connected of course. So there's
- 15:17
obviously other kinds of things we can
- 15:18
do. We can hit enter and it will start
- 15:20
to create the configuration of this
- 15:21
agent on my machine. Now I'm going to
- 15:24
skip over here and come back to the
- 15:27
actual code I have because I've already
- 15:29
done this of course. Um, and this is the
- 15:31
agent that it would be currently
- 15:33
deploying. Something like this. So,
- 15:35
we've built up here. This is a little
- 15:36
bit more complex. So, this is a strands
- 15:39
agent. You'll notice that it's got a few
- 15:41
more things added in. So, it's got the
- 15:43
linkage into Amazon Bedrock agent core
- 15:45
app, but pretty much apart from that,
- 15:48
that's all you need in order to be able
- 15:50
to scale this agent out at runtime and
- 15:53
do multi-tenant isolation. So you can
- 15:56
write an agent that works for one user
- 15:58
and then scale that out without you
- 16:01
having to write all the multi-tenented
- 16:03
code. It's a massive saver and from a
- 16:05
security and identity perspective, it's
- 16:08
makes it so much simpler. It's um it's
- 16:10
very very useful. So if I scroll down
- 16:12
through here, you can see the rest of it
- 16:14
is looking pretty similar. We've got
- 16:16
some test tools in here. We've got a
- 16:18
connection to MCP, so we can see how
- 16:20
that is done. Um, and we've got the uh
- 16:23
connection into our session manager and
- 16:25
our memory which is all built in here.
- 16:28
So, if I scroll down a bit more, we'll
- 16:30
be able to see somewhere where we
- 16:32
actually invoke the thing um which is
- 16:34
there. Um, and the system prompt is is
- 16:36
somewhere at the top. So, we can we can
- 16:38
scroll through this code. I'm going
- 16:40
through it quickly. You can write your
- 16:41
own code and do this with it as well. If
- 16:43
I go back over to my um uh code here for
- 16:46
just one second. I'm in the folder now
- 16:49
that has been created with that code
- 16:51
locally, it is actually deployed, but
- 16:53
let's assume it's not deployed quite
- 16:55
yet. I can come back in and type in
- 16:57
agentcore dev. And what that's going to
- 16:59
do for me um Wi-Fi permitting is it will
- 17:02
spin up for us a web uh browser. And
- 17:05
inside of that web browser, we're now
- 17:07
connected to that agent running locally.
- 17:09
So if I make updates to that code, we
- 17:11
would see that happen in real time here.
- 17:14
So I can say hello, I am doing the press
- 17:19
now. Um it knows that I'm coming to do a
- 17:22
presentation, but I think it does
- 17:23
anyway. Um and so yeah, you can interact
- 17:25
with the agent here. You can make
- 17:26
adjustments to the um to the code and
- 17:29
you'll see it update live here. Um but
- 17:31
you can also use this to switch over to
- 17:33
the live um deployed version. So with
- 17:37
agent core deploy it will use
- 17:39
infrastructure as co code like I talked
- 17:42
about before to deploy your agent out at
- 17:45
scale with the memory with the agent
- 17:47
with runtime and with many other
- 17:48
components if you choose to do so you
- 17:50
can use this interface then to go and
- 17:52
look at traces look at memory stored
- 17:54
look at all that stuff so that you can
- 17:55
debug and see what's going on. Now, when
- 17:58
we stepped through the um the the the
- 18:02
console just a second ago through the
- 18:03
the CLI app a second ago, we didn't
- 18:05
choose harness. I skipped out on that
- 18:07
one and I'm just going to show you that
- 18:09
quickly now. So, one thing we can do
- 18:12
instead is I think we can get to the
- 18:14
point you've seen I've deployed agents.
- 18:16
I didn't do very much. I just did a
- 18:17
system prompt and some tools and go. And
- 18:20
there's an argument to be made that
- 18:21
essentially if that's possible then
- 18:23
maybe 80% of um agentic use cases 80% of
- 18:27
agent development is kind of solved
- 18:28
already. We don't need to do much more
- 18:30
than system prompt connect to some MCP
- 18:32
tools and we've got what we want. And if
- 18:35
that's the case then we have harness
- 18:37
built into agent core. This is the
- 18:40
configuration for an agent. I just have
- 18:42
a simple JSON which is showing me which
- 18:44
model do I want to use and what system
- 18:47
prompt do I want to use. Can't get much
- 18:49
more simpler than that system prompt.
- 18:51
Um, and then this can also be deployed
- 18:53
with agent core deploy. So at this point
- 18:55
we don't have even any agentic code
- 18:58
either. We can just deploy it straight
- 19:00
out. If you want to know any more about
- 19:02
any of this then please do come and see
- 19:03
us down on the booth or see me after
- 19:05
this session. I'll be more than happy to
- 19:07
talk to you at length about this. 18
- 19:09
minutes is such a short amount of time
- 19:11
for me to be able to talk about almost
- 19:13
anything. But this is essentially all of
- 19:17
these components on here. There's a
- 19:18
mapping somewhere into something that
- 19:20
Agent Core has. I apologize for the
- 19:23
colors. It seemed like a good idea at
- 19:24
the time. Um, but this is an overview of
- 19:28
the different capabilities that are
- 19:30
composable out of agent core. So, you
- 19:32
can take any of these and use any of
- 19:35
them together or separately. If you have
- 19:38
an agent that's running in production
- 19:40
very happily at the moment, but you like
- 19:42
the idea of having long-term memory
- 19:45
managed for you serverless, then you can
- 19:47
just take that part and integrate it.
- 19:49
That's totally something you can do.
- 19:50
Here's a QR code. Sorry, probably should
- 19:51
have put that there a second ago. I'm
- 19:53
moving this QR code in just a moment,
- 19:55
but Amazon Bedrock agent core is that if
- 19:58
you're interested in the Strands agents,
- 20:00
which I happen to be using for this,
- 20:02
it's obviously it's it's free because
- 20:04
it's open source. Um, and it's a um a
- 20:07
model first framework for putting
- 20:09
together agents. It's super fast, it's
- 20:11
super powerful, and it's what I use all
- 20:13
the time. Thank you so much for being
- 20:16
with me in this presentation. Please
- 20:18
feel free to connect with me on
- 20:19
LinkedIn. I'd love to carry on the
- 20:21
conversation with you. have a fantastic
- 20:24
rest of show and have a safe travel as
- 20:26
you go home after the event. Thank you
- 20:28
so much.