kyush-llm-router/AGENTS.md
2026-03-25 19:31:43 +09:00

3.1 KiB

Kyush LLM Router

다중 사용자 LLM 라우팅 프록시. API 키 인증, 백엔드 라우팅, 스크립트 기반 요청/응답 조작, 사용량 모니터링을 제공한다.

Tech Stack

pnpm monorepo | Express 5 + TypeScript | Solid.js + Vite | SQLite (better-sqlite3) | isolated-vm

Project Structure

server/          Express 백엔드 (포트 3000)
client/          Solid.js 어드민 대시보드 (포트 3002)
shared/          공유 TypeScript 타입
database/        SQL 스키마 원본
docs/            세부 문서
scripts/         개발 스크립트

Entry Points

  • Server: server/src/index.ts
  • Client: client/src/index.tsx
  • Shared types: shared/types.ts
  • DB schema: database/schema.sql, database/analytics-schema.sql, database/request-logs-schema.sql

Key Concepts

인증: Authorization: Bearer <api_key>auth.ts 미들웨어 → 사용자 식별 + 권한 로드. 이 키는 라우터 접속용이며, 업스트림 요청에는 전달되지 않는다. 업스트림 Authorizationbackends.api_key가 있을 때만 해당 값으로 주입된다.

요청 흐름:

Client → Auth → Script(onRequest) → RouterService → Backend → Script(onResponse) → Response
                                                                                  → AnalyticsService(log)

Script Engine: isolated-vm 샌드박스에서 JS 실행. 3가지 타입: per-user, per-backend, per-user-backend

Database: DB_DIR 하위에 core.db (users, backends, permissions, user_scripts), analytics.db (usage_stats, backend_metrics), request_logs/request_logs_YYYY-MM.db (상세 요청 로그)

상세 로그 조회: month 또는 date를 지정하면 해당 월 DB 1개만 조회한다. 둘 다 없으면 최신 월부터 월별 DB를 순차 조회하며 offset/limit을 적용한다.

Development

pnpm install        # 의존성 설치
pnpm run dev        # 서버 + 클라이언트 동시 실행
pnpm test           # 서버 테스트 실행
pnpm run bench      # 벤치마크 실행

Environment Variables

Variable Default Description
SERVER_PORT 3000 Express 서버 포트
CLIENT_PORT 3001 Vite 개발 서버 포트
DB_DIR ./data DB 루트 경로 (core.db, analytics.db, request_logs/ 생성 위치)
TZ UTC 일/월 경계 계산용 타임존. 저장 timestamp는 UTC
ADMIN_PASSWORD (필수) 어드민 비밀번호
CORS_ORIGINS localhost origins 허용 CORS 오리진

Detailed Docs

클라이언트 중심

서버 중심