Beautiful AI interfaces.
Delivered as source code.
13 Flutter components for AI chat. CLI-installed into your project — no packages, no lock-in. Edit everything.
How it works
Three commands. Full chat UI. Your code.
Initialize
flai init scaffolds the core: theme system, data models, and the provider interface. Creates lib/flai/ in your project.
Add components
flai add chat_screen installs the component and its dependencies as source files. Not a package — actual .dart files you can read and edit.
Ship
Wrap with FlaiTheme, connect an AI provider, and you have a production chat UI. Customize any component — it's your code now.
Components
Everything you need. Nothing you don't.
get_weather {"city":"SF"}Themes
Your brand, not ours. Four presets, every token customizable.
It's just Flutter
No black boxes. Generated components use standard Flutter primitives you already know.
class FlaiChatScreen extends StatefulWidget {
final ChatScreenController controller;
final String? title;
final String? subtitle;
final Widget? emptyState;
// ... your code. Edit anything.
@override
Widget build(BuildContext context) {
final theme = FlaiTheme.of(context);
return Column(
children: [
if (widget.showHeader) _buildHeader(theme),
Expanded(
child: ListView.builder(
itemCount: messages.length,
itemBuilder: (context, index) {
return MessageBubble(
message: messages[index],
);
},
),
),
FlaiInputBar(onSend: _handleSend),
],
);
}
}
Not a package
Traditional packages hide code behind versions. FlAI gives you the source.
AI Providers
Drop-in implementations. Or write your own — it's one interface.