diff --git a/templates/assistant-ui/.cursor/rules/echo_rules.mdc b/templates/assistant-ui/.cursor/rules/echo_rules.mdc
new file mode 100644
index 000000000..b34b6ba9d
--- /dev/null
+++ b/templates/assistant-ui/.cursor/rules/echo_rules.mdc
@@ -0,0 +1,89 @@
+---
+description: Guidelines and best practices for building Echo-powered Next.js applications with user-pays AI infrastructure
+globs: **/*.ts,**/*.tsx,**/*.js,**/*.jsx
+---
+
+# Echo Next.js Guidelines
+
+## What is Echo?
+Echo is a user-pays AI infrastructure SDK by Merit Systems. Instead of fronting AI API costs yourself, users authenticate via Echo and pay for their own usage. You set a markup and earn revenue automatically.
+
+## Project Setup
+- Echo is configured in `src/echo/index.ts` via the `Echo()` initializer
+- The `ECHO_APP_ID` environment variable must be set in `.env.local`
+- Echo provides `handlers`, `isSignedIn`, and model providers (e.g., `openai`, `anthropic`)
+
+## Echo SDK Initialization
+- ALWAYS initialize Echo in a dedicated file (e.g., `src/echo/index.ts`):
+```typescript
+import Echo from '@merit-systems/echo-next-sdk';
+
+export const { handlers, isSignedIn, openai, anthropic } = Echo({
+ appId: process.env.ECHO_APP_ID!,
+});
+```
+- NEVER hardcode the app ID — always use environment variables
+- Export model providers from this file and import them where needed
+
+## Authentication
+- Use `isSignedIn()` to check if a user is authenticated before making AI calls
+- Echo handles OAuth login — use the `EchoTokens` component for the auth UI:
+```typescript
+'use client';
+import { EchoTokens } from '@merit-systems/echo-next-sdk/client';
+
+export function EchoButton() {
+ return ;
+}
+```
+- Client components using Echo UI must have the `'use client'` directive
+
+## API Routes
+- Use Echo's `handlers` for setting up auth API routes in `src/app/api/echo/[...echo]/route.ts`
+- For AI endpoints, use the exported model providers (e.g., `openai`, `anthropic`) from `src/echo/index.ts`
+- ALWAYS check `isSignedIn()` before processing AI requests
+
+## Model Usage
+- Use Echo model providers instead of direct AI SDK providers:
+```typescript
+// CORRECT — uses Echo (users pay)
+import { openai } from '@/echo';
+const response = await generateText({ model: openai('gpt-4o'), prompt: '...' });
+
+// WRONG — uses direct SDK (you pay)
+import { openai } from '@ai-sdk/openai';
+```
+- Echo is compatible with the Vercel AI SDK (`ai` package) — use `generateText`, `streamText`, `generateObject`, etc.
+
+## Component Patterns
+- Wrap Echo client components (like `EchoTokens`) in a separate client component file
+- Server components should import from `@/echo` for server-side AI calls
+- Client components should use hooks from `@merit-systems/echo-react-sdk` for client-side AI
+
+## Environment Variables
+- `ECHO_APP_ID` — Your Echo application ID (required)
+- Get your app ID from https://echo.merit.systems
+
+## Common Patterns
+### Text Generation
+```typescript
+import { openai } from '@/echo';
+import { generateText } from 'ai';
+
+const { text } = await generateText({
+ model: openai('gpt-4o'),
+ prompt: 'Hello!',
+});
+```
+
+### Streaming
+```typescript
+import { openai } from '@/echo';
+import { streamText } from 'ai';
+
+const result = streamText({
+ model: openai('gpt-4o'),
+ prompt: 'Tell me a story',
+});
+return result.toDataStreamResponse();
+```
diff --git a/templates/authjs/.cursor/rules/echo_rules.mdc b/templates/authjs/.cursor/rules/echo_rules.mdc
new file mode 100644
index 000000000..b34b6ba9d
--- /dev/null
+++ b/templates/authjs/.cursor/rules/echo_rules.mdc
@@ -0,0 +1,89 @@
+---
+description: Guidelines and best practices for building Echo-powered Next.js applications with user-pays AI infrastructure
+globs: **/*.ts,**/*.tsx,**/*.js,**/*.jsx
+---
+
+# Echo Next.js Guidelines
+
+## What is Echo?
+Echo is a user-pays AI infrastructure SDK by Merit Systems. Instead of fronting AI API costs yourself, users authenticate via Echo and pay for their own usage. You set a markup and earn revenue automatically.
+
+## Project Setup
+- Echo is configured in `src/echo/index.ts` via the `Echo()` initializer
+- The `ECHO_APP_ID` environment variable must be set in `.env.local`
+- Echo provides `handlers`, `isSignedIn`, and model providers (e.g., `openai`, `anthropic`)
+
+## Echo SDK Initialization
+- ALWAYS initialize Echo in a dedicated file (e.g., `src/echo/index.ts`):
+```typescript
+import Echo from '@merit-systems/echo-next-sdk';
+
+export const { handlers, isSignedIn, openai, anthropic } = Echo({
+ appId: process.env.ECHO_APP_ID!,
+});
+```
+- NEVER hardcode the app ID — always use environment variables
+- Export model providers from this file and import them where needed
+
+## Authentication
+- Use `isSignedIn()` to check if a user is authenticated before making AI calls
+- Echo handles OAuth login — use the `EchoTokens` component for the auth UI:
+```typescript
+'use client';
+import { EchoTokens } from '@merit-systems/echo-next-sdk/client';
+
+export function EchoButton() {
+ return ;
+}
+```
+- Client components using Echo UI must have the `'use client'` directive
+
+## API Routes
+- Use Echo's `handlers` for setting up auth API routes in `src/app/api/echo/[...echo]/route.ts`
+- For AI endpoints, use the exported model providers (e.g., `openai`, `anthropic`) from `src/echo/index.ts`
+- ALWAYS check `isSignedIn()` before processing AI requests
+
+## Model Usage
+- Use Echo model providers instead of direct AI SDK providers:
+```typescript
+// CORRECT — uses Echo (users pay)
+import { openai } from '@/echo';
+const response = await generateText({ model: openai('gpt-4o'), prompt: '...' });
+
+// WRONG — uses direct SDK (you pay)
+import { openai } from '@ai-sdk/openai';
+```
+- Echo is compatible with the Vercel AI SDK (`ai` package) — use `generateText`, `streamText`, `generateObject`, etc.
+
+## Component Patterns
+- Wrap Echo client components (like `EchoTokens`) in a separate client component file
+- Server components should import from `@/echo` for server-side AI calls
+- Client components should use hooks from `@merit-systems/echo-react-sdk` for client-side AI
+
+## Environment Variables
+- `ECHO_APP_ID` — Your Echo application ID (required)
+- Get your app ID from https://echo.merit.systems
+
+## Common Patterns
+### Text Generation
+```typescript
+import { openai } from '@/echo';
+import { generateText } from 'ai';
+
+const { text } = await generateText({
+ model: openai('gpt-4o'),
+ prompt: 'Hello!',
+});
+```
+
+### Streaming
+```typescript
+import { openai } from '@/echo';
+import { streamText } from 'ai';
+
+const result = streamText({
+ model: openai('gpt-4o'),
+ prompt: 'Tell me a story',
+});
+return result.toDataStreamResponse();
+```
diff --git a/templates/echo-cli/.cursor/rules/echo_rules.mdc b/templates/echo-cli/.cursor/rules/echo_rules.mdc
new file mode 100644
index 000000000..e44b37ac3
--- /dev/null
+++ b/templates/echo-cli/.cursor/rules/echo_rules.mdc
@@ -0,0 +1,72 @@
+---
+description: Guidelines and best practices for building Echo-powered CLI applications with user-pays AI infrastructure
+globs: **/*.ts,**/*.js
+---
+
+# Echo CLI Guidelines
+
+## What is Echo?
+Echo is a user-pays AI infrastructure SDK by Merit Systems. Instead of fronting AI API costs yourself, users authenticate via Echo and pay for their own usage. You set a markup and earn revenue automatically.
+
+## Project Setup
+- This is a Node.js CLI application using Echo
+- The `ECHO_APP_ID` environment variable must be set
+- Echo provides server-side model providers for CLI usage
+
+## Echo SDK Usage
+- Initialize Echo and export model providers:
+```typescript
+import Echo from '@merit-systems/echo-next-sdk';
+
+const { openai, anthropic } = Echo({
+ appId: process.env.ECHO_APP_ID!,
+});
+```
+
+## Model Usage
+- ALWAYS use Echo model providers instead of direct AI SDK providers:
+```typescript
+// CORRECT — uses Echo (users pay)
+const { openai } = Echo({ appId: process.env.ECHO_APP_ID! });
+const response = await generateText({ model: openai('gpt-4o'), prompt: '...' });
+
+// WRONG — uses direct SDK (you pay)
+import { openai } from '@ai-sdk/openai';
+```
+- Echo is compatible with the Vercel AI SDK (`ai` package)
+
+## Environment Variables
+- `ECHO_APP_ID` — Your Echo application ID (required)
+- Get your app ID from https://echo.merit.systems
+
+## CLI Patterns
+### Interactive Prompt
+```typescript
+import { generateText } from 'ai';
+import readline from 'readline';
+
+const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
+
+rl.question('Ask anything: ', async (prompt) => {
+ const { text } = await generateText({
+ model: openai('gpt-4o'),
+ prompt,
+ });
+ console.log(text);
+ rl.close();
+});
+```
+
+### Streaming Output
+```typescript
+import { streamText } from 'ai';
+
+const result = streamText({
+ model: openai('gpt-4o'),
+ prompt: 'Tell me a story',
+});
+
+for await (const chunk of result.textStream) {
+ process.stdout.write(chunk);
+}
+```
diff --git a/templates/next-chat/.cursor/rules/echo_rules.mdc b/templates/next-chat/.cursor/rules/echo_rules.mdc
new file mode 100644
index 000000000..b34b6ba9d
--- /dev/null
+++ b/templates/next-chat/.cursor/rules/echo_rules.mdc
@@ -0,0 +1,89 @@
+---
+description: Guidelines and best practices for building Echo-powered Next.js applications with user-pays AI infrastructure
+globs: **/*.ts,**/*.tsx,**/*.js,**/*.jsx
+---
+
+# Echo Next.js Guidelines
+
+## What is Echo?
+Echo is a user-pays AI infrastructure SDK by Merit Systems. Instead of fronting AI API costs yourself, users authenticate via Echo and pay for their own usage. You set a markup and earn revenue automatically.
+
+## Project Setup
+- Echo is configured in `src/echo/index.ts` via the `Echo()` initializer
+- The `ECHO_APP_ID` environment variable must be set in `.env.local`
+- Echo provides `handlers`, `isSignedIn`, and model providers (e.g., `openai`, `anthropic`)
+
+## Echo SDK Initialization
+- ALWAYS initialize Echo in a dedicated file (e.g., `src/echo/index.ts`):
+```typescript
+import Echo from '@merit-systems/echo-next-sdk';
+
+export const { handlers, isSignedIn, openai, anthropic } = Echo({
+ appId: process.env.ECHO_APP_ID!,
+});
+```
+- NEVER hardcode the app ID — always use environment variables
+- Export model providers from this file and import them where needed
+
+## Authentication
+- Use `isSignedIn()` to check if a user is authenticated before making AI calls
+- Echo handles OAuth login — use the `EchoTokens` component for the auth UI:
+```typescript
+'use client';
+import { EchoTokens } from '@merit-systems/echo-next-sdk/client';
+
+export function EchoButton() {
+ return ;
+}
+```
+- Client components using Echo UI must have the `'use client'` directive
+
+## API Routes
+- Use Echo's `handlers` for setting up auth API routes in `src/app/api/echo/[...echo]/route.ts`
+- For AI endpoints, use the exported model providers (e.g., `openai`, `anthropic`) from `src/echo/index.ts`
+- ALWAYS check `isSignedIn()` before processing AI requests
+
+## Model Usage
+- Use Echo model providers instead of direct AI SDK providers:
+```typescript
+// CORRECT — uses Echo (users pay)
+import { openai } from '@/echo';
+const response = await generateText({ model: openai('gpt-4o'), prompt: '...' });
+
+// WRONG — uses direct SDK (you pay)
+import { openai } from '@ai-sdk/openai';
+```
+- Echo is compatible with the Vercel AI SDK (`ai` package) — use `generateText`, `streamText`, `generateObject`, etc.
+
+## Component Patterns
+- Wrap Echo client components (like `EchoTokens`) in a separate client component file
+- Server components should import from `@/echo` for server-side AI calls
+- Client components should use hooks from `@merit-systems/echo-react-sdk` for client-side AI
+
+## Environment Variables
+- `ECHO_APP_ID` — Your Echo application ID (required)
+- Get your app ID from https://echo.merit.systems
+
+## Common Patterns
+### Text Generation
+```typescript
+import { openai } from '@/echo';
+import { generateText } from 'ai';
+
+const { text } = await generateText({
+ model: openai('gpt-4o'),
+ prompt: 'Hello!',
+});
+```
+
+### Streaming
+```typescript
+import { openai } from '@/echo';
+import { streamText } from 'ai';
+
+const result = streamText({
+ model: openai('gpt-4o'),
+ prompt: 'Tell me a story',
+});
+return result.toDataStreamResponse();
+```
diff --git a/templates/next-image/.cursor/rules/echo_rules.mdc b/templates/next-image/.cursor/rules/echo_rules.mdc
new file mode 100644
index 000000000..b34b6ba9d
--- /dev/null
+++ b/templates/next-image/.cursor/rules/echo_rules.mdc
@@ -0,0 +1,89 @@
+---
+description: Guidelines and best practices for building Echo-powered Next.js applications with user-pays AI infrastructure
+globs: **/*.ts,**/*.tsx,**/*.js,**/*.jsx
+---
+
+# Echo Next.js Guidelines
+
+## What is Echo?
+Echo is a user-pays AI infrastructure SDK by Merit Systems. Instead of fronting AI API costs yourself, users authenticate via Echo and pay for their own usage. You set a markup and earn revenue automatically.
+
+## Project Setup
+- Echo is configured in `src/echo/index.ts` via the `Echo()` initializer
+- The `ECHO_APP_ID` environment variable must be set in `.env.local`
+- Echo provides `handlers`, `isSignedIn`, and model providers (e.g., `openai`, `anthropic`)
+
+## Echo SDK Initialization
+- ALWAYS initialize Echo in a dedicated file (e.g., `src/echo/index.ts`):
+```typescript
+import Echo from '@merit-systems/echo-next-sdk';
+
+export const { handlers, isSignedIn, openai, anthropic } = Echo({
+ appId: process.env.ECHO_APP_ID!,
+});
+```
+- NEVER hardcode the app ID — always use environment variables
+- Export model providers from this file and import them where needed
+
+## Authentication
+- Use `isSignedIn()` to check if a user is authenticated before making AI calls
+- Echo handles OAuth login — use the `EchoTokens` component for the auth UI:
+```typescript
+'use client';
+import { EchoTokens } from '@merit-systems/echo-next-sdk/client';
+
+export function EchoButton() {
+ return ;
+}
+```
+- Client components using Echo UI must have the `'use client'` directive
+
+## API Routes
+- Use Echo's `handlers` for setting up auth API routes in `src/app/api/echo/[...echo]/route.ts`
+- For AI endpoints, use the exported model providers (e.g., `openai`, `anthropic`) from `src/echo/index.ts`
+- ALWAYS check `isSignedIn()` before processing AI requests
+
+## Model Usage
+- Use Echo model providers instead of direct AI SDK providers:
+```typescript
+// CORRECT — uses Echo (users pay)
+import { openai } from '@/echo';
+const response = await generateText({ model: openai('gpt-4o'), prompt: '...' });
+
+// WRONG — uses direct SDK (you pay)
+import { openai } from '@ai-sdk/openai';
+```
+- Echo is compatible with the Vercel AI SDK (`ai` package) — use `generateText`, `streamText`, `generateObject`, etc.
+
+## Component Patterns
+- Wrap Echo client components (like `EchoTokens`) in a separate client component file
+- Server components should import from `@/echo` for server-side AI calls
+- Client components should use hooks from `@merit-systems/echo-react-sdk` for client-side AI
+
+## Environment Variables
+- `ECHO_APP_ID` — Your Echo application ID (required)
+- Get your app ID from https://echo.merit.systems
+
+## Common Patterns
+### Text Generation
+```typescript
+import { openai } from '@/echo';
+import { generateText } from 'ai';
+
+const { text } = await generateText({
+ model: openai('gpt-4o'),
+ prompt: 'Hello!',
+});
+```
+
+### Streaming
+```typescript
+import { openai } from '@/echo';
+import { streamText } from 'ai';
+
+const result = streamText({
+ model: openai('gpt-4o'),
+ prompt: 'Tell me a story',
+});
+return result.toDataStreamResponse();
+```
diff --git a/templates/next-video-template/.cursor/rules/echo_rules.mdc b/templates/next-video-template/.cursor/rules/echo_rules.mdc
new file mode 100644
index 000000000..b34b6ba9d
--- /dev/null
+++ b/templates/next-video-template/.cursor/rules/echo_rules.mdc
@@ -0,0 +1,89 @@
+---
+description: Guidelines and best practices for building Echo-powered Next.js applications with user-pays AI infrastructure
+globs: **/*.ts,**/*.tsx,**/*.js,**/*.jsx
+---
+
+# Echo Next.js Guidelines
+
+## What is Echo?
+Echo is a user-pays AI infrastructure SDK by Merit Systems. Instead of fronting AI API costs yourself, users authenticate via Echo and pay for their own usage. You set a markup and earn revenue automatically.
+
+## Project Setup
+- Echo is configured in `src/echo/index.ts` via the `Echo()` initializer
+- The `ECHO_APP_ID` environment variable must be set in `.env.local`
+- Echo provides `handlers`, `isSignedIn`, and model providers (e.g., `openai`, `anthropic`)
+
+## Echo SDK Initialization
+- ALWAYS initialize Echo in a dedicated file (e.g., `src/echo/index.ts`):
+```typescript
+import Echo from '@merit-systems/echo-next-sdk';
+
+export const { handlers, isSignedIn, openai, anthropic } = Echo({
+ appId: process.env.ECHO_APP_ID!,
+});
+```
+- NEVER hardcode the app ID — always use environment variables
+- Export model providers from this file and import them where needed
+
+## Authentication
+- Use `isSignedIn()` to check if a user is authenticated before making AI calls
+- Echo handles OAuth login — use the `EchoTokens` component for the auth UI:
+```typescript
+'use client';
+import { EchoTokens } from '@merit-systems/echo-next-sdk/client';
+
+export function EchoButton() {
+ return ;
+}
+```
+- Client components using Echo UI must have the `'use client'` directive
+
+## API Routes
+- Use Echo's `handlers` for setting up auth API routes in `src/app/api/echo/[...echo]/route.ts`
+- For AI endpoints, use the exported model providers (e.g., `openai`, `anthropic`) from `src/echo/index.ts`
+- ALWAYS check `isSignedIn()` before processing AI requests
+
+## Model Usage
+- Use Echo model providers instead of direct AI SDK providers:
+```typescript
+// CORRECT — uses Echo (users pay)
+import { openai } from '@/echo';
+const response = await generateText({ model: openai('gpt-4o'), prompt: '...' });
+
+// WRONG — uses direct SDK (you pay)
+import { openai } from '@ai-sdk/openai';
+```
+- Echo is compatible with the Vercel AI SDK (`ai` package) — use `generateText`, `streamText`, `generateObject`, etc.
+
+## Component Patterns
+- Wrap Echo client components (like `EchoTokens`) in a separate client component file
+- Server components should import from `@/echo` for server-side AI calls
+- Client components should use hooks from `@merit-systems/echo-react-sdk` for client-side AI
+
+## Environment Variables
+- `ECHO_APP_ID` — Your Echo application ID (required)
+- Get your app ID from https://echo.merit.systems
+
+## Common Patterns
+### Text Generation
+```typescript
+import { openai } from '@/echo';
+import { generateText } from 'ai';
+
+const { text } = await generateText({
+ model: openai('gpt-4o'),
+ prompt: 'Hello!',
+});
+```
+
+### Streaming
+```typescript
+import { openai } from '@/echo';
+import { streamText } from 'ai';
+
+const result = streamText({
+ model: openai('gpt-4o'),
+ prompt: 'Tell me a story',
+});
+return result.toDataStreamResponse();
+```
diff --git a/templates/next/.cursor/rules/echo_rules.mdc b/templates/next/.cursor/rules/echo_rules.mdc
new file mode 100644
index 000000000..b34b6ba9d
--- /dev/null
+++ b/templates/next/.cursor/rules/echo_rules.mdc
@@ -0,0 +1,89 @@
+---
+description: Guidelines and best practices for building Echo-powered Next.js applications with user-pays AI infrastructure
+globs: **/*.ts,**/*.tsx,**/*.js,**/*.jsx
+---
+
+# Echo Next.js Guidelines
+
+## What is Echo?
+Echo is a user-pays AI infrastructure SDK by Merit Systems. Instead of fronting AI API costs yourself, users authenticate via Echo and pay for their own usage. You set a markup and earn revenue automatically.
+
+## Project Setup
+- Echo is configured in `src/echo/index.ts` via the `Echo()` initializer
+- The `ECHO_APP_ID` environment variable must be set in `.env.local`
+- Echo provides `handlers`, `isSignedIn`, and model providers (e.g., `openai`, `anthropic`)
+
+## Echo SDK Initialization
+- ALWAYS initialize Echo in a dedicated file (e.g., `src/echo/index.ts`):
+```typescript
+import Echo from '@merit-systems/echo-next-sdk';
+
+export const { handlers, isSignedIn, openai, anthropic } = Echo({
+ appId: process.env.ECHO_APP_ID!,
+});
+```
+- NEVER hardcode the app ID — always use environment variables
+- Export model providers from this file and import them where needed
+
+## Authentication
+- Use `isSignedIn()` to check if a user is authenticated before making AI calls
+- Echo handles OAuth login — use the `EchoTokens` component for the auth UI:
+```typescript
+'use client';
+import { EchoTokens } from '@merit-systems/echo-next-sdk/client';
+
+export function EchoButton() {
+ return ;
+}
+```
+- Client components using Echo UI must have the `'use client'` directive
+
+## API Routes
+- Use Echo's `handlers` for setting up auth API routes in `src/app/api/echo/[...echo]/route.ts`
+- For AI endpoints, use the exported model providers (e.g., `openai`, `anthropic`) from `src/echo/index.ts`
+- ALWAYS check `isSignedIn()` before processing AI requests
+
+## Model Usage
+- Use Echo model providers instead of direct AI SDK providers:
+```typescript
+// CORRECT — uses Echo (users pay)
+import { openai } from '@/echo';
+const response = await generateText({ model: openai('gpt-4o'), prompt: '...' });
+
+// WRONG — uses direct SDK (you pay)
+import { openai } from '@ai-sdk/openai';
+```
+- Echo is compatible with the Vercel AI SDK (`ai` package) — use `generateText`, `streamText`, `generateObject`, etc.
+
+## Component Patterns
+- Wrap Echo client components (like `EchoTokens`) in a separate client component file
+- Server components should import from `@/echo` for server-side AI calls
+- Client components should use hooks from `@merit-systems/echo-react-sdk` for client-side AI
+
+## Environment Variables
+- `ECHO_APP_ID` — Your Echo application ID (required)
+- Get your app ID from https://echo.merit.systems
+
+## Common Patterns
+### Text Generation
+```typescript
+import { openai } from '@/echo';
+import { generateText } from 'ai';
+
+const { text } = await generateText({
+ model: openai('gpt-4o'),
+ prompt: 'Hello!',
+});
+```
+
+### Streaming
+```typescript
+import { openai } from '@/echo';
+import { streamText } from 'ai';
+
+const result = streamText({
+ model: openai('gpt-4o'),
+ prompt: 'Tell me a story',
+});
+return result.toDataStreamResponse();
+```
diff --git a/templates/nextjs-api-key-template/.cursor/rules/echo_rules.mdc b/templates/nextjs-api-key-template/.cursor/rules/echo_rules.mdc
new file mode 100644
index 000000000..b34b6ba9d
--- /dev/null
+++ b/templates/nextjs-api-key-template/.cursor/rules/echo_rules.mdc
@@ -0,0 +1,89 @@
+---
+description: Guidelines and best practices for building Echo-powered Next.js applications with user-pays AI infrastructure
+globs: **/*.ts,**/*.tsx,**/*.js,**/*.jsx
+---
+
+# Echo Next.js Guidelines
+
+## What is Echo?
+Echo is a user-pays AI infrastructure SDK by Merit Systems. Instead of fronting AI API costs yourself, users authenticate via Echo and pay for their own usage. You set a markup and earn revenue automatically.
+
+## Project Setup
+- Echo is configured in `src/echo/index.ts` via the `Echo()` initializer
+- The `ECHO_APP_ID` environment variable must be set in `.env.local`
+- Echo provides `handlers`, `isSignedIn`, and model providers (e.g., `openai`, `anthropic`)
+
+## Echo SDK Initialization
+- ALWAYS initialize Echo in a dedicated file (e.g., `src/echo/index.ts`):
+```typescript
+import Echo from '@merit-systems/echo-next-sdk';
+
+export const { handlers, isSignedIn, openai, anthropic } = Echo({
+ appId: process.env.ECHO_APP_ID!,
+});
+```
+- NEVER hardcode the app ID — always use environment variables
+- Export model providers from this file and import them where needed
+
+## Authentication
+- Use `isSignedIn()` to check if a user is authenticated before making AI calls
+- Echo handles OAuth login — use the `EchoTokens` component for the auth UI:
+```typescript
+'use client';
+import { EchoTokens } from '@merit-systems/echo-next-sdk/client';
+
+export function EchoButton() {
+ return ;
+}
+```
+- Client components using Echo UI must have the `'use client'` directive
+
+## API Routes
+- Use Echo's `handlers` for setting up auth API routes in `src/app/api/echo/[...echo]/route.ts`
+- For AI endpoints, use the exported model providers (e.g., `openai`, `anthropic`) from `src/echo/index.ts`
+- ALWAYS check `isSignedIn()` before processing AI requests
+
+## Model Usage
+- Use Echo model providers instead of direct AI SDK providers:
+```typescript
+// CORRECT — uses Echo (users pay)
+import { openai } from '@/echo';
+const response = await generateText({ model: openai('gpt-4o'), prompt: '...' });
+
+// WRONG — uses direct SDK (you pay)
+import { openai } from '@ai-sdk/openai';
+```
+- Echo is compatible with the Vercel AI SDK (`ai` package) — use `generateText`, `streamText`, `generateObject`, etc.
+
+## Component Patterns
+- Wrap Echo client components (like `EchoTokens`) in a separate client component file
+- Server components should import from `@/echo` for server-side AI calls
+- Client components should use hooks from `@merit-systems/echo-react-sdk` for client-side AI
+
+## Environment Variables
+- `ECHO_APP_ID` — Your Echo application ID (required)
+- Get your app ID from https://echo.merit.systems
+
+## Common Patterns
+### Text Generation
+```typescript
+import { openai } from '@/echo';
+import { generateText } from 'ai';
+
+const { text } = await generateText({
+ model: openai('gpt-4o'),
+ prompt: 'Hello!',
+});
+```
+
+### Streaming
+```typescript
+import { openai } from '@/echo';
+import { streamText } from 'ai';
+
+const result = streamText({
+ model: openai('gpt-4o'),
+ prompt: 'Tell me a story',
+});
+return result.toDataStreamResponse();
+```
diff --git a/templates/react-chat/.cursor/rules/echo_rules.mdc b/templates/react-chat/.cursor/rules/echo_rules.mdc
new file mode 100644
index 000000000..bdc1fcf07
--- /dev/null
+++ b/templates/react-chat/.cursor/rules/echo_rules.mdc
@@ -0,0 +1,80 @@
+---
+description: Guidelines and best practices for building Echo-powered React (Vite) applications with user-pays AI infrastructure
+globs: **/*.ts,**/*.tsx,**/*.js,**/*.jsx
+---
+
+# Echo React Guidelines
+
+## What is Echo?
+Echo is a user-pays AI infrastructure SDK by Merit Systems. Instead of fronting AI API costs yourself, users authenticate via Echo and pay for their own usage. You set a markup and earn revenue automatically.
+
+## Project Setup
+- This is a Vite-based React application using Echo
+- The `VITE_ECHO_APP_ID` environment variable must be set in `.env`
+- Echo React SDK provides hooks and components for client-side AI usage
+
+## Echo SDK Usage
+- Import hooks from `@merit-systems/echo-react-sdk`:
+```typescript
+import { useEchoModelProviders, EchoTokens } from '@merit-systems/echo-react-sdk';
+```
+- Use `useEchoModelProviders()` to get model provider instances:
+```typescript
+const { openai, anthropic } = useEchoModelProviders();
+```
+
+## Authentication
+- Echo handles OAuth login — use the `EchoTokens` component for the auth UI:
+```typescript
+import { EchoTokens } from '@merit-systems/echo-react-sdk';
+
+function App() {
+ return ;
+}
+```
+
+## Model Usage
+- ALWAYS use Echo model providers from `useEchoModelProviders()`:
+```typescript
+// CORRECT — uses Echo (users pay)
+const { openai } = useEchoModelProviders();
+const response = await generateText({ model: openai('gpt-4o'), prompt: '...' });
+
+// WRONG — uses direct SDK (you pay)
+import { openai } from '@ai-sdk/openai';
+```
+- Echo is compatible with the Vercel AI SDK (`ai` package) — use `generateText`, `streamText`, `useChat`, etc.
+
+## React Hooks
+- Use `useChat` from `@ai-sdk/react` for chat interfaces with Echo models
+- Use `useCompletion` for text completion UIs
+- Pass Echo model providers to these hooks
+
+## Environment Variables
+- `VITE_ECHO_APP_ID` — Your Echo application ID (required)
+- Get your app ID from https://echo.merit.systems
+
+## Common Patterns
+### Chat Interface
+```typescript
+import { useChat } from '@ai-sdk/react';
+
+function Chat() {
+ const { messages, input, handleInputChange, handleSubmit } = useChat({
+ api: '/api/chat',
+ });
+ // render messages and input form
+}
+```
+
+### Text Generation
+```typescript
+import { useEchoModelProviders } from '@merit-systems/echo-react-sdk';
+import { generateText } from 'ai';
+
+const { openai } = useEchoModelProviders();
+const { text } = await generateText({
+ model: openai('gpt-4o'),
+ prompt: 'Hello!',
+});
+```
diff --git a/templates/react-image/.cursor/rules/echo_rules.mdc b/templates/react-image/.cursor/rules/echo_rules.mdc
new file mode 100644
index 000000000..bdc1fcf07
--- /dev/null
+++ b/templates/react-image/.cursor/rules/echo_rules.mdc
@@ -0,0 +1,80 @@
+---
+description: Guidelines and best practices for building Echo-powered React (Vite) applications with user-pays AI infrastructure
+globs: **/*.ts,**/*.tsx,**/*.js,**/*.jsx
+---
+
+# Echo React Guidelines
+
+## What is Echo?
+Echo is a user-pays AI infrastructure SDK by Merit Systems. Instead of fronting AI API costs yourself, users authenticate via Echo and pay for their own usage. You set a markup and earn revenue automatically.
+
+## Project Setup
+- This is a Vite-based React application using Echo
+- The `VITE_ECHO_APP_ID` environment variable must be set in `.env`
+- Echo React SDK provides hooks and components for client-side AI usage
+
+## Echo SDK Usage
+- Import hooks from `@merit-systems/echo-react-sdk`:
+```typescript
+import { useEchoModelProviders, EchoTokens } from '@merit-systems/echo-react-sdk';
+```
+- Use `useEchoModelProviders()` to get model provider instances:
+```typescript
+const { openai, anthropic } = useEchoModelProviders();
+```
+
+## Authentication
+- Echo handles OAuth login — use the `EchoTokens` component for the auth UI:
+```typescript
+import { EchoTokens } from '@merit-systems/echo-react-sdk';
+
+function App() {
+ return ;
+}
+```
+
+## Model Usage
+- ALWAYS use Echo model providers from `useEchoModelProviders()`:
+```typescript
+// CORRECT — uses Echo (users pay)
+const { openai } = useEchoModelProviders();
+const response = await generateText({ model: openai('gpt-4o'), prompt: '...' });
+
+// WRONG — uses direct SDK (you pay)
+import { openai } from '@ai-sdk/openai';
+```
+- Echo is compatible with the Vercel AI SDK (`ai` package) — use `generateText`, `streamText`, `useChat`, etc.
+
+## React Hooks
+- Use `useChat` from `@ai-sdk/react` for chat interfaces with Echo models
+- Use `useCompletion` for text completion UIs
+- Pass Echo model providers to these hooks
+
+## Environment Variables
+- `VITE_ECHO_APP_ID` — Your Echo application ID (required)
+- Get your app ID from https://echo.merit.systems
+
+## Common Patterns
+### Chat Interface
+```typescript
+import { useChat } from '@ai-sdk/react';
+
+function Chat() {
+ const { messages, input, handleInputChange, handleSubmit } = useChat({
+ api: '/api/chat',
+ });
+ // render messages and input form
+}
+```
+
+### Text Generation
+```typescript
+import { useEchoModelProviders } from '@merit-systems/echo-react-sdk';
+import { generateText } from 'ai';
+
+const { openai } = useEchoModelProviders();
+const { text } = await generateText({
+ model: openai('gpt-4o'),
+ prompt: 'Hello!',
+});
+```
diff --git a/templates/react/.cursor/rules/echo_rules.mdc b/templates/react/.cursor/rules/echo_rules.mdc
new file mode 100644
index 000000000..bdc1fcf07
--- /dev/null
+++ b/templates/react/.cursor/rules/echo_rules.mdc
@@ -0,0 +1,80 @@
+---
+description: Guidelines and best practices for building Echo-powered React (Vite) applications with user-pays AI infrastructure
+globs: **/*.ts,**/*.tsx,**/*.js,**/*.jsx
+---
+
+# Echo React Guidelines
+
+## What is Echo?
+Echo is a user-pays AI infrastructure SDK by Merit Systems. Instead of fronting AI API costs yourself, users authenticate via Echo and pay for their own usage. You set a markup and earn revenue automatically.
+
+## Project Setup
+- This is a Vite-based React application using Echo
+- The `VITE_ECHO_APP_ID` environment variable must be set in `.env`
+- Echo React SDK provides hooks and components for client-side AI usage
+
+## Echo SDK Usage
+- Import hooks from `@merit-systems/echo-react-sdk`:
+```typescript
+import { useEchoModelProviders, EchoTokens } from '@merit-systems/echo-react-sdk';
+```
+- Use `useEchoModelProviders()` to get model provider instances:
+```typescript
+const { openai, anthropic } = useEchoModelProviders();
+```
+
+## Authentication
+- Echo handles OAuth login — use the `EchoTokens` component for the auth UI:
+```typescript
+import { EchoTokens } from '@merit-systems/echo-react-sdk';
+
+function App() {
+ return ;
+}
+```
+
+## Model Usage
+- ALWAYS use Echo model providers from `useEchoModelProviders()`:
+```typescript
+// CORRECT — uses Echo (users pay)
+const { openai } = useEchoModelProviders();
+const response = await generateText({ model: openai('gpt-4o'), prompt: '...' });
+
+// WRONG — uses direct SDK (you pay)
+import { openai } from '@ai-sdk/openai';
+```
+- Echo is compatible with the Vercel AI SDK (`ai` package) — use `generateText`, `streamText`, `useChat`, etc.
+
+## React Hooks
+- Use `useChat` from `@ai-sdk/react` for chat interfaces with Echo models
+- Use `useCompletion` for text completion UIs
+- Pass Echo model providers to these hooks
+
+## Environment Variables
+- `VITE_ECHO_APP_ID` — Your Echo application ID (required)
+- Get your app ID from https://echo.merit.systems
+
+## Common Patterns
+### Chat Interface
+```typescript
+import { useChat } from '@ai-sdk/react';
+
+function Chat() {
+ const { messages, input, handleInputChange, handleSubmit } = useChat({
+ api: '/api/chat',
+ });
+ // render messages and input form
+}
+```
+
+### Text Generation
+```typescript
+import { useEchoModelProviders } from '@merit-systems/echo-react-sdk';
+import { generateText } from 'ai';
+
+const { openai } = useEchoModelProviders();
+const { text } = await generateText({
+ model: openai('gpt-4o'),
+ prompt: 'Hello!',
+});
+```