Loading video...

Video Failed to Load

Go Home

Introducing AI Concierge Agent: built with Flutter's latest generative UI (genui). ✅ LLM-driven Flutter app ✅ GPT-4o-mini (thru ) ✅ Cloudflare Workers + Vector ✅ Hono server on DigitalOcean VPS (ATL) This is HUGE! I love it!

33,372 views • 9 months ago •via X (Twitter)

43 Comments

Khalid Warsame's profile picture
Khalid Warsame9 months ago

Twitter butchered the video quality but LinkedIn did a little bit better. Watch it there if you want:

Khalid Warsame's profile picture
Khalid Warsame9 months ago

It can also handle normal FAQs and it misinterprets questions some times. But at least it’s consistent in both interfaces 😂😂😂 I gotta fix the broken markdown stream or find a better package.

Khalid Warsame's profile picture
Khalid Warsame9 months ago

It can fetch and show ports that users can interact with. I have 17 custom catalog components that the LLM can choose to render but I need to do a better jobjob at differentiating cruise and port cards.

Seth Ladd's profile picture
Seth Ladd9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean Good work! Any feedback you would like to share about your experience? Maybe better yet, join us here:

Khalid Warsame's profile picture
Khalid Warsame9 months ago

@FlutterDev @openrouter @Cloudflare @honojs @digitalocean Thanks, bookmarked for future. No feedback so far. No issues.

Seth Ladd's profile picture
Seth Ladd9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean Good to hear. Hit us up in our Discussions if you ever want to chat or share feedback. Keep hacking!

Stephan E.G. Veenstra 💙's profile picture
Stephan E.G. Veenstra 💙9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean Impressive stuff Khalid!

Khalid Warsame's profile picture
Khalid Warsame9 months ago

@FlutterDev @openrouter @Cloudflare @honojs @digitalocean Thanks 🙏

Isaias Cuvula's profile picture
Isaias Cuvula9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean I love the way each component are being generated, they look amazing. GenUI 🚀

Khalid Warsame's profile picture
Khalid Warsame9 months ago

@FlutterDev @openrouter @Cloudflare @honojs @digitalocean Same. I thought it can’t possibly be this easy or good but it was.

Abdallah Shaban's profile picture
Abdallah Shaban9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean So cool!!!!! How did you set up the openAI connection? did you create your own custom ContentGenerator? How did that all feel?

Khalid Warsame's profile picture
Khalid Warsame9 months ago

@FlutterDev @openrouter @Cloudflare @honojs @digitalocean Thanks, and yes I’m using custom content generator to override methods but implemented history my own way (not ideal). I’m also using Cloudflare Worker to call OpenAI models using OpenRouter api along with handling vector, embedding, rate limiting, sessions, etc.

Khalid Warsame's profile picture
Khalid Warsame9 months ago

@FlutterDev @openrouter @Cloudflare @honojs @digitalocean AI helped a lot to get here even though I struggled to grasp how different layers and systems come together. Wasn’t easy (for me) to say the least. But it eventually worked as expected.

Abdallah Shaban's profile picture
Abdallah Shaban9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean That’s awesome! Which AI coding tools were you using? And how fast were you able to get this all working together? Also - I hear you on all the layers - I don’t think it is just a you thing . It took me a bit to grasp how everything interacted together when I first started

Khalid Warsame's profile picture
Khalid Warsame9 months ago

@FlutterDev @openrouter @Cloudflare @honojs @digitalocean My beloved Cursor running Opus 4.5 while consulting Chaptgpt 5.1 on the side. They guided and misguided me a lot tbh. It’s easy to deviate from the right narrow path. I went down the wrong holes couple of times before finally getting it right.

Khalid Warsame's profile picture
Khalid Warsame9 months ago

@FlutterDev @openrouter @Cloudflare @honojs @digitalocean For example, Opus added an adapter that manually transforms LLM output into A2UI instead of giving the LLM render tools. Took me a minute to catch this. All agents went with this approach and wanted to make the adapter the “reasoning” layer instead of the LLM.

Shuayb's profile picture
Shuayb9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean i switched to gpt-4.1mini and results were supritsingly similar but i havent tested much

Khalid Warsame's profile picture
Khalid Warsame9 months ago

@FlutterDev @openrouter @Cloudflare @honojs @digitalocean LLMs behave the same if you get the constraints and data source right.

Vayo's profile picture
Vayo9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean how did you screen record this?

Khalid Warsame's profile picture
Khalid Warsame9 months ago

@FlutterDev @openrouter @Cloudflare @honojs @digitalocean I caved in and bought @screenstudio

Vayo's profile picture
Vayo9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean @screenstudio 😭bro said he caved... cool app btw

Khalid Warsame's profile picture
Khalid Warsame9 months ago

@FlutterDev @openrouter @Cloudflare @honojs @digitalocean @screenstudio I really tried not to and looked around for alternatives but nothing compared. Not even close. So I had to make the rational decision

Vayo's profile picture
Vayo9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean @screenstudio I might join the bandwagon soon

Khalid Warsame's profile picture
Khalid Warsame9 months ago

@FlutterDev @openrouter @Cloudflare @honojs @digitalocean @screenstudio This was my first video with it. Completely impressed with it.

Uforo Ekong's profile picture
Uforo Ekong9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean Awesome! 👏🏾

Emma Twersky's profile picture
Emma Twersky9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean yeah, so this is like very very cool. would love to hear if you have feedback or thoughts of where you'd wish the genui package could go and what it's missing. we're actively exploring similar spaces and trying to see how far it can go :)

Khalid Warsame's profile picture
Khalid Warsame9 months ago

@FlutterDev @openrouter @Cloudflare @honojs @digitalocean Thanks, but tbh I don’t know what feedback to give. So far so good. No issues. Will let you know if that changes.

Josh's profile picture
Josh9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean Flutter, love to see it

Khalid Warsame's profile picture
Khalid Warsame9 months ago

@FlutterDev @openrouter @Cloudflare @honojs @digitalocean 💯💯

Michiel V's profile picture
Michiel V7 months ago

@FlutterDev @OpenRouterAI @Cloudflare @honojs @digitalocean the DO VPS combo for AI agents is underrated. low latency + managed infra lets you focus on the agent logic instead of babysitting the server. how's the memory holding up under load?

Taha Tesser's profile picture
Taha Tesser9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean 🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯

Khalid Warsame's profile picture
Khalid Warsame9 months ago

@FlutterDev @openrouter @Cloudflare @honojs @digitalocean I was surprised how well it works too. Future is bright.

Sol's profile picture
Sol9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean Insane results 👏👏👏

Khalid Warsame's profile picture
Khalid Warsame9 months ago

@FlutterDev @openrouter @Cloudflare @honojs @digitalocean Thanks 🙏

Michiel V's profile picture
Michiel V6 months ago

@FlutterDev @OpenRouterAI @Cloudflare @honojs @digitalocean the combo of cloudflare workers + DO VPS for hosting is interesting. how's the latency been on the concierge responses?

pc's profile picture
pc9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean Looking nice work When it is coming into production?

Khalid Warsame's profile picture
Khalid Warsame9 months ago

@FlutterDev @openrouter @Cloudflare @honojs @digitalocean Thanks but I don’t know tbh. Sourcing reliable data is a huge pain point and this project has no path to monetization.

kefeh collins 💙's profile picture
kefeh collins 💙9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean This is actually pretty cool.

Richie Muhammed's profile picture
Richie Muhammed9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean I see videos like this and I’m like “how do I even get to this level”? Looking nice 🔥

Khalid Warsame's profile picture
Khalid Warsame9 months ago

@FlutterDev @openrouter @Cloudflare @honojs @digitalocean Practice. Lots of iteration.

NIHAL's profile picture
NIHAL9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean Hey can you share code please

Mykhailo Sorochuk's profile picture
Mykhailo Sorochuk9 months ago

@KhalidWar @FlutterDev @openrouter @Cloudflare @honojs @digitalocean Impressive stack. How do you differentiate cruise vs port cards in the LLM prompts? Any edge caching wins for snappy searches?

Khalid Warsame's profile picture
Khalid Warsame9 months ago

@FlutterDev @openrouter @Cloudflare @honojs @digitalocean I supplied the LLM with different render tools, data source, and system prompts. Logically port and cruise aren’t the same so the lllm can reason about it. No caching or optimizations of any kind yet. But I can edge cache popular ports and cruises and FAQs.

Related Videos