Production AI chat app.
Three commands.
Complete Flutter chat UI with auth, streaming, voice, and markdown. CLI-installed as source code you own. Zero boilerplate.
How it works
From zero to running AI chat app. No boilerplate.
Configure
flai init asks for your app name, assistant name, and theme. Creates the core foundation in lib/flai/ with your branding baked in.
Generate
flai add app_scaffold installs 83 source files: auth, onboarding, chat with markdown and voice, sidebar with settings — plus a ready-to-run main.dart.
Connect & ship
flutter run and your app is live. When ready for production, flai connect rewrites your app to use real AI providers — zero manual wiring.
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.
abstract class AiProvider {
Stream<ChatEvent> streamChat(
ChatRequest request,
);
bool get supportsStreaming;
bool get supportsToolUse;
bool get supportsVision;
bool get supportsThinking;
}