콘텐츠로 이동

고정 엔드포인트 배포

고정 엔드포인트 배포는 설치를 단일 관리 추론 엔드포인트에 고정한다. 설치본은 그 엔드포인트하고만 통신하고, 로컬 서빙과 프로바이더 설정은 숨겨지고 거부되며, 모델 집합을 제한할 수 있다. 조직이 운영하는 중앙 추론 서비스를 소비하는 씬 클라이언트 플릿을 위한 형태다.

배포 프로필 스키마와 정책 예시는 정책 스키마 레퍼런스를 참고한다. 이 문서는 운영 형태를 다룬다.

동작 방식

deployment.profile = fixed_endpoint로 두면 설치는 로컬 라우터를 우회하지 않고 추론을 관리 엔드포인트로 고정한다. 채팅 경로는 그대로다. 모든 모델 호출은 여전히 로컬 continuum-router를 거치므로 모델 별칭 재작성, 웹 검색 주입, 헬스 체크, 재시도가 보존된다.

시작 시 앱은 해석된 endpoints.inferenceApi URL을 가리키는 OpenAI 호환 라우터 백엔드를 정확히 하나 미리 등록한다. API 키는 OS 키체인에서 읽어 환경 변수 참조로 라우터에 전달하므로, 평문 키는 디스크의 라우터 설정에 남지 않는다. 프로필을 다시 standard로 바꾸면 그 백엔드는 제거된다.

엔드포인트는 별도의 배포 설정이 아니라 일반 관리 서비스 엔드포인트다. URL은 endpoints.inferenceApi.baseUrl(mode = custom)에 들어가고, 자격 증명은 관리 엔드포인트 자격 증명 명령으로 키체인에 쓰기 전용으로 저장되며 정책 파일에 남거나 다시 출력되지 않는다. deployment 영역은 엔드포인트 종류를 참조할 뿐 URL이나 비밀을 담지 않는다.

기능 플래그

deployment 영역이 사용자가 할 수 있는 일을 정한다. 플래그는 정책 전용이며 사용자에게 읽기 전용이고, 백엔드가 두 전송 경로(Tauri 명령 가드와 REST 경로 게이트) 모두에서 각각을 강제하며 실패 시 닫힌다.

  • deployment.allowLocalServing: 사용자가 로컬 추론 서버를 시작할 수 있는지 여부. false면 온디맨드 모델 로딩이 두 전송 경로에서 거부된다. 라우터와 고정 백엔드는 계속 떠 있고 로컬 서빙만 멈춘다.
  • deployment.allowProviderConfig: 사용자가 업스트림 프로바이더를 추가·편집할 수 있는지 여부. false면 프로바이더 구성 표면이 거부되고 API 페이지에서 Providers 탭이 숨겨진다.
  • deployment.allowModelDownload: 사용자가 모델을 내려받을 수 있는지 여부. false면 모델 다운로드 표면이 거부되고, 이미 설치된 카탈로그 탐색은 계속 동작한다.
  • deployment.allowedModelIds: 설치가 사용할 수 있도록 제한되는 모델 id 목록. 비어 있으면 제한이 없다. 프로필과 무관한 소프트 제한이다.

profile = fixed_endpoint이고 allowLocalServing = false이면 Models·Engines 페이지도 숨겨진다. 정책 작성자가 나열하지 않아도 프로필에서 파생되어 실효 숨김 페이지에 합쳐진다.

모델 id 허용 목록

deployment.allowedModelIds는 고정된 라우터 백엔드의 모델 허용 목록으로 복사된다. 즉 제한은 UI 선택기뿐 아니라 API 클라이언트에도 적용된다. 목록 밖 모델 id 요청은 라우터에서 거부되므로, 사용자가 로컬 API를 직접 호출해 허용 목록을 우회할 수 없다. 엔드포인트가 서빙하는 모든 모델을 허용하려면 목록을 비워 둔다.

권장 구성

전형적인 고정 엔드포인트 배포는 프로필에 세 기능 플래그를 모두 끄고 엔드포인트를 custom 모드로 함께 둬서, 설치가 관리 엔드포인트에만 닿도록 한다.

{
  "schemaVersion": 1,
  "policyId": "example-corp-fixed-endpoint",
  "issuedAt": "2026-06-24T00:00:00Z",
  "settingsOverrides": {
    "deployment": {
      "profile": "fixed_endpoint",
      "allowedModelIds": ["internal/llama-3"],
      "allowLocalServing": false,
      "allowProviderConfig": false,
      "allowModelDownload": false
    },
    "endpoints": {
      "inferenceApi": { "mode": "custom", "baseUrl": "https://models.internal/v1" }
    }
  },
  "lockedPaths": [
    "deployment.profile",
    "deployment.allowLocalServing",
    "deployment.allowProviderConfig",
    "deployment.allowModelDownload",
    "endpoints.inferenceApi.mode",
    "endpoints.inferenceApi.baseUrl"
  ]
}

사용자가 바꾸지 못하도록 배포와 엔드포인트 경로를 잠근다. 엔드포인트의 API 키는 서버가 요구할 경우 정책 파일이 아니라 관리 엔드포인트 자격 증명 명령으로 쓰기 전용으로 설정한다.

사용자가 경험하는 것

고정 엔드포인트 설치의 사용자는 앱을 열고 채팅한다. 모델 로딩, 다운로드, 프로바이더 설정, Models·Engines 페이지가 사라지거나 비활성화되며, 컨트롤이 있던 자리에는 "조직에서 관리함" 표시가 나타난다. 모든 모델 호출은 로컬 라우터를 거쳐 관리 엔드포인트로 가므로 별칭, 헬스, 재시도가 평소처럼 동작한다. 차단된 동작마다 policy_gated 감사 항목이 하나 남는다. 감사와 컴플라이언스를 참고한다.

에어갭과 결합

고정 엔드포인트 배포는 에어갭 모드와 자연스럽게 결합한다. 추론을 내부 엔드포인트로 고정한 뒤, egress.airGapped: true와 그 엔드포인트 호스트만 나열한 egress.allowedHosts를 더해 설치가 다른 곳에는 닿지 않게 한다. 에어갭 배포를 참고한다.

다음 단계