|
Some checks failed
API contract / OpenAPI type drift (push) Failing after 1m0s
omniroute와 동일하게 공개 클라이언트 자격증명으로 서버사이드 OAuth 교환을 제공한다. 관리자가 제공자 로그인 후 브라우저에 남는 code를 붙여넣으면 토큰·refresh token·메타데이터(account-id, Code Assist project)를 저장하고 게이트웨이에 push한다. - codex_api 어댑터: chatgpt.com/backend-api/codex/responses (Responses SSE, 401 시 refresh token으로 자가 갱신) - antigravity_api 어댑터: cloudcode-pa v1internal:streamGenerateContent (Gemini 형식 SSE, loadCodeAssist로 프로젝트 발급, 401 자가 갱신) - 자격증명 저장소에 refresh_token_encrypted·extra 컬럼 추가(부트스트랩 SQL 포함), 게이트웨이 push가 구조화 자격증명을 전달 |
||
|---|---|---|
| .. | ||
| db/init | ||
| .env.example | ||
| Caddyfile | ||
| Caddyfile.nas | ||
| docker-compose.nas.yml | ||
| docker-compose.yml | ||
| README.md | ||
infra
Docker Compose: web · api · postgres(pgvector) · Caddy proxy.
- API 이미지는 저장소 루트 컨텍스트에서 빌드한다.
data/personas같은 런타임 입력을 컨테이너 안/app기준으로 찾기 때문이다. - 엔진 게이트웨이는 compose 밖 호스트 프로세스로 두고, API는
ENGINE_URL로 호출한다. - RAG 임베딩/리랭커 의존성은 API 이미지 build arg
INSTALL_RAG=true일 때만 설치한다. 기본 이미지는 슬림 모드이며 RAG 모델 미설정 시 앱이 명시적으로 degraded 처리한다. - 배포 전 루트에서
python scripts/check-deploy-preflight.py --env-file infra/.env를 실행한다. 프리플라이트는 G3G8 내부 쓰기 토큰 6개가 각각 32자 이상이며 서로 다른 값인지 검사한다. DB까지 검증할 때는 API app-roleG8 migration sentinel과 RLS 역할을 함께 확인한다.DATABASE_URL을 넘기고--require-app-role을 붙여 G0 - Compose 음성 설정은
VIGNETTE_VOICE_STT_PROVIDER,DEEPGRAM_API_KEY,DEEPGRAM_STT_*와VIGNETTE_VOICE_TTS_PROVIDER를 API에 주입한다.deepgram선택 상태에서 key가 없고 OpenAI key만 있으면 runtime은openai-batch-fallback을 보고할 수 있으므로, 배포 완료 판정에는 authenticated public WSSready의 STT/TTS provider/model 네 값을 기대값과 정확히 비교하는 mic-free preflight를 사용한다. - mic-free preflight는 장치 열거·캡처를 하지 않으며 물리 마이크/50분 증거가 아니다. full soak는 실행 직전
사용자 명시 동의와
--confirm-physical-capture가 있을 때만 장치를 연다. Higgs는 dev 전용이다. 운영 TTS는 OpenAI APIgpt-4o-mini-tts로 고정하고 Services Agreement의 앱 통합·출력 소유 근거와 최종 사용자 AI 생성 음성 고지를 함께 유지한다. 배포 완료 시 public health/ready의 provider/model exact match를 증거로 남긴다. - 배포·soak evidence에는 API key, auth cookie, session ID, 축어록, 응답 payload와 원음을 기록하지 않는다.