Feature Map
AI 앱 프론트엔드와 백엔드에 필요한 모든 것
Vite + React 화면부터 타입 안전 API, 인증, 실시간 데이터, AI, RAG, 스토리지, 배포까지 하나의 Gencow 흐름에서 완성하세요.
- Vite + React UI
- 타입 안전 백엔드 API
- AI/RAG/Auth 준비
AI 앱에 필요한 모든 것이 플랫폼에 이미 있습니다
백엔드만이 아닙니다. AI, 백그라운드 작업, 미디어, 운영 기능까지 플랫폼이 제공합니다. 외부 서비스도 키도 서버도 따로 엮을 필요가 없습니다.
LLM
모델 ID로 OpenAI 모델을 호출합니다. provider 키는 플랫폼 프록시가 보관합니다.
이미지 생성
같은 ai.* API로 이미지를 생성합니다.
STT
비공개 스토리지의 음성을 타임스탬프·화자 구분과 함께 텍스트로 변환합니다.
TTS
텍스트를 음성으로 합성합니다. 즉시 합성과 비동기 작업을 지원합니다.
OCR
이미지에서 텍스트를 추출하고, PDF · HWPX · DOCX · XLSX를 Markdown으로 변환합니다.
Rerank
Azure의 Cohere Rerank로 검색 결과를 재정렬합니다.
Workflow
체크포인트, 승인 대기, 재개를 지원하는 내구성 있는 멀티 스텝 실행.
Queue
백그라운드 실행을 위한 워크플로 큐를 플랫폼이 관리합니다.
Cron
주기, 매일, 매주, cron 표현식 스케줄.
Realtime
데이터가 바뀌면 쿼리를 쓰는 UI가 자동으로 갱신됩니다.
이미지 자동 스케일링
저장된 이미지를 자동으로 WebP 변환하고 축소합니다.
백업
수동 · 자동 데이터베이스 백업.
Analytics
개인정보 친화적 방문 분석. 호스팅 앱에는 자동 적용됩니다.
웹빌더
프롬프트로 앱을 설명하면 Gencow로 만들고 배포합니다.
14AI 서비스는 하나의 Gencow 크레딧으로 사용합니다. 플랜별 한도가 적용됩니다. 요금제를 확인하세요.
고객 응대 AI 에이전트, 파일 3개면 충분합니다
// gencow/schema.tsexport const conversations = pgTable("conversations", { id: serial("id").primaryKey(), userId: text("user_id").notNull(), messages: jsonb("messages").default([]), context: text("context"), // RAG에서 가져온 맥락 createdAt: timestamp("created_at").defaultNow(),});Schema → Agent Logic → UI, 전부 TypeScript. 코딩 에이전트와 바이브코딩하면 끝.
AI 에이전트 만들기가 이렇게 어려웠다
에이전트 로직은 간단한데, 인프라가 너무 복잡합니다.
LangChain으로 시작했다가...
인프라가 없다. 벡터 DB 따로, API 서버 따로, 인증 따로... 에이전트 로직은 10줄인데 인프라 코드가 200줄.
# 필요한 인프라: pip install langchain pinecone # + FastAPI + PostgreSQL + Redis # + Docker + Nginx + Auth...
$ gencow add AI RAG # ✓ gencow/ 에 컴포넌트가 추가됩니다
→Gencow는 AI · RAG · Auth가 컴포넌트로 내장되어 있습니다. gencow add AI RAG 한 줄로 끝.
RAG 파이프라인 만들다 3주가 지났다
문서 청킹, 임베딩, 벡터 저장, 검색 최적화... PDF 하나 넣는데 왜 이렇게 복잡하지?
# 직접 구현해야 하는 것들: loader = PDFLoader(file) chunks = splitter.split(docs) embeds = openai.embed(chunks) pinecone.upsert(embeds) # + 에러 핸들링, 재시도...
await rag.ingest(ctx, "manual.pdf", text); // ✓ 청킹 + 임베딩 + 인덱싱
→한 줄이면 PDF를 자동으로 청킹 · 임베딩 · 인덱싱합니다. pgvector 내장.
프로덕션에 올리는 게 또 다른 지옥
로컬에서 잘 되던 에이전트가 배포하면 안 된다. 인증, CORS, 환경변수, 시크릿 관리, 스케일링...
# 배포 체크리스트: □ Docker 이미지 빌드 □ K8s manifest 작성 □ SSL 인증서 발급 □ 환경변수 설정 □ CORS 설정...
$ gencow deploy # ✓ 번들 → 마이그레이션 → 배포 # 프로덕션: gencow deploy --prod
→명령어 하나로 프로덕션 배포. SSL, 인증, 스케일링 모두 자동.
API 키 하나 받으려고 사이트 3개에 가입했다
직접 쓰려면 provider별 가입과 키 발급, 앱 설정이 필요합니다. 기능을 만들기도 전에 준비가 길어집니다.
# 가입해야 하는 사이트: OpenAI → 카드 등록 → API Key Anthropic → 카드 등록 → API Key Google AI → 프로젝트 → API Key # + .env에 3개 키 관리...
// Gencow 키 하나로 끝
import { ai } from "./ai";
await ai.chat({
model: "llm/economy", // or another OpenAI model
messages: [...]
});→Gencow 키 하나로 OpenAI 모델을 사용하세요. 가입 하나, 키 하나, 결제 하나.
에이전트의 모든 부품이 준비되어 있습니다
한 줄 추가로 AI, RAG, 벡터 검색, 스트리밍을 백엔드에 바로 장착합니다.
AI Engine
Gencow 게이트웨이로 OpenAI 모델을 호출합니다. 스트리밍은 지원 환경에서 제공하며 provider 키는 플랫폼이 관리합니다.
import { ai } from "@/gencow/ai";
const reply = await ai.chat({
model: "llm/economy",
system: "You are a helpful assistant.",
messages: chatHistory,
});
// Agent Loop (도구 자동 반복 호출)
const result = await ai.agent({
messages, tools, maxSteps: 5,
});RAG Engine
PDF, Notion, 웹페이지 자동 크롤링 & 청킹. pgvector 기반 벡터 검색. 추가 인프라 불필요.
import { rag } from "@/gencow/rag";
// 문서 인덱싱 (자동 청킹 + 임베딩)
await rag.ingest(ctx, "manual.pdf", docText);
// 시맨틱 검색
const results = await rag.search(ctx,
"환불 정책이 어떻게 되나요?",
{ filter: { source: "manual.pdf" } }
);
// Q&A — 검색+답변 한 번에
const { answer } = await rag.ask(ctx, query);Search
Function calling 기반 도구 사용. AI가 상황에 맞는 도구를 자동 선택. ctx 통합으로 DB mutation도 안전하게 실행.
import { defineTools } from "@/gencow/tools";
const tools = defineTools(ctx, {
getOrder: {
description: "주문 상태 조회",
parameters: z.object({
orderId: z.string()
}),
handler: async (ctx, args) => {
return ctx.db.select().from(orders)
.where(eq(orders.id, args.orderId));
}
}
});
await ai.chat({ messages, tools });Agent Memory
에피소딕·시맨틱·절차적 메모리 3계층. 장기 기억과 대화 컨텍스트를 자동 관리.
import { memory } from "@/gencow/memory";
// 범위(scope)별 장기 기억 검색
const { hits } = await memory.search(ctx, {
namespace: "assistant-memory",
scope: { conversation: conversationId },
query,
});
const reply = await ai.chat({
system: "Known facts: " + JSON.stringify(hits),
messages: [{ role: "user", content: query }],
});Tool Calling
PII 마스킹, 주제 차단, 출력 검증. 입력→AI→출력 전 과정을 안전하게 래핑.
import { guardrails } from "@/gencow/guardrails";
// PII 마스킹 + 주제 차단
const safe = await guardrails.validateInput(
userMsg,
{ maskPII: true, blockTopics: ["politics"] }
);
if (!safe.allowed) return safe.blocked;
// 입력 검증 → AI 호출 → 출력 검증을 한 번에
const { result } = await guardrails.wrap(
(text) => ai.chat({ messages: [{ role: "user", content: text }] }),
userMsg,
{ maskPII: true },
{ maxLength: 2000 }
);Analytics
쿠키 없는 방문 분석. 페이지뷰, 유입 경로, 국가를 대시보드에서 확인하세요. 트래커를 따로 붙일 필요가 없습니다.
// Gencow 호스팅 프론트엔드에는 자동 적용 (추가 코드 없음)
// 대시보드 → Analytics 탭: 페이지뷰 · 유입 경로 · 국가
// 커스텀 이벤트 (선택)
window.gencow?.analytics?.track?.("signup_completed");One Key, All Models
🔑 원키 AI
가입 하나, 키 하나, 결제 하나. OpenAI 모델을 바로 사용하세요.
// 각 프로바이더별 키와 SDK 필요
import { OpenAI } from "openai";
import { Anthropic } from "@anthropic-ai/sdk";
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY
});
// 모델 바꾸려면? SDK도, 코드도 전부 교체
// 앱 코드에 provider 키를 두지 않고 OpenAI 모델 ID를 선택합니다
import { ai } from "./ai";
const result = await ai.chat({
model: "llm/economy", // → choose another OpenAI model 모델 ID
messages: [{ role: "user", content: message }],
});
// API 키? 과금? Gencow 크레딧 자동 차감.
가입 하나, 키 하나
Gencow API 키 하나로 OpenAI 모델을 호출하고 provider 키와 사용량 과금은 플랫폼이 관리합니다.
AI도 DB도 하나의 크레딧으로
AI 토큰, DB 스토리지, API 호출 — 청구서 4개가 아니라 하나의 크레딧으로 관리.
AI 비용 폭탄? 없습니다
Spend Cap 기본 ON. 크레딧 소진 시 읽기 전용 전환. 추가 비용 0원. 데이터는 안전.
API 키가 코드에 없습니다
provider 키는 플랫폼 프록시가 보관합니다. 앱 코드와 .env에 두지 않습니다.
모델 선택은 문자열 하나
같은 Gencow AI API에서 OpenAI 모델 ID를 선택하세요.
const result = await ai.chat({
messages: [{ role: "user", content: message }],
});
// 응답:
"안녕하세요! 무엇을 도와드릴까요?"
이게 전부입니다. OpenAI 모델을 선택하세요.
모든 AI, 하나의 백엔드
다른 서비스는 AI 또는 백엔드. Gencow는 AI 그리고 백엔드.
| 항목 | OpenRouter | Supabase | Convex | Gencow |
|---|---|---|---|---|
| GPT-6 Luna | 직접 | 직접 | ||
| GPT-6 Sol | 직접 | 직접 | ||
| GPT-6 Astra | 직접 | 직접 | ||
| OpenAI 모델 선택 | 모델 ID | SDK 교체 | SDK 교체 | 모델 ID |
| Database | ||||
| Auth | ||||
| Realtime | ||||
| 통합 과금 | AI만 | 인프라만 | 인프라만 | AI+인프라 |
| Spend Cap |
OpenRouter는 AI만, Supabase는 백엔드만. Gencow는 AI와 백엔드를 하나의 크레딧으로 관리합니다.
AI가 이해하는 프론트엔드 + 백엔드 아키텍처
바이브코딩의 성공은 AI의 구조 이해도에 달려 있습니다. Gencow는 처음부터 AI 친화적인 6가지 원칙(Core Thesis) 위에 세워졌습니다.
Everything is TypeScript
DB 스키마, 권한(RLS), API, 비즈니스 로직까지 모두 TypeScript 하나로 통일됩니다. 맥락 단절이 없습니다.
Co-location Architecture
프론트엔드 최상단 폴더에 백엔드가 존재합니다. 거대한 모노레포를 뒤질 필요 없이 AI가 전체 구조를 즉시 파악합니다.
Deterministic & Declarative
복잡한 대시보드 설정이나 흩어진 SQL 함수가 없습니다. 100% 코드로만 작동하여 AI가 항상 완벽하게 재현 가능합니다.
Explicit Data Graph
보이지 않는 DB 관계를 추론하게 두지 마세요. 모든 데이터 관계가 타입으로 명시되어 AI가 실수 없이 로직을 짭니다.
Secure by Default
createCrud()는 기본적으로 인증을 요구하고, ownerRls()가 행 단위 보안(RLS)을 적용해 사용자는 자기 행만 볼 수 있습니다.
Zero-Config Database
gencow dev --local은 Docker 없이 인메모리 PGlite로 실행됩니다. 클라우드와 프로덕션은 PostgreSQL에서 동작합니다.
3단계로 SaaS 완성
처음부터 끝까지 TypeScript. AI가 전 과정을 함께합니다.
명령어 한 줄
에이전트 컴포넌트 추가
필요한 AI/RAG 컴포넌트를 한 줄로 장착합니다. 벡터 DB, API 서버, 인증을 따로 설정할 필요 없습니다.
$ gencow add AI RAG✓ AI Engine → gencow/ai.ts✓ RAG Engine → gencow/rag.ts→ gencow dev 로 시작하세요
또는 AI에게 시킵니다
에이전트 로직 작성
gencow/agent.ts에 타입이 있는 procedure로 비즈니스 로직을 작성합니다. 코딩 에이전트에게 맡겨도 됩니다.
// gencow/agent.tsimport { z } from "zod";import { rag } from "./rag";import { procedure } from "./runtime";export const chat = procedure.mutation.name("agent.chat").input(z.object({ question: z.string() })).handler(async ({ context: ctx, input }) => {ctx.auth.requireAuth();// 문맥 검색 후 답변const { answer, sources } = await rag.ask(ctx, input.question);return { answer, sources };});
명령어 한 줄
배포
gencow deploy는 dev 앱에 배포하고, 준비되면 gencow deploy --prod로 프로덕션에 올립니다 (Pro / Scale).
$ gencow deploy✓ Schema → migrations synced✓ Bundle created✓ dev 앱에 배포 완료→ https://<app-id>.gencow.app$ gencow deploy --prod # Pro / Scale
Dev → Prod 아키텍처
완벽한 격리와 초고속 런타임
안전하고 빠릅니다. 로컬에서의 개발 경험 그대로, 프로덕션에서는 엔터프라이즈급 격리 환경을 보장합니다.
PGlite
Docker가 필요 없는 번개 같은 로컬 In-memory Postgres
PostgreSQL
글로벌 상용 표준의 가장 안정적인 관계형 데이터베이스
Bun
Node.js를 압도하는, 현존하는 가장 강력한 차세대 런타임
cowbox
앱마다 격리된 프로세스로 실행됩니다 (Landlock + seccomp-bpf + cgroups v2).
명령어 한 줄로 배포.
세계 최고의 오픈소스 위에
자유롭게 세워졌습니다
특정 클라우드에 종속되지 마세요. Gencow는 100% 오픈소스 스택 위에 지어졌습니다. 언제든 데이터를 들고 자유롭게 떠날 수 있습니다.
Bun
세계에서 가장 빠른 JavaScript 런타임
Hono
Edge-first 초경량 웹 프레임워크
Drizzle
타입 세이프 SQL 쿼리 빌더
PostgreSQL
세계 최고의 오픈소스 관계형 DB
자유로운 이전
표준 SQL과 표준 API. 언제든 다른 서버로 옮길 수 있습니다.
커뮤니티 검증
수백만 개발자가 매일 사용하며 검증한 기술 스택입니다.
투명한 코드
블랙박스 없음. 모든 코드가 공개되어 있어 신뢰할 수 있습니다.
Secure by Isolation,
엔터프라이즈급 보안
모든 앱은 격리된 프로세스(Landlock + seccomp-bpf + cgroups v2)와 전용 데이터베이스에서 실행되며, 비밀 값은 앱별 환경변수로 관리됩니다.
기본값부터 격리
커널 수준 프로세스 격리와 앱별 데이터베이스로 공유 인프라의 위험 범위를 줄입니다. ownerRls() 같은 RLS 프리셋이 사용자별 행을 보호합니다.
- 24/7 Monitoring & Alerting
- Automated Backups & Point-in-time Recovery
- Horizontal Auto-scaling
- Enterprise-grade Security Isolation
데이터가 변하면,
UI가 즉시 반응합니다
복잡한 소켓 이벤트 관리는 잊으세요. 쿼리를 구독하기만 하면 데이터베이스 변경 사항이 마법처럼 프론트엔드에 반영됩니다.
소켓 관리 불필요
WebSocket 설정, 재연결 로직, 이벤트 핸들러를 직접 작성할 필요가 없습니다.
쿼리만 쓰면 됩니다
useQuery(api.orders.list)를 호출하면 데이터가 바뀔 때마다 UI가 갱신됩니다.
플랜에 맞춰 확장
동시 실시간 연결 수는 플랜에 따라 다릅니다. 요금제를 확인하세요.
AI Agent를 만들 수 있는 유일한 올인원 앱 빌더
LangChain으로 에이전트를 만들 수 있습니다. 하지만 인증, DB, 배포, 벡터 DB를 각각 따로 붙여야 합니다.
Gencow는 gencow add AI RAG
| LangServe | Supabase + LangChain | Vercel AI SDK | Gencow | |
|---|---|---|---|---|
| AI 엔진 | 직접 구현 | ✅ 내장 | ||
| RAG | 직접 구현 | 직접 구현 | ✅ 내장 | |
| 벡터 검색 | Pinecone 별도 | pgvector 수동 | 별도 필요 | ✅ pgvector |
| DB | 별도 필요 | PostgreSQL | 별도 필요 | ✅ PGlite→PG |
| 인증 | 별도 필요 | 별도 필요 | ✅ 내장 | |
| 결제 | 별도 필요 | 별도 필요 | 별도 필요 | ✅ 토스페이먼츠 |
| 배포 | 직접 구성 | 클라우드 | ✅ 원커맨드 | |
| 바이브코딩 | ✅ 완전 | |||
| AI API 통합 | ✅ 원키 AI | |||
| 통합 과금 | 인프라만 | ✅ AI+인프라 | ||
| Spend Cap | ✅ 기본 ON |
이런 에이전트, 하루 만에 만들 수 있습니다
이커머스 고객 지원 에이전트
// 컴포넌트: AI + RAG + Tools
import { z } from "zod";
import { ai } from "./ai";
import { rag } from "./rag";
import { defineTools } from "./tools";
import { procedure } from "./runtime";
export const ask = procedure.mutation
.name("support.ask")
.input(z.object({ question: z.string() }))
.handler(async ({ context: ctx, input }) => {
ctx.auth.requireAuth();
const docs = await rag.retrieve(ctx, input.question, {
filter: { source: "faq" },
});
const tools = defineTools(ctx, { getOrder, cancelOrder });
return ai.agent({
model: "llm/economy",
system: "Answer from the FAQ: " + JSON.stringify(docs),
messages: [{ role: "user", content: input.question }],
tools,
maxSteps: 5,
});
});→24/7 고객 응대, 주문 조회/취소/환불 자동 처리
사내 문서 검색 에이전트
// 컴포넌트: AI + RAG
import { z } from "zod";
import { rag } from "./rag";
import { procedure } from "./runtime";
export const search = procedure.mutation
.name("docs.search")
.input(z.object({ query: z.string() }))
.handler(async ({ context: ctx, input }) => {
ctx.auth.requireAuth();
// 검색 + 답변을 한 번에 (출처 포함)
const { answer, sources } = await rag.ask(ctx, input.query);
return { answer, sources };
});→팀별 접근 통제, 환각 최소화, 출처 포함 답변
SaaS 온보딩 에이전트
// 컴포넌트: AI + RAG + Memory
import { z } from "zod";
import { ai } from "./ai";
import { memory } from "./memory";
import { procedure } from "./runtime";
export const onboard = procedure.mutation
.name("onboarding.ask")
.input(z.object({ question: z.string(), conversationId: z.string() }))
.handler(async ({ context: ctx, input }) => {
ctx.auth.requireAuth();
const { hits } = await memory.search(ctx, {
namespace: "onboarding",
scope: { conversation: input.conversationId },
query: input.question,
});
return ai.chat({
system: "Known about this user: " + JSON.stringify(hits),
messages: [{ role: "user", content: input.question }],
});
});→개인화된 온보딩, 진행률 추적, 이탈 방지
에이전트만이 아닙니다.
어떤 비즈니스든, 원큐에.
Gencow는 AI 에이전트를 위해 설계되었지만, 그 기반은 TypeScript 프론트엔드 + 백엔드 앱 플랫폼입니다.
UI · DB · 인증 · 결제 · 실시간 · 배포까지 — 어떤 웹서비스든 빠르게 만들 수 있습니다.
# AI 에이전트 앱 $ gencow add AI RAG # 결제가 있는 앱 (토스페이먼츠) $ gencow add TossPayments # 구글 로그인 $ gencow add sso # 필요한 화면과 컴포넌트를 조합하세요.
에이전트 플랫폼으로 시작하세요. 그 기반 위에 무엇이든 만들 수 있습니다.
아이디어는 당신이,
나머지는 Gencow에게
gencow.app에서 바로 시작하고 docs.gencow.com에서 전체 개발 흐름을 확인하세요.