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
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
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.