YouTube2Text

Spec-Driven Development: Agentic Coding at FAANG Scale and Quality — Al Harris, Amazon Kiro — Transcript

by AI Engineer · 12,123 words · 1,725 segments · language en · Watch on YouTube

Full transcript

  1. 0:13[music]
  2. 0:20For those of you who haven't heard of
  3. 0:22us, Kira is an agentic ID.
  4. 0:24[clears throat] Um, we launched
  5. 0:25generally available this most recent
  6. 0:27Monday, I think the 17th, but we
  7. 0:29launched public preview on, uh, in July,
  8. 0:32>> uh, I think July 14th. So, out there for
  9. 0:35a few months getting customer feedback,
  10. 0:37um, all that good stuff. We're going to
  11. 0:38talk a little bit about using Spectriven
  12. 0:40development to sharpen your AI toolbox.
  13. 0:42I did a show of hands. About a quarter
  14. 0:43of the people here familiar with
  15. 0:44Spectrum and Dev. My name is Al Harris.
  16. 0:46Um, principal engineer at Amazon. I've
  17. 0:48been working on Curo for the last. Uh,
  18. 0:50and we're a very small team. We were
  19. 0:52basically three or four people sitting
  20. 0:54in a closet doing what we thought we
  21. 0:56could do to improve um the software
  22. 0:58development life cycle for customers. So
  23. 1:01we were ch we were charged with building
  24. 1:03a development tool that's that answered
  25. 1:05um that improved the experience for
  26. 1:07spectrum and development. We were
  27. 1:09theoretically funded out of the org that
  28. 1:11supported things like QDV but we were
  29. 1:13purposefully a very different product
  30. 1:14suite from the QE system to just take a
  31. 1:17different take on these things. So we
  32. 1:19wanted to work on scaling, you know,
  33. 1:20helping you scale AI dev to more complex
  34. 1:22problems. Uh improve the amount of
  35. 1:24control you have over AI agents and
  36. 1:26improve the code quality and maintain uh
  37. 1:28reliability, I should say, of what you
  38. 1:30got out the other end of the pipe. Now
  39. 1:32we're back to new content. Um so our
  40. 1:35solution was specri. We took a look at
  41. 1:37some existing stuff out there and said,
  42. 1:38"Hey, vibe coding is great, but vibe
  43. 1:40coding relies a lot on me as the
  44. 1:42operator getting things right. That is
  45. 1:44me giving guardrails to the system. And
  46. 1:45that is me uh putting the agent through
  47. 1:48a uh kind of a strict workflow. We
  48. 1:50wanted Spectri driven dev to sort of
  49. 1:52represent the holistic SDLC because
  50. 1:54we've got you know 25 30 years of
  51. 1:56industry experience um building uh
  52. 1:59software building it well and building
  53. 2:01it with different practices right we've
  54. 2:03gone through waterfall at XP um we have
  55. 2:06all these different ways that we
  56. 2:07represent what a system should do and we
  57. 2:09want to effectively respect what came
  58. 2:11before.
  59. 2:12So uh this animation looked a lot
  60. 2:15better. It was initially just the left
  61. 2:17diamond but I the idea was hey you know
  62. 2:19you basically are iterating on an idea.
  63. 2:21I think like half of software
  64. 2:23development is discovery requirements.
  65. 2:25Um and that discovery doesn't just
  66. 2:26happen by sitting there and thinking
  67. 2:28about what what should the system do?
  68. 2:29What can the system do? We we realized
  69. 2:32though kind of working on this that the
  70. 2:33best way to make these systems work is
  71. 2:35to actually synthesize the output and be
  72. 2:37able to feed that back really quickly.
  73. 2:38things like your input requirements um
  74. 2:41to actually do the design and feedback
  75. 2:43you know realize oh actually if we do
  76. 2:45this there's a side effect here we
  77. 2:46didn't consider we need to feed that
  78. 2:47back to the input requirements and so
  79. 2:50this compression of the SDLC evolved to
  80. 2:52bring structure into the software
  81. 2:54development flow we wanted to take um
  82. 2:58the artifacts that you generate as part
  83. 2:59of a design that's the requirements that
  84. 3:01maybe a product manager or developer
  85. 3:03writes that's going to be the acceptance
  86. 3:04criteria what does success look like at
  87. 3:07the end of this and then we want to the
  88. 3:08design artifacts that you might review
  89. 3:10with your dev team, you might review
  90. 3:11with you know stakeholders and say this
  91. 3:13is what we're going to go build and
  92. 3:14implement the thing and we want to make
  93. 3:16sure that you can do this all in some
  94. 3:17tight inner loop. Um and ult that was
  95. 3:20initially what spectriven dev was
  96. 3:23um what spectriven development in hero
  97. 3:27is today or at least was before it went
  98. 3:29g was uh you give us a prompt and we
  99. 3:32will take that and turn it into a set of
  100. 3:34clear requirements with acceptance
  101. 3:35criteria. We represent these acceptance
  102. 3:37criteria in the EARS format. EARS stands
  103. 3:39for the easy approach to requirement
  104. 3:41syntax. Um, and this lets you really
  105. 3:44easily uh it's effectively a structured
  106. 3:46natural language representation of what
  107. 3:48we you want the system to do. Now, for
  108. 3:51the first four and a half months this
  109. 3:52product existed, the ears format looked
  110. 3:54like kind of an interest decision we
  111. 3:56made, but just that sort of interesting.
  112. 3:58Um and with our launch, our general
  113. 4:00availability launch on Monday, we have
  114. 4:02finally started to roll out some of the
  115. 4:03side effects of which is property based
  116. 4:06testing. Um so now your ears
  117. 4:08requirements can be translated directly
  118. 4:10into properties of the system which are
  119. 4:12effectively invariants that you want to
  120. 4:13deliver. Um, for those of you who have
  121. 4:16or like have not I guess done property
  122. 4:19based testing in the past using
  123. 4:20something like I think it's a hypothesis
  124. 4:23in Python or fast check and node um
  125. 4:27closures spec library is another
  126. 4:29example. These are uh approaches to
  127. 4:32testing your software system where
  128. 4:34you're effectively trying to produce a
  129. 4:35single uh test case that that falsifies
  130. 4:38the invariant that you want to prove.
  131. 4:40And if you can find any uh contraositive
  132. 4:44then you can say this requirement is not
  133. 4:45met. If you cannot you have some high
  134. 4:47degree of confidence where the word high
  135. 4:50there is doing a little bit of heavy
  136. 4:51lifting because it depends on how well
  137. 4:52you write your tests but you can say
  138. 4:56with a high degree of confidence that
  139. 4:57the system does exactly what you're
  140. 5:00saying it does. Um yeah, so a property
  141. 5:05we we'll get a little bit more into
  142. 5:07property based testing and PBTs a little
  143. 5:08later, but this is the first step of
  144. 5:11many we're taking to actually take these
  145. 5:13structured natural language requirements
  146. 5:15and then tie this with a throughine all
  147. 5:17the way to the finished code and say if
  148. 5:19your code if the properties of the code
  149. 5:22meet the initial requirements, we have a
  150. 5:25high degree of confidence that you have
  151. 5:27re uh reliably shipped the the software
  152. 5:29you expected to ship.
  153. 5:31So with spectriven dev, we take your
  154. 5:34prompt, we turn it into requirements, we
  155. 5:36pull a design out of that, we define
  156. 5:38properties of the system and then we
  157. 5:40build a task list and we go and you can
  158. 5:42run your task list. Effectively the spec
  159. 5:45then becomes the natural language
  160. 5:46representation of your system. It has
  161. 5:48constraints, it has concerns um around
  162. 5:52functional requirements, non-functional
  163. 5:53requirements and it's this set of
  164. 5:55artifacts uh that you're delivering. So
  165. 5:57I don't think I have the slide in this
  166. 5:59deck, but ultimately the way I look at
  167. 6:00spec is that it is one a set of
  168. 6:02artifacts that represent sort of the
  169. 6:04state of your system at a point in time
  170. 6:05t. It is two a structured workflow that
  171. 6:08we push you through to reliably deliver
  172. 6:10high-quality software and that is the
  173. 6:12requirements design um and execution
  174. 6:15phases. And then three it is a set of
  175. 6:18tools and and um systems on top of that
  176. 6:20that help us deliver reproducible
  177. 6:22results where one example of that is
  178. 6:24property based testing. Another example
  179. 6:26of that which is a little less obvious
  180. 6:28but we can talk about later is going to
  181. 6:29be um I don't even know what to call it
  182. 6:33uh requirements verification. So we scan
  183. 6:35your requirements for over ambiguity. We
  184. 6:37scan your requirements for um invalid
  185. 6:41constraints eg uh you have conflicting
  186. 6:44requirements and we help you resolve
  187. 6:46those ambiguities using sort of classic
  188. 6:48uh automated reasoning techniques. Um
  189. 6:51and I could talk a little bit more about
  190. 6:52sort of the the features of Kira. I
  191. 6:55think that's maybe less interesting for
  192. 6:56this talk because we want to talk about
  193. 6:57spectrum and dev. We have all the stuff
  194. 6:59you would expect though. We have
  195. 7:01steering which is sort of memory and
  196. 7:02sort of cursor rules. We have MCP
  197. 7:05integration. We have you know image yada
  198. 7:08yada. Um so we have ways to and we have
  199. 7:10software hooks. Um so let's talk a
  200. 7:13little bit about sharpening your tool
  201. 7:15chain. And I'm going to take a break
  202. 7:16really quick here. Uh just pause for a
  203. 7:18moment for folks in the room who had
  204. 7:20maybe tried downloading Curo um or
  205. 7:24something else and just say are there
  206. 7:25any questions right now before we dive
  207. 7:27into how to actually use spec to achieve
  208. 7:29a goal?
  209. 7:32No questions. It could be a good sign.
  210. 7:35Could mean I'm not uh talking about
  211. 7:37anything that's particularly
  212. 7:37interesting. So um I actually want to
  213. 7:40like talk in some concrete detail here.
  214. 7:43Uh this is a talk I gave a few months
  215. 7:45ago on how to use MCPS in Kira. And so
  216. 7:48one of the challenges that people who
  217. 7:49had tested out Kira had that might be a
  218. 7:52little easier to see was that they
  219. 7:56um they felt that the flow we were
  220. 7:58pushing them through was a little bit
  221. 8:00too structured like you don't have
  222. 8:02access to external data, you don't have
  223. 8:04access to the to all these other things
  224. 8:05you want. And so one thing that we said
  225. 8:07on our journey here towardsing your um
  226. 8:12oh you know what this out of order
  227. 8:13here's my nice AI generated image. So
  228. 8:16you can use MCP. Everybody here I assume
  229. 8:18is familiar with MCP at this point. But
  230. 8:20uh Curo integrates MCP the same way all
  231. 8:23the other tools do. Uh but what I think
  232. 8:26people don't do enough is use their MCPs
  233. 8:28when they're building their specs. And
  234. 8:30so you can use your MCP servers in any
  235. 8:33phase of the specdriven development
  236. 8:34workflow. That's going to be
  237. 8:36requirements generation, design, um, and
  238. 8:38implementation. Um, and you can use,
  239. 8:42we'll go through an example of each. So,
  240. 8:45first of all, to set up a spec in Kuro
  241. 8:47is fairly straightforward. We have the
  242. 8:48Kuro panel here, which there's a little
  243. 8:51ghosty um, and then you can go down to
  244. 8:54your MCP servers and click the plus
  245. 8:56button. You can also just my favorite
  246. 8:57way to do it is to ask Kirro to add an
  247. 9:00MCP uh and then give it some some
  248. 9:03information on where it is and it can go
  249. 9:05figure it out usually from there or you
  250. 9:07just give it the JSON blob and it'll
  251. 9:08figure it out. Once you have your MCP
  252. 9:10added, you'll see it in the control
  253. 9:11panel down here and you can enable it,
  254. 9:13disable it, allow list tools, disable
  255. 9:15tools, etc. So you can manage context
  256. 9:17that way. Worth noting changing MCP and
  257. 9:20changing tools in general is a caching
  258. 9:22operation. So if you're very deep into a
  259. 9:24long session, maybe don't tweak your MCP
  260. 9:26config because it will slow you down
  261. 9:28dramatically. But let's talk about um
  262. 9:31MCP inspect generation. So something I
  263. 9:34the Curo team uses a um for reasons I
  264. 9:38don't know, but it's our task tracker of
  265. 9:41choice. Uh but so one thing I want to do
  266. 9:43is uh maybe go and say I don't want to
  267. 9:46write the requirements for a spec from
  268. 9:47scratch. My product team has already
  269. 9:49done some thinking. We've iterated in a
  270. 9:50sauna to kind of break a project down.
  271. 9:52This is not always how things work, but
  272. 9:54sometimes how things work. So in this
  273. 9:55case, I have I have a task in a sauna.
  274. 9:58Oh no, I did the wrong thing.
  275. 10:02That's what I get for zooming. So I have
  276. 10:05this task in in a sauna that says add
  277. 10:07the view model and controller to this
  278. 10:08API. In this case, this was a demo app
  279. 10:11that I can figure in a few minutes. And
  280. 10:13we even had like it's kind of peeking
  281. 10:16under here, but we had some details
  282. 10:17about what we wanted to have happen. Now
  283. 10:19I can go into Kira and just say start
  284. 10:21executing task XYZ URL from ASA and Kira
  285. 10:25is going to recognize this is an Asana
  286. 10:27URL. I had the ASAN MCP installed. It
  287. 10:29goes and pulls down all the metadata
  288. 10:31there. Um da da da. So it's going to
  289. 10:33break out and from there start um
  290. 10:36start determining what to work on. Um
  291. 10:43oh it's funny these titles are
  292. 10:44backwards.
  293. 10:46basically create a spec for my open
  294. 10:48asauna tasks. Again, go pull from a
  295. 10:50sauna all the tasks and then for each
  296. 10:52one generate um requirements based on
  297. 10:55those tasks. So I think I had like six
  298. 10:56tasks assigned to me. One is do user
  299. 10:59management, do some sort of um
  300. 11:04uh property management da da da it
  301. 11:06pulled them in generated the
  302. 11:07requirements and then in this case title
  303. 11:10is wrong apologies start executing task.
  304. 11:13this is I want to go and do the code
  305. 11:14synthesis for this um and I will take a
  306. 11:17quick break here to talk about how you
  307. 11:20can do this in practice. So for those of
  308. 11:21you who are you know following along in
  309. 11:23room uh feel free to fire up your curo
  310. 11:26open a project and then picking a an MCP
  311. 11:29server. I'll share a few repos here
  312. 11:31really quick that you can play around
  313. 11:32with.
  314. 11:35So
  315. 11:37I have an MCP server implemented.
  316. 11:41I have
  317. 11:48this lofty views which I think
  318. 11:50implements the asauna. Um and then these
  319. 11:53should all be public. Let me just double
  320. 11:55check.
  321. 11:57Yeah. Okay. So for example, if you
  322. 11:59wanted to extend my I have a Nobel Prize
  323. 12:01MCP which curls perhaps unsurprisingly
  324. 12:05there is a Nobel Prize API.
  325. 12:07>> [clears throat]
  326. 12:07>> Um, so you can use UVX to install it or
  327. 12:09you can get clone this Al Harris at
  328. 12:11Nobelmcp.
  329. 12:13Uh, this is just one example. Another
  330. 12:15one here is if you want to play around
  331. 12:16with the sample that's in the video. Um,
  332. 12:18I have Al Harris atlofty Views. Um, I'll
  333. 12:21leave these both sort of up on the
  334. 12:23screen for a few moments for folks who
  335. 12:25do want to copy the uh the URLs.
  336. 12:31But while that is happening,
  337. 12:34oh no, let's put you on the same window.
  338. 12:41[clears throat]
  339. 12:48So what I'll demo quick is the usage of
  340. 12:51an MCP to make like spec generation much
  341. 12:54easier or more reliable. So here I have
  342. 12:58let's see Got
  343. 13:01a lot of MCPs. Which ones do I actually
  344. 13:04want to use?
  345. 13:11Let's use the GitHub MCP.
  346. 13:15Oh, no.
  347. 13:18Ignore me.
  348. 13:23That's better. Okay. Well, I have the
  349. 13:24fetch MCP. So in this case I could for
  350. 13:27example come in here and say hey I've
  351. 13:30generated a bunch of tasks lofty views
  352. 13:33app. This is basically a very simple
  353. 13:34CRUD web app. Um but I want Kira to
  354. 13:41uh use the fetch MCP to pull examples
  355. 13:44from similar products that exist on the
  356. 13:47internet. You could also use you know
  357. 13:48Brave search or Tavlet search MCP
  358. 13:50servers but in this case I'll just use
  359. 13:52fetch because I've got it enabled. Um,
  360. 13:54so let's say,
  361. 13:57oh actually we can run the web server
  362. 13:59and use fetch. That's a good example.
  363. 14:14[clears throat]
  364. 14:20This is one example of you can at any
  365. 14:22point in the workflow generating a spec
  366. 14:24go through and um you know use your MCP
  367. 14:27servers to get things working. No, this
  368. 14:31is what I get for not using a project in
  369. 14:32a while.
  370. 14:36We'll cancel that. We can actually do
  371. 14:38something a little more interesting
  372. 14:39which is a separate project I've been
  373. 14:41working on. Um, so I've been working on
  374. 14:43a an agent core agent and that might be
  375. 14:47I I know the project works, which is the
  376. 14:49reason I'll fire it up here. Should I
  377. 14:51call it?
  378. 15:04Well, maybe we'll do live demos at the
  379. 15:05end.
  380. 15:07So that's sort of like the most basic
  381. 15:09thing you can do with Kira is just use
  382. 15:11MCP servers, but any tool uses MCP
  383. 15:13servers. I actually don't think that's
  384. 15:15particularly interesting. So let's say
  385. 15:17in sort of this process of trying to
  386. 15:19sharpen our our spec dev toolkit, we've
  387. 15:21finished up with the 200 grit. We've
  388. 15:23added some capabilities with MCP. It's
  389. 15:25useful, but it's not going to be a
  390. 15:26gamecher for us. I want to come in here
  391. 15:28and actually get up to the 400 grit.
  392. 15:30Let's get start to get a really good
  393. 15:31polish on this thing. I want to
  394. 15:33customize the artifacts produced because
  395. 15:35you've got this task list, you've got
  396. 15:37this requirements list and I don't agree
  397. 15:38with what you put in there, Al. Um, you
  398. 15:41could say that a lot of people do and I
  399. 15:43that's a a great starting point. So,
  400. 15:46here's something I heard earlier in the
  401. 15:48week at um, you know, earlier in the
  402. 15:50conference is that people like to do
  403. 15:51things like use wireframes in their
  404. 15:53mocks. Um, use wireframe mocks because
  405. 15:55in your specs are natural language,
  406. 15:58you're using specs as a control surface
  407. 16:00to explain what you want the system to
  408. 16:01do. Uh therefore I want to be able to
  409. 16:03actually put UI mocks in here. So the
  410. 16:06trivial case is that I just come in here
  411. 16:07and say Kuro's asked me here does does
  412. 16:10the design look good? Are you happy? And
  413. 16:12I said this looks great but could you
  414. 16:13include wireframe diagrams and ask you
  415. 16:15for the screens we're going to build
  416. 16:17here. I'm adding this is again from that
  417. 16:20lofty views thing. I'm adding a user
  418. 16:21management UI but I want to actually see
  419. 16:24what we're sort of proposing building
  420. 16:25not just the architecture of the thing.
  421. 16:27So your cure is going to sit here and
  422. 16:28churn for a few seconds, but you can add
  423. 16:30whatever you want to any of these
  424. 16:31artifacts because they're natural
  425. 16:32language. So they're structured, which
  426. 16:34means we want some re um some sort of
  427. 16:38reproducibility in what they look like,
  428. 16:40but ultimately what they look like
  429. 16:41doesn't matter because we've got the the
  430. 16:43any machine here, the agent sitting that
  431. 16:45can help translate it to what it needs
  432. 16:46to be. So Kira's churning away here.
  433. 16:49It's thinking thinking and then it's
  434. 16:51going to spit out these uh text wrapped
  435. 16:54asy diagrams. I'll fix the wrapping here
  436. 16:56in a second in the video, but ultimately
  437. 16:58like
  438. 17:01you know it does whatever you want. So
  439. 17:03if you want additional data in your
  440. 17:06requirements, you can do that. If you
  441. 17:08want additional data in the design like
  442. 17:10this, uh you can easily add that. Here
  443. 17:13we've got sort of these wireframes in
  444. 17:14ASKI that help me sort of rationalize
  445. 17:16what we're actually about to ship. Um,
  446. 17:18and then I can again continue to chat
  447. 17:20and say actually in the design I don't
  448. 17:22want um, you know, maybe I don't want
  449. 17:25this add user button to be up at the top
  450. 17:26the entire time in which case I could
  451. 17:28chat with it to make that change easily
  452. 17:30and now we're on the same page up front
  453. 17:32instead of later during implementation
  454. 17:34time. So we've again sort of left
  455. 17:35shifted some of the concerns. Um, so
  456. 17:38that's one example. You know, I want to
  457. 17:39add UI mocks to the design of a system.
  458. 17:42Another example though could be this.
  459. 17:43Um, oh, this is a just a quick snapshot
  460. 17:46of the end state there where now my
  461. 17:48design does have these UI mocks.
  462. 17:51Um, but another example that I actually
  463. 17:53like a little bit more is this uh
  464. 17:55including test cases in the definition
  465. 17:57and tasks. So today the tasks that cure
  466. 18:00will give you will be kind of the bullet
  467. 18:02points of the requirements and the
  468. 18:03acceptance criteria you need to hit. But
  469. 18:06I want to know that at the end state of
  470. 18:08this task being executed, we have a
  471. 18:10really crisp understanding that it is
  472. 18:12correct. It's not just like done because
  473. 18:14the a anybody who's used an agent can
  474. 18:16probably testify that um the LMS are
  475. 18:18very good at saying I'm done. I'm happy.
  476. 18:20I'm sure you're happy. I'm just going to
  477. 18:22be complete. Oh, yeah. The tests don't
  478. 18:23pass but they're annoying. I tried three
  479. 18:26times them to work. I'm just going to
  480. 18:27move on. Um no, I don't want that. I
  481. 18:30want to actually know that things are
  482. 18:31working. So, in this case, I've asked
  483. 18:32Hero to um include explicit unit test
  484. 18:35cases that are going to be covered. So
  485. 18:37my task here for example in create
  486. 18:38creating this agent core memory checkp
  487. 18:40pointer is going to have all the test
  488. 18:42cases that need to pass before it's
  489. 18:43complete and then I can use things like
  490. 18:45agent hooks to ensure those are correct.
  491. 18:47We'll run this uh sample a little later
  492. 18:48in the talk. Um this is the thing I'm
  493. 18:51ready to little demo.
  494. 18:53Uh yeah, so this is another example
  495. 18:55where you can again you're you're
  496. 18:57working on your toolbench. You're sort
  497. 18:58of you have all these capabilities and
  498. 19:00primitives at your control and you can
  499. 19:03tweak the process to work for you, not
  500. 19:05just the process that I think is the
  501. 19:07best one. And then sort of last but not
  502. 19:09least, the 800 grit. At this point,
  503. 19:11we're getting a final polish on the
  504. 19:13tool. Uh we might be stropping necks,
  505. 19:15but we want to, you know, you can
  506. 19:17iterate on your artifacts, but you can
  507. 19:18also iterate on the actual process that
  508. 19:21runs. So, one thing you might have, and
  509. 19:24I do this a lot, is I'll I'll be
  510. 19:25chatting with Kira, and I say, "Hey, I
  511. 19:28want to um in this case, I want to add
  512. 19:31memory to my agent in agent core. Um,
  513. 19:35let's dump conversations to an S3 file
  514. 19:37at the end of every execution." Cur is
  515. 19:39going to say, "That's great. I know how
  516. 19:40to do that. I'm going to research
  517. 19:41exactly how to do that thing. I will
  518. 19:43achieve this goal for you." But
  519. 19:45ultimately what I've done is actually
  520. 19:47introduce a bias up front which is I'm
  521. 19:49steering the whole agent using S3 as
  522. 19:51this storage solution just because maybe
  523. 19:53I'm familiar with it but it's probably
  524. 19:55not the best way to go about it. So then
  525. 19:57after it had synthesized the design and
  526. 19:59all the tasks and all this stuff I came
  527. 20:01back and said well like we don't need to
  528. 20:03stick to this rigid spectriven dev
  529. 20:04workflow that I've that has been defined
  530. 20:06by Kirao. I can ask for alternatives
  531. 20:08like is this the idiomatic way to
  532. 20:09achieve session persistence? I don't
  533. 20:12know maybe there's a better way. Maybe
  534. 20:14if we're talking AWS services, it's not
  535. 20:16S3, it's Dynamo or yada yada. Uh Kira's
  536. 20:19going to come in here and say, you know,
  537. 20:21good question. Uh da da da. Let me
  538. 20:23research. It's going to go through call
  539. 20:25a bunch of MCP tools that I've given it
  540. 20:27access to. This kind of ties back to
  541. 20:29that you should be using MCP. And then
  542. 20:31it comes back with this recommendation
  543. 20:32that I didn't know was a feature, which
  544. 20:34is Asian core memory. Um it says it's
  545. 20:37more idiomatic and future proof that
  546. 20:39maybe is TBD and should be checked a
  547. 20:41little closer. Um, but [snorts] uh or
  548. 20:44you could use S3, which is the thing you
  549. 20:46recommend. Now, actually, I I bet
  550. 20:48there's far more than two options here.
  551. 20:50So, you could probably keep asking the
  552. 20:51agent, are there other options, yada
  553. 20:53yada, and it would go and continue to
  554. 20:54investigate, but you should not lock
  555. 20:56yourself into the rigid flow that is
  556. 20:58sort of the starting point here. Um,
  557. 21:01yeah. So, that that's actually I think
  558. 21:03it for my deck. Um what I will talk
  559. 21:06about
  560. 21:08is let's just run through that sample I
  561. 21:10just had up there which is that um
  562. 21:15so
  563. 21:17basically let me delete delete it and
  564. 21:20I'll just do a live demo of sort of
  565. 21:21specs in Curo and how we can fine-tune
  566. 21:24things a little bit. So this project is
  567. 21:27a Node.js app. It is a um it's a CDK.
  568. 21:32Again, I'm not trying to sell
  569. 21:34[clears throat] more AWS. This is just
  570. 21:36the technologies I'm familiar with, so I
  571. 21:38can move a lot more quickly. So, I
  572. 21:40wanted to know a little bit about agent
  573. 21:41core, which is a new AWS offering. And
  574. 21:43as somebody building an agent, I should
  575. 21:44probably be familiar with it. So, and
  576. 21:46I'm not familiar enough with it. So,
  577. 21:48I've got we've got some other people
  578. 21:50here who know a lot about it. So, put my
  579. 21:52hand up a little bit and you know, you
  580. 21:53caught me. So, I set up a CDK stack,
  581. 21:56which is just um you know, IA technology
  582. 21:59to deploy software. I'm familiar with it
  583. 22:01and I love it. Uh, so I have a stack
  584. 22:03here that lets me deploy whatever an
  585. 22:06agent core runtime is. I don't know. I
  586. 22:08asked Kira to do it. We vibe coded this
  587. 22:09part. So we vibe coded the general
  588. 22:11structure. We got an agent. We got IA
  589. 22:13set up. I then vibe code added commit
  590. 22:16lint. I added husky. A few things like
  591. 22:18this that I like for my own TypeScript
  592. 22:19projects. Um, prettier and eslint I
  593. 22:22think. So we have a basic product here
  594. 22:24or like a basic project here that I know
  595. 22:26I can deploy to my personal AWS account.
  596. 22:29Um, now I'm going to come in here and
  597. 22:32oh, and then importantly, this is super
  598. 22:34important because I don't know how the
  599. 22:35hell agent core works. And I could go
  600. 22:38read the docs, but the docs are long and
  601. 22:39they're complicated and I'm really just
  602. 22:41trying to build out a PC to to like
  603. 22:43learn about it myself. So, I added two
  604. 22:47MCP servers. Oh, no, maybe I didn't. Let
  605. 22:51me check. Oh, okay. Yes, sorry. Buried
  606. 22:55down here at the bottom. So this is my
  607. 22:57Kira MCP config. I added one important
  608. 23:00MCP server here which is the AWS
  609. 23:02documentation one. There's other ways to
  610. 23:04get documentation. You can use things
  611. 23:06like um Tessle level 7 but in this case
  612. 23:09this is vended by AWS. So I have some
  613. 23:11confidence that it might be correct. So
  614. 23:13I used this to help the agent have
  615. 23:17knowledge about sort of what
  616. 23:18technologies exist. And I think I used
  617. 23:19fetch quite a bit as well. So these are
  618. 23:21the two sets of um
  619. 23:24these are the two step sets of uh MCP
  620. 23:27servers I provided the system. That's
  621. 23:29great. Move on.
  622. 23:32Confirm. So
  623. 23:34and I'll just rerun this from scratch.
  624. 23:37So what I had done yesterday evening or
  625. 23:39maybe the evening before was I sat down
  626. 23:42and I have this system sort of basically
  627. 23:46working and now I want to start doing
  628. 23:47specri development. So, I want to add
  629. 23:49this uh session ID concept and then I
  630. 23:52want to read conversation to an S3 file
  631. 23:54blah blah blah. This is the whole sort
  632. 23:56of bias thing I showed you earlier.
  633. 23:58We're going to fire that off through
  634. 23:59Curo. It's going to start running uh
  635. 24:01chugging away and then it's going to,
  636. 24:04you know, see if the spec exists. Uh,
  637. 24:06okay, the folder does exist. It's
  638. 24:08probably going to realize there's no
  639. 24:09files there and start working away. But,
  640. 24:12um, from here I'll sort of live demo.
  641. 24:14It's going to read through require. It's
  642. 24:16going to read through existing docs.
  643. 24:17It's going to read through existing
  644. 24:18files, gather the context it needs.
  645. 24:20Sure, in a way. Um,
  646. 24:23but in a moment once it generates sort
  647. 24:25of the initial requirements and design,
  648. 24:27I am going to challenge it to use its
  649. 24:28own, you know, MCQ servers. I want you
  650. 24:31to go and do some research on the best
  651. 24:32way to do this and provide me some
  652. 24:33proposals. Um, and this is why I was
  653. 24:36hoping to get the clip on mic working
  654. 24:38because I've got to set this down for a
  655. 24:39moment.
  656. 25:05Okay. So, you [clears throat] know, I
  657. 25:07don't know if this is the best way to do
  658. 25:08this. Um, go read docs, go use fetch. D.
  659. 25:11It's going to keep kind of churning away
  660. 25:13here and then come back to me after it's
  661. 25:15probably got a few ideas and proposed
  662. 25:17it. But, um, this is an example of me
  663. 25:20just using additional capabilities. uh
  664. 25:22use fetch, use the docs MCP, use
  665. 25:25whatever you can to get the best
  666. 25:27information and don't take at face value
  667. 25:28the things that I said. These are
  668. 25:30usually things we have to prompt pretty
  669. 25:31hard to get the agent to do, but if
  670. 25:33you're doing it in real time, it works
  671. 25:35fairly well. Um, again, the agent, all
  672. 25:38of these agents are going to be very
  673. 25:39easy to please. So, you know, just cuz I
  674. 25:42said something in the stupid docs, it
  675. 25:43may or may not actually be the most
  676. 25:45important thing from the agents
  677. 25:46perspective down the road. So, you know,
  678. 25:49okay, so it's done a little bit of
  679. 25:50research. It understands the lang graph
  680. 25:52which is the agent framework we're using
  681. 25:54already has this knowledge of
  682. 25:55persistence
  683. 25:57um da da da and actually in this case it
  684. 26:01didn't find it did not use the mcp for
  685. 26:03uh agent core docs who didn't find that
  686. 26:05agent core has this knowledge of
  687. 26:06persistence um so maybe you like let's
  688. 26:10assume I don't I still don't know that
  689. 26:11exists because I didn't dry run this a
  690. 26:13few days ago um we might have to find
  691. 26:15that later the design phase so first
  692. 26:18thing it's going to do is kind of
  693. 26:19iterate over all my requirements
  694. 26:20requirements here. Um, you know, it's
  695. 26:23changed the requirements based on what
  696. 26:24it now knows about Langraph and how it
  697. 26:26can natively integrate with the uh
  698. 26:28checkpointing, but it's still really
  699. 26:30crisply bound to this like S3 decision
  700. 26:32that I made implicitly in the ask. Um,
  701. 26:35so that is just something to be aware
  702. 26:36of. Anything you put in the prompt is
  703. 26:39effectively rounding the agent. Um, for
  704. 26:42better or for worse. I see it's still
  705. 26:44iterating. So, yeah, comes through says,
  706. 26:47does this look good? We changed duh. I'm
  707. 26:49going to say looks great. Let's go to
  708. 26:50the design phase. So now Curo is going
  709. 26:52to take my requirements and take me into
  710. 26:53the design phase of this project. I can
  711. 26:55make this
  712. 26:58so things are a little bit bigger.
  713. 27:00But
  714. 27:02um here's an example of what I meant by
  715. 27:04these ears requirements. So the user
  716. 27:07story here is as a dev I want to
  717. 27:08implement a custom S3based checkpoint so
  718. 27:10the agent can use Langraph's native
  719. 27:12persistence mechanism with S3. Great.
  720. 27:14That sounds reasonable to me as a person
  721. 27:16you know sort of co-authoring these
  722. 27:18requirements.
  723. 27:19This here, this sort of when then shall
  724. 27:22syntax. This is the years format and the
  725. 27:25structured natural language is really
  726. 27:26important for us to pass this through
  727. 27:27non LLM based models and give you more
  728. 27:30deterministic results when we parse out
  729. 27:32your requirements because ultimately our
  730. 27:33goal is to actually use the LM for as
  731. 27:35little not as little as possible but
  732. 27:36less and less over time. We want to use
  733. 27:38classic automated reasoning techniques
  734. 27:40to give you high quality results not
  735. 27:42just you know whatever the latest model
  736. 27:44is going to tell you. Um, so here's gone
  737. 27:48through spits out a design doc. Let's
  738. 27:50actually just look at this in markdown.
  739. 27:53This sure you got a server da da checkpo
  740. 27:57pointer ghost s3 that makes sense pseudo
  741. 28:00code again in a real scenario. Maybe I
  742. 28:02read this a little bit more closely
  743. 28:05and what's actually this is the new
  744. 28:07thing we shipped in um on the 17th is
  745. 28:10that now cur is going to go through and
  746. 28:11do this formalizing requirements for
  747. 28:13correctness properties. Um and so right
  748. 28:16now what the system is doing is it's
  749. 28:18taking a look at those requirements you
  750. 28:19generated uh the requirements we agreed
  751. 28:21upon with the system earlier. These look
  752. 28:23good. I agree with them. yada yada. It's
  753. 28:25taking a look at the design and it's
  754. 28:27extracting correctness properties about
  755. 28:28the system that we want to run property
  756. 28:30based testing for down the road. This is
  757. 28:32something that may or may not matter for
  758. 28:33you in the prototyping phase but should
  759. 28:35matter for you significantly when you're
  760. 28:37going to production. because these
  761. 28:38properties are correct and these
  762. 28:40properties are all met. The system
  763. 28:42aligns one to one with the input
  764. 28:44requirements you provided. Um yeah, so
  765. 28:48while this is chugging away, any
  766. 28:49questions yet? Any folks kind of curious
  767. 28:53about this?
  768. 28:55>> Um yeah,
  769. 28:57>> we're here and then there.
  770. 28:58>> Um what would you say is the main
  771. 29:01difference between
  772. 29:03that has?
  773. 29:05Uh I haven't used the planning mode in a
  774. 29:07couple of weeks. So it's I'm things move
  775. 29:09so fast it's a little wild. Um but I
  776. 29:11think ultimately uh what we would say is
  777. 29:14that Kuro's spectrum and dev is not just
  778. 29:18LLM driven but it is actually driven by
  779. 29:20like a structured system. Um and so
  780. 29:22planning mode I'm not sure if there's
  781. 29:24actually like a workflow behind it that
  782. 29:25takes you through things but um yeah
  783. 29:28this is our take on it for sure.
  784. 29:31>> I'm not familiar enough to give like a
  785. 29:32more concrete example unfortunately.
  786. 29:34similar I mean it doesn't give you like
  787. 29:36this I think that this document is cool
  788. 29:39is bringing you the school but uh what
  789. 29:42Cer does is to basically create you a
  790. 29:44plan that's
  791. 29:46>> just an execution plan okay
  792. 29:48>> oh I see so I think that the fundamental
  793. 29:51difference there uh does that plan get
  794. 29:54committed anywhere or is it just
  795. 29:56ephemeral
  796. 29:57>> uh it's kind of
  797. 29:59>> okay so what I want over time is not is
  798. 30:02not just how we make the changes we care
  799. 30:05about but it is actually the
  800. 30:06documentation and specification about
  801. 30:07what the system does. Um so the
  802. 30:09long-term goal I have is that as Kira we
  803. 30:12were able to do sort of a birectional
  804. 30:13sync that is as you continue to work
  805. 30:16with Kira you're not just acrewing these
  806. 30:19sort of task lists uh and so I'm just
  807. 30:22going to say go for it to go to the
  808. 30:23tasks um but we're not just acrewing
  809. 30:25task list but actually if I come back
  810. 30:27and let's say change the requirements
  811. 30:29down the road we will mutate a previous
  812. 30:31spec. So I'm looking at really just a
  813. 30:33diff of requirements which as you go
  814. 30:36through the green field process you're
  815. 30:37going to produce a lot of green in your
  816. 30:38PRs which is maybe not the best because
  817. 30:41I'm just reviewing three new huge
  818. 30:42markdown files but on the next time or
  819. 30:46the subsequent times that I go and open
  820. 30:47that doc up I want to be seeing oh
  821. 30:50you've actually you know you've relaxed
  822. 30:52this previous requirement you've added a
  823. 30:53requirement that actually has this
  824. 30:55implication on the design doc um that is
  825. 30:57the process the curo team internally
  826. 30:59uses to talk about changes to the curo
  827. 31:01So we review our design docs have in
  828. 31:04general been uh replaced by spec
  829. 31:08reviews. So we will you know somebody
  830. 31:10will take a spec from markdown they'll
  831. 31:13blast it into our wiki basically using
  832. 31:14an MCP tool we use internally and then
  833. 31:17we'll review that thing and comment on
  834. 31:18it in sort of a design session as
  835. 31:20opposed to you know I wrote this
  836. 31:22markdown file or a wiki from scratch. Um
  837. 31:25so it becomes sort of if uh well it's
  838. 31:28actually not like an ADR because it's
  839. 31:29not point in time. It is like this
  840. 31:31living documentation about the system.
  841. 31:34Um but yeah thanks for the question.
  842. 31:37There's one over here.
  843. 31:39>> Um
  844. 31:41this may be more a spectrum development
  845. 31:43question but are there like like is
  846. 31:45there like a template for a set of files
  847. 31:48that you fill out? Like right now you're
  848. 31:50in the design.md.
  849. 31:52>> Are there like
  850. 31:53>> is this is the designd the spec and it's
  851. 31:56a single doc or are there
  852. 31:59>> oh great question. So the yeah the
  853. 32:01question was um are there and correct me
  854. 32:04if I'm wrong here but question is are
  855. 32:05there a set of templates that are used
  856. 32:07for the system and is the question
  857. 32:09you're driving at can you change the
  858. 32:11templates or is just are there okay so
  859. 32:14the yeah question is are there a set of
  860. 32:15templates um there are implicitly in our
  861. 32:18system prompts for how we take care of
  862. 32:20your specs so you'll see here at the top
  863. 32:22navbar here right now we're really rigid
  864. 32:24about this requirement design task list
  865. 32:26phase but we know that doesn't work for
  866. 32:28everybody for example if you're starting
  867. 32:30we get this feedback from a lot of
  868. 32:31internal Amazonians actually that I want
  869. 32:33to start with a I have an idea for a
  870. 32:34technical design and I don't necessarily
  871. 32:36know what the requirements are yet but I
  872. 32:38know I want to make maybe design is even
  873. 32:39the wrong word I want to start with a
  874. 32:41technical note like I want to refac this
  875. 32:44comes up a lot for refactoring actually
  876. 32:47um so I want to refactor this to no
  877. 32:50longer have a dependency on
  878. 32:52um here's a good example here we use a
  879. 32:54ton of mutxes around the system to make
  880. 32:56sure that we're locking appropriately
  881. 32:57when the agent is taking certain actions
  882. 32:59because we don't want different agents
  883. 33:00to step on each other's toes. But maybe
  884. 33:02I want to challenge the requirements of
  885. 33:04the system so I can remove one of these
  886. 33:05mutexes uh or semaphors I should say. Um
  887. 33:09so I might start with something like a
  888. 33:12technical note and then from there sort
  889. 33:14of extract the the requirements that I
  890. 33:16want to share with the team and say hey
  891. 33:17you know I had to kind of play with it
  892. 33:18for a little while to understand what I
  893. 33:20wanted to build but I still want to
  894. 33:21generate all these rich artifacts. So
  895. 33:24today it's this structured workflow.
  896. 33:25We're playing a lot around with making
  897. 33:26that a little bit more flexible. But the
  898. 33:28the structure is important because the
  899. 33:30structure lets us build reproducible
  900. 33:31tooling that is not just an L. So I
  901. 33:35think that that's an important
  902. 33:36distinction we make is that our agent is
  903. 33:37not just an LLM with a workflow on top
  904. 33:40of it. The backend may or may not be an
  905. 33:42LLM or it may or may not be other
  906. 33:44neurosymbolic reasoning tools under the
  907. 33:46hood. Um, and so we we try to keep that
  908. 33:49distinction a little bit clear, uh, that
  909. 33:51you're not just talking to like Sonnet
  910. 33:53or Gemini or whatever. You're talking to
  911. 33:55sort of an amalgam of systems based on
  912. 33:56what type of task you're executing at
  913. 33:58any point in time. Um, although when
  914. 34:00you're chatting, you are talking to just
  915. 34:02an LLM.
  916. 34:04Um, but yeah, so we have a template for
  917. 34:05the requirements. We have a template for
  918. 34:07this design doc because there's sections
  919. 34:08that we think are important to cover. Um
  920. 34:11and again like if you disagree and
  921. 34:13you're like I don't care about the
  922. 34:15testing strategy section just ask the do
  923. 34:18it and similarly the task list has is
  924. 34:21structured because we have sort of UI
  925. 34:23elements that are built on top of it as
  926. 34:24well like task management and um do we
  927. 34:28have [snorts] we'll get there when we do
  928. 34:30some property based testing but um
  929. 34:32there's some additional UI we'll add for
  930. 34:35things like optional you can have
  931. 34:36optional tasks and stuff like that and
  932. 34:38so we we need the structure there for
  933. 34:40our uh taskless LSP to work for example.
  934. 34:44Um yeah, thank you for the question.
  935. 34:46Anything else before we truck on?
  936. 34:50Cool. Uh I may need somebody to remind
  937. 34:52me what we were doing. Oh, that's right.
  938. 34:55So, we went through and we synthesized
  939. 34:58the spec for adding memory and some
  940. 35:00amount of persistence to my agent. By
  941. 35:02the way, I didn't introduce you to this
  942. 35:04project. This project is called Gramps.
  943. 35:06It is uh it is an agent that I'm
  944. 35:09deploying to agent core to learn about
  945. 35:10it. I mentioned that. But what I didn't
  946. 35:12tell you is that is it is uh a dad joke
  947. 35:16generator.
  948. 35:17A very expensive one since we're
  949. 35:19powering it via LLMs, but effectively
  950. 35:22you're a dad joke generator. Jokes
  951. 35:25should be clean. They should be based on
  952. 35:26puns, you know, obviously bon bonus
  953. 35:28points if they're slightly corny but
  954. 35:30endearing. Um yada yada. So we're
  955. 35:32deploying this to the back end. So, the
  956. 35:34reason I want memory is because every
  957. 35:35time I ask the dad joke generator for a
  958. 35:37joke, it gives me the same damn joke and
  959. 35:40that's just super boring and my kids are
  960. 35:41not going to be excited about that. So,
  961. 35:43I want memory so that as I come back for
  962. 35:44the same session, I get different jokes
  963. 35:46over and over again. Um, that's the
  964. 35:49context on the project. So, we've come
  965. 35:51through here and we actually said we
  966. 35:52generated this thing, we did the task
  967. 35:54list. I said, "Hey, is this the
  968. 35:56idiomatic way to do it?" But what I know
  969. 35:58is that we didn't actually uh we're not
  970. 36:01using Agent Core's memory feature, which
  971. 36:03is probably a big oops. Um, and so, you
  972. 36:06know, quick show hands. Do we want to
  973. 36:07make the mistake and go all the way to
  974. 36:08synthesis and deployment, or should we
  975. 36:10fix it now?
  976. 36:11>> Who wants to fix it now because we know
  977. 36:12better?
  978. 36:14>> No, I want to make the mistake. Let's
  979. 36:16keep on trucking. I I had three yeses in
  980. 36:18a room full of nothing. So, we're going
  981. 36:19to make the mistake and then come back
  982. 36:21and fix it later. So, uh, let's say run
  983. 36:26all tasks
  984. 36:29in order.
  985. 36:33Uh, the reason I mention in order, which
  986. 36:35seems very specific, is because this is
  987. 36:36a preview build of Kira. Um, and so
  988. 36:39somebody just added to the system prompt
  989. 36:40I should only do one task at a time. And
  990. 36:42I found that if I say run all tasks, it
  991. 36:44thinks I somehow mean do them all in
  992. 36:45parallel. So, we'll that'll be fixed
  993. 36:47before these changes get out to
  994. 36:49production. So Kira's going to keep kind
  995. 36:52of going through here and chewing away
  996. 36:53on the system in the back end. Um, it
  997. 36:55has steering docs that explain how to do
  998. 36:57its job. It has, which I guess I should
  999. 37:00show you guys. Steering again is like
  1000. 37:01memory. So I have some steering how to
  1001. 37:04do commits. Uh, you know, how I like to
  1002. 37:06have commits, but also steering on
  1003. 37:07things like how do you actually deploy
  1004. 37:09this thing? Um, how do you deal with
  1005. 37:11agent core? And then how do you run the
  1006. 37:13commands that are necessary for you to
  1007. 37:14deploy this to my local dev account. Um,
  1008. 37:17and then those are mostly just an
  1009. 37:19example again of sharpening your tools
  1010. 37:21like uh I went through this kind of
  1011. 37:22painful process of figuring out oh you
  1012. 37:25know you have to use this parameter on
  1013. 37:26the CDK
  1014. 37:28the CDK command you have to use this lag
  1015. 37:31otherwise it doesn't work correctly and
  1016. 37:32so once I go through that pain of
  1017. 37:34learning I just say kira write what you
  1018. 37:36learned into a steering doc and it will
  1019. 37:37usually do a very good job of
  1020. 37:38summarizing um and so it generated
  1021. 37:40automatically this Asian core langraph
  1022. 37:42workflow MD file um yeah so I mean it's
  1023. 37:46just going to kind of go away here and
  1024. 37:48truck truck on and do its job and we can
  1025. 37:51watch it in the background. But in the
  1026. 37:52interim, um I think at this point we're
  1027. 37:54at a pretty flexible spot. Uh so for
  1028. 37:56folks who want feel free to use Kira,
  1029. 37:59try out Spectriven Dev on your own. I'm
  1030. 38:01going to keep just kind of running this
  1031. 38:02in the background and taking questions
  1032. 38:04and comments. But that's kind of it for
  1033. 38:06the scheduled part of today.
  1034. 38:09>> Yep.
  1035. 38:10>> How does Carol work for like existing
  1036. 38:12large code bases or this?
  1037. 38:14>> Yeah.
  1038. 38:16>> Yeah. question was how does cure work
  1039. 38:17for large and existing code bases
  1040. 38:19basically the brownfield use case uh and
  1041. 38:21the answer is it depends on what you're
  1042. 38:23trying to do um for spec driven dev you
  1043. 38:25can ask cure to do research into what
  1044. 38:26already exists so when you start a new
  1045. 38:28spec it will usually start by reading
  1046. 38:29through the the working tree um but the
  1047. 38:33agent is generally starting from a a
  1048. 38:35scratch perspective right it needs to
  1049. 38:36understand the system um in practice
  1050. 38:39what that means is that you're going to
  1051. 38:40end up with a bunch of things like if
  1052. 38:42your system already had good separation
  1053. 38:44of concerns uh your the components in
  1054. 38:47your system are highly cohesive and
  1055. 38:49they're sort of highly coherent and
  1056. 38:51highly cohesive, it's going to have a
  1057. 38:53great job, right? It's going to be able
  1058. 38:54to say this is the module that does this
  1059. 38:56thing. I don't need to keep 18 things in
  1060. 38:58my context to do my job and it's going
  1061. 39:00to do well. Um if you let's just take an
  1062. 39:04example that's off the top of my head.
  1063. 39:06if you were trying to launch an IDE very
  1064. 39:08quickly uh leading up to an AWS launch
  1065. 39:11and you um you know took a lot of tech
  1066. 39:13debt along the way that you need to
  1067. 39:14unwind and you know nobody here would do
  1068. 39:17that I'm sure but um in case you did
  1069. 39:19that like me then your agent might
  1070. 39:21actually have a much harder time
  1071. 39:23traversing the codebase in the same way
  1072. 39:24that a dev would right so uh from just
  1073. 39:28kind of that perspective the more
  1074. 39:30reliable things like your test suite are
  1075. 39:31and the more understandable things like
  1076. 39:33module separation and sort of
  1077. 39:35decomposition of concerns are the better
  1078. 39:37the agent will do. Um and versus true of
  1079. 39:41course. Now for things like uh
  1080. 39:44understanding the code base, this is a
  1081. 39:46bad example because this is a very small
  1082. 39:48code base, but uh we do have things like
  1083. 39:52you know code search and workspace. Um
  1084. 39:56uh I don't know what to call these
  1085. 39:58context providers. Um, so you can come
  1086. 40:00in here and just say I want to do code.
  1087. 40:03Uh, what is it?
  1088. 40:06I might have turned this off actually.
  1089. 40:08Oh, I did turn it off because the code
  1090. 40:10base isn't big enough. We'll do things
  1091. 40:11like indexing in the background so the
  1092. 40:13agent like you can do semantic search
  1093. 40:15over what you've got um if you're just
  1094. 40:17chatting. But in general, uh, Cur should
  1095. 40:20go in and do sort of background search
  1096. 40:22to figure out how to do its job. like as
  1097. 40:24the codebase scales up, it's going to be
  1098. 40:26less do probably less well overall. But
  1099. 40:28that's one thing we're working on as a
  1100. 40:30team.
  1101. 40:31Did that answer your question or did I
  1102. 40:33kind of glance off the side a bit?
  1103. 40:35>> Yeah, I think I got it.
  1104. 40:36>> Okay, cool.
  1105. 40:38>> Anybody else?
  1106. 40:44>> Uh, how long are you willing to wait for
  1107. 40:46indexing to complete?
  1108. 40:48>> [laughter]
  1109. 40:48>> Uh so one example I have is that the
  1110. 40:52code OSS um if it's not supremely
  1111. 40:55obvious by looking at it cur is a code
  1112. 40:56OSS fork just like you know cursor winds
  1113. 40:59surf um
  1114. 41:01one of the challenges we've had is the
  1115. 41:03code OSS codebase is very large fairly
  1116. 41:05large there's other big ones out there
  1117. 41:07but that's kind of my large code base
  1118. 41:09because I'm not forced get to work in it
  1119. 41:12fairly frequently um and so there
  1120. 41:14there's definitely some perceived
  1121. 41:17slowdown when you're dealing with
  1122. 41:18something large like that, especially
  1123. 41:20when you talk about codebased indexing.
  1124. 41:21It's a very active area of work for us
  1125. 41:23though. So, we're trying to do things
  1126. 41:24like um either remove indexing from the
  1127. 41:27critical path so that you're not waiting
  1128. 41:29there on some kind of slowed down render
  1129. 41:32thread because indexing is running. Um
  1130. 41:34but in practice, there should not be. I
  1131. 41:37mean, again, the agent may practically
  1132. 41:39do less well, but we're going to be
  1133. 41:41talking in a couple weeks at reinvent
  1134. 41:42about how some of the temple features in
  1135. 41:45Curo were built via spec in a codebase
  1136. 41:47we did not understand particularly well
  1137. 41:48because we're just not VS code devs. Um,
  1138. 41:52and Curo did a fine job of it. But
  1139. 41:54again, that's a testament to the fact
  1140. 41:56that codebase is reasonably well um
  1141. 41:58structured
  1142. 42:00>> and like if you've taken the time to
  1143. 42:02understand how it works, it's very
  1144. 42:04understandable. If you have not, it will
  1145. 42:05might be a little bit opaque to stare
  1146. 42:07at.
  1147. 42:09>> Yeah.
  1148. 42:10>> Uh in terms of indexing, is it like just
  1149. 42:13just putting um um as much information
  1150. 42:16from the code base into context or it
  1151. 42:18just
  1152. 42:19>> is there a way to like create some kind
  1153. 42:21of like vector database of all the
  1154. 42:25code base and then like query it? I just
  1155. 42:30>> Yes. Um [clears throat] so the question
  1156. 42:33was what do you mean by indexing? Um
  1157. 42:36because indexing can mean a bunch of
  1158. 42:37different things and what I mean is that
  1159. 42:39um the agent is actually not provided
  1160. 42:42the
  1161. 42:43>> I'm going to keep the agent context as
  1162. 42:44small as possible. We use the uh the
  1163. 42:46index for most like secondary effects
  1164. 42:48things like if you're doing a uh a code
  1165. 42:52search or if I do something like search
  1166. 42:53for um pound uh what the file in here
  1167. 42:58http server like we use it more for
  1168. 43:01these types of UI um than giving it to
  1169. 43:03the agent because the agent does this is
  1170. 43:05sort of anecdotal and based on our
  1171. 43:07benchmarks does better when given less
  1172. 43:10context but given the tools to
  1173. 43:11understand where to go find things. Um,
  1174. 43:13something we've heard a lot about is
  1175. 43:14sort of incremental disclosure here at
  1176. 43:16this conference. And that's again, we
  1177. 43:18don't want to load too much at the
  1178. 43:19beginning of the context and
  1179. 43:20conversation with the agent. We want the
  1180. 43:22agent to self-discover the right context
  1181. 43:23for the task. Yeah.
  1182. 43:26>> Thank you.
  1183. 43:28>> Yeah.
  1184. 43:28>> You guys managing session length like is
  1185. 43:30there any kind of compression or
  1186. 43:32pruning?
  1187. 43:36>> Yeah. So, um, question was how do we
  1188. 43:38manage session length? We have no
  1189. 43:40incremental pruning today or incremental
  1190. 43:42summary. Um you basically just accrete
  1191. 43:44context until you hit your limit which I
  1192. 43:46think right now I'm on auto which has
  1193. 43:49like a 200k token limit um similar to
  1194. 43:53the sonnetss. Um uh so we don't have a
  1195. 43:57very sophisticated algorithm here yet.
  1196. 43:58We've looked at a few things but our
  1197. 44:00number one concern actually is um prompt
  1198. 44:03caching hit rate. And so in a normal use
  1199. 44:06case, I can achieve something like 90
  1200. 44:0895% cash token usage here on per turn,
  1201. 44:11which means that my interactions are
  1202. 44:12very fast. And that's or they're much
  1203. 44:14faster than the alternative, which is
  1204. 44:16I'm sending 160k tokens to to bedrock
  1205. 44:19cold. Um, so that's one of the reasons
  1206. 44:22we've actually not done much
  1207. 44:23experimentation with incremental
  1208. 44:24summary. Um, our summarization feature
  1209. 44:27exists. When you hit the cap, it's not
  1210. 44:30great. It's something we're trying to uh
  1211. 44:31ship an improved version very very
  1212. 44:33shortly. Um eg in the next couple of
  1213. 44:36weeks which should be faster. Today it's
  1214. 44:38like a one-off operation that can take
  1215. 44:41up to 30 or 45 seconds which is a
  1216. 44:42horrendous experience. We're hoping to
  1217. 44:44fix that here and make it sort of a
  1218. 44:46real-time experience.
  1219. 44:48The follow
  1220. 44:50>> managing stapleness between sessions
  1221. 44:52then is that how why you're relying on a
  1222. 44:54stereopated
  1223. 44:56spectrum.
  1224. 44:59[gasps]
  1225. 45:01>> So sort of um
  1226. 45:05that is not the only reason I mean the
  1227. 45:06spect the spectrum of dev is less to do
  1228. 45:08with performance and more to do with
  1229. 45:10reproducibility and accuracy of the
  1230. 45:11agent. Um because if we can give you the
  1231. 45:16right result,
  1232. 45:17the the the way I and I think that we
  1233. 45:20talk about it internally as this team is
  1234. 45:22if I spend 10 seconds giving a prompt to
  1235. 45:24the agent and then it goes off and it
  1236. 45:26gets it wrong, it's like it's kind of no
  1237. 45:28skin off my back, right? I burned
  1238. 45:30however many tokens and you know,
  1239. 45:32[clears throat] a couple cents of credit
  1240. 45:33usage with whoever my LM provider is,
  1241. 45:36but I spent 10 seconds generating a
  1242. 45:38prompt. If I spend five to 10 minutes
  1243. 45:40with the system producing a detailed
  1244. 45:43design doc or let's just say even a
  1245. 45:45detailed set of requirements I wanted to
  1246. 45:46do a fairly good job. If I spend an hour
  1247. 45:50generating a design doc reviewing it
  1248. 45:52with my team and then synthesizing from
  1249. 45:54that I wanted to get it right. So the
  1250. 45:56goal necessarily is not just latency but
  1251. 45:58actually accuracy when we talk about
  1252. 46:00that. No, it's a both and. You need to
  1253. 46:01do both. But um spec comes more from a
  1254. 46:04uh the goal to have um highly
  1255. 46:07reproducible output.
  1256. 46:12I'm going to go over here first and then
  1257. 46:13you
  1258. 46:14>> Yeah. How did each of these task agents
  1259. 46:16pass context to each other? And then are
  1260. 46:18you only supposed to run this this
  1261. 46:20parent task? Because it just finished
  1262. 46:22all like 3.1 3.2 3.3 but then it still
  1263. 46:26thought that 3.1 wasn't done and ran
  1264. 46:28that in 3.2. too.
  1265. 46:30>> Oh, did it?
  1266. 46:31>> Yeah. Well, no, mine right.
  1267. 46:32>> Oh, okay. Yeah. Yeah. Um, so
  1268. 46:36if you
  1269. 46:39the uh the question is if you're in the
  1270. 46:41UI and you're like running tasks and I
  1271. 46:43can just kind of pull up my task list
  1272. 46:44here. Um, so if I just hit start, start
  1273. 46:47start each of these is going to be a new
  1274. 46:49session which means the context is
  1275. 46:51completely unique. Um, personally I like
  1276. 46:53to just if I can if I've got the context
  1277. 46:55base to afford it, I just say do all the
  1278. 46:56tasks because I find that more
  1279. 46:59understandable and I think I actually
  1280. 47:00get better performance. But by default,
  1281. 47:02each task will be a new session that has
  1282. 47:04no shared context with the previous
  1283. 47:05ones. So the session is effectively just
  1284. 47:08seated with your specification and then
  1285. 47:10like here you're working on a spec that
  1286. 47:12does all this stuff block of text um and
  1287. 47:16you are doing this task da da da don't
  1288. 47:18do any other tasks just do this. Um, so
  1289. 47:21that sounds like a bug. Um,
  1290. 47:22>> they ever spin up sub agents for certain
  1291. 47:25things.
  1292. 47:25>> We don't have sub agents yet in Caro,
  1293. 47:27some we're working on.
  1294. 47:28>> Yeah. Yeah. Because I mean, ideally,
  1295. 47:30right, if we click on task three and
  1296. 47:33I've got 31, 32, 33, and they're
  1297. 47:35separated, there's no good reason I
  1298. 47:36couldn't have different systems working
  1299. 47:37on them. Yeah.
  1300. 47:40>> Uh, right here,
  1301. 47:42>> we do have in the Curo CLI custom agents
  1302. 47:45that you can also run off.
  1303. 47:47>> Yeah. Curli is a concept of custom
  1304. 47:49agents. um which can be run sort of as a
  1305. 47:52task um and it's something we're playing
  1306. 47:53with right now in Curo Desktop um and I
  1307. 47:55think you had another one
  1308. 47:57>> yeah I'm sorry if I missed this but in
  1309. 47:59the spec folder
  1310. 48:01um as you do more and more of these
  1311. 48:03tasks over time
  1312. 48:05>> y is it just all in one design
  1313. 48:08requirements tasks your whole project is
  1314. 48:11defined there or did it group by
  1315. 48:13>> that's a good question um yeah so I will
  1316. 48:16have many I will have uh the question
  1317. 48:18was as you do more you generate let's
  1318. 48:21say more specs over time. Are you sort
  1319. 48:23of just creating one massive spec and
  1320. 48:26no? Uh let me open a different project.
  1321. 48:45>> [clears throat]
  1322. 48:49>> So this is for example the curo
  1323. 48:51extension which is like a 1p extension
  1324. 48:53inside the curo IDE. This is where the
  1325. 48:55agent itself lives. And so we have
  1326. 48:57pruned some specs but there are specs in
  1327. 48:58here that we can talk through or I can
  1328. 49:00just kind of demo. Um
  1329. 49:04so these are the way I think about it is
  1330. 49:06that the spec sort of represents a
  1331. 49:07feature or a problem area in the in the
  1332. 49:09project. And so for example, I can blast
  1333. 49:12this a little larger. So for example, we
  1334. 49:15have um like some of these are just
  1335. 49:19tests. We've done things like oh could
  1336. 49:20we have a prompt registry? Could we have
  1337. 49:22a prompt registry file loader? They may
  1338. 49:24or may not make it all the way to
  1339. 49:25production. Um I want telemetry on the
  1340. 49:27chat UI. So these are just like somebody
  1341. 49:29will go off and spend maybe represents a
  1342. 49:32few days of work for an SD. Um, agents
  1343. 49:35MD support is a good one where we just,
  1344. 49:37you know, I sort of said research what
  1345. 49:39agents MD is and build it in the way you
  1346. 49:41build steering in like support in the
  1347. 49:42same way. This spec is fairly unlikely
  1348. 49:44for us to come back and revisit in the
  1349. 49:46future. So I may actually just delete
  1350. 49:47it. Um, which is what we've done with
  1351. 49:49some of the older ones. But a good
  1352. 49:50example of one that we might come back
  1353. 49:51to is our message history sanitizer. So,
  1354. 49:54one thing we've had issues with or we
  1355. 49:56had issues with early in the the
  1356. 49:58development of Kira is that we would
  1357. 49:59send these sort of invalid um sequences
  1358. 50:02of messages because let's say the
  1359. 50:04anthropic API required tools to be in
  1360. 50:08the same order they were invoked and the
  1361. 50:09responses but the system wasn't doing
  1362. 50:11that. So we built this whole sanitizer
  1363. 50:12system that has a bunch of requirements
  1364. 50:14around um
  1365. 50:17let's see very specifically
  1366. 50:20yeah when conversation is validated the
  1367. 50:23system shall verify that each user input
  1368. 50:24is either non-MPT content or tool
  1369. 50:26responses. So we had things where like
  1370. 50:28empty strings would get passed in but
  1371. 50:30there was a tool response. This is a
  1372. 50:32good example where we've come in over
  1373. 50:33time and actually just added maybe not
  1374. 50:35to the requirements but to the to the
  1375. 50:37acceptance criteria of the requirements
  1376. 50:38as new validation rules are uncovered.
  1377. 50:42>> Yeah.
  1378. 50:42>> So how do you handle like that? So for
  1379. 50:45example you have like
  1380. 50:47>> telemetry up there y feature that needs
  1381. 50:50telemetry is it going to go back and
  1382. 50:52update that spec too or you're just
  1383. 50:53>> it should. Yeah. So, if you usually
  1384. 50:55you'll see and let me just ask uh
  1385. 50:58a new chat here.
  1386. 51:05No, that's a terrible idea.
  1387. 51:21So here I've asked I've made a inspect
  1388. 51:24mode I've made some requests to um add
  1389. 51:26UI telemetry to the thing I'll help you
  1390. 51:28add it let me first check if there's any
  1391. 51:30relevant runbooks then explore the
  1392. 51:31codebase and sand the implementation it
  1393. 51:34might go do a little bit of research
  1394. 51:35here and then flip of a coin again it's
  1395. 51:38an LLM so it may or may not discover the
  1396. 51:41existing uh spec but ideally it will
  1397. 51:44after doing its research say there
  1398. 51:46exists a spec already for things like UI
  1399. 51:49telemetry, I'm going to go and amend
  1400. 51:50that one. Um, and if it doesn't in this
  1401. 51:52case, like I would come in and just ask
  1402. 51:54it to um as sort of the operator of the
  1403. 51:57system. But over time, again, we want
  1404. 51:58that to be easier for you as a user to
  1405. 52:00not have to think about so much.
  1406. 52:04We can watch it while it chugs along.
  1407. 52:10>> Is there anything reconfigured in Kira
  1408. 52:13that makes it better to work with AWS?
  1409. 52:16trans.
  1410. 52:18>> No, not really. Um,
  1411. 52:21>> was that a question?
  1412. 52:23>> Oh, question was, uh, is there anything
  1413. 52:25in Kira that that's preconfigured to
  1414. 52:27make it work better with AWS? No. Um, we
  1415. 52:30are sort of purposefully we're in we are
  1416. 52:33brought to you by AWS, which so you
  1417. 52:35know, uh, Andy Jasse and Jeffy B pay my
  1418. 52:38check, but um, we're not like an AWS
  1419. 52:41product that's deeply deeply integrated
  1420. 52:43with the rest of the AWS ecosystem. Now
  1421. 52:45that said, I still answer emails when
  1422. 52:47somebody says, "Why is this other thing
  1423. 52:48we built with AWS not working with
  1424. 52:50Curo?" Yay. But um similarly like if
  1425. 52:53you're building on GC or Azure, whatever
  1426. 52:56um or you're running some on-rem system,
  1427. 52:58the product should work just as well for
  1428. 53:00you. That's our goal.
  1429. 53:02>> Good a good answer potentially is the
  1430. 53:04AWS documentation MCP server.
  1431. 53:07>> Yes.
  1432. 53:08>> So there are MCP servers that you can
  1433. 53:10add into any of these things that will
  1434. 53:12make better.
  1435. 53:14Yeah, that's a good point. So, like in
  1436. 53:16this case, I actually had to add the AWS
  1437. 53:20MCP documentation here. We could of
  1438. 53:22course have natively bundled this, but I
  1439. 53:23don't want to ship this to customers who
  1440. 53:24don't need it.
  1441. 53:26Yeah, because again, AWS is not the only
  1442. 53:29docs that we might care about. Um, by
  1443. 53:31the way, coming back to your question,
  1444. 53:32so it did find the existing spec for
  1445. 53:34telemetry. It read it, it read different
  1446. 53:36sections of it, and now it's actually
  1447. 53:38making amendments to it. So, we can
  1448. 53:40follow the diff as it shows up here. So,
  1449. 53:41it's added new uh requirements. um to
  1450. 53:44the pre-existing specs. So, this is
  1451. 53:46effectively another case where we're
  1452. 53:48mutating the system as opposed to just
  1453. 53:50adding this sort of never- ending spiel
  1454. 53:52of specs.
  1455. 53:53>> I guess what I'm wondering is like how
  1456. 53:56did it know or decide where to put the
  1457. 53:59spec, you know, if you break down your
  1458. 54:02project into these different categories?
  1459. 54:04>> Y
  1460. 54:04>> I would imagine like crossover.
  1461. 54:07>> Yeah. I mean, it's that that's sort of
  1462. 54:09like software development in a nutshell
  1463. 54:12though, right? like how do you actually
  1464. 54:13define the seams between different parts
  1465. 54:14of your system different concerns the
  1466. 54:16product
  1467. 54:17>> right but if you want to like build
  1468. 54:18something like I have a task and it's
  1469. 54:20going to cost
  1470. 54:21>> require changing like three or four
  1471. 54:22things
  1472. 54:23>> y
  1473. 54:23>> it's going to change three or four specs
  1474. 54:25and then run tasks across three or four
  1475. 54:27>> oh yeah yeah no it should not do that it
  1476. 54:29would probably so again I don't have a
  1477. 54:31good example off hand that we can do for
  1478. 54:33that but um my my perspective would be
  1479. 54:36that if you're working on something that
  1480. 54:37is a crossf functional uh by the way the
  1481. 54:39question was um if I'm working on
  1482. 54:41something that let's say I have a spec
  1483. 54:43for security requirements and I have a
  1484. 54:46spec for API design uh like the API
  1485. 54:50shapes and I have a spec for
  1486. 54:52logging and I am changing something in
  1487. 54:55the API public interface that is a
  1488. 54:58securityf facing concern because we're
  1489. 55:01redacting logging PII um I think that's
  1490. 55:04maybe a semi-tangible use case uh that
  1491. 55:07we can all imagine coming down from our
  1492. 55:09governance teams um I want to
  1493. 55:13I would imagine that you either pick one
  1494. 55:15of those to load the requirements into
  1495. 55:17or you create sort of a cross functional
  1496. 55:19spec, but that would come down to I
  1497. 55:20think you as a as an operator making
  1498. 55:22that decision in much the same way that
  1499. 55:24if I how you actually implement it might
  1500. 55:27be you you would not necessarily
  1501. 55:30implement my PII API redaction module.
  1502. 55:33It's a standalone thing. It's going to
  1503. 55:34be a crosscutting theme across your
  1504. 55:36codebase, I'd imagine. And it's also a
  1505. 55:39good example. There's like multi group
  1506. 55:40workspace [laughter] came out when it
  1507. 55:42went to G on Monday and now you can like
  1508. 55:44drag different. So like in your example
  1509. 55:46you just went through with like APIs and
  1510. 55:48off and like even the front ending you
  1511. 55:51can bring in those projects if you have
  1512. 55:53them separately and then still work.
  1513. 55:58>> Yeah. Thanks bro.
  1514. 56:04the mental model the spec generates the
  1515. 56:07code after that like what code you can
  1516. 56:09specify how does that work
  1517. 56:12>> yeah so um we have now synthesized
  1518. 56:16effectively the spec so we we sat down
  1519. 56:19we defined the requirements design and
  1520. 56:21task list I've had Kira now go through
  1521. 56:23and run all the tasks in this spec so it
  1522. 56:26ran them one at a time it basically
  1523. 56:27worked on small bite-sized pieces of
  1524. 56:28work uh chunk by chunk and then uh now
  1525. 56:33this is done So what we've actually
  1526. 56:35produced is not just like the completed
  1527. 56:37spec, but it went here into my agent and
  1528. 56:40it did a few things in the CDK repo
  1529. 56:43because it's doing persistence to S3.
  1530. 56:45I'm sure it added a bucket. Yep. Some
  1531. 56:47new bucket encryption and yada yada. It
  1532. 56:49then went in to the agent, added the S3
  1533. 56:52checkpoint saver. It looks like it, you
  1534. 56:55know, created a checkpointer. It adds
  1535. 56:57this to the graph and it kind of passes
  1536. 57:00this all the way through the system. And
  1537. 57:02the S3 checkpointer here I'm sure has
  1538. 57:03some knowledge of how to write the
  1539. 57:05checkpoints to and from S3. So like we
  1540. 57:07have gone not just for defining the
  1541. 57:09system but we've now um produced it end
  1542. 57:11to end or we've uh delivered it end to
  1543. 57:13end including property tests I believe.
  1544. 57:16Um yeah.
  1545. 57:20>> Oh, I have a answer to an earlier
  1546. 57:23question related to like um some
  1547. 57:25specific AWS related features like that
  1548. 57:28makes it easier to work with. The Curo
  1549. 57:30CLI comes with the use AWS tool which
  1550. 57:33helps with the CLI.
  1551. 57:36>> Yeah. Yep. So, uh, what Rob's pointing
  1552. 57:38out is the Curo CLI, which we just
  1553. 57:39rebranded, um, this week, has a use AWS
  1554. 57:42tool, which is basically a wrapper over
  1555. 57:43the AWS SDK, um, to make some of those
  1556. 57:46things easy. Uh, but again,
  1557. 57:49BYO use GCP tool as an FCP server if you
  1558. 57:52were so inclined, if that's your uh,
  1559. 57:55tool of choice. And I believe, don't
  1560. 57:57quote me on this, um, because the CLI is
  1561. 58:00kind of new to my new to me I should
  1562. 58:02say. Um, but I believe you can turn off
  1563. 58:05tools in the CLI as well. Let me know if
  1564. 58:07that's not right, Rob.
  1565. 58:09>> Yeah. So, that's like you're actually
  1566. 58:11not strict. Uh, in the desktop product
  1567. 58:14today, you can't control the tools, the
  1568. 58:16native tools built in, but in CLI, you
  1569. 58:18can.
  1570. 58:21>> Um, so I I intuitively get the benefits
  1571. 58:24of having a spec. Have you done any work
  1572. 58:26to empirically see like how a project or
  1573. 58:31a problem would have worked with or
  1574. 58:32without?
  1575. 58:34>> Yeah. Um we do have benchmarks uh
  1576. 58:36covering the data off hand. Um I think
  1577. 58:39part of that's in our blogs. So if you
  1578. 58:41go to the cure.deblog
  1579. 58:43or it's on the site, we we talk really
  1580. 58:45crisply about some of the lift things
  1581. 58:46like property based testing give to task
  1582. 58:48accuracy.
  1583. 58:50Science team's always working on that
  1584. 58:52stuff.
  1585. 58:53a blog about specs. I'm curious about
  1586. 59:00>> Yeah. Distinguish engineer for
  1587. 59:02databases. Yeah.
  1588. 59:03>> His blog post really steps it up. I
  1589. 59:06don't think it has the D specific that
  1590. 59:07you are asking for, but I think it will
  1591. 59:09be useful.
  1592. 59:10>> Yeah. Yeah.
  1593. 59:14>> How does it work? I understand the
  1594. 59:16feature side of it, but how does it work
  1595. 59:18in a nonfunctional site like agency
  1596. 59:21dealing with, you know, a little bit
  1597. 59:23more harder problems?
  1598. 59:25>> Well, yeah. I mean, that is ultimately
  1599. 59:26the goal here, right? Is we're saying
  1600. 59:28you're making a slightly larger
  1601. 59:29investment up front, but we believe that
  1602. 59:30the uh the structure we're bringing is
  1603. 59:33going to help you get increase the
  1604. 59:35accuracy of your uh result. So, um,
  1605. 59:38while we've got a team of people who are
  1606. 59:40basically working on making spec better,
  1607. 59:41my job when I fly back to Seattle is to
  1608. 59:43make cur as a whole much faster. Um,
  1609. 59:46one, execution time and like kind of
  1610. 59:48like laggginess in the UI, but two, how
  1611. 59:50do we get tokens through the system
  1612. 59:51faster? How do we get responses to you
  1613. 59:53faster so that like you're not syncing
  1614. 59:55as much cost into KO to use a spec?
  1615. 59:58>> Yeah. Yeah. I'm not talking about the KO
  1616. 1:00:00tool itself, the code generated from the
  1617. 1:00:03spec.
  1618. 1:00:04>> Oh. Oh, yeah. Okay. Yeah. you mean like
  1619. 1:00:05the non-functional requirements of the
  1620. 1:00:07generated code? So, uh that's going to
  1621. 1:00:09come down to I think what you're
  1622. 1:00:10specifically trying to do. So, you could
  1623. 1:00:13add uh one of the slides I had here was
  1624. 1:00:16talking a little bit about how to tweak
  1625. 1:00:18the process and tweak the artifacts for
  1626. 1:00:19your use cases. Um again, you could very
  1627. 1:00:23easily add something like I want
  1628. 1:00:24non-functional requirements for speed
  1629. 1:00:26and runtime and things like lock
  1630. 1:00:27contention to be considered in the
  1631. 1:00:29design phase. Um yeah, [clears throat]
  1632. 1:00:31something you could certainly add. So
  1633. 1:00:33you could generate a code in Rust or or
  1634. 1:00:36Java.
  1635. 1:00:37>> Yeah, totally. Yeah.
  1636. 1:00:39>> And it will vary in the functional
  1637. 1:00:43depending on what language you
  1638. 1:00:44generated.
  1639. 1:00:45>> I mean it would it would have to like
  1640. 1:00:46yeah there's no other way I think to
  1641. 1:00:48approach it. Um again I'm just I'm
  1642. 1:00:50familiar with node so I'm doing
  1643. 1:00:51everything here in node but you can use
  1644. 1:00:52this with any language. I think
  1645. 1:00:54technically we say we support Java,
  1646. 1:00:56Python, JavaScript, um, and
  1647. 1:00:59Jesus, JavaScript, TypeScript, Java, and
  1648. 1:01:03Rust. But in practice, there's no reason
  1649. 1:01:05that this doesn't work with any
  1650. 1:01:07language. I mean, it's just an LLM. The
  1651. 1:01:09there's nothing language specific or
  1652. 1:01:10framework specific in the system. And
  1653. 1:01:12for those of you um, so there was a
  1654. 1:01:14conference earlier this week hosted by
  1655. 1:01:16Tessle, which are doing sort of specs
  1656. 1:01:18for knowledge base. um as long as you've
  1657. 1:01:20got the right grounding docks in there
  1658. 1:01:22and this is sort of uh their argument is
  1659. 1:01:25that it should not matter what you're
  1660. 1:01:27building like that's all just informed
  1661. 1:01:29by the the context you're building for
  1662. 1:01:30your system.
  1663. 1:01:32>> This is also a really good point for
  1664. 1:01:34steering. So steering you can get the
  1665. 1:01:36agent to develop code in the way you
  1666. 1:01:38want. Like being a developer is all
  1667. 1:01:39about making trade-offs and the problem
  1668. 1:01:41with your out of the box is it's like so
  1669. 1:01:43polite because it's trying to be
  1670. 1:01:44everything to everyone. U and especially
  1671. 1:01:46like with latency and cost and other
  1672. 1:01:48things like that, just tell it in
  1673. 1:01:50steering what you want it to prioritize
  1674. 1:01:53and then that will influence any code
  1675. 1:01:54that gets generated.
  1676. 1:01:56>> Yep.
  1677. 1:01:56>> Even like how it designs based on that
  1678. 1:01:58as well. So if there's something that's
  1679. 1:01:59very specific to your use case or your
  1680. 1:02:01industry or whatever, just shove it in
  1681. 1:02:02that steering file and then
  1682. 1:02:05>> Yeah, that's exactly right. So, for
  1683. 1:02:07example, I I will have Kira generate um
  1684. 1:02:11commits for me. And one of the things I
  1685. 1:02:13care I personally care about is that I
  1686. 1:02:15can track commits I generate versus
  1687. 1:02:17commits that Kira generates being the
  1688. 1:02:18ones that come from the system. And so
  1689. 1:02:20my steering dock while short includes
  1690. 1:02:22things like very specifically my
  1691. 1:02:25requirement for Curo is
  1692. 1:02:28just use the UI
  1693. 1:02:32um
  1694. 1:02:34attributed to the co-author of Kuro
  1695. 1:02:36agent um which is trivial but also I
  1696. 1:02:40want it to happen every time. So in this
  1697. 1:02:41case it just generated a commit
  1698. 1:02:42co-authored by Kirao agent D. So that's
  1699. 1:02:46an example of like you could add
  1700. 1:02:47whatever you want in there, not just
  1701. 1:02:49something related to get commits, but
  1702. 1:02:51you could do code style, you could do um
  1703. 1:02:53uh you know code style, code coverage.
  1704. 1:02:56Uh whenever you add a spec or you're
  1705. 1:02:57adding a new module, make sure that you
  1706. 1:02:59annotate it with coverage minimums that
  1707. 1:03:01are 90% because that's the thing I care
  1708. 1:03:02about. Um [clears throat] you can kind
  1709. 1:03:05of put anything you want up in there.
  1710. 1:03:07The good news is it looks like what we
  1711. 1:03:09built works. Um, Cur is very happy with
  1712. 1:03:11itself at least and it looks like all
  1713. 1:03:13tests passed. But um, yeah, so we'll we
  1714. 1:03:16can deploy this to the back end and see
  1715. 1:03:17how things work.
  1716. 1:03:21We're uh technically just about time.
  1717. 1:03:23So, you know, if anybody has any other
  1718. 1:03:24questions, I'm going to stick around
  1719. 1:03:26here for a while. But uh, thank you all
  1720. 1:03:28for joining, listening, and uh, learning
  1721. 1:03:30a little bit more about Spectrum and
  1722. 1:03:32Dev. [music]
  1723. 1:03:41>> [music]
  1724. 1:03:47[music]
  1725. 1:03:48>> Heat.

About this transcript

This page contains the full transcript of Spec-Driven Development: Agentic Coding at FAANG Scale and Quality — Al Harris, Amazon Kiro by AI Engineer, generated from the public captions YouTube serves with the video. The transcript has 12,123 words across 1,725 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.

What you can do with it

Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.

Free YouTube transcript tool

YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.