Explorer
Content
videos
flutter-antigravity-observable-flutter-76.md
videos antigravity flutter-antigravity-observable-flutter-76.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
import SocialEmbed from "../../../../components/SocialEmbed.astro";


# Flutter & Antigravity | Observable Flutter #76

<SocialEmbed platform="youtube" id="s5uGpolyHd4" />

## Description

Watch as Craig Labenz is joined by Rody Davis and Andy Zhang to explore Flutter development in Google's new IDE, Antigravity.

Download Antigravity → https://antigravity.google
GitHub → https://goo.gle/4nBfIQj

Watch more Observable Flutter → https://goo.gle/ObservableFlutter
Subscribe to Flutter → http://goo.gle/FlutterYT 

#Flutter #ObservableFlutter

## Transcript

**0:00** · \[music\] Hello everyone and welcome to another episode of observable flutter.

**0:13** · My name is Craig Labenz and I'm your host and today we are treading into uncommon rare ground in observable flutter history where I have the pleasure of being joined by not just one but two esteemed guests.

**0:28** · One most of you probably already know and the other you will know in short order.

**0:34** · So as you may have heard there was some news recently. Google has a new AI based editor and it's called anti-gravity. I've of course been playing around with it a lot. Maybe some of you have as well and today we're going to kick the tires and I I'm very excited about the guests today a lot of expertise.

**0:57** · They've both either used or been working on gravity quite a bit. So before we get too far into it please do recall that this is the flutter community. We hold ourselves to a high standard and I know today we will meet and maybe even exceed that standard.

**1:16** · All right.

**1:19** · My guests today are both Roddy Davis and Andy Zang. They work at Google of course. Roddy is one of my compatriots in the developer relations wing of Google and Andy is a design engineer on anti-gravity and has been building it for I don't actually know how long.

**1:37** · We'll let Andy tell us that.

**1:39** · So Andy and Roddy welcome to observable flutter. You can introduce yourselves.

**1:46** · Hey guys. Great to Great to be here. My name is Andy. I'm a design engineer on the anti-gravity team.

**1:53** · And great question earlier. I've been working on anti-gravity for just over 3 months now. So it's been a very very exciting crazy 3 months and we're super happy to put this out in the wild for everybody to be using it.

**2:06** · I'll pass it on to Roddy now. Cool.

**2:08** · Awesome. I'm Roddy. I'm on the AI workflows team at Google. I'm in DevRel and I'm super excited to be able to think about all the ways that we're using Gemini that includes Gemini CLI, anti-gravity and a bunch of other services that you have come to love.

**2:24** · I also really love working with the flutter team and all the different full stack projects across Google.

**2:32** · Nice. Yeah. Okay. So it's funny you know the the answer of 3 months is is quite funny. It's really not a very long amount of time but I think as a lot of people know this all came out of the Windsor fact position which was just kind of mid summer of this year. So it couldn't have been much longer than that and uh so obviously these projects take a lot longer than 3 months but Google has has scrapped this together very quickly very honestly impressively.

**3:01** · I didn't know what to expect the first time I launched anti-gravity and just a few nights ago I was coding with it of all night. I was preparing to open source this library that I've been working on and I found it to be extraordinarily delightful and helpful in a way that really exceeded my expectations and you know I'm I'm not just saying that like that was my my very real experience using it.

**3:27** · So Roddy recently you put up you you just kind of screen recorded something put up a quick video on YouTube.

**3:35** · Folks may or may not have seen that. Can you walk us through what you were doing and just kind of how you think about using anti-gravity?

**3:43** · Yeah.

**3:44** · So anti-gravity is like a really cool way to start from scratch or kind of work at multiple levels at once. Um as people know like when you're working with flutter it's really common to have a bunch of like mono like a mono repo with like sub packages and specifically anti-gravity has a thing called an async manager and you can actually open up individual packages. It's like their own like sub projects and be doing a bunch of tasks across everything at once.

**4:14** · Um the video that I uploaded was like starting from scratch with flutter and like that end to end experience of like I have this idea for an app. Can you come up with a plan iterating on the plan and having it like do native dependencies, fix cocoapods for you and also even run Mac OS in the background and it was really cool.

**4:36** · I I had a great experience with it and when you can get it working with it under like 10 minutes I feel like that's usually a good sign of success. So Fixing cocoapods too. That is the real challenge. \[laughter\] No small feat.

**4:53** · That's flutter development's version of you know does it run on IE6? Yes. Yes.

**4:58** · Windows or from web development like 10 15 years ago. Yes.

**5:04** · Interesting comment here. So I'll obviously just go to chat randomly. Kyle says hoping we can get rid of Gemini 3 is going to start working suddenly and wonder how powerful it is but it's completely broken in anti-gravity. I presume you're basically talking about the the quota issues. Gemini 3 has been in demand and I it's been really fun I think to see how many people all around the world are using it but uh you know there are for more servers. Yeah.

**5:30** · \[laughter\] GPUs and they're they're trying to slap more into those data centers as fast as they can. Uh all right. So at some point today we're going to I'm going to launch anti-gravity and we're going to we're going to play around with it and actually try to build something and if we've obviously got Andy here to make sure we don't miss any of the bells or whistles that might be less obvious.

**5:51** · Either of you two have any other thoughts before we get into that?

**5:56** · Um I would say this is like a really cool opportunity for people that are looking for a desktop driven agentive experience.

**6:05** · If you think that it's just a VS code fork you know you definitely wouldn't be remiss because like it does share the same extensions and other stuff. But it really does like have so many little DX features that have added up to like bring a really delightful experience when working in this IDE. Like for example the ability to like kick off like background sub processes.

**6:28** · You're in the terminal and I can highlight a part of the terminal and then have that put into the chat or being able to like debug things like in all the different levels. When you run a web server it opens up a notification that can open up the browser and control it, take screenshots and take it's like this this full end to end experience that I always uh kind of wish that VS code could do but I just feel like it does it at just a really nice level and then things like the async manager and really deep Gemini integration.

**7:01** · Yeah. I think Roddy couldn't have said it better on that. I think we've really spent a lot of time trying to think of exactly about the things you were just talking about which is the end to end experience.

**7:09** · There's a lot of work that happens in the editor but there's also so much work that happens inside of the browser and there's so much work that happens in the research and why have such a fragmented experience across like these different services when you can all have it bundled in one and I think that cohesion of all of it in bundled in one really makes the developer experience just way more delightful and I think that folks are going to find that in anti-gravity.

**7:31** · Yeah. Like I I literally caught myself copying logs. I was like wait like this is now a built in feature. I no longer have to do that. I can just say look at this terminal tab and then just grab it for me.

**7:41** · \[laughter\] Yeah.

**7:43** · I think a big part of Oh go for it actually. I was just going to say I I actually don't think this is why I was really excited to have you specifically on Andy and I I imagine Roddy also knows a lot of these things.

**7:54** · Mhm. I think right now I am the opposite of an anti-gravity power user. I have not done any of these native terminal like just piping the text through from one thing to the next features that you two are talking about. So anyway I'm I'm excited to see these in action.

**8:10** · Yeah.

**8:12** · What were you going to say Andy? Yeah. I was going to quickly add before we we jump on to the demos that I think the the really cool thing about building anti-gravity as one of the design engineers on it is that like you use the tool that you are building and so to that flow of like you know like you have these terminal logs like oh I got to like move it around. Like there was at some point someone on the team was like this is frustrating like why don't I just go ahead and build this so that it's just way easier. And so when you have an entire team of people who run into these issues and they are actually in control of the product.

**8:45** · That's how you you end up with the situation where the product it feels like as if everyone has really thought through all these things that users kind of go through and so hopefully that's what folks experience when they try it out. Mhm.

**8:57** · \[clears throat\] Totally.

**8:58** · So that begs the question. There was a developer who was working on anti-gravity and they were tired of piping you know manually copying and pasting error logs and then they built the solution to it in the anti-gravity. So are you all building anti-gravity in anti-gravity? Exactly. It's it's anti-gravity inception.

**9:17** · \[laughter\] Nice.

**9:20** · Best way to dog food. That's for sure. Hell yeah. Yeah. Yeah. Exactly. All right. Well I'm ready if you two are ready. So \[clears throat\] I don't have a tremendously detailed plan today for what we're going to build. Long time viewers will know that I often just ask chat for inspiration on what we want to build but I'm also happy to take suggestions from either you Andy or Roddy but yeah let's let's begin here.

**9:48** · So I'm going to share my screen which is right here. And here we go. I'll make the text a lot bigger. Now, my first question for both of you, and you can answer in whatever order, or as is tradition, just talk over each other. I am not I would say I'm not natively drawn to, or an expert in, or feel very comfortable in the agent first workflow.

**10:22** · So, how do you And maybe I'll start with you, Andy. How and you are you imagining developers who want to really experience the agent first workflow use Antigravity? Like, where should I click? What screens am I on? How do I think about it?

**10:42** · Yeah, I think that's a really good question. And I think, you know, a lot of developers were just fluent in code, and that's kind of what we live and breathe, because that is ultimately the source of truth.

**10:52** · But as folks shift towards more of a like an agent first view, it really takes a bit of time, you know, you're seeing a lot of unknowns, and you're like, I haven't seen this before, and I don't know if this if this is for me. And as you use it, some people might love it, other people might still prefer the code. And ultimately, what we try to bake in is for you to have the agency to pick, like, I actually prefer working in code, so I'm going to stay within the editor.

**11:15** · But if you want to work in something more agent first, we do have a the the agent manager, which you where your cursor currently is. Um and in that view, the focal point is a lot more on the agent. And so, suddenly you're able to like focus specifically, like, oh, like, this is what I should be doing next, which is starting a new conversation in this this current workspace Story Forge.

**11:42** · And then from there, the agent will kind of carry you along the journey of like what it's kind of working through.

**11:47** · And at any point when you realize, like, hey, this might not be for me, I prefer go like stay in the code, you still have the open editor button on top right, or over there, right below the input, to bring you back into a more familiar experience in the editor. So, it's really just like you get to choose your own adventure, depending on what you want to do. If you want to read code, the editor is there for you. But if you want to read what the agent is doing and thinking for you, then the agent manager, or the side panel within the editor, is the right fit for your use case.

**12:17** · So, ultimately, the flexibility is built in for users to dip their toes in the agent first experience, but also always hop out when they want to.

**12:26** · So, I think, one of the interesting ways to think about it, if you're like really deep in the Dart and Flutter world, is this is like build runner, but with a prompt, and you can have multiple sub processes going at the same time. Uh you know, if you're doing a lot of Flutter work, it's probably common that you're going to have a bunch of uh folders cloned on your your development machine, and you're going to have a bunch of probably internal packages, external packages, uh and at

**12:56** · any given time, you may be wanting to make sure the change log is up to date, and you're bumping a version, or you're over here making sure that I've updated all the dependencies. There's there's a lot of like common tasks that in Flutter and Dart that just have toil that either have commands run um that aren't necessarily complicated, but this is where like an async manager can be really nice, cuz you can you can have all of your your packages that you've cloned uh like as like top-level things with subtasks.

**13:27** · And you can be saying, like, okay, go update this, and then you can go work on your project, and then you can come back, and you'll see this is waiting for input from the user, so I can see, yep, oh, that looks good, go ahead and publish, and then you can kind of be working around. It kind of gives you that ability to just like hyperthreading to be able to switch processes faster while keeping your keeping yourself in the zone a lot more of the time.

**13:55** · Yeah, so one one question I have in response to all of that, and it it kind of I guess it's in in response to one of the first things that Andy was saying. Is it true, like if I actually haven't even tested this.

**14:07** · This is a genuine question. Is it true that if I start some conversation here, like, you know, please I don't even know if I already did this or not, but please update this to the latest Flutter and Dart versions.

**14:23** · \[clears throat\] So, we'll see I'll just let this go. Look, it may already the task may be complete.

**14:28** · The difference between the agent view and the typical editor view, is it really just that the code is hidden?

**14:34** · Like, if I click editor view right now, I'll see this same conversation happening. Yes, but it's also in another window. I think that's what confused me. Think about it as like a menu for your sub projects. So, it's like it lives above the the folder level. Like, this is like across anything that's inside of Antigravity.

**14:58** · So, it's like your front door, basically. Like, you can you can have things in 20 different directories all open in the async manager. They don't have to be all in like the same sub project.

**15:08** · Yeah, I think that's a really good way to think about it is that you ultimately become like more zoomed out, and that's also the reason why we call it the manager, because you're just not just focus on one folder anymore. You can zoom out and see many different things.

**15:20** · And that just gives um so much option for you to just like spin up like as many as you want across as many workspaces as you want, and just feels a lot more powerful. I see. Okay. All right. All right. Yeah, the I was originally thrown by the jump in the jump to another window here.

**15:41** · Oh, we're going to beta. All right, let's do it. Let's jump to beta. And the quick way to do it is command E. And you can Okay. kind of jump out into it. Yeah. Oh. Is that toggling windows, or is it staying within the same window? It should be opening it up as a new window. Yeah, cuz it's its own experience. Yeah.

**16:05** · Okay. I think I have some uh some more tire kicking to do there. One thing that I expected I got used to in the Gemini CLI, whenever it wants to run a command, you've got the three options, yes this time, yes always, and you know, no, what are you thinking?

**16:24** · There doesn't Is there a yes always? Cuz it feels like when it wants when it comes back for input, I'm not seeing a way to say like, yes, and you don't need to ask. Uh Andy, you want to talk about some of the settings that are available?

**16:42** · Oh.

**16:43** · Andy's connection is not what Andy hoped it would be.

**16:49** · \[laughter\] Yeah. He'll be back at some point. Brody, you want to talk about Yeah, go ahead. So, basically, if you click on we should have an Antigravity user settings that is in the gear icon on the top.

**17:04** · Basically, command comma, I'm guessing you're Yeah, and so here is actually where you can choose when to trigger those terminal. You can say like at what level the agent deciding if it's going to request permission is the first option in that drop-down. And you can say like always proceed. And and if you keep scrolling down, this is like where you can really start to fine-tune it for your exact preferences.

**17:29** · Um you can even like disable you know, allowing anything at all. You can auto-execute always. You can even like say like, I'm going to explicitly allow Flutter and NPM as things that you never have to request. And so, this is like kind of that space where you can customize cuz everybody's going to have a different level of um um Oh, I see. So, I could say like, you know, Dart is always allowed. Yeah.

**17:58** · Oh, is it a comma-separated list here?

**17:59** · But never use like never run RM or something. Yeah. Right. And that's exactly what I was going to say. Yeah. \[laughter\] RM is off limits. Yeah. Uh okay, also I would make this bigger for everyone, but command plus and minus don't work on this window. So, apologies, folks, for the small text. So, I have not read all of the settings here.

**18:18** · And it to avoid just doing that, you know, reading aloud for the class, are there any on this screen, Brody, you just called attention to the allow list and deny list for commands. Are there any others on this screen that we should think about specifically?

**18:36** · Maybe not this one, but on the left side, you'll notice that there are tabs over here, and these are good ways for folks to really configure not just the agent experience, but the entire Antigravity experience.

**18:48** · One of the core features that is probably one of my personal favorites now when I'm doing web development is the browser, and how it's able to go ahead and make changes for you. So, Oh, is is my connection No, it's from a few minutes ago. You're perfect now.

**19:03** · Okay, great. Yeah, yeah. I just connected Ethernet, so apologies for being disconnected, but I should hopefully be good now. Um Hardwired will do it. Yeah, lesson learned. On the browser side, over here, as you can see, like, there's a really great integration with the browser with Antigravity, and you should be able to like configure it over here. There's also the execution policy for JavaScript, and also if you want to enable and disable it.

**19:32** · Um obviously, there's also configurations with the editor, given that it is a VS Code fork, so folks can change the settings with the editor however they like. Um and then notifications in tab as well. The notifications are great. It's nice to be able to like literally be on a different program, and just like it notifies you that you have something to review. That opens up the async manager and I can jump right back in.

**19:58** · Mhm. Okay.

**20:00** · So, as an example of the Nice. Yeah. It's really, really nice if you just have a bunch of things running and you know you want the agent to like intervene and like tell you if it's block it doesn't want you don't want it to RM something. So, it's going to be like "Hey Craig, like you want me to RM or this or not?" You're like "Thank god you asked me. You go ahead and \[laughter\] you just like do not RM my root directory."

**20:26** · Or any other directory probably.

**20:27** · removing all bugs on deleting the project. So. Yeah, exactly.

**20:30** · \[laughter\] Yep, can't have bugs if you don't have code. Uh great question here from Kyle for the browser you are allow list. Is this for something like pinning documentation? Like what what uh how should I think about this?

**20:40** · Yeah, that's a great question. So, basically um the browser integration the way it works is that it's going to open up uh Chrome in a different profile. Um this profile is different from your usual Chrome that you open uh and it has like a set of white list that you might allow um when you when you first uh when you first onboard. Um but sometimes when it's on a new website uh it will it will always request for permissions if you want to add it to your allow list or not.

**21:08** · And that way um you have confidence that it's not just going to go rogue and like start modifying a bunch of websites that you didn't give it permission in, but instead it will always make sure that you consent to uh it having control on a specific website before it does anything such as uh scrolling through the page, clicking on it, uh typing out input and a lot of typical browser actions that uh we typically do as users.

**21:34** · And I this would also be to help uh hedge against like the LLM is taking control and going to be taking screenshots. So, if it uh tries to click on links that are like maybe malicious or uh what you're not intending on, this is kind of like keeps that little sandbox uh for you know known websites.

**21:52** · Mhm.

**21:53** · Uh interesting. So, I mean, hopefully one doesn't have malicious links in their own projects. Otherwise, something very strange is going on.

**22:02** · Like in in a website that you're crawling or something. Yeah. I see. So, that the browser there is not only for it to test your web-based app, it is also for to crawl the web and do random things cuz obviously Gemini CLI and if you go to gemini.google.com and other LLMs as well will look up stuff for you, but they do it in a headless way.

**22:28** · Am I hearing that this will also kind of do some research on your behalf and you can watch it research as it crawls different websites. Is that what's going on here?

**22:38** · Um that is not the primary use case for it.

**22:42** · Uh but if you ask it to, it has the ability to do that. Um the the agent obviously has the ability to decide like how it wants to proceed. And so, to your point like if there is more efficient approach like the headless approach or hitting an API endpoint, it's going to go ahead and do that as opposed to opening up a browser, waiting for load time, loading entire like DOM, and then actually clicking on things. And so, um it will it knows the options available and it will always find the most efficient ways of doing things based off of your preferences. Mhm.

**23:11** · \[clears throat\] Okay, so anyway, this looks basically like a you know SSH hosts file or or \[snorts\] something where it's just it's a one one domain per line, I'm guessing.

**23:21** · Exactly.

**23:23** · Um and localhost is there because the primary use case um that that I I personally love is specifically for live coding when you are trying to spin up a a website and you are um you're just ripping it you're letting the agent just go crazy and um build a ton of features across many of your different conversations. And then um the browser is able to just start testing it for you uh and as after it's done testing it, it's also going to be able to record what it did while it was testing.

**23:50** · And so, you could just be in the agent manager and be like "Oh, like can you just show me your work?" And it shows you the video recording of the thing that it built and also uh how it tested out whether it's a scrolling or like clicking on different buttons. And when all of that happens, it's like "Oh, like not only did it write all the code for me, but it also has proof that the website works as expected." Um which saves a lot of work on our end and gives a lot of trust in the code that was written.

**24:17** · Um maybe something Andy uh could you talk about like just the level of control it has over the browser cuz I think a lot of people think it may just like kind of open it up and do it kind of basic stuff, but I've been really impressed with how powerful it is. I I'd love to see that as well. Maybe we can throw together Let me Let me just actually let's I'm going to start a new project. It'll just be Flutter counter. We'll run it in Flutter web. And then let's see it uh driving that. I think that'll be pretty fun.

**24:46** · So, I'm going to go to I don't think this code is going to be interesting. I have a repo where I put code that I write on this show and I don't think uh yet another Flutter counter app needs to be committed. So, this could be an example of using the async manager if you want. Uh if you want to start yeah. Do command E. Whoop, that's a bigger than I was expecting.

**25:12** · \[laughter\] So, the reason that happened, I kept pressing plus Oh, plus plus plus minus minus plus plus plus plus plus on the settings tab. And it wasn't rendering there, but it was doing something and it was waiting.

**25:24** · \[laughter\] Oh, that's funny. Okay, so uh Roddy Yeah, so the async manager. Yeah, go ahead and hit uh command E. And um I believe it would work in the playground, although um I would suggest like uh we could just start a new conversation at the top.

**25:43** · Okay.

**25:44** · And then this is where you can say I want to create a Flutter app, use the Flutter create tool, uh blah blah blah. Now, what's I don't want to be in this Yeah, I kind of want to just be like nowhere.

**25:56** · Um so, I don't want to be in this other workspace. No, that it should be um uh start a new conversation should be the folder, but you can um Yeah, so apparently I I have a folder that doesn't exist, but now it seem I don't know. Let's just see what this does. Oh, yeah, this is this should work. Yeah. Okay, yeah. I thought the button, yeah.

**26:18** · Which only targets web, use the empty template. Let's see if it a femoral file system, right?

**26:28** · Oh, I may need to create this folder?

**26:32** · Let's see.

**26:34** · Um I think you should be good. Press okay.

**26:38** · Oh.

**26:41** · Well, given that there apparently wasn't a problem, that was a surprising pop-up.

**26:46** · So, uh you've mentioned the async manager. Is the async there just that the task is going to take however long and it comes back when it's done?

**26:55** · Uh it's just really a manager, but um it's optimized for seeing all of your async tasks and what the latest state is. I wonder if it is blocked on this folder not existing.

**27:05** · Yeah, maybe maybe what we could try doing is we can open up a uh another new directory uh and then opening up that as a workspace. Um you can do this within the agent manager as well. Okay. Uh so, like here I would just say open a GUI in some new directory. Uh no, so so open up a new workspace um from the sidebar.

**27:29** · Um so, if you press on the taco button at the top, um you'll see that there's an open workspace below. There you go. And this allows you to add another workspace um within um your your file explorer. And so, here you can just designate another one. Yeah. Uh and this is when you can really just elevate your experience in Antigravity to be working across many, many different workspaces. And this is a lot obviously a view that you just don't get when you are inside of uh the the editor.

**28:00** · So, would a workspace like I have this little folder here uh called Flutter DevRel FDR, not to be confused with the president. And I've put a ton of scratch projects in here. Is this the kind of folder that would make sense to be a workspace or should I be one more folder in?

**28:17** · Workspace should be like yeah, the individual one.

**28:20** · Yeah. Mhm.

**28:21** · Okay, so I need to make a new folder here and this would be like Yeah. Uh AGUI web test and that's my workspace. Yep, exactly.

**28:30** · Okay.

**28:31** · All right.

**28:31** · And keep in mind you could have like a folder open from downloads, another one open from your developer folder, another one in documents, and they're all like inside the async manager.

**28:40** · Okay.

**28:41** · So, create a new Flutter web project which or Flutter project which only targets web. And then what did I say? Use the empty um flag. Or template, I said. I've also been really impressed with uh specifically how powerful Gemini 3 is to like uh take on these like really long-running tasks like uh whereas I had to clear the chat a lot with 2.5, like I've been able to go a lot longer uh with three.

**29:11** · Mhm.

**29:13** · So, I'm seeing a lot of questions in the chat about MCP. It's about 50% people saying we need the Dart and Flutter MCP server and the other 50% are comforting them and assuring them that it already exists. Yep, you can install Dart and Flutter, yep.

**29:29** · Yeah, so as a a an Antigravity user, how do I prove to myself which MCP servers I have installed?

**29:37** · The way that you could do this currently uh is if you open up the editor um and then click on that three-dot uh drop-down on the right side right below right next to the X. The three dots. And then MCP servers. Uh click on your uh yes, so here you can download some of the MCP servers, but if you want to see exactly which ones you have installed, you can click on manage MCP servers.

**30:06** · Um and then you can also view your raw config uh at the top. Uh right there you go. Aha. Yeah. Great. Nice. It's funny. I've installed MCP server in VS Code and for Gemini CLI before and on my personal computer, but it this one didn't have it installed, but now I do.

**30:26** · So this was actually useful because I apparently didn't even have it installed. Yeah. Yep. And you can also in Flutter VS Code extensions, which you'd probably already have too. But I believe when you first launch Anti-Gravity, you can import those from VS Code as well.

**30:42** · Yeah, I wonder if I failed to do that or if it got reset. I'm not sure. Anyway, great. That was a great little side quest and it actually paid dividends for me as well, which I wasn't even expecting. Now, let's return to our previous side quest, which was to see for ourselves with our own eyes, as Darth Vader would say, the web the embedded web browser and AGY driving it.

**31:06** · So I presume that I would just start by saying what should I tell should I ask Gemini to run You could say like run the run the web app to see if it's rendering correctly or something like that, maybe. That should get it to do a screenshot.

**31:27** · Uh if you go to the editor Yeah, go back to the editor. I can help you out there. Open the editor toggle agent and click on back to agent. There you go. Back to agent. That's what I needed. Yeah, yeah, yeah, yeah.

**31:40** · Okay.

**31:41** · So you can run the app using that. Okay, great. So I'll say run it, please. 30% 33% waste of tokens there for manners. It's also super super fast. I've been really excited with how much it can do in parallel.

**32:00** · And I like that another like just small little detail, but like when you're doing a big task and you have some additional feedback to give it, you just add a new message and it'll add it to the queue and bring it and kind of modify it. It doesn't have to stop everything. And the implementation plan, you can actually comment on individual pieces of it. So you can say actually like use this package instead or I don't want to use that and this all takes it as feedback while it's live uh um updating. So Oh my gosh, this is so funny.

**32:31** · I have no ability to think ahead at all. I said use the empty thing but I actually wanted to have it drive the counter app. So a terrible time to remember that I typically want to use dash dash empty. That's all right. So it could probably add the counter app pretty easily, but uh Yeah, I was just going to say let's um add some interactive UI to this app. I don't care what it does.

**32:58** · Before you uh before you uh oh, one thing that you could try doing is uh I think you're currently on on uh on fast mode. Um if you toggle that into planning mode, um we could try out some of the things that Roddy was talking about. Um so a quick

**33:16** · quick explanation of that is planning mode is where you want the agent to be able to uh think in more like task blocks and being able to do its own planning work uh and this is one to give the agent more the of the ability to create these artifacts, which are really great summaries of like different checkpoints. So as an example, uh what Roddy was mentioning was like uh the agent is able to create implementation plan for you. So that way before it starts modifying any type of code, it tells you like this is how I'm thinking about building this interactive UI that you currently have in mind.

**33:48** · Um or if it did a bunch of work and it also worked with the browser, the agent is also able to create a walk-through for you and basically tell you, "Hey, I I did all this work for you. This is my proof of work. Here's some screenshots of the browser.

**34:06** · Um what else do you want me to do?" Uh and so that's really like the the the kind of capabilities that planning is able to do. Whereas if you just want to do something very very quick and dirty um and you don't want the agent to do all this like planning type of work, that's where the fast mode uh comes in.

**34:24** · Yep.

**34:26** · And you can just have it say continue too if it gets stuck.

**34:34** · Yeah, I I've also really liked the uh the the task list that it generates too when when it's already starting on the implementation. I find that the model just stays on track a lot better and can be doing this in kind of individual parallel subtasks and uh yeah, it's just been super So one thing I'm I'm maybe concluding here, I don't think planning mode is maybe that great with uh just like, you know, run the app, please. It's like making a a plan for how to run the app.

**35:02** · Yeah, so \[laughter\] yeah, yeah, yeah, yeah. I wouldn't use it for that, but that's that's pretty funny.

**35:10** · So you could say like a good thing for like planning mode would be like I want a um I want to use routing and have this type of feature first folder structure and I want to have these models and blah blah and like it would like plan that all out as like a kind of mini PRD and then create subtasks to like go and like implement that. But the cool part is you can comment and be like "Oh, instead of go router, use this one instead or use this for state management" and stuff like that.

**35:39** · Um so you can kind of like guide the model what your preferences are and then uh hopefully save those as rules files for the future. Got it. Yeah, okay. So I'm I definitely want to do exactly that. I just can't help it continue to appreciate how funny this is. The app has been launched for like 3 minutes and it finally decided that it did it.

**36:00** · \[laughter\] Checked it off.

**36:04** · That's just very funny. Yeah, well well done there. You deserve a cookie there. You're the best boy, Gemini. All right.

**36:12** · So I think it would be fun to I I want to see to take a big step back since Gemini CLI arrived and even Gemini Code Assist before that, periodically on this live stream I've tried to lean really heavily into AI for a specific project and even had Randall, one of our Flutter GDEs on twice to work

**36:36** · through this concept of having the LLM start with a PRD and whatnot and at that point it was really a roll-your-own experience to you know, you could just say like, "Man, burp up all this code for me, please."

**36:52** · Or you could be more thoughtful and and start with a plan and then turn that into a PRD and implementation steps and whatnot. Sounds like this experience of doing that is now basically just baked into selecting planning out of the drop-down here. So I do want to see that work and kind of see what the UI looks like, although we're getting a bit of a preview here. I'll close this for now.

**37:15** · So I was thinking maybe we could ask this to um build on this and maybe we use state management to like store the history of colors and have a back button to kind of go back through history and see what random colors we had before. All right, not a very something more complicated like add undo redo for individual screens and then be able to use routing to store a kind of a list of the those pages.

**37:47** · Yeah, that that that's basically um you know, undo would be go back, redo would be go forward in the stack. Yeah, we're totally totally thinking same way there.

**37:55** · So let me I'm going to start typing and I want you to to interrupt when you have a better idea of how to prompt it for what I'm saying. Sound good?

**38:07** · Perfect. \[snorts\] You like interrupt \[laughter\] me. You know, don't say please. And also like, you know, feel free in chat, you know, to give us any ideas on what to tweak as we go to.

**38:20** · Do I even need to say please create a plan? Like actually how how do I prompt this?

**38:24** · Put it in planning mode and say like, you know, um I want to now use like a feature uh folder architecture with routing and I want to have like undo you know, like like list like what you the goals are. And it'll create a plan from that and it'll say like, you know, hopefully have you review that plan and then you can go forward.

**38:48** · All right, so I want um routing. I'm just going to put routing and let we'll see what it comes up with. Uh state like a state management package and history for what colors have been generated. And then I want to be able to revisit old like past previous colors. Also maybe an ability to add a custom color or something. That's maybe something I would take input. Oh, sure. Yeah.

**39:25** · Uh the ability to add a custom color instead of only generating random colors. We've got a question from from chat here. Folks may know, Emma asks, "Is it true that saying please makes it better?" This has been rumored for, you know, years at this point.

**39:51** · \[laughter\] We could try. We could ask uh say please, please, please. Yeah.

**39:56** · \[laughter\] I beg you.

**40:00** · One one thing before we proceed, uh could we check what the settings are right now for our artifact review policy? And uh the reason why I ask is because I want to make sure that the agent takes the time and like and like asks for your input. Um the way to get there is you can press on the the uh uh anti-gravity uh settings. And then yes, so right now the review policy says agent decides. Let's change that to always be uh request review.

**40:23** · And then the reason why is because now when it creates the implementation plan, maybe it thinks it's straightforward, but you know what, just for the sake of like showing off what it's able to do, I think it'd be really great for us to um see the the plan, review it, be able to add comments, and then being like, "Hey, LGTM. Let's go ahead and build this."

**40:45** · Also, you may want to kind of start with this mode as you build up confidence with anti-gravity and like kind of switch to those more deciding modes later as you uh uh can kind of trust where it's going.

**40:57** · Mhm.

**40:58** · This is an interesting question. I haven't seen this feature, but it seems actually quite reasonable. Like, I've given you this really lazy prompt. Can you improve the prompt for me? Which is gotta be the peak laziest thing in the world. But is that a thing? Or is Randall making that up?

**41:13** · This This is not a thing, but what you could do as a shortcut to that is you could write a simple prompt, and then you can ask it enhance this prompt for me, please.

**41:22** · And then the agent will just enhance the prompt for you, probably most likely. Uh and then maybe it'll also propose other features. And then if you want, you could just copy that and then be like, "Yeah, let's do exactly that." That's also where I think the implementation's really nice, though. It'll take this and and kind of already start to enhance that cuz it'll list out its thinking and all that. Yeah.

**41:42** · Yeah, I I wonder, I mean, that's kind of what we were already doing Yeah, exactly. planning mode. So, this might this might be redundant. Let's just go with uh let's go with asking it to plan this out. Mhm. Although uh uh we've started it. What \[snorts\] one of you said that maybe it would come up with its own features as well, and I can imagine it really getting creative on new features in the please enhance this prompt style.

**42:09** · So, one of the things that I've usually done when I'm sending uh prompts to the model uh when I'm starting off like a a bigger task like this, is I usually always suffix my prompts with like come up with a plan and get started to try to trigger like a like thinking through the process of like what it's going to do, and then um building out the plan. But um that's like one of the things that anti-gravity just kind of does for you if you're in planning mode. So, um I found I didn't have to use that as much.

**42:36** · Nice.

**42:37** · Oh boy, we're getting a lot of a lot of proposed screens and classes in here. It's going to flutter riverpod.

**42:45** · That is uh And so, do you have an option to select the implementation?

**42:50** · All right, so yeah, it popped it up. Okay. And now do you see the GIF here, um oh, I can dismiss this. Is that what's going on? Okay, good. Okay.

**42:59** · Yes.

**43:01** · I didn't see the dismiss button below it. So, as you start to hover, do you see that little blue icon?

**43:07** · Mhm. That is the comment button. So, you can like comment on any one of these items in here and like give it your preferences of on what to use. Nice. Also, just so that's awesome, and I uh yeah, okay, cool. I see that and I should because it's you don't have It doesn't stop the flow. It'll take your input and just constantly modify as it's building.

**43:26** · So, you can you can give it like this live input um and guide it as it's generating.

**43:31** · Mhm.

**43:33** · Also, this this is the subtlest little thing, but there's obviously some styling on this markdown. And I just find this to be very pleasant. So, Yeah, that's a cool quote. Yeah.

**43:45** · Wonderful.

**43:46** · Okay, let's skim this. So, refactor a single thing to be more over-engineered. Great. User review required. Yeah, that obviously using riverpod for state management, go\_router for routing. Flex color picker, that's great. Then it's going to use those packages. Great. Why not? It even wants to add localization. Love it. So, we've got feature-based stuff here. The color generator, history.

**44:14** · Um I can't tell if this is like clipping cuz there's so much under color generator and nothing under history.

**44:20** · It's definitely gone with clean the clean architecture model of like You can you can comment on that and say I want a feature-first folder. Yeah, exactly. I don't want uh So, yeah, it just literally like uh yeah, yeah, right there. Oh, I got it. You can also select if you if you want to be highly specific, uh you can also just drag and select text that you'd want to comment on.

**44:42** · Um so, you all you always have those two options, whether you just want to comment on the line, or you can just comment on the text that you have selected. I'm giving it a really like confusing lazy message here.

**44:56** · I want to see how it Now, is it automatically incorporating this, or do I need to Like, I don't want to say proceed on the whole thing, but I do want it to proceed on taking this comment. So, what do I do with that? So, you have a couple of options here. You can uh maybe just click on the review button, and then uh here add an optional message and click submit. Or if you want to go back to what you all are used to, you can also do that inside of the the prompt box inside of the at the bottom right um to submit the comment.

**45:28** · Then as you can see, the comment is already attached to your input box. Yeah, this is like a GitHub code review. Where you can leave a bunch of things and then submit them all at once. All right, so I'm going to lean into that. See if we have any other suggestions here. Controller. Manages current Sure, that seems reasonable. Routing.

**45:51** · Yeah, the history screen. So, okay, I'm going to put another thing here like I want a navigation stack that goes backwards through chosen colors, not just one screen that lists all past colors.

**46:12** · Obviously.

**46:12** · way cheaper and faster to make decisions here than it is later. So, uh definitely make sure to get this implementation how you want.

**46:21** · Oh, right, right. Yeah, once it's written all the code and I'm like boo, then I've wasted a whole bunch of you know, my own tokens and my own bill, right?

**46:31** · Okay, so to play blah blah blah, generate, yeah. Color Okay, that seems reasonable.

**46:37** · History.

**46:39** · So, remember that this is a navi- or like um yeah, history stack. I forget, you know, kind of a navigation stack like history or chain stack. Yeah, undo, redo stack. Yeah. Not just one page. Yeah, yeah, yeah, yeah. Perfect.

**46:56** · \[gasps\] Got some color. Yeah, yeah, yeah, yeah, verification plan. Well, one day we're going to see this run in the browser, and it's going to be awesome. So, yeah, submit.

**47:08** · I don't know why, I just think it's really cool to see like when it's submitted and you see how like the count of comments that it it reads and like the context. It's so uh I just every point in this editor, it's like it's giving you confidence that it's like uh reading the right type of things. So, um yeah, it's super cool.

**47:26** · \[laughter\] I love the idea of putting make no mistakes at the end of any prompt. And also like don't go jump.

**47:34** · Uh let's see.

**47:37** · \[sighs\] Skimming chat here while it cooks to see other other questions. Folks, normally I read a much higher percentage of chat messages, so I apologize for that on this. Um I am trying to read as many as possible. Randall apparently had some genius idea earlier. Let's see what he said before. Oh, that was the enhance the prompt thing. Okay, great. We We talked about that.

**48:04** · Uh Danny, Danny is the maintainer of the Flutter and Dart VS Code extension, which I presume is the same one used in Cursor and anti-gravity and all of them.

**48:17** · So, Danny is asking, "Where's best place to send feedback?"

**48:22** · Mhm. Yeah, that's a great question. Uh best way to send feedback right now is if you open the settings window, um there is a place where you can uh so, open anti-gravity user settings, and then at the bottom left, there is a provide feedback section. Uh and this is where you can just provide any type of feedback that you have. Um make sure you submit that. I think the dev team would be very happy to see this in the the feedback form.

**48:49** · Great, I'm putting it in. It's not really a bug report. I guess it's just general feedback. Yeah, and this Yeah, it's me.

**48:55** · And the nice thing about this is that it has all the labels needed, so we can just uh have it be a lot more organized in that way. We can just get to your uh feedback as soon as possible. As you can imagine, we're getting a ton a ton of feedback, so it's it's really nice to have it like organized, so that we know exactly like, "Okay, like these are the ones that are features, these are the ones that are bugs, and how we can prioritize that to make your developer experience better."

**49:21** · All right, so this must be just kind of representative cuz we lost history entirely, but I trust that it's still going to add that. No, it's kind of dropped. Oh, maybe the navigation is just going to yeah, be baked in. So, it's not really its own feature anymore. All right, it'll be interesting to see Yeah. maybe the color controller is just going to have that now? Yeah, we'll see what it does.

**49:41** · Okay, I'm going to say proceed. I'm ready to roll the dice.

**49:45** · Do we need to um change the editor settings to make it to agent decides or will it request each time?

**49:53** · Now it's going to request each time, uh but you can always go back to the settings to change it back to um agent decides or right below the proceeded with implementation plan, there's a shortcut where you can click on request for uh request review on the right side and there's a drop-down where you can just configure it uh for your entire user settings. Oh, so this is not just for this conversation. This is a global change.

**50:17** · Yes, exactly. Okay. All right, well let's put it on agent decides because that's what I want.

**50:24** · \[laughter\] Uh all right, going back to chat here. Ooh, every now and then I This is another form of rolling the dice where I just see a long message, the first few words seem reasonable and I click it without reading the whole thing. Here we go.

**50:40** · Uh missed the start of the stream. Is there uh will there be a Flutter sub-agent support for anti-gravity to see into actually running Flutter apps in a simulator? Actually, this is kind of related because we're about to run it in the web app, the browser, and see it drive there. But yeah, any any connection with simulators? I imagine that's maybe a bigger challenge.

**51:02** · So, um right now there's the the dev tools like MCP server control for browser specifically and that uses like Chrome dev tools like deeply integrated. Mhm.

**51:14** · But we as Flutter developers can also take advantage of the Flutter driver where it can start to write and run integration tests and smoke tests. Um um on these like kind of different things, they can like write a specific test to instrument what you're trying to do um and that would give you a lot better results cuz you'd have the access to LSP and all the logs.

**51:37** · That makes sense. Yeah, so \[sighs\] of course that's running through an MCP browser server and that makes sense.

**51:43** · When I before I was at Google, I was at Zapier, which is kind of like you know, it's the connective tissue of the internet. You can have the outputs from one service be the inputs to another service and it it just provides this standardized kind of like pub sub for the whole internet. And of course, MCP is that on your computer for all the different things.

**52:04** · Um So of course, that runs through an MCP server. And it's also like really deep control. Like it can have specific logs from V8 directly as opposed to um just like high-level ones. All right, let's see. Do we have Oh, yeah, we got some red here. So that means code.

**52:26** · All right, so this code was waiting for me to accept it, which of course was possible because we put it on agent decides and then it decided that I needed to accept this or not. But other than seeing that there was some red here and thus deducing that it had written code, like let's say I was just sitting back here and I didn't open this file myself and I'm I'm just kind of waiting.

**52:51** · What is the intended flow for me to interact with the progress that it is making?

**53:00** · Yeah, I think that's a that's a good question. I think something that we've been trying to uh figure out was the the best way for developer. I think when you're looking at the conversation, that is like one way you could be spending your time, which is just tracking and seeing what is the work that it's doing.

**53:14** · So that you always have the ability to course correct uh as needed. Um there's also, if you want to review the current changes that it's currently done, there's the review changes button, which is right above the stop button uh on the bottom right. Um it's a little less visible, but yes, that's the that's the place where you can review the code changes if you care about uh all the code that it's written. Um otherwise, I think it's more of like a hey, you could just sit back, relax, and let the agent cook. And from there, once it's done, it'll give you a walk-through of everything.

**53:46** · Um and then that way um you get a summarized version of all of the work that it's done. So as you can see right now, because \[clears throat\] the agent is still running, you don't have that walk-through yet. Uh and that's because, you know, it's it's still working. But once it is done, it will create a walk-through of everything and the screenshots uh of of the web app that you just built. This could also be where you open up command E, go to a different project while it's doing this, and you'd get notified when it's finished.

**54:14** · So like that's where the async manager would really start to come into play. Uh you would you know, like sometimes it can take a while to build the the iOS and Android application, and so you could be like on a different task and uh yeah. Yeah, that that'll really, you know, that'll task that will stress test my ability to think about two things at once.

**54:38** · \[laughter\] Like yeah, the the bottleneck is me. You're single-threaded, so yeah. Right, exactly. All right, let's see what it came up with here. So Oh man, this is great. Now I don't I don't know how it's going to handle kind of like forks in the nav history, so let's Orange wasn't part of us.

**55:00** · custom color picker on the top right.

**55:03** · Oh yeah, so wait. So if I give if I go back in time and then generate a new random color, we lose the history in front of it. That makes sense. I was wondering how it was going to handle that edge case. And then we'll pick a custom color as you said. Oh my goodness gracious. Look at this.

**55:20** · Yeah, that's cool.

**55:21** · Uh now I was kind of expecting the like color wheel, but be an option you could refine later, but yeah, it's a Ooh, that's a that's a hefty color there. That's really limey. I do feel like this is a just like a good example of one, something that already looks better, you know, by default. Um Gemini 3's I feel like a lot better at UI design and uh also just like more technically deep.

**55:47** · \[snorts\] Yeah, this is I mean, you know, obviously we got to ship this. This is like a great startup idea. Uh all right, I want to see you mentioned the walk-through and just such a file literally labeled walk-through has appeared. So this is presumably the beginning of the answer to my next cute question, which was how do I look at the walk-through?

**56:08** · So, let's see what it said. It believes, and I agree, that it has successfully refactored the application in the requested way. The code is organized by feature color rather than by layer. Wonderful. Uses Riverpod, GoRouter, and generates random colors. I saw that. It did it. And has the history.

**56:29** · Awesome.

**56:30** · Yep, generating a new color clears the forward history, standard behavior. Yep. As as witnessed by us. It's got the picker. Yeah, it didn't uh wasn't what I was expecting. Maybe we'll come back and ask it to give us a color wheel or maybe that's not actually that important for the purposes of this stream.

**56:50** · So verification, it \[clears throat and cough\] Oh, oh right, right, right. Our whole original thing, my original question was like to what extent can it kind of put on its Selenium hat and drive the UI and verify these things itself. I clicked buttons and I verified it, but did did it do that?

**57:13** · Didn't seem to do it this time, but what if we just ask it explicitly, can you test this out for me?

**57:19** · Okay, I love that idea. Oh wait, there's another window.

**57:22** · like do you tag the workflow or should you just like give it a a shorter task?

**57:26** · Um I think you could just say like, hey, can you use the browser and test it out for me?

**57:32** · And we had two open, so I'm going to close them both. Now review changes, they're highlighted still in the git diff thing even though I accepted them.

**57:40** · Yeah, those are effort changes. You can do this later. Yeah. All right, so I'm going to close all these things. Actually, I don't really care about any of this for now. Oh, nice. Great. Um Yeah, verify is checked. Interesting. I \[clears throat\] want to watch that happen though.

**57:55** · So uh yeah, please verify. What was the wording that you were saying? Like verify this works?

**58:01** · just like, hey, can you use the browser to verify if this works?

**58:06** · Use the browser to ver- verify that this works. One day I'm going to learn how to type, but today is not that day.

**58:19** · \[sighs\] All right.

**58:22** · Oh man, it's giving us the the process ID. Well, that's just thoughtful.

**58:27** · You can also think about like how many times you're building an app and you have a specific CUJ in mind where you could like tell it to like test out this flow uh on your application and then see how it works. It's kind of like a mix between testing and then also debugging um cuz if the if it's getting caught up on something, maybe there's something you could simplify or improve there.

**58:52** · Uh so I think what is going on here is that the agent is trying to decide between using um the Dart uh MCP server versus the browser. And so that's why a lot of the browser integration is not uh working as expected. Uh we're at least not Sorry, it is it is working as expected, but it's mostly the agent is a bit more confused as to which type of tool it should be using.

**59:15** · So um I think that uh because the MCP server for the Dart probably also uh carries like, I am also a browser that you can use, um it is a bit more it is always relying on the MCP, which Which why in this case it did not actually leverage the browser. Maybe we could say take a screenshot.

**59:39** · Oh, actually here. This is spoke to you actually. Yeah, let's let's try this out. Let's try setting up the the browser. All right, moving my cursor off the window. Cursor is over here. Oh, and then you you do need to do a first time installation process. And it's going to ask you to to sign in and to install Chrome extension. So if you don't have the Chrome extension, unfortunately the browser integration will not work.

**1:00:15** · All right, I'm going to do this off screen.

**1:00:17** · \[laughter\] Yeah. Which is a lesson that I It's also all that's like I'm signing into the empty Chrome. Oh, where's my phone? I'm going to do the QR code.

**1:00:28** · Or a passkey.

**1:00:30** · Uh while he's doing that, Andy, another cool little piece of UX I really liked in the chat is the inline terminal that you can even work with interactive commands. I thought that was such a cool touch.

**1:00:44** · Yeah, thank you. Yeah, I think that the team has put a lot of thought into this and I think that one of the biggest challenges I remember we faced was the fact that the terminals sometimes it requires you to interact with it. One of the cool things that we recently added is that the agent is also able to just send things that send things into the terminal so they can interact with it for you.

**1:01:08** · So example, if you're trying to create a new app and it's like would you like to use this or that? Instead of having to like open the terminal press enter, the agent's like I'm just going to press enter for you.

**1:01:16** · And that really just like drives the this whole like like agent is able to control everything for you. Or if you want to take it over like be our guest and just go go for it. Last night I had it um was working with Docker Compose. And so it would be like spinning up and down containers. And I I found that it would want to check the logs.

**1:01:37** · So it open up spin up the containers, run a shell command inside of it, wait a couple seconds, kill the container, and like it was just such a cool like autonomous agent kind of running in the background.

**1:01:51** · Which is awesome. Yeah, what when we first put out terminals and like I saw it was running all these things it's like wow, like this is incre- this is increasingly like so cool cuz it's like managing all these things that I don't have to constantly open the terminal myself and do those things anymore. And that way like you as a developer you're going to spend more time thinking about like hey, like what do I want to build?

**1:02:12** · Does this look good or not? Should I add comments and course correct it even further? Mhm. Oh, yeah, totally. Um Is there any thing else Yeah, it's not working. Oh, it's not working correctly.

**1:02:25** · It which is a passkey like Google app. It just is looping through a UX like recursive bit of nonsense. So unfortunately, I don't think we're going to be able to watch it drive the browser. Uh but I believe that it could be done. Maybe I maybe my passkey is only half set up or something. I don't know.

**1:02:51** · But anyways, it would install the Chrome extension. And really it's there to make sure that you have the the Chrome APIs available to that browser. But you should only have to do it once. Mhm.

**1:03:06** · Uh let's see. A couple other questions here. Is there a code dot command for gravity? I I think what you're the what Flutter Universe here is asking is how you can say, you know, code space a thing and it'll open that in Yeah.

**1:03:20** · VS Code. And yeah, it's AGY and it self installs when you download AGY. And if you're asking something else, then please clarify.

**1:03:30** · \[snorts\] Yeah, is is AGY the terminal command for that?

**1:03:34** · I believe it Okay. Okay, continuing to read. There's some debate on whether or not it should be shortened to anti or grav. And we got at least one vote for grav.

**1:03:50** · \[laughter\] In colloquial conversation.

**1:03:55** · Another vote for grav. Uh I think the these folks may have an uphill battle to climb. But I wish you well in your quest to you know, make fetch happen.

**1:04:07** · Um maybe something that people could try if they're downloading anti-gravity for the first time and want to try the async manager is to pick a package you're working on and open up the example as its own subproject. Because it will have an application open that is specific for you know, consuming the the package. And you can send tasks that are like to the main package of like I want to add this feature. And then in your your example you say like I want to update the UI to match this feature. And they can be working in parallel.

**1:04:41** · And you know, while you could do that from a single repo, it could allow you to start to experiment and see like how you could use these as completely separate processes.

**1:04:51** · Yeah, I was thinking about that exact scenario the other day of you know, getting around my Oh, poor thing. It's still trying to talk to the browser. I'm going to have to say deny. Sorry, I tried. Um \[laughter\] Feeling bad for Yeah, it's trying so hard. Um Oh, and we got a walk through of the attempted thing. What it would have done if I hadn't been the the weak link in the chain.

**1:05:24** · Um Yeah, having like a full stack application and you you know, one browser is working on maybe use the planning step first to define the the exact schema and everything, the the communication protocol for how the front and back end are going to talk to each other. And then unleash one agent to work on the front end and one to work on the back end.

**1:05:48** · That's probably the limit of where I can imagine my brain keeping up with multiple things running concurrently, but who knows. So we could look at all the code that it wrote. Um most episodes on this live stream are in fact about Flutter code. This one less so. Also the app did seem to work pretty well.

**1:06:10** · So I don't think we really need to spend time nitpicking what it wrote. It probably does also just seem to be fine.

**1:06:18** · That's also really a Gemini thing and not even an AGY matter. So any thoughts from either of you two about where we might go next or should we take questions from chat? What do what do you think?

**1:06:30** · I have a something I'd love to try out.

**1:06:33** · This isn't something that like while I was testing out anti-gravity, I was kind of blown away cuz I was recording some some demo videos and I was thinking like oh, like wouldn't it be cool if like I designed like a concept restaurant and I called it like Maison Anti-gravity. And like and then I had all these like futuristic dishes. And I spun it up and then I I I ran to a little hiccup, you know, cuz it was still in development and none of the images were loading. But it had the website and everything set up. So I was like, okay, like can you can you fix this for me?

**1:07:04** · And I thought it would try to point to some like online like images. But then it started generating images. And that's when I realized oh, like we are at Google. Like we have Nano Banana. Um and at that point I was like, oh, okay, like it started generating dish futuristic dishes for me. And then using the terminal to move all those images into the appropriate folders. And then afterwards I had a website with really really cool dishes. Like it had like one of the dishes was called like Quantum Carpaccio.

**1:07:35** · And then I was like that sounds really good. Um and so I think that would be \[laughter\] I it tastes it sounds very futuristic to me. So I'm thinking like okay, like this sounds like a really really killer use case.

**1:07:50** · Especially with its ability to generate image like given that we are building a web app like why don't we try out something where see if it's able to generate an image and see if it's able to like uh I don't know. Let's say let's say our goal here is to extract like the the most popular colors inside of an image that generated.

**1:08:11** · I was also going to think very common thing for Flutter is generating app icons and generating the the favicons and image assets in the web folder which you know, it generates a default when you do Flutter create. But that's my favorite use case for Nano Banana is like now generate a fun icon for this app as well. Totally.

**1:08:29** · Yeah, that's a that's a great idea. And because it's just baked into the product that has access to your code, you don't have to do it one place drag it over. But instead the agent will just take care of all of it for you.

**1:08:40** · Yep, totally.

**1:08:45** · The caps lock really helps. Also yeah, muting myself also really helps. Yeah.

**1:08:51** · \[laughter\] All right, now really impress me. Here we go. It's not an observable Flutter if I don't talk while muted at least twice. It's like lumps in your mashed potatoes. You know, that's how you know they're \[laughter\] homemade. All right, I'm curious to see what happens here.

**1:09:07** · have had it generate images with Nano Banana, run terminal commands, and then like format and splice up the image to fit into the asset folders of Mac OS, iOS, Android, and all that. And so like it can basically like generate that for you know, 50 plus images from a single one.

**1:09:26** · Oh, that's interesting. Yeah, the I've always used There's there's a a Flutter plug-in that, you know, kind of does all the copying and resizing and whatnot for you. I hadn't thought about I hadn't thought about burning way more electricity to have an LLM do it. Yeah.

**1:09:40** · \[laughter\] Well, it runs uh it it uses Nano Banana once to create a high-resolution image and then uh just like ImageMagick like terminal commands to then splice it and yeah.

**1:09:51** · Yeah.

**1:09:52** · \[snorts and clears throat\] So, Andy, you were talking about an interesting thing there and where I thought you were going to go Oh my goodness, what a What an icon. Great.

**1:10:01** · \[laughter\] So, that's super great. It even did something that approximates a squircle. I wonder if it actually got the math right on a squircle. I mean, it looks looks pretty squirclly.

**1:10:12** · So, did it put this in the uh what is it?

**1:10:18** · web favicon.png? It did not do that yet. So, please generates the image and then it's going to it's I think it's still generating still doing stuff.

**1:10:31** · Yeah, so it's probably still doing some work and Oh, okay. So, now it generates the image, but it hasn't it does not know where exactly it should put it. So, I think that at this point um you could comment ask it like yeah, like just tell it like like, "Hey, love this image. Um actually, one cool thing that I would I'd love to show off before we do that.

**1:10:51** · Uh I think you might be able to click on the image here.

**1:10:54** · Done.

**1:10:55** · Yeah, and you can actually review on it.

**1:10:57** · So, maybe if you want to like say like, "Oh, like can you add a like a face of a dog in the picture?"

**1:11:02** · \[laughter\] Yeah.

**1:11:03** · Oh my god.

**1:11:05** · That's incredible. Okay, yeah. Well, obviously I want a face of a dog in the middle. So, with uh add the face of a \[laughter\] husky. Okay, I was going to tell it that I loved it, but now that you've informed me I could have a husky for no reason at all in the middle of this.

**1:11:30** · So, uh while it does this, as I Honestly, it was a cool image. We're going to ruin it with this husky in the middle. But, um what you were talking about with the futuristic restaurant and the quantum uh gazpacho or whatever it was.

**1:11:46** · The the images that didn't load, what I imagined was going on is I thought you were going to talk about cores and having it engineer some solution to a cores problem, which is, you know, of course, the bane of everyone's existence. So, there was a thing that you said you wanted to try, but where your story went Oh man, this is not better.

**1:12:08** · \[laughter\] Oh, now it's hiding it. Um \[laughter\] I mean, it's not wrong. It's what I asked. Yeah.

**1:12:20** · \[laughter\] Um great. Now with 100% more husky, uh please apply this.

**1:12:30** · \[clears throat\] The other one was objectively better.

**1:12:34** · Um what was I Oh, yeah, yeah. So, you your story started with There's something I want to try and then you told us about the restaurant, but the story ended with it seeming like you getting everything working. So, what was the thing that you wanted to try and can can we still try it?

**1:12:49** · So, yeah, what I was trying to do is I was something I was trying to create a very, very simple website. I wanted a website uh I wanted the agent to be very creative uh and Gemini to create uh the designs of the website, the copy for the website, and then also create an entire menu uh for the website, meaning it had to come up with a dish name and all of the ingredients.

**1:13:11** · Um and a lot of it was obviously anti-gravity themed. Um so, it got all that stuff working. Oh, look at that.

**1:13:20** · \[laughter\] Oh, that's cool.

**1:13:22** · Nice.

**1:13:26** · Okay, \[snorts\] sorry. Keep going. And now you have a husky icon. Um yeah, so that that's what I was trying to do and then the the images just weren't working and I never uh because I was mostly vibe coding, I wasn't looking specifically at like what kind of errors there were, whether it was cores or whether it was pointing at fake URLs.

**1:13:44** · Uh and you know, like agents make mistakes. That's completely okay, but that's kind of what we're here for is to make sure that, you know, we can make sure it's doing a good job. And so, in this case, I said like, "Hey, like this is the problem. Um or I I think I remember I I interrupted the agent because I was like, "Okay, I think you're you're going off track. Uh I have a busy day.

**1:14:02** · This is the problem I want you to solve right now. Go fix the images." And it immediately course corrected and it's like, "All right, like I let me go ahead and generate images for you instead of like pointing to uh incorrect places." And then immediately it just generated like six images all at the same time and I was like, "Whoa, like not only was it able to generate images, but it was doing all this parallel." Um so, it was being as fast as possible with it.

**1:14:27** · And then immediately after it went ahead and ran some terminal commands, moved all them to the relevant um directory and then integrated it with my application. And at that point, I was like, "Oh, wow, like it just corrected what I pointed out immediately."

**1:14:41** · Um so, that's that's definitely something we could we could try as well over here uh if we want to test out further uh image generation. Um so, yeah, that's basically like how I went into end with uh and ran into this which is really cool. Oh, maybe there's also we could um add documentation comments and tests cuz that also could it could show the feedback loop there of the testing as well.

**1:15:07** · Yeah, definitely. That's a great idea. Let's let's get some tests going here. Uh Danny, know that the favicon is all yours. I'll I'll yield it to you if you're interested. Also, it was very cheap to generate and you can probably ask Nano Banana to make it yourself.

**1:15:22** · But, um Andy, I really liked your comment on the just like having the idea for Nano Banana because I feel like that's been the whole vibe of anti-gravity in general is like I feel like it's bringing like the best of all of Google's tools in like one place and we're trying to, you know, have an experience where we're just trying to like reduce friction and enable people to go faster and like hopefully even expose people to all the things that we we even have at our disposal, too. Mhm.

**1:15:50** · Totally. I think we're at the best place to kind of like tie all these powerful tools together. This is so many powerful things.

**1:15:56** · Uh and it's very exciting to see like obviously the power of each one individually, but this is like a really, really good example of where the the total or what's that expression? You know, you guys know what I'm trying to say, right? Like the total is better than the sum of the parts and I think that this is a really great example of that where you like combine Flutter, you combine it with Nano Banana and a lot of your ideas inside of this amazing tool and suddenly you're able to just like go crazy with your imagination and just let uh the agent cook. Oh, totally.

**1:16:24** · Like last night I had it running with Go Lang and Postgres and a Flutter front end all running together in the same project. Like you can you can really like mix and match and it works really great. Mhm. Good to see Astra. Yeah, Atlas is my husky. Even folks who didn't know I had a husky probably could have guessed it based on the very specific dog selection.

**1:16:50** · Um Okay, well, there are so many good questions in chat. I've been trying to star them all. I've got 10 starred, which is a tiny percentage of the great questions and comments that deserved being starred.

**1:17:04** · Um Oh, yeah. So, we wanted to watch it run tests. I'm going to keep that going by Yeah, sure, whatever. Clicking accept cuz I do want to see that feedback loop, but then maybe we can get to some questions as well as we're coming up on the last few minutes here. Uh real quick, Andy, can you open up multiple um chats with the same project folder? I haven't actually tested that specifically, but would it like show up as multiple things in the agent manager?

**1:17:34** · Yeah. Yeah, you could it's it's very like end-to-end. You can just have like as many conversations in the same workspace. You can also have like many different workspaces, each with many different conversations. Um so, really it's like all that flexibility is baked in already. Sweet. Many-to-many. Yeah.

**1:17:52** · Yeah, great question.

**1:17:57** · \[laughter\] Icon is missing the caption. POV, you're the favorite toy in the washing machine. That is the vibe of that icon.

**1:18:08** · Uh okay. So, did it run the test?

**1:18:15** · I can't tell if it ran the tests.

**1:18:18** · It wrote the tests. Oh, and it says they're all passing. I want to see that terminal output. But, also, you guys were talking in the very beginning about copying terminal you know, piping terminal output from somewhere to another place and I still don't know what that feature is. You control tilde to open up your terminal?

**1:18:36** · Okay.

**1:18:39** · That didn't do what I was expecting. Uh Yeah, the control escape basically or I at least on my keyboard. Yeah, it's not open now. Yeah, there we go. Yeah. Um have I have, by the way, Sublime Text keyboard shortcut, so that's probably Okay. So, like like maybe just cat the readme, for example.

**1:18:59** · Like literally I say cat readme?

**1:19:01** · Yeah, yeah, yeah. Cat space readme or whatever the Okay. And so, you can do two different things. You can like select a region and it should pop up like a little chat thing.

**1:19:10** · Oh, interesting. Right there?

**1:19:13** · And that'll send to chat. Or inside of the chat itself, you can use the at annotation and then type terminal and it'll uh select that as well. Oh, so wait, if it gave me a command, so like let's see here. This seems to be maybe is this what That's an inline terminal, yeah.

**1:19:31** · Okay, so what what where would I do the at command that you're talking the very bottom on the chat. Oh, down here? Yeah, you can just do yeah. And I'm familiar with doing this with files and whatnot, but where oh term And terminal is one and if you yeah, you just click terminal and then if you have multiple terminal tasks, it'll you can pick it by name.

**1:19:50** · Uh so you can pick to say oh, okay. So if I were to say here run the tests, is what's going to happen? It's going to say dart or like flutter test here? No, it would be like you would say like at terminal, here's the output logs of the error, you know, something like that. You could have it and it would pull in the terminal as context.

**1:20:08** · I see. I see. I see. Okay, great, great, great, great, great.

**1:20:13** · And so that's cool. You can copy it.

**1:20:14** · Yeah, nice.

**1:20:16** · Um All right, neat. I I'm I'm trying to think of a non-contrived way to do that. We know the tests are currently passing. Maybe I'll just break a test and then we'll run it and they'll fail and I'll ask it to fix it. That might be kind of fun. So you could say like you can even prompt it to say like run flutter test in the terminal.

**1:20:35** · Um and it would pop up or you could even you could just run it yourself even as well. This is funny. It's showing all the tests for a different workspace.

**1:20:44** · Nice. Oh, I'm in that workspace. How did I get to that window?

**1:20:48** · Okay, well, never mind. Uh it is absolved.

**1:20:52** · From having \[laughter\] It's always PEBCAK. I don't know if anyone else here familiar with the phrase PEBCAK, problem exists between keyboard and chair?

**1:21:02** · \[laughter\] It's the human error, yeah.

**1:21:07** · Okay, so let's say dart test. Or I mean flutter test I needed to run.

**1:21:12** · This is not going to work to hit Is it going to just proxy to flutter test?

**1:21:18** · I've never run dart test in a flutter project before. I would presume it isn't going to work. But actually if it doesn't, that's a good way to to to find out why. Great Great point. Yeah, terminal.

**1:21:30** · Um Why is this test failing or whatever?

**1:21:33** · perfect, yeah. It's such a good See if it can \[clears throat\] be like, well, you ran the wrong command, idiot. It was such a cool feeling like realizing like, oh, I don't have to copy these errors anymore.

**1:21:46** · \[laughter\] Yeah.

**1:21:48** · Okay, so Oh, wait, it it said a bunch of stuff.

**1:21:52** · What did it say?

**1:21:53** · Dart test. Yeah, user's use of dart test could be the root cause. Could be, indeed. All right, that's awesome. That's super cool. We saw it work. I typed at terminal, why did it fail? And it ran flutter test instead. So cool.

**1:22:08** · That's awesome.

**1:22:10** · All right, there's a lot of cool a lot of good chats and I think the time has arrived to actually read them. So \[laughter\] Picnic, problem in chair, not in computer. I presume that oh in computer was not intended to be capitalized. It's a good one. Okay, so again, I'm sorry. I've definitely failed to highlights or to star so many chats that deserved being starred, but I'm going to go through the ones that I did catch.

**1:22:44** · Noe asked quite some time ago, no idea if he's still here.

**1:22:49** · Do we know if the Firebase extension works in antigravity?

**1:22:53** · Yeah, you should be able to install the Firebase MCP server as well as some other Firebase extensions.

**1:22:59** · Wonderful.

**1:23:01** · Uh Flutter Universe tends to be quite plugged in based on chats over the years on observable Flutter, but maybe the last person on this stream to learn about Nano Banana.

**1:23:12** · So Flutter Universe, Nano Banana is it's basically just a code name for Imagen, right? Yeah, it's a fun um I would say, you know, Google's had image generation for a while, but the thing that uh Nano Banana specifically did was bring image generation down in cost and time, so you can generate images really quickly and the quality is really great.

**1:23:37** · Uh it can do text inside of images um and you can generate multiple. It's embedded in lots of different experiences, so definitely check it out. And you can give it it's like multimodal inputs, too.

**1:23:50** · Yeah, and and yeah, you can do edits as well. Like you know, that was a big use case is you could upload an image and say like remove this and stuff like that. Or you could upload an image of yourself and then upload an image of a place Yep. and then say, you know, put me in this scene and make it a cartoon, you know, all all the fun things.

**1:24:07** · I And speaking of Nano Banana, today we all Groq also just launched Nano Banana Pro. Yes. And I've seen some examples of it and it is mind-blowing. It really is.

**1:24:18** · And \[laughter\] it's also integrated with antigravity as well, so definitely worth checking out. Yep. So it's the pro, it's not like limits, it's just it's the next tier of capability. The coolest demo I saw was like a comic strip, so I have been wondering for people who maybe are storytellers, but not artists, you know, the the trouble with

**1:24:41** · or I imagine the challenge of someone who maybe wants to produce a comic strip cuz they have the story in their head and that's the medium they want, but they're not an artist is like all the details of every scene need to be just right and kind of getting that and specifying it can be very challenging.

**1:24:55** · Um Well, specifically with with Nano Banana Pro, you can say like it can provide that reasoning. He's like, explain this to me in like five different things and it like takes something, breaks it down into subtasks and then like has generating text in each of those sub blocks. So it's like something that like normal Nano Banana would have struggled with, but like it did a great job.

**1:25:14** · Well, interesting.

**1:25:16** · Um get your philosophy hats ready. My daughter in primary school has to create a create a classic webpage with HTML and CSS. Do you think that is still relevant? Well, Marcin Marcin, if that isn't the billion-dollar, trillion-dollar question of our time.

**1:25:34** · I certainly have my thoughts on it, but yeah, Rodi and Andy, what how do you two think about that these days? I I personally think that there is no better time to learn how to publish and share things with the world. HTML and CSS was even how I started back in in high school like trying to just like build something on GeoCities, you know?

**1:25:54** · But now what we do is we have like these amazing tools at our disposal to like build and craft anything that we can imagine. Uh there's there's a huge spectrum between like programming and engineering all the way to just like producing artifacts whether it's just a one-off thing that you're building for yourself or your kids or, you know, just like that brings you delight or like building businesses on top of it. And so um yeah, I think it's it's a great way to learn.

**1:26:21** · I also think that HTML and CSS and JavaScript specifically help you by not crashing when you put in an error or like a invalid token and it's it's a great way to like kind of express your ideas.

**1:26:39** · Mhm. Yeah, I think I couldn't have said it better. I think Rodi nailed the point. It's just very, very useful to learn and it goes a very long way. I I also think that having the ability to or knowing how to use HTML, CSS, JavaScript and so much more technologies also gives you the vocabulary and understanding to just take take your ideas to the next level by understanding a bit of the technology.

**1:27:04** · And so I definitely still recommend learning those those core technologies. Oh, you're also muted again. Yeah.

**1:27:16** · Nice. Another lump.

**1:27:19** · The only thing I would add to Also, God bless you two for telling me right away.

**1:27:25** · Um to all of us, you know, Marcin's daughter, everybody else, if you find the task of thinking about and understanding a certain piece of code fun, you know, HTML and CSS in that example message, don't let the ability of an LLM to have written it for you stop you from learning it and understanding it and just having that human experience of the

**1:27:53** · euphoric like, I know how this works and it you know, I executed it correctly and I implemented it and I could fix it if I needed to.

**1:28:02** · If she's enjoying HTML and CSS, I would absolutely encourage her to keep going in that direction, but nobody loves every part of technology. Like I've been a web developer for 15 years. When you start getting into the operating system level and like really low-build system stuff, I'm out. I just don't care.

**1:28:23** · \[clears throat\] And so there I very happily let these tools kind of pick up, you know, the baton at that point for me because that is just not what makes me happy. It is not why I got into this and stayed into this or stayed in this.

**1:28:37** · And so I would still let for all of us, let your just kind of humanity and your curiosity and what you know, what gives you what sparks joy, you know, still pursue those things.

**1:28:52** · Totally. That's my that's my thinking. I also think even along that same vein is like use what you do know and combine it with the LLM to help you learn something you don't know. So like when I have been learning C recently, just like native

**1:29:10** · built-in C without C++, I would be I would write a function in dart and I'm like, can you explain this to me if it was written in C or assembly or some other language that I don't know and like being able to see a language that I can read like in Dart or JavaScript or go can start to help you like see multiple examples and help you bridge that gap and LLM's are really great at that.

**1:29:33** · Mhm.

**1:29:34** · At the end of the day LLM's are not only for they're not only for building they're also for learning. They're honestly probably one of the best tools for learning so.

**1:29:42** · 100%.

**1:29:44** · Absolutely. A while ago a couple years ago I had a a project for on the Flutter team where I had to learn and write some C. Didn't really enjoy that project but you know Gemini was called Bard at the time and it was still it was my C mentor and it was so much nicer I could be like you know I know I need a thing I need to like copy a pointer of a string and add the thing to it and I need to not leak memory and I don't want to become an expert at this.

**1:30:13** · Please write me that C snippet and you know then I would take the time and read it and be like okay I see how that works. It's so nice so nice.

**1:30:22** · like Dart FFI you know it's been really useful.

**1:30:24** · Yes.

**1:30:25** · Yep.

**1:30:26** · Um let's see feature request here. Majid we saw how to submit feedback so I invite you to submit this feedback but yeah a direct Stitch integration excellent idea. So you could do that already with the Stitch MCP server that you could add. Brilliant. I didn't know Stitch had an MCP server but of course it does. At this point I should just assume every single entity in the universe has an MCP server.

**1:30:49** · Another call out here for Figma design.

**1:30:52** · Now there is a Flutter to Figma MCP server and I actually had the maintainer of it on observable Flutter I don't know however long ago. You can find it in the history and that MCP server is awesome so you could certainly get that going. I don't know if there's anything specific And Figma should have an MCP server too. For sure. I don't remember if there's basically depends on the Figma MCP server. I mean it it would make sense that it did.

**1:31:21** · So I would maybe consider this one just a checked box and it's a really good flow. Like I was blown away by in this episode all of our ability because we can all install these tools to just be like this component in Figma give me the Dart code and it was really accurate. It was super good.

**1:31:39** · But you could also use browser use there too. You could say like here's this the the Figma design project that I have open. Open up the browser go to this component take a screenshot and implement that. Mhm.

**1:31:52** · All right I'm scrolling through the last chat messages cuz I got to the end of the ones that I starred so reading what people have said while I had the starred list up. Um oh actually someone else was just asking about MCP. Actually I think this is the same person asking again which is fine. Um and I did show how to use it in that episode that I was just talking about.

**1:32:12** · \[snorts\] Uh do do do \[singing\] All right I think we have kind of done it. Any any final thoughts Roddy anything Show show them a link to where to where to find it. Oh yeah links are always hard but you two start sharing some final thoughts and I'll pull that up. Cool. Yeah Andy. Um this has been really really fun. I think that anti-gravity is a both a joy to build and to use.

**1:32:38** · It packages all of the things that Google has the really cool like browser integration with Chrome as well as Nana banana Gemini 3 and so much more and I hope everybody who uses uses it has as much joy using it as I did both building and using it on my own free time. Uh Roddy?

**1:32:56** · Yeah I I really like having all the Google parts coming together in one awesome engine and on top of that it's really kind of refreshing to be able to start to experiment with the async manager of like now I can think it like a 10,000 foot view across my entire machine and like here all my projects and like let me some tasks I may kick off but not

**1:33:24** · review for 3 days from now you know and now I can be like working and keeping on task or you know iterating a lot better than you would instead of having to just like open up VS code like in the chat history goes away or even if it's persistent this kind of like lets you really stay focused and intentional about what you want to work on and what you want to improve over time. Not only that like I feel like there is just so much to improve from here like hopefully this is the worst version of anti-gravity ever and it gets some It will be. Yeah.

**1:33:57** · We can promise that. Yeah. That reminds me one of my biggest pet peeves ever is every time the fruit company announces new hardware and they're like this is the best iPhone we've ever made. Like no duh. You mean you didn't make the last year's one worse? Like of course it's the best that you've ever made.

**1:34:16** · Uh all right I've got maybe the least helpful banner that anyone has ever seen. This is where you find the MCP server guide and no one wants to type in a URL so just search in YouTube for observable Flutter MCP or sorry observable Flutter Figma and you'll get a great guide there.

**1:34:35** · \[gasps\] All right And then also anti-gravity.

**1:34:39** · Yeah. Uh it should just be anti-gravity.google.

**1:34:43** · Yep. Yep.

**1:34:45** · Oh that's what you meant. That makes so much more sense \[laughter\] than we were just talking about the Figma thing so I thought that's what you meant. Yeah. No that's It's a shared context issue sorry about that.

**1:34:56** · That's a lot smarter.

**1:34:57** · \[laughter\] So this is where you download anti-gravity.

**1:35:03** · \[gasps\] Oh gosh that's funny. Okay folks thanks so much for tuning in. I had a lovely time. Andy Roddy you two are the best. Uh for viewers next week is a US holiday so I'll be off and then the week after that I am just busy so I'll be off that week as well and then we'll hopefully

**1:35:28** · and I when I say hopefully I mean I already told a guest that we will stream on I believe is December 11th so hopefully I'll be back on December 11th and until then everyone happy Fluttering. Awesome. Thanks. Bye. Thank you.