diff --git a/packages/create-llama/create-app.ts b/packages/create-llama/create-app.ts
index 901723640e7f0e9501f1a858d6f791bfe2c6e2aa..29e2d837fbce10ea06ecaed8e769633a315d164b 100644
--- a/packages/create-llama/create-app.ts
+++ b/packages/create-llama/create-app.ts
@@ -12,18 +12,18 @@ import type { TemplateFramework, TemplateType } from "./templates";
 import { installTemplate } from "./templates";
 
 export async function createApp({
+  template,
   framework,
   appPath,
   packageManager,
   eslint,
 }: {
+  template: TemplateType;
   framework: TemplateFramework;
   appPath: string;
   packageManager: PackageManager;
   eslint: boolean;
 }): Promise<void> {
-  const template: TemplateType = "simple";
-
   const root = path.resolve(appPath);
 
   if (!(await isWriteable(path.dirname(root)))) {
diff --git a/packages/create-llama/index.ts b/packages/create-llama/index.ts
index 21eda3b7a74934b7c992fdb6eba7b94db0d9fa2e..ad53b6d43c6943777d30d1e5a6971e7f76138884 100644
--- a/packages/create-llama/index.ts
+++ b/packages/create-llama/index.ts
@@ -177,12 +177,40 @@ async function run(): Promise<void> {
   >;
 
   const defaults: typeof preferences = {
+    template: "simple",
     framework: "nextjs",
     eslint: true,
   };
   const getPrefOrDefault = (field: string) =>
     preferences[field] ?? defaults[field];
 
+  if (!program.template) {
+    if (ciInfo.isCI) {
+      program.template = getPrefOrDefault("template");
+    } else {
+      const { template } = await prompts(
+        {
+          type: "select",
+          name: "template",
+          message: "Which template would you like to use?",
+          choices: [
+            { title: "Simple chat without streaming", value: "simple" },
+            { title: "Simple chat with streaming", value: "streaming" },
+          ],
+          initial: 0,
+        },
+        {
+          onCancel: () => {
+            console.error("Exiting.");
+            process.exit(1);
+          },
+        },
+      );
+      program.template = template;
+      preferences.template = template;
+    }
+  }
+
   if (!program.framework) {
     if (ciInfo.isCI) {
       program.framework = getPrefOrDefault("framework");
@@ -233,6 +261,7 @@ async function run(): Promise<void> {
   }
 
   await createApp({
+    template: program.template,
     framework: program.framework,
     appPath: resolvedProjectPath,
     packageManager,
diff --git a/packages/create-llama/templates/types.ts b/packages/create-llama/templates/types.ts
index 087731013032bf23d1fb1558e6824e57ddceb8c4..2847856898886016f689bbeda0a3ffc4479ebb17 100644
--- a/packages/create-llama/templates/types.ts
+++ b/packages/create-llama/templates/types.ts
@@ -1,6 +1,6 @@
 import { PackageManager } from "../helpers/get-pkg-manager";
 
-export type TemplateType = "simple";
+export type TemplateType = "simple" | "streaming";
 export type TemplateFramework = "nextjs" | "express";
 
 export interface InstallTemplateArgs {