# ============================================================ # Giosk — 환경변수 예시 (.env.example) # ------------------------------------------------------------ # 사용법: cp .env.example .env 후 OPENAI_API_KEY 만 채우면 끝. # - 모든 모듈은 이 루트 .env 하나를 기준으로 동작한다. # - .env / .env.local 은 .gitignore 로 보호된다(절대 git 에 올라가지 않음). # ============================================================ # ── ★ 단 하나의 필수 값: OpenAI 키 (BYOK) ────────────────── # GGUI 적응 UI 생성(Module C)과 음성 Realtime STT(Module A)에 함께 쓰인다. # 발급: https://platform.openai.com → API keys → Create new secret key # (Realtime API 는 결제수단/크레딧이 있는 계정이어야 동작) OPENAI_API_KEY= # 선택: Module A 자체 API 보호용 bearer token. 로컬 데모는 비워 둔다. API_KEY= # ── Module C — GGUI 적응 UI 생성 ─────────────────────────── # ggui = GGUI 라이브 생성(메인), local = 빠른 내장 렌더. 미설정 시 run.sh 가 # 키 있으면 ggui, 없으면 local 로 자동 결정한다. GGUI_MODE= GGUI_URL=http://localhost:6781 GGUI_BEARER=dev # GGUI 생성 LLM 모델(Responses 라우트) GGUI_MODEL=openai:gpt-5.5-2026-04-23 # GGUI 콜드 생성은 LLM 호출이라 30~40초. 초과 시 LOCAL 폴백(즉시)하지만, GGUI 서버는 # 백그라운드로 생성을 마쳐 캐시에 넣으므로 재방문 시 즉시 GGUI. 첫 방문부터 GGUI 로 # 보려면 기동 후 `npm run prewarm:ggui` 로 6개 화면을 미리 데운다. GGUI_TIMEOUT_MS=12000 # GGUI MCP 서버 포트(npx @ggui-ai/cli serve). GGUI_MODE=ggui 면 run.sh 가 자동 기동/재사용. GGUI_PORT=6781 GGUI_CLI_VERSION=0.2.0-alpha.4 GGUI_FORCE_CREATE=0 # Module C 서버 포트(run.sh 기준) GGUI_WRAPPER_PORT=8002 GROUND_INTENT_MODEL=gpt-4.1-mini # ── Module A — 음성 Realtime STT 중계 ────────────────────── # 브라우저가 WebRTC 로 OpenAI Realtime 에 직접 붙도록 ephemeral 토큰만 발급한다. OPENAI_REALTIME_MODEL=gpt-realtime # 입력 오디오 전사 모델(GA Realtime 필수). 예: gpt-4o-transcribe / gpt-4o-mini-transcribe OPENAI_REALTIME_TRANSCRIBE_MODEL=gpt-4o-transcribe OPENAI_REALTIME_LANGUAGE=ko # server VAD 자동종료 침묵 길이(ms) OPENAI_REALTIME_SILENCE_MS=2000 # 대화형 음성 비서 보이스(alloy/ash/ballad/coral/echo/sage/shimmer/verse 등) OPENAI_REALTIME_VOICE=alloy # Module A 서버 포트 ANALYZE_PORT=8000 # 브라우저에서 Module A 를 호출하도록 허용할 origin. 로컬 데모는 * 로 충분. CORS_ORIGINS=* # ── Module B — 메뉴/주문 백엔드 ──────────────────────────── MENU_PORT=8001 # ── Module D — 웹 프론트 (Vite, VITE_ 접두사 = 브라우저 노출) ─ # true 면 A/B/C 호출을 고정 JSON(mock)으로 대체해 UI 흐름만 확인한다. # 라이브(음성→Realtime→GGUI→주문)로 보려면 false. VITE_USE_MOCK=false # true 이면 Realtime 세션 1개가 계속 열려 비서가 듣고 말하며 function calling 으로 주문을 진행한다. # false 이면 기존 단계형(한 발화 STT + 화면 진행) 폴백을 사용한다. VITE_CONVERSATIONAL=true VITE_ANALYZE_URL=http://localhost:8000 # Realtime ephemeral 세션 발급 = Module A. 미설정 시 VITE_ANALYZE_URL 로 폴백. VITE_REALTIME_URL=http://localhost:8000 VITE_MENU_URL=http://localhost:8001 VITE_GGUI_URL=http://localhost:8002 VITE_ANALYZE_API_KEY= # true 로 두면 GGUI iframe을 직접 보여준다. 기본은 내장 상태기계 렌더러. VITE_GGUI_EMBED=false VITE_PORT=5173