New Ethereum talks, every Monday. The week's conference uploads by event, in your inbox.

Vibe Coding Farcaster Mini Apps: Build One Tap Crypto Apps That Anyone Can Use

DappconTue, Jun 17, 2025, 04:02 PM · 55:36

by hellno.eth

Transcript

All right, let us go. Welcome to the live coding MiniApps workshop. We are going to start with a quick overview of what is actually going to happen, because some people had questions with this long title. My goal is to basically take you from zero to have a live MiniApp. I am going to give some background on why MiniApps are cool, what I am doing and how to set it up.

But then the main part is actually live coding. We are going to implement some features. I have some specific prompts that I am often reusing and, of course, troubleshooting by debugging is always there. In the end wrap up, if anyone was actually following along, you can share what you have done. You can ask questions and we can obviously help you deploy it and go live.

While listening to me, just a quick challenge on why I am here in the front and not in the back, live coding. I built the number one open source Firecaster client. That is why I am building on Firecaster. Currently, I am building Vibes Engineering, which is kind of a factory to generate MiniApps. I have experience from when MiniApps on Firecaster were introduced.

I am celebrating 20 years of writing code this month. I am old and I have been writing code manually for a long time and now switching to actually using LLMs or by prompting a lot more. I am active on Firecaster and in crypto for a while. Why MiniApps? That is basically me trying to explain why MiniApps are nice and you should build them.

It is super easy to get your users to actually do something on chain. I think everyone is struggling with the discussion on how from protocol improvement actually users get people to do something with blockchain that is useful to them. With MiniApps in three clicks or sometimes less, you can actually help them do something and get the value on chain. A few great examples that do this, I recently went to the U.S.

and just bought an eSIM five minutes before my plane took off. In a MiniApp, I opened it from the feed. I had UCC in my wallet and Karthik built it so that it is just an eSIM so I can use it from my phone straight away, no emails, no contacts, no user data is leaking. I just have an eSIM that I can use. The second example is something that I buy coded fundraiser to get going so people could offload their meme coins that they had on any chain, any tiny amount.

They could just donate it to me cross-chain straight from the feed. It was successful and I could just pay for my trip to New York to see the conference. The other two examples are more social and more game-like, less on-chain, but also interesting. The third one on this slide where you add is sharing your social graph on a map so you can check in in certain locations and only your followers can see where you are checking in. The last one is just a game.

There is a bunch of different ones. This is a take on Wordle, which is interesting, but here again you compete against your friends and you can mint your success on-chain. From utility, you can do a ton of different things with mini-apps. This is kind of a ton of memes on one slide, but they've got... The mic works?

Sorry, there's some hiccups, right? Okay. I'm also confused right now with the mic, so going from confusion to actually shipping your first mini-app, that's the goal in a few tiny steps. How you can do it? The main one, I see some people with laptops here.

If you have a laptop with you in the room, the easiest and what I'm going to show you is actually from a laptop. The other one, if you just brought your phone or you're at home and want to watch the live stream, there is a way to do it, but I'm really going to focus on the first part. If you want to vibe code along, scan this QR code or go to vibes.engineering.com, you're going to see some documentation, a bunch of links, a ton of useful content that you can use in the session, and you can bookmark it for later.

It's going to help you get set up much faster. Tapping on the phone, I don't want to promote it too much, but that's the app I'm building. It's called Vibes Engineering. It does the same thing from your phone, but I'm not going to talk about it further. The main thing is just free access, what everyone can do at home by coding from your laptop and going from zero to a live mini-app.

That was most of the slides. Now we're switching to actually checking setup and how to get started in a few minutes to see the very initial mini-app that you can use. Can you see this in the room? I think that's important, if you can read the text. Is that possible?

Cool. Thank you. What's needed to have a mini-app? You need to have a startup project that is linked in the repo, and then usually you just do PMPM install and then dev to get going. One important piece to actually have a look at the mini-app, not in your browser, but as other people will see it, is you need to look at it in the preview tool.

For the preview tool, you need a small tunnel from your local developer setup to the Firecaster preview tool. For this, I'm using Cloudflare. There's a bunch of other providers. I'll be using this one. Of course, the third terminal or the third piece for that coding, you need somewhere to submit the prompts.

I'm using Cloud Code for this, and we can see a bit more of that later. Now to check out a mini-app in a preview tool, this is how people will actually see it. As you can see, I just copy-pasted the address in here, and then you can open it, and this is my generic template starter that you can also use as a starting point to write code from here. Important, different than other websites and other approaches to this is by just opening the website, you as the app developer immediately have data on who's visiting the website. You see the Firecaster user ID, you see the username, you see the profile picture, a bunch of things to immediately customize how the app looks like and how to make it valuable.

You see some other data that we can skip for now, but you can basically also send haptics and register the mini-app. You can have a bunch of different actions, and the key things that I want to show is how easy it is to send on-chain transactions or do things on-chain versus connecting with MetaMask, WalletConnect, going through all this pain. The easiest thing or the easiest example is just signing something, which is one-click. You can send ETH. If I had enough money in this wallet, in this test wallet, I could send ETH, which is just one-click, and you can also sign type data where you can check out the data here and also just confirm it and make a signature.

This is not just for base or specific change. You can also just change the wallet connection without the user having to do anything. So all of this is already much simpler than other environments. Then another example that is baked into the template starter, just to show you an actual on-chain transaction of minting an NFT. It took a while to load.

So this is a dynamic NFT component where you can just submit your contract address, and it will render it nicely, and you can just forward people to mint it. It will fetch the price, and it will switch the chain automatically, what you've seen in the background, and then hopefully I have enough gas that this works. And this will just be the first mint of this NFT that I've set up. If you also want to have kind of a pour-up, you can also mint it. And that's just a quick run-through of everything that is in the starter template and how easy it is to actually do on-chain transactions through mini-apps.

That was the first part of just showing where you can start from and what you can do. Now the second part, the longer part of this session will be the demo of actually live coding, building new things. And I just had this idea yesterday, because everything here at DEF CON is very circus-focused. I thought about building a mini-app for circus with a very simple use case where you see a list of your Firecaster friends, meaning the people that you follow, and check if they're on Circles, and if possible, trust them on Circles as well. So we have an environment that I just showed where we know who the user is that logged in, and we know the NENA API, which fetches Firecaster data.

We know Circles, at least that's in my preparation. What we're going to see is what it actually looks like, and if we can do it in the time that we have here. But that's going to be the live component of the prompting cloud code, and we want to see the app that comes out of it. So I'm going to switch to my editor, and hopefully we get some interesting things happening here. I'm going to keep the editor on this side and just quickly rearrange so that you can see the mini-app that we are generating is on this side.

It doesn't look as nice, but I think it's fine. One second. Here we go. Okay, nice. Now to the interesting part of typing things that I haven't seen as well before.

So this is going to be fun. The first point is we just want to show a list of friends on Firecaster, which I have this existing Firecaster account, which is called Biot-Engineering, and I follow a bunch of people. I just want to see a list, or anyone who opens this mini-app should see a list of their friends. So it's immediately personalized. It's immediately something that people don't necessarily see every day or have access in the context of Circles.

So I'm just going to type, use the Naina API to fetch my Firecaster friends. For the user who visits the mini-app, let's see what it does. This session might have some pauses and some waiting for LLMs, so I'm just trying to explain it if you can't see it that well in the back, on what's happening and what Cloud Code is actually doing. And I have a bunch of stuff prepared as fillers, so it's not going to be too boring. So here, the first step that I'm always trying to prompt before it runs into mistakes is making a to-do list.

So in the background, I created a Cloud MD file, which is the default way of Cloud Code to have a repository or knowledge of the repository. Meanwhile, it's just asking to install stuff. We can say yes. And this Cloud MD file now already knows my preferences. So I already told it, hey, I have a development server running.

Please don't use PMPM build or don't create new production builds while I'm running this development server, because it would break the demo that we're doing right now. And I also gave it the task to always say, give me a list of a – give me a to-do list of the items that it should do and explain them and give me a nice overview of what you're going to do. And usually, as well, tell me – no, tell me a few different options. And I did that. I prepared some examples here with different prompts that I'm regularly using.

So one of them is give me suggested solutions. I'm usually working on start-up prototypes, so that might not be relevant for everyone. But I'm using a start-up prototype focused on 9010 impact to effort. So give me simple solutions. Don't over-engineer it.

Many people have problems with white-coding, because if you just let the LLM run its way, then it's confusing things. It runs into insane corners. It tries to implement enterprise features that you don't need. So I gave it some constraints here, and I always tell it to follow clean code conventions. I have another prompt that I'm often using is I'm telling Cloud Code to ask me questions for anything that it might not know or that it needs to know before it can proceed confidently.

It's basically saying, don't write any code. Just respond back. Let's just have a conversation. In Cloud Code recently, they added a planning mode, because I think many people ran into the same problem. But I still often use this explicitly to tell it, don't go crazy.

And the longest one that we don't need to use yet, but I'm just sharing it while the LLM is still thinking, which is a code review. I don't have many humans on my team, so I'm using LLMs to also do code reviews. And I'm just asking, is there breaking bugs, any crucial breaking points? So don't give me small typos. Don't give me minor things that I don't want to see right now.

Just focus on the huge items that I need to fix before deploying this to production. I'm telling it to find root causes, which means I don't want a superficial solution that just patches one tiny case, but doesn't go deep enough and actually fixes what is wrong. And I do a similar aspect of the prompt where I just tell it, suggest a few solutions. Don't just nail down or focus too fast on one thing. Just give me a few options so that I can select which one I like the most.

This was a huge unlock for me, to be honest. That's why I'm promoting it. Maybe it's common knowledge by now, but just saying, give me a few options. Usually I have a specific opinion on which one I like best. And if I just tell the LLM in byte coding to run as fast as possible with anything that it likes, it usually goes off in the wrong way.

So having these points where you force it to go broader and give you a few options, and then you pick one or you have a deeper conversation about one usually helps a lot. And, again, some guardrails, again, especially in entropic models or in cloud code, don't touch irrelevant parts of the code. Focus on where you actually need to go. Don't scan all files. Don't go super broad.

Don't go overboard with things that are irrelevant to what we're doing right now. Maybe other things are breaking in the project, but I want to focus on a specific problem. So I'm also telling it this aspect, and I'm telling it again to just respond back and don't fix things immediately, to have this conversation about a few different options. I think now's a good time to just check in on what the LLM is actually byte coding. We can refresh here and see if it already implemented some changes.

Doesn't look like it. Let's see. It's rambling for a while. Okay. So it's trying to connect to its own API endpoint that it created, and apparently there's just some type error that I'm seeing here.

And now it's asking if it can run a checker. Let's see which API endpoint it actually created. We can go in here and see it successfully byte coded fully without us looking into the ANA API. It's created an ANA client. It knows we need to work with a certain FID, which is the unique identifier on Farcaster.

And then we're getting the data back on who is the user following and who are their followers, and returning the list of FIDs. So this all seems good. Now we're waiting. While we're waiting, I can continue explaining some aspects of the mini-apps. Tim is here from Kiggy News.

That's one feature he uses a lot, and he saw a huge bump in traction from using the feature of adding mini-apps to the Farcaster client. For this, I need to change the example that we're looking at, where you can send notifications directly to the people using your mini-app with this prompt for people to see, which I'm using this weird name, Defcon mini-app template, which isn't really useful, but it could be a thing where it circles. So here, you can just read add mini-apps circles, and then you can add it to Farcaster. And then you have the permission to send notifications to people, which on Android and iOS, it looks like a native notification. So if you open this window here and just look at the mini-apps that are all pinned, this is my developer account, so it's a bunch of developer apps.

All of these apps can now send me notifications that will just appear in my feed as regular notifications, and on my phone as regular iOS native or operating system native notifications. And as an example, I have a few here, where here we're saying, thanks for adding this mini-app. And up here, you can see a bunch of notifications got grouped. Now you can see it. For this mini-app that I'm building, repeatedly sending notifications, they get grouped, and you can still reach people with updates.

So for me, I'm using long-running jobs in the background, so it makes sense. For TV news, as an example, if there's breaking news or if there's trending topics, you can easily also notify your users to come back to the mini-app to re-engage, to be aware of the trending news. So that's a very useful feature that is, as far as I'm aware, pretty unique to mini-apps. And now we see the cloud code in the background finished, so we can check it out again. So let's open it.

And here we can see we need to go to the friends page. It navigated us to the wrong page. Great success. Let's do a slash page. I want to see the friends page as the default when I open the mini-app.

And what else do I want to see? And I want to focus on only seeing people that the user follows. So we only want to see the friends. I think it went in some slightly wrong direction where it also checked the followers, where it's pretty irrelevant if people follow me right now and they're also on Circles. I just want to see who I'm interested in.

Focus on followed by the user and not on their followers. Now, again, beginning the to-do list, which is just I talked about the main page, it understood the API needs to change, and updating the friends component should also be there. And now for the first time, yes, we see something interesting that immediately fails, but it updated the changes immediately to change the main page. And we're getting some error because it's also updating the API endpoints. Let's wait until it's done.

Failed to fetch friends. Kind of sad. Let's see. Because we don't know where the error is, we might need to look into this thing. Failed to fetch friends.

That's another pattern that I'm often doing when developing mini-apps, because there's the server-side component that has the route and makes the API calls, which I don't see in the browser, really. And then there's the browser side, which is running the mini-app, which is for some reason. When we click here, we only see the front-end error, which doesn't give us any information. So I prompt the mini-app to say, lock the server-side error, so we can debug this better. And understand why the request fails.

Sending this. That's an interesting newer feature that I haven't seen in Cloud Code, I think maybe last was the first time it showed up, where it's actually writing curl commands or tiny scripts to check on your local setup, which is a very interesting feature. I don't have to go around and debug, is my local server running? Is there a connection error? Is this API actually returning what it says it's returning?

Or am I doing everything correct? And Cloud Flare is down, as it was last week, as an example. I was live coding last week, and I thought I had a ton of bugs in my system, but it was just layers of database and Cloud Flare. The server is being down. So this thing has automatically debugging as well.

OK, now we added debug logs as well. Let's give it another try. So we don't know why this happens. OK, this seems like a crazy error. Maybe it's a good example of what I'm usually doing.

Not usually. I'm still doing some stuff manually every now and then. But for this example, we can just copy paste the whole thing. And use our prompt that we had here. And saying, find the root cause and not just focus on, I can copy paste this.

So now we will see it will provide us with a few different solutions. It shouldn't touch the code. It should really only touch the code once it's really obvious and it's maybe missing a package or has one simple clear solution. But generally now it's doing a code review and checking what's going wrong. And here it gives us a few action items.

Where we don't know. So we go deeper into the last debugging. We can check the Nena API. Because I know the end file is set up correctly. Valid FID is 3.

Log 400 errors more precisely. So we know what's up. We can check. This is the problem that we're not setting the environment variable. So one thing to actually communicate between the front end and the back end might be that we need to set a specific environment variable so it fetches our data correctly.

Still no success. So we're getting a Nena API error. This is very bad for the demo because it never happened to me before. And I actually don't know. Oh, here it is.

Limit must be between one. Yeah, it was 200. I expected this account to have many friends, but Nena tells us we shouldn't fetch 200 friends. Should be less. Okay.

I'm relieved. Hopefully we'll find a list of our friends now. And here we go. We have some web coding success. I was nervous for only a bit.

Because now the actually interesting part or more interesting part is in how we connect this list of friends to Circles accounts where I found some API that returns this data for us. And every Farkas user has a bunch of connected Ethereum addresses. So you can – it's called verified addresses. And each user account or FID, they live on chain on Optimism. But you can verify on Solana, on EVM, and soon a bunch of other places that you own certain accounts, which is really relevant for us.

For now, I know Franco here. He has a Circles account, but maybe not all of his Farkas addresses are actually connected to Circles. Only maybe his main ENS address or a different one. And we want to find this connection between Farkas account and Circles account. And we have some API prepared for this.

And this part actually worked in the test yesterday. So I'm more confident we can get this done quickly. We can now copy. Maybe we make our lives easier and just say finish the workshop plan related to the Circles integration. So we can look up the connection between the Farkas, the friends that we're showing.

And if these friends are on Circles, too. And if they are, I want to open their profile right in the Metri app so I can trust them. Which is, I know these people for a long time from their online activity. Some of them I've met in real life, but not all of them. But I would still trust them on Circles.

So this is what we can show here. We want to open the Metri app. Contract address. Use address. And we have a typo.

So now this just simply making one API call and showing all of these people works. It might take a while for the rest to finish to do the full Circles integration. If anyone has questions in the room or online, we can go through them while this is running. I can keep rambling about features in MNEFs because I'm excited about them. But if there's concrete problems, specific integrations, or questions you have on MNEFs, we can also go over them now.

Any questions? No questions. Can you deploy contracts? Yeah. You can make any on-chain interactions, anything that you want to do.

So there's a list of – a kind of a permissioned list of blockchains that are supported right now by Farcaster. They are being challenged by Coinbase Wallet, which will also be a Farcaster client, which supports many more chains. So the assumption is basically all chains will be supported in the next few weeks or months, and then you can deploy contracts on any chains as well. Some people already do it to deploy Gnosis Saves, which has specific deployments or is just one type of contract, but you can probably also just have a – even Solidity Editor and Deployment button in a MNEF. Yeah.

If you run a MNEF, how much do you spend on NANR and Cluster? Unless it's like, let's say, MNEFs that you deploy so far. Yeah. So the question is how much we're spending on NANR or other tools around MNEFs and API providers. So for me, it's – to be specific, I just have one paid plan on most of these providers on the lowest tier, so it's not crazy expensive.

It's not immediately you're jumping to the enterprise tier. So I had some apps that I showed before, for example, the Vive-coded fundraising tool, which had a ton of traffic. Even though only 70 people donated, many more people opened it, and all of them generated traffic, including Alchemy requests on the funding, just Vercel for hosting, and NANR as well. So maybe to sum it up, it's $100 per month, but you can start with all of them also on the free plan. NANR has a free plan on where you run the MNEF.

You can also do it – a bunch of APIs and requests are also served by Farcaster directly, so these are all free as well, to send notifications if you're on the – not on the receiving side, what I showed, but on the publishing side of sending notifications, all of this is free as well. So I mean, there's always these Versus screenshots of people going broke because one of the apps are trending. Luckily, Farcaster isn't that big yet, so I don't think the total market is – will ruin you. It can run into problems. Thank you.

So basically, the MNEF is an application that opens inside the context of Farcaster? Mm-hmm. Is it a website? Is it a MNEF? What's actually happening?

So the easy answer is, yeah, Farcaster is just the wrapper or the host of a website, and they added some fancy sprinkles on top to make it easy to have the wallet connected. So it's a social client, but it basically has a wallet baked in, and it's automatically connected, and through this, you're skipping the annoying wallet connect part, identifying with different services. So it's just a simple host where you run a website. So all of these things run on Versal for me, and that means you just get a URL that you can post on the internet, and other people can also use it. But if you open it on Farcaster, it has some special properties to run easier there, to have some additional features.

But you're not blocking people from accessing it. It's not exclusive. It's not iOS versus Android. It's just a link in the end. Thank you.

And also, for the API, I saw user data. Without taking a shot at it, user data is authentic. So, yeah. Will we see data authentication or not? Yeah, very good question.

So the question is, I showed, is this authenticated? Can people fake it? And yes, people are faking it. The initial loading of the page, you can fake it and just act as a different user, which is helpful in debugging as well, where I get user reports that something isn't working, and I can log in as if I'm this user for simple tests. But there is verification.

There is signatures that can happen in the background. There is a new, it's called quick authentication from Farcaster, which can just happen in the background. And for this, you can check, can you trust the user, which many apps are also called Frames V2, which hints as there was a Frames V1, where this was a huge problem. Many people were just spamming it and trying to get to some airdrop, which happens in crypto. And this quick authentication method and a bunch of other things help to actually authenticate the user, often without them having to do an action, which is also very nice.

So to the user, it still looks the same. But in the background, you're doing a bunch of handshakes that I didn't get into today to keep it more vibe-prompting focus. But that's definitely a huge problem, and there's some quick solutions. Yeah? Is there a way to see which of your friends have mini apps installed already?

Or like haven't added them to their backups or anything like that, or have played it before, maybe? Like, if I'm making a game with a mini app or something, I want to find my friends. Or people that have already installed those. Yeah, so the question was, if someone opens a mini app, can you see who else has already opened the mini app? Are your friends already kind of in the game, on the circle, in this location sharing mini app, whatever it might be?

I'm not aware that there is a public API for this. So I don't think there is a public API from Farkas or from any of these other providers that can just easily tell you if there's a Tinder-like mini app, and you would leak the data, hey, all of these guys are also on this mini app. There are some consequences to this. So I'm not aware. For what I'm doing, if someone adds the mini app, as I showed, if they add the mini app or pin it to the client, you just get a webhook request to save in your database or wherever you want to save it in Key Value Store.

So through this, I basically already know who has added it, and I have this list, and I can just also message people automatically or try to reach out to them, hey, five of your friends are on this mini app. Do you also want to check it out? Or if they open it, I can show not this long list as we're showing here of people that I follow, but I can show them specifically, hey, these five people also have this app installed or they were recently active on this mini app. Because it's just a generic website, you can do these kind of things. Does that webhook still work in dev mode as well?

It's like the webhook will go back to the CloudFlare page, which goes to your laptop dev, and that works? Yeah, great question. Yeah, for sure. So I didn't get into this part as well. There is a domain association step, which you have to do.

I can just show it quickly here to focus on this part. You have this title, but then below it, it says by Vibes Engineering. Vibes Engineering is just my dev test account here. To get to the step in a live feed sharing system, you actually need to associate this mini app that you're hosting with your Firecaster account, and only then can you add mini apps to a client or you can send notifications. So it's permissionless.

You can just do it. You don't need to ask Firecaster to help you with it, but you need to connect between any domain and a Firecaster account, and that's kind of a blocker. If you do this in your local dev setup and saying, hey, this CloudFlare domain is legit, I want to connect it to this mini app, then you can do it. And many people do it because the webhook interactions and notifications should be tested in staging and not straight in production. How do I do that?

Because I did also have that add to Firecaster button, and it says invalid domain manifest, which I guess is that. Exactly. Yeah, I think we have some time. Let's get into it. So currently, yeah, let me zoom out.

There is a bunch of developer tools that Firecaster provides. So you just go to Firecaster, and then it's slash developers, and you have a preview tool. You have an embed tool and a manifest tool, and what we're talking about here is the manifest tool or domain association. And here you can just enter – let's just use Vibes Engineering. And here we can already see everything that I registered, and it says when it was last synced.

It says it's not connected to this current account but with a different one. I can see the preview of how it looks like if it's kind of a minimized embed in the feed or if it's a large one, and then you can see the full mini-app configuration. There's a bunch of icons, images, text, splash, URL, and color, and even kind of app store-like categories and tags that you can add. All of this just lives in a JSON file. This was the nice view to look at it on Firecaster.

Just to give you the full view, it's always at .well-known slash Firecaster JSON. So for every domain that has a mini-app, you need to have this file, and it looks like this. So what I showed you before in the nice Firecaster interface, the raw data is just this. And here you can see the structured data is in the frame.

And above that, you need to do the account association, which is connect this domain where this file lives to a Firecaster account. Now the sad news is you need to do this on mobile. You need to generate the signature where your Firecaster custody wallet actually lives, and that's usually in the Firecaster wallet if you didn't export it. Now we can get into many more details. So this header, payload, and signature is easy to generate in the mobile app.

You enter your domain, and it will do it for you. And then you can just copy-paste it to this .well-known slash Firecaster JSON file. Side note on features that are coming from Firecaster is this is the most annoying part. That's why I didn't get into it from the start.

It's kind of a requirement to go into production, but to have your first mini-app live, it's more annoying than a requirement. Firecaster will offer a way for you to not do it and just point this file or redirect from this file to Firecaster. So they will host it for you, and you will be able to manage it from basically this manifest tool. Right now it's read-only, and in the future it can also write, and you can change the data or associate it with a different account. So this will blow up and will be a bigger feature than it is right now, but currently you still need to do it manually.

Okay. Let's give one more try to the bad coding. Did you implement the features? This is the point when I'm too lazy to read all of the output, and I'm just asking for TLDR to tell me what happened. Yes, it's implemented.

Okay, maybe we'll run out of time, because we can't get enough tokens to quickly write the code for us now. So if we open this one, it still only shows our friends, which is nice to see the people we follow, but it's still without the Circus integration, which might take a while. Okay, do we have any more questions? Okay. Let's give it five more minutes.

If it will finish the feature, we can clap. Yeah, just to keep going. The workshop plan obviously was also by-prompted. I ran into a bunch of problems with the Circus SDK. Let me find the SDK, which is here.

So they have a nice description, and they have a bunch of things already explained. You can easily set it up with React. So this was super helpful, but for the specific case of I'm looking for specific addresses that I know people have, and I want to check if they are on Circus 2, this obviously wasn't there. It's kind of a niche use case. This is much more focused on setting people up with new Circus profiles, inviting them, minting the Circus, a bunch of different things.

So I had to go through this a bunch of times, try five different approaches, where four didn't work, and then the last one, actually, I got to get the data. So the workshop plan already includes kind of all of this research, and I just told it now that we solved the puzzle, just use the working solution and don't try to do different things. But maybe we have something else I can show in the meantime, which is the demo. Demo Circus. While it now also tells us it finished the feature, let's see if it actually works.

That would be a great success. Let's go back to the main page, see what it does. Let's try this again. With a new address. Yeah, just restarted it.

Let's restart it again. So I'm wondering here it says compiled. Okay, we can see something. And we're checking Circus. This is new.

So far there are zero people on Circus. We need to check all verified Ethereum. I can't type anymore. Ethereum addresses of the Firecaster users, not just the primary one. Okay, we can obviously continue by coding for a long time.

I think that's a good place to stop. We have the basic integration between seeing the followers, refreshing it, checking if they are on Circus. So far we need to have them check that we're using all addresses to look up and not just the main ones, which is a tiny hiccup. And yeah, if you follow me on Firecaster, I'll just share this later once it's done. And any more questions?

Automatic transcript — names and jargon may be misspelled.