AI Engineer World's Fair 2025
Your Coding Agent Just Got Cloned And Your Brain Isn't Ready
About this talk
Google Labs product manager Rustin Banks presents Jules, an asynchronous coding agent that runs tasks concurrently against GitHub repositories in cloud virtual machines. He contrasts serial programming with orchestrating parallel agents, discusses task generation and downstream review and merging, and demonstrates competing Jest and Playwright implementations alongside conference-app features, accessibility audits, and security audits. He concludes that richer context improves agent performance and identifies Gemini 2.5 Pro as Jules' underlying model at the time of the talk.
Chapters
- 0:00Rustin Banks introduces Google Labs and Jules
- 2:19From serial development to parallel cloud agents
- 5:46Conference-app demo: parallel tests, features, and audits
- 7:50GitHub-connected cloud execution and accessibility fixes
- 12:41Parallel experimentation, context, and Gemini 2.5 Pro
Talk transcript
- 0:00
[upbeat music] Hi, everyone.
- 0:15
I'm Rustin. I'm a product manager with Google Labs, and really thrilled to be here and get to speak to you today. This is really like a, a dream come true.
- 0:25
So I'm an engineer at heart. This is my first compiler, Borland C++ 3.1. It came in the mail on 10 five-and-a-half inch floppy disks. I ordered it from AOL Classifieds.
- 0:37
It was amazing. This is my bulletin board, yeah, that I hosted out of my parents' closet and salvaged computers. And I just think it's ironic that when I saw AI come out, I recognized the text-based interfaces perfectly from hosting bulletin boards.
- 0:53
And then when I saw this, like many of you, I dedicated my career to AI coding. And this is ChatGPT 3.5. Isn't it crazy that we-- that how slow this is, and this used to be state-of-the-art only two years ago?
- 1:10
It's pretty amazing. Right now, I'm a product manager for Jules, and Jules is an asynchronous coding agent meant to run in the background and do all those tasks that you don't wanna do in parallel in the background.
- 1:26
And we launched this just two weeks ago at I/O to everyone, everywhere, all at once, for free,
- 1:37
while Josh was up on the stage trying to demo other Google Labs products. [laughs] And so he called us, and we said, "Oh, we gotta shut it down so that we can demo other products," and, and luckily, we got it up and going.
- 1:49
But it was a super exciting launch, and the best part about it is to see these use cases where this is what we really wanna solve. We want to do the laundry, so to say, so that you can focus on the art of coding.
- 2:03
So the next time Firebase updates their SDK, Jules can do that for you, or if you just wanna develop from your phone, Jules can do that for you. So in the last two weeks, we've had forty thousand public commits, and we're super excited what we can bring to the open source world.
- 2:19
So, but as developers, we're meant to think serially. We take a task from the queue, we work on it, we go onto the next one. That's our default workflow.
- 2:30
Today, we'll learn about how to maximize parallel agents. I'll try a real-world demo, and we'll go through a real-world use case, and then I'll go through some best practices we've learned from watching people use Jules.
- 2:44
So for this parallel process really to work well, we need to get better with AI at the beginning and the end of the workflow. Meaning, if it's on me to now I just have to write a bunch of tasks all day, that's not fun, and if I'm reviewing PRs and handling merge messes at the end of the
- 3:01
day, that's not gonna work well either. So luckily, help is on the way. So for example, AI can easily work through backlogs, bug reports to create tasks for you, with you, and then, uh, at the end of the SDLC, help is on the way where we can use critic agents, merging agents that can bring everything together and
- 3:24
make it so that this tr-- this parallel workflow that we've envisioned can really come together and not drive us crazy.
- 3:33
Remote agents are uniquely suited for this. Agents inside of our IDE are always gonna be limited by our laptop. And when you have these remote agents in the cloud, essentially agents as a service, they're infinitely scalable, they're always connected, and then you can develop from anywhere from any device.
- 3:51
We've seen two types of parallelism emerging. This is the type that we expected, which is multitasking. Oh, I'm just-- I have ten different things on my backlog. Let's do them all at once, and then we'll merge them together and test them.
- 4:08
Interestingly, you saw an example of the second type this morning with Solomon from Dagger showing how he wanted three different views of his website at the same time. This was the emergent behavior we didn't expect, which is multiple variations.
- 4:22
Essentially, we see users taking a task, especially if it's a complex task, and saying, "Try it this way, try it that way," or, "Give me this variation to look at," or multiple variations to look at, and then you can test and choose.
- 4:38
And we can have the agents test and choose the best ones, or the user can, can test and choose.
- 4:45
So for example, we see lots of people who are working on a front-end task, test, and they're in a React app, and they're saying, "I'm adding drag and drop.
- 4:55
Maybe try it using this library, uh, the React beautiful, beautiful drag and drop, or maybe use dnd-kit, or maybe try it using the test first." And in this parallel asynchronous environment, you can just spin up multiple agents at the same time.
- 5:11
They can try it, they can easily come back together, choose the best one, and you're off to the races. Okay. Demo time.
- 5:21
So exit out of this. For a demo, I'm going to use the conference schedule website. And
- 5:32
Swix, for all his skills, as you can see, has probably not spent a lot of time designing the, the schedule website, as you can see there. Anytime there's a horizontal scroll, scroll bar, uh, we, we know that's a problem.
- 5:46
But luckily, they knew that, and they said, "We're just gonna publish the JSON feed, and we'll let, we'll let hackers hack. Uh, engineers do what we do, and let's build from it."
- 5:56
So Pahlav, who is here, built this amazing, uh, conference site where you can favorite things, you can bookmark things, and, uh, this is what I use to keep track of my, my sessions for the conference.
- 6:09
And so I messaged him, I said, "Hey, can I u- can I use, phone this and use this for, as an example for Jules?" And Pallav said, "Oh yeah, sure.
- 6:18
Actually, I was sitting in my last session on my phone, and I fixed a bud- a bug using Jules." So I thought that was perfect. So this is how I would start something like this, is I would go into linear, and I would say, "Okay, first thing we need to do," we just heard Scott talk about it,
- 6:34
is I want to add a way to know if this parallel agent is gonna do a bunch of things at the same time, that it's getting it right. So first we're gonna add in some tests, and then I'm gonna actually, I'm gonna kick this one off while I'm thinking about it.
- 6:50
And then, using that idea of multiple variations, I'm gonna say, "Add it with Jest, and add it with, add it with Playwright at the same time," and then we'll look at the test coverage, and we'll choose the one that has the best test coverage.
- 7:04
Once that's done, then I can go to that other mode of parallelism, and I say, "I would like a link to add a session to my Google Calendar. I would like an AI summary when I click on a description."
- 7:14
And these are all features, but what I'm really excited for is for AI to do the stuff that we never seem to get to, such as accessibility t- audits and security audits, all those things that seem to go on the backlog but are really important, and I'm super excited for AI to do that.
- 7:31
So we're gonna also have it do an accessibility audit and improve our Lighthouse scores at the same time. This is mostly a front-end demo because, well, I'm mostly a front-end engineer, and it, it's a better visual representation, but we've seen all these, all these apply to the back end as well.
- 7:50
Okay, so here's Jules. We a- told it to add, add tests in a Jest framework. It connects to my GitHub, all my GitHub repos, and, uh, it's gonna give me a plan.
- 8:02
That looks about right. I can see it's gonna test the calendar, the search relay, the session. That sounds great. I can approve the plan. So Google, so Jules now has its own VM in the cloud.
- 8:13
It's cloned my whole, whole code base. It can run all the commands that I can run, and un- and importantly, after it has these tests, it can run these tests so it can know when we add a new feature if it gets things right.
- 8:26
So I'm gonna fast-forward a little bit here. And so this is adding, uh, Jest tests. You can see all the, the things it's, or all the components it's, it's added to the tests.
- 8:39
It's added to the README, so now next time that it goes to add something, it'll look at the README and remind itself, "Oh, this is how I run the tests."
- 8:47
And let's see how it did on test coverage.
- 8:52
Okay, we got down to, looks like about, estimated test coverage looked like about 80%, so that's pretty good. We could compare that with Playwright, and then we could just choose the, the one we like the best.
- 9:06
We merge that into main, and now we're, we're off to the races. So that, again, it's automatically integrated into GitHub. We merge that into, into main, and now we can start saying, "Okay, now I want a calendar link."
- 9:20
So I want a calendar button that can go in, and Jules will work on that, and then sure enough, it ran the test. The test didn't pass the first time.
- 9:29
It makes some changes. Now the tests pa- pass, and I can review this code. Eventually I could look at this in Jules browser, but I feel pretty confident about testing this knowing that all the tests pass.
- 9:42
Similarly, for, uh, the Gemini summaries, when I click on a description, I can get a Gemini summary. I put this one in an emulator, or I emulated a mobile view, just so you can see I could have done this from my phone.
- 9:54
So this is making accessibility audit, fixing any issues from my phone. Uh, never mind the console errors. Jules is going to fix those. And then I can go back.
- 10:07
I can... Now we have this big merge we need to do, and to be honest, I ran out of time to finish the merge, and Jules should help me with this merge, and it's called an Octopus merge.
- 10:18
So surely Jules, as a squid, should help with the Oc- Octopus merge. But let's just pull our, check out our add to calendar button.
- 10:28
Go back to this. Localhost. Refresh. And now I have a calendar button. Let's test it. Okay, let's add this to my calendar to make sure I know to come to my own talk, and there it's on, it's on my calendar.
- 10:45
I could then now, again, pull this back into the main branch, and now everybody at the conference has the ability to add, add sessions to their Goo- to their Google Calendar, along with everything else that we saw there, a full test suite, all the accessibility audits, a Lighthouse scores improvement, and that took me all about an hour,
- 11:06
and managing the, the parallel process in the back end.
- 11:11
Okay. So, in fair- in summary, the secret to working in parallel is a clear definition of success, because nobody wants to review PRs all day. So think before you get started, "How am I gonna easily verify that this works?"
- 11:28
Again, Scott hit on this as well. Create disagreement with the agent. Tell it, "Don't stop until you see this," or, "Don't stop until this works." And then a robu- robust merge and test framework at the end to put everything back together, and help is coming.
- 11:45
This is how I prompt for Jules. I give it a brief overview of the task. I tell it when it will know when it, it got right, any helpful context, and then I'll, at the end, I'll append a simple broad approach, and then I'll change that last line maybe two or three times, depending on the complexity of
- 12:02
the task. So for example, if I need to log this number from this webpage every day, I'll say, "Today the number is X, so log the number to the console and don't stop until the number is X."
- 12:14
That was a simple test that I wrote in. It'll keep going. I give it a helpful context like, "This is the search query," and then I'll say, "Use Puppeteer," and then I'll clone that t- task because I can, it's in the cloud, and I'll say, "Use Playwright."
- 12:30
So again, have an abundance mindset. We're used to working on a single thing at a time. Easy verification makes it so now we can work on multiple things at the same time, try lots of things.
- 12:41
As we saw this morning, look at different variations. We can, with a parallel process, we can, we have the ability now to try things that we would never have tried before.
- 12:52
Let AI help with those bookends, the task creation, and then the merge and, and test part, and context. Keep using MD files or links to documentation to getting started do- documents.
- 13:03
The more context, the better. And then we tell people, "Just throw everything in there." Jules and other agents are pretty good at actually sorting out which context is important, so more context is better at this point, but maybe that's just for, uh, the Gemini models, which I should have mentioned, Jules is powered by Gemini 2.5 Pro.
- 13:24
Quick shout-out, thank you, Team Jules. Couldn't have done any of this without you. If you have any questions, you can DM me. I'm Rustin Banks, [REDACTED:username] on X. Thanks, everybody. [upbeat music]