# CodeAssist 전용 OpenCode 서버 (opencode/ 폴더에서 `opencode serve --port 4096`) OPENCODE_BASE_URL=http://localhost:4096 OPENCODE_AGENT=codeassist # 토큰 서명 키 (비우면 data/.auth_secret 자동 생성) AUTH_SECRET= # DB — 비우면 SQLite(data/app.db) DB_HOST= DB_PORT=5432 DB_USER= DB_PASSWORD= DB_NAME= DB_SCHEMA=codeassist # SSL: prefer(기본, 되면 씀) / require / disable. 고객사 내부 PG 는 SSL 미지원이라 prefer 면 알아서 평문 DB_SSLMODE=prefer # 프론트 origin (dev 는 Vite proxy 라 안 탐. Tauri 빌드용) CORS_ORIGINS=http://localhost:15173,http://tauri.localhost,tauri://localhost # 채팅 스트림 타임아웃(초) — Gemma4 느릴 때 올림. 첫 이벤트까지 / 한 턴 전체 STREAM_FIRST_EVENT_TIMEOUT_S=300 STREAM_TURN_TIMEOUT_S=600 # ── 사내 LLM(FabriX) — 고객사 전용. 개발(OpenRouter)에선 전부 비워둠 ── # OpenCode 는 opencode/opencode.json 을 FabriX 용으로 렌더해서(opencode/render_opencode.py) 이 서버의 /api/ito 로 붙음. AAF_FABRIX_BASE_URL= AAF_FABRIX_MODEL_ID=339 AAF_FABRIX_MODELS=339:GaussO Flash,581:GaussO Think,605:Gemma4 AAF_FABRIX_CLIENT_KEY= AAF_FABRIX_OPENAPI_TOKEN= AAF_FABRIX_USER_EMAIL= # 이미지 붙은 요청만 이 모델로. Gemma4 가 텍스트엔 너무 느려서(안녕 94s vs 339 0.7s) 기본은 339 AAF_FABRIX_VISION_MODEL_ID=605 # 게이트웨이마다 다를 수 있는 것 — 보통 비워둠(401 나면 자동으로 다른 형식도 시도함) AAF_FABRIX_CLIENT_HEADER= AAF_FABRIX_TOKEN_PREFIX=bearer AAF_FABRIX_MAX_TOKENS= AAF_RELAY_STREAM_USAGE= # FabriX 스트림 타임아웃(초) — 조각 사이 무수신 / 전체. 기본 300 / 600 AAF_FABRIX_READ_TIMEOUT_S=300 AAF_FABRIX_TOTAL_TIMEOUT_S=600 # OpenCode → 이 서버 사이 잠금. 같은 PC 안이면 비워도 됨. 서버를 바깥에 열면 반드시 랜덤 문자열 AAF_GATEWAY_KEY= # OpenCode 가 붙을 이 서버 포트 (render_opencode.py 가 씀) BACKEND_PORT=8001 # ── SAP 조회 MCP (고객사 전용, -12 에 따로 띄움. ABAP_OPENCODE mcp.bundle.cjs 재활용) ── # MCP_API_KEY 가 있으면 render_opencode.py 가 OpenCode 에 sap-icf 를 켬. 비우면 꺼짐(로컬). MCP_PORT=8888 MCP_API_KEY= # 아래는 MCP 프로세스가 읽는 SAP 접속값 — ABAP_OPENCODE bare/.env 와 같은 키 SAP_HOST_ICF= SAP_USERNAME_ICF= SAP_PASSWORD_ICF= SAP_CLIENT_ICF=100 SAP_VERIFY_SSL_ICF=false SAP_API_BASE_ICF= # ── ABAP 소스 인덱스(ABAP_INDEXING, 별도 서버 :8100) — OpenCode 툴 abap_index_* 가 씀 ── # 비우면 기본 127.0.0.1:8100. 서버가 없어도 앱은 돌아감(툴이 "없음"으로 답하고 생성 코드로). ABAP_INDEX_URL=http://127.0.0.1:8100