SubLaneSubLane

- 연혁

SubLane 가이드: 건축.

현재 구현

SubLane chi routing과 client-rendered React frontend와 함께 한 Go 프로세스입니다. 생산 빌드는 Vite의 생성된 파일들을 실행할 수 있게 합니다. SQLite 유일한 지속적인 서비스 의존성입니다; 운전사는 순수한 이동입니다, 그래서 생산은 CGO를 요구하지 않습니다. 신청 쿼리 사용 sqlc 생성한 Go database/sql; sqlc는 개발 도구, 런타임 서비스 아닙니다.

Current implementation · 1
flowchart LR
  Browser[Browser] --> HTTP[chi HTTP server]
  Clients[Responses and Chat clients] --> HTTP
  HTTP --> SPA[Embedded React application]
  HTTP --> Tenant[Workspace routing and membership]
  Tenant --> Accounts[Workspace accounts and encrypted credentials]
  Accounts --> DB[(SQLite)]
  HTTP --> Gateway[Key-bound workspace routing and affinity]
  Gateway --> Accounts
  Gateway --> Adapter[Provider adapters and SDK executors]
  Adapter --> Providers[Codex, Claude, Antigravity and Grok Build]

개발중인 Vite는 React 앱과 프록시를 제공합니다. /api, /v1 기타 제품 WebSocket 업그레이드, /healthz, 그리고 /readyz Go backend에. 생산, 브라우저 및 API 동일한 기원과 하나의 포트를 사용합니다. 별도의 Node.js 서비스, Redis 또는 PostgreSQL 요구 사항이 없습니다.

이름 *

모듈명이름 *하지 않습니다.
cmd/sublane프로세스 신호, 시작, 배선, 폐쇄도메인 정책
internal/config검증된 공정 환경Persistent 팀 환경
internal/backupStreamed archives, 무결성 및 키 검증, 격리 된 복원 및 원자 no-replace 출판HTTP 인증, 공급자 실행 또는 실시간 데이터 교체
internal/alertsWorkspace webhook 설정, 현지 사건 관측, 암호화된 목적지, 배달 및 복구모델 실행 또는 브라우저 권한
internal/content암호화된 작업 공간 내용 규칙, 컴파일된 로컬 matchers, 바인딩된 디코딩 텍스트 체크 및 안전한 일치 metadata공급자 실행, 요청 회계 또는 브라우저 권한
internal/versions관련 제품 Codex, Grok 으로 Claude 버전 정책, 공식 릴리스 metadata 체크 및 동기화 수명주기SDK 실행, 계정 credentials 또는 바이너리 설치
internal/timezonePersisted 인스턴스 시간대와 그 게시된 위치브라우저 형식, 사용 회계 또는 호스트 클럭 설정
internal/auth글로벌 로그인 식별, 암호 및 세션Workspace 회원 또는 업스트림 자격
internal/tenantsWorkspace 회원, 역할 및 수명주기글로벌 암호 또는 공급자 실행
internal/groups리소스 그룹, 회원 보조금, 개인 풀 선택, 및 범위 읽음Credentials 또는 모델 프로토콜
internal/auditBounded Management metadata, actor context, 거래 이벤트 쓰기 및 관리자는 읽습니다요청 기관, 자격 또는 인증
internal/apikey개인 게이트웨이 키 메타 데이터, 해헤, immutable 풀 바인딩, 재발행, 그리고 보기브라우저 세션 또는 업스트림 자격
internal/accounts구독 메타데이터, persisted model snapshots and lifecycle 개정, 암호화된 작업 공간 프록시 및 계정 바인딩, 자격 수명주기, 그리고 serialization을 새로 고침HTTP 파견 또는 클라이언트 열쇠
internal/resets선택적 카드 규칙, 정규화된 사용 조건과 만료 순서, 카드·요청의 영구 예약, 일일 한도와 제한된 예약 실행공급자 자격 증명, 외부 통신, 공급자의 적격 판단, 추론
internal/vaultAES-GCM 암호화 및 개인 로컬 키 로딩OAuth 또는 계정 정책
internal/oauth세션-바운드, 단일 사용 OAuth 팟캐스트브라우저 로그인 또는 모델 운송
internal/upstream뚱 베어 SDK executors, 번역, 토큰 교환, 공급자 프로토콜 및 선택 아웃바운드 운송팀 역할 또는 데이터베이스 소유권
internal/gatewayBounded Gateway/account/member 입학, 튼튼한 재사용 대기시간/rate 창, 요청 역사 및 일일 집계, 계정 친화성, 할당량 스냅샷, 그리고 per-request Orchestration공공 관리 권한
internal/storageSQLite lifecycle, schema 초기화 및 쿼리 SQL공급자 인증
internal/storage/dbGenerated 쿼리 방법 및 데이터베이스 행 유형도메인 정책 또는 공개 JSON 계약서
internal/serverchi 노선, 응답 경계, 스파 서빙미래 라우팅 / 계정 정책
web/src/lib/request.ts응답 검증 및 취소구성 요소 발표
web/src/locales로컬 UI 문자열서버 진단

관련 제품

데이터베이스는 WAL 모드에서 실행하여 외국 키 활성화, 경계 바쁜 타임 아웃, 그리고 하나의 개방 연결. 새로운 설치는 임베디드 적용 001_schema.sql 초기화 파일 및 주문 첨가제 마이그레이션, 작업 공간 프록시 테이블 및 무효 계정 바인딩을 포함. 그것은 글로벌 로그인 식별 및 작업 공간-경우 계정, 풀, 프록시, 키, 허용, 요청 역사, 사용 및 감사 레코드를 저장합니다. 첫 번째 관리자는 작업 공간 하나를 소유합니다. 이전 지원되지 않은 사전 릴리스 데이터베이스는 거부; 신선한 것을 초기화하기 전에 데이터 디렉토리를 보존합니다. 풀 카탈로그는 계정 스냅 샷 및 현재 정책에서 파생 유지; 참조 모델 카탈로그. 보다 작업 공간, 네트워크 프록시, 관리 감사, 자원 그룹, 그리고 풀 런타임.

새로운 데이터베이스 파일 사용 모드 0600; 새로 만들어진 자료 디렉토리 사용 0700. Existing 디렉토리 권한은 rewritten이 아닙니다. 데이터베이스 구성은 제대로 탈출 된 파일 URL을 사용하므로 경로의 특수 문자가 지원됩니다.

거래는 부족해야 합니다. 업스트림 네트워크 응답을 기다리는 동안 그들을 보유하지 마십시오. 동시 작가 또는 장기적인 노동자를 소개하기 전에, 연결이 장님으로 증가하는 대신 Contention을 측정합니다.

Named 쿼리는 아래에서 살고있다 internal/storage/queries/. sqlc.yaml 응용 프로그램 embeds, 별도의 유지 스키마 복사 방지 같은 초기화 스키마를 읽으십시오. 도메인 서비스는 거래 소유권을 유지하고 사용 WithTx 활성 거래에 생성 된 방법을 바인딩합니다. 공개 응답은 도메인 유형에 남아 있으므로 생성 된 행은 실수로 암호 또는 토큰 해시를 노출 할 수 없습니다. Schema 부트 스트랩은 스토리지에 명시된 SQL 남아 있습니다. 생성 된 이동은 버전으로 표시되고 확인됩니다. make generate-check.

HTTP 및 자산

  • · chi Route 그룹 및 방법별 등록 HTTP 파견; 핸들러는 요청 방법 또는 게이트웨이 경로에 전환하지 않습니다. Router-scoped Use 404/405 취급 전에 세션, 역할 및 부담 검사를 적용합니다. 공공 우즈 용도 Group 그리고 With 가용성, 기원 및 로그인 throttling. 도메인 서비스는 독립적으로 유지 HTTP.
  • 관리 경로 및 알 수없는 관리 경로는 관리자 인증을 유지합니다. 공공 오 및 개인 키 엔드 포인트는 예외입니다. 알 수없는 경로는 관리자 보호로 돌아갑니다. JSON 405 응답은 chi's 노선 테이블에서 허용 헤더를 파생합니다. 정적 자산은 GET / HeatD 외부에서만 등록됩니다. API 라우터.
  • Liveness는 의존하지 않습니다. SQLite; readiness는 합니다.
  • 아래 관리 경로 /api/ 기본적으로 활성화된 관리자 세션이 필요합니다. 4개의 명시된 auth 엔드포인트만 공개됩니다. 상태 변경 브라우저 요청은 정확한 근원 검사를 시행합니다. 개인 /api/keys 그리고 명시 /api/me 역사, 암호, 제한 및 사용 경로는 세션에서 활성화 된 역할과 파생 소유권을 허용합니다. 질의 앞에 SQL의 역사 필터 소유권 및 개인 응답에서 구독 식별을 숨깁니다. /v1 모형 discovery를 위한 별도의 Gateway-key 인증, Responses HTTP/SSE/WebSocket, 조밀함, Chat Completions 그리고 네이처 Claude 이름 * /v1beta 기본 정보 Gemini 같은 허가 및 수명주기 서비스로 세대; 참조 기본 프로토콜. WebSocket recheck 키 유효성 및 회원 활성화를 켜십시오.
  • 시스템 및 건강 JSON 응답 사용 Cache-Control: no-store.
  • SPA 문서는 재효율; 해시드 /assets/ 파일이 불균형일 수 있습니다.
  • 이름 * API 경로 반환 JSON 오류 (보호 된 하위 트리에 인증하기 전에 401, 그렇지 않으면 404), 및 누락 된 정적 파일 반환 404. 그들은 성공적인 HTML 응답이되지 않습니다.
  • Headers는 MIME sniffing 및 framing을 방지하고, 한계 referrer는 동일한 근원에 공개합니다.
  • 스트림 전체에 일괄 쓰기 제한 시간을 적용하지 않습니다. 게이트웨이는 설정된 SUBLANE_GATEWAY_REQUEST_TIMEOUT(기본 30분), 본문·이벤트·기록 상한과 취소 전파를 사용합니다.
  • SIGINT/SIGTERM은 새로운 작업을 수용하고 최대 10 초를 허용합니다. HTTP 종료.

회사 소개

TanStack Router는 탐색을 소유하고 수요에 페이지 구성 요소를로드합니다. TanStack Query는 원격 요청 상태를 소유합니다. Zod는 시스템 응답을 검증합니다. 실패는 건강 한 데이터를 제작하는 것보다 재기 행동으로 오류로 표시됩니다.

Shadcn Admin subset는 sidebar를 제공하고 primitives를 공유합니다. 신청 페이지는 입니다 SubLane-특정 및 데모 비즈니스 레코드가 포함되어 있습니다. 테마 선호도는 관리됩니다. next-themes; 번역 사용 i18next 그리고 react-i18next. 영어는 중국어 언어 브라우저에서도 기본입니다. 모든 지원되는 사전은 컴파일 시간에 영어 키를 포함해야 합니다. 영어와 중국어 간체는 처음에 번들됩니다. 수요에 대한 추가 언어 사전 로드. 아랍어는 오른쪽 왼쪽 방향으로 사용하며 코드와 식별자가 왼쪽으로 유지됩니다.

이 웹 사이트는 귀하가 웹 사이트를 탐색하는 동안 귀하의 경험을 향상시키기 위해 쿠키를 사용합니다. 이 쿠키들 중에서 필요에 따라 분류 된 쿠키는 웹 사이트의 기본적인 기능을 수행하는 데 필수적이므로 브라우저에 저장됩니다. 또한이 웹 사이트의 사용 방식을 분석하고 이해하는 데 도움이되는 제 3 자 쿠키를 사용합니다. 이 쿠키는 귀하의 동의하에 만 브라우저에 저장됩니다. 이러한 쿠키를 거부 할 수도 있습니다. 이러한 쿠키 중 일부를 선택 해제하면 검색 환경에 영향을 미칠 수 있습니다. 인증.md.

공급자 실행 boundary

자주 묻는 질문 Codex, Grok 으로 Claude 버전 정책은 관리자 전용을 통해 관리됩니다. 시스템 설정 sidebar 페이지, 개인 취향과 별도로. internal/versions persists 별도의 공급자 JSON 기존의 값 settings 테이블 및 공급 잠금 해제 버전 해결자 상류 어댑터. 경계 배경 체크는 기본으로 6 시간마다 공식 안정 릴리스를 따릅니다 (Codex GitHub 출시 및 Grok ₢ 킹 latest dist 태그 및 Claude 코드 npm stable dist-tag); 수동 overrides는 우선권을 가지고 갑니다. Claude inference는 immutable를 붙입니다 SDK 클라이언트 버전 당 실행기 구성 그래서 사용자 계약, 청구 메타 데이터 및 최종 CCH 서명 동의; 임시 버전 부트 스트랩 청취는 닫히지 않고 credentials는 상점을 입력합니다. 버전 서비스 및 릴리스의 앞에 게이트웨이 운영 정지, 그리고 노동자는 전에 가입 SQLite 닫기 시스템 설정.

internal/upstream CLIProxyAPI v8.0.35을 publicizes SDK 내장 실행자를 얻기 위해. Runtime 계정 정책 허용 Codex, Claude, Antigravity 으로 Grok Build 구독 및 관리자 구성 OpenAI- 호환 API 계정. 업스트림 없음 internal 포장은 수입됩니다. SDK 관리자는 빈, 쓰기 거부 저장소를 가지고 있으며 라이브 계정 등록을받지 않습니다. no-op watcher는 파일 기반 자격 동기화를 방지합니다. SDK Lifecycle은 루프백 전용 ephemeral을 시작합니다. HTTP 청취자: 모든 경로가 차단되고, 별도의 임의의 API 키 및 관리 / 패널 액세스가 비활성화됩니다. 클라이언트 사용 SubLane’ s chi 서버만. 홈 모드와 Redis는 활성화되지 않습니다.

SubLane 튼튼한 Lifecycle 소유자를 지킵니다. OAuth 교환 및 새로 고침 사용 경계, 핀 공급자 엔드 포인트; 회전 압착은 모델 실행 전에 암호화되고 저장됩니다. SDK 자동 새로 고침은 중지됩니다. Ephemeral 구독 auth는 접근 토큰과 허용된 공급자 메타데이터를 포함합니다, 결코 토큰을, 수입한 endpoint override, 또는 클라이언트 공급한 프록시 조정. API 채널은 플랫폼·프로토콜 설정을 암호화 키 및 검증된 기본 URL과 함께 보관합니다. 선택한 공개 SDK 실행기를 사용하고 Responses는 공개 인증 HTTP 경로와 변환기를 사용합니다. 모델 검색은 제한된 범위에서 설정을 따르며 공통 /models 형식을 가정하지 않습니다. 키는 OAuth 갱신이나 SDK 저장소에 들어가지 않습니다. 그룹 권한, 대화 바인딩과 집계를 공유하며 키 교체는 ID와 설정을 유지합니다. 플랫폼, 프로토콜 또는 주소 변경에는 새 채널이 필요합니다. Antigravity 관련 상품 sdk/auth 인증 코드 헬퍼 및 명시된 실행자는 튼튼한 소유자 내에서 통화를 새로 고침합니다. 해당 통화는 새로 고침 토큰을받습니다. 그 결과는 결코 등록되지 않습니다. SDK 관리자. 주입 된 운송은 콜러 마감일, 응답 경계, 리디렉션 거부, 심지어 위생 오류를 시행한다 SDK 새로 고침된 컨텍스트를 detaches. 프로젝트 준비는 또한이 경로 내에서 완료. 이 경계는 피합니다 SDK 관리자의 출판 - 대리 - 퍼스트 행동; 부패 관리자와 그것을 대체하지 마십시오.Register/Update 통화.

작업 공간 관리자는 암호화 된 계정으로 계정을 바인딩 할 수 있습니다. 네트워크 프록시. 업스트림 어댑터는 서버 측에 대한 계정 프록시를 선택합니다. OAuth 교환, 새로 고침, 발견, 사용은 읽고 모델 실행. An SDK 이 웹 사이트는 귀하가 웹 사이트를 탐색하는 동안 귀하의 경험을 향상시키기 위해 쿠키를 사용합니다. 이 쿠키들 중에서 필요에 따라 분류 된 쿠키는 웹 사이트의 기본적인 기능을 수행하는 데 필수적이므로 브라우저에 저장됩니다. 또한이 웹 사이트의 사용 방식을 분석하고 이해하는 데 도움이되는 제 3 자 쿠키를 사용합니다. 이 쿠키는 귀하의 동의하에 만 브라우저에 저장됩니다. 이러한 쿠키 중 일부를 선택 해제하면 검색 환경에 영향을 미칠 수 있습니다.

공개 모델 카탈로그는 추가 채널 접두사없이 네이티브 ID를 사용, 제공 업체의 맞은편에 deduplicated. 요청은 자격이 된 요청을 통해 지원 계정을 선택; 레거시 명시적으로 자격을 갖춘 요청은 호환 남아있다. 모델 발견 persists per-account snapshots and 집계 현재 풀 정책 내에서. Inference는 요청한 모델을 지원하는 usable snapshots와 계정 만 선택. 기존 업스트림 슬롯의 대부분 두 사용; stale 성공적인 데이터는 24 시간 동안 사용 가능. 정상적인 리더는 Quota를 재생하는 동안 Quota를 재생합니다. Codex 사용법, Claude 창과 Antigravity 모델 할당량은 공유된 캐시에. Compaction 남아있다 Codex-만. 신선한 주요 할당량 창 문 Codex 으로 Claude 계정; Antigravity 할당 된 기본 모델만 해당합니다. 선택은 정책 거래 내에서 지속되는 메타데이터를 읽으며, 공유가 새로 고침을 외부로 실행합니다. 참조 공급자 설정 그리고 Gateway 세부사항.

볼트 키는 SQLite 옆에 0600 파일로 생성됩니다. Startup은 기존의 암호화된 업스트림 자격 증명, 프록시 주소 및 개인 API 키 기록을 확인하고 키가 없거나 일치하지 않는 경우 실패 처리됩니다. 이들은 고유한 인증된 암호화 바인딩을 사용합니다. 백업에서는 데이터베이스와 함께 키를 보존해야 합니다. 새로 고침 및 관리자 자격 증명 변경에는 일련화된 소유자가 한 명 있습니다. 네트워크 IO는 데이터베이스 트랜잭션 내에서 실행되지 않습니다.

선호도 범위는 구성원, 풀 및 클라이언트 세션으로 지정됩니다. auto 기본 요청의 범위와 레거시 적격 요청의 공급자별 범위입니다. 이는 정규화된 모델을 기록하고, 정상적인 프로세스가 다시 시작될 때까지 지속되며, 24시간 동안 활동이 없으면 만료됩니다. 원래 계정이 지원하지 않는 경우 완전한 휴대용 기록이 있는 다른 모델이 바인딩을 대체할 수 있습니다. 공급자 연속 및 변경되지 않은 모델은 고정된 상태로 유지됩니다. 비활성화/삭제된 계정과 풀에서 제거된 계정은 안전하지 않은 계정 전환을 트리거하는 대신 기존 대화에 실패합니다. WebSocket 성적표 상태는 연결 로컬 및 경계로 유지됩니다. HTTP 이전_응답_id는 업스트림 HTTP 백엔드가 상태 비저장이기 때문에 거부됩니다. 호출자는 전체 입력을 제공해야 합니다.

자동화된 프로토콜 테스트는 합성 자격 증명과 가짜 업스트림을 사용합니다. 옵트인 테스트를 통해 Codex CLI 0.152.1을 통해 HTTP/SSE 및 WebSocket 모드를 확인했습니다. 실제 구독과 데스크톱 인증은 여전히 ​​별도의 승인 단계입니다. 범용 메모리나 처리량 예산은 요구되지 않습니다. 의도한 워크로드와 배포 플랫폼을 측정합니다.

Grok Build 인증은 서버 시행 폴링 간격 및 일회용 완료와 함께 제한된 세션 바인딩 장치 코드 시도를 사용합니다. 비밀 장치 코드는 서버에 남아 있습니다. 취소 및 만료로 자격 증명이 늦게 공개되는 것을 방지할 수 있습니다. xAI SDK 실행자는 구독 채팅 프록시를 선택하기 위해 명시적인 OAuth 마커를 수신하는 반면 새로 고침은 기존 지속 계정 소유자 아래에 고정된 xAI 토큰 엔드포인트를 사용합니다. Grok 할당량은 동일한 계정 프록시 및 공유 지속 사용 캐시를 통해 공식 CLI 청구 메타데이터를 읽습니다. 포함된 구독 크레딧만 정규화됩니다.

인스턴스 백업

스토리지 계층은 제한된 캐시 메모리와 증분 페이지 복사를 갖춘 별도의 읽기 전용 연결을 통해 SQLite 온라인 백업 API을 사용합니다. 아카이브 계층은 스트리밍 IO를 사용하여 데이터베이스, 암호화 키 및 매니페스트를 패키징합니다. 복원은 개인 준비 복사본만 검증 및 마이그레이션하고, 브라우저 세션을 지우고, 기존 경로를 덮어쓰지 않고 새 디렉터리를 게시합니다. 관리자는 시스템 설정에서 복원을 내보내고 확인하고 준비할 수 있습니다. 운영자가 다시 시작하면 복원된 디렉터리가 활성화됩니다. 내보내기/복원 준비가 감사되며 파일 작업은 라이브 애플리케이션 데이터베이스에 트랜잭션을 보유하지 않습니다. 보다 백업 및 복원.

모델 제한 메타데이터는 다음에서 정규화됩니다. internal/upstream; 원시 오류 본문은 지속되거나 반환되지 않습니다. 게이트웨이는 계정/모델 휴지, 조건부 버전 쓰기, 제한된 활성 상태 메모리 및 일반 요청 복구를 소유합니다. Antigravity SDK - 로컬 냉각이 이 소유자에게 위임되어 모델 범위를 잃거나 승인 수명 주기보다 오래 지속될 수 있는 숨겨진 타이머를 방지합니다.

API 채널 관리

internal/channels 공유된 암호화된 실행 리소스 소유자에 대해 고유한 API 채널 관리 계약을 노출합니다. 구독 목록에는 API 채널이 제외됩니다. /api/channels 관리자 전용 채널 수명주기 및 모델 관리 기능을 제공합니다. 스토리지 리소스 ID는 안정적으로 유지되므로 기존 멤버십, 선호도 및 키 바인딩이 유지됩니다.

internal/groups 입력된 구독/채널 리소스 멤버십 및 지속적인 라우팅 기본 설정을 소유합니다. 새 UI 그룹은 API 대체 기능이 꺼진 구독을 선호합니다. 마이그레이션은 기존 프로토콜 기본 설정을 유지합니다. 허용, 모델 카탈로그, 가용성, 준비 상태 및 경고 용량은 동일한 라우팅 정책을 공유합니다. 기존 대화는 리소스 간에 자동으로 이동되지 않습니다. 이식 가능한 기록을 사용한 명시적 모델 변경은 게이트웨이 모델 라우팅 규칙을 따릅니다.