프로젝트 소개

Charon은 AI 캐릭터와 롤플레잉을 수행하기 위한 자체 호스팅 웹 애플리케이션으로, 저자는 Chub, SillyTavern 및 기타 도구의 기능을 결합한 것으로 설명합니다. 이 앱은 클라우드 서비스가 아닌 사용자 데이터를 로컬에 유지하도록 설계되었습니다. README에 설명된 핵심 기능: - 분기형 대화: AI 응답을 스와이프할 때마다 새 분기가 생성되어 사용자가 대안 사이를 탐색하고, 메시지를 인라인으로 편집하며, 이전 응답을 잃지 않을 수 있습니다. - 캐릭터 카드 V2 및 V3: SillyTavern, Chub 또는 기타 소스의 `.png` 캐릭터 카드를 변환 없이 가져옵니다. - 자체 API 키 사용: OpenAI, 프록시를 통한 Anthropic, OpenRouter, Ollama, vLLM과 같은 OpenAI 호환 공급자와 작동합니다. 키는 저장 시 암호화된다고 설명됩니다. - 로어북: 배경 설정을 채팅에 첨부할 수 있으며, 앱이 AI에 관련 항목을 자동으로 선택합니다. - 페르소나: 여러 페르소나를 정의하고 채팅별로 전환할 수 있습니다. - 마크다운 렌더링: 굵게, 기울임꼴, 코드 블록, 이미지, `<style>` 범위 지정, 대화 강조를 지원하며 스트리밍 안전 페이드인이 포함됩니다. - 자체 호스팅: 데이터는 로컬 SQLite 파일에 저장되며, 클라우드 의존성, 원격 측정, 사용자 계정 외 외부 계정이 없습니다. 배포 옵션에는 Docker(`docker compose up -d`, 데이터는 `charon-data` 볼륨에 유지) 또는 pnpm 기반 개발 설정이 포함됩니다. 필수 환경 변수는 `BETTER_AUTH_SECRET` 및 `ENCRYPTION_KEY`이며, `openssl rand`를 사용한 예제 생성 명령이 제공됩니다. 마이그레이션은 첫 시작 시 자동으로 실행된다고 합니다. 이전 데이터베이스는 단일 관리자 계정으로 업그레이드 경로를 가지며, `pnpm migrate:single-user`를 사용한 문서화된 백업 및 복원 절차가 있습니다. 첫 설정은 계정 생성, AI 공급자 연결 및 캐릭터 획득을 위한 온보딩 마법사, 그 후 채팅 시작이 포함됩니다. 캐릭터는 포함되지 않으며, 사용자는 Chub 또는 SillyTavern의 `public/characters/` 폴더로 안내됩니다. 채팅 컨트롤에는 보내기, 줄 바꿈, 스와이프, 재생성, 편집, 가장(impersonate), 계속, 분기 삭제, Ctrl+K 명령 메뉴가 포함됩니다. SillyTavern 가져오기 경로는 데이터를 `public/data/`에 복사하고 `pnpm run migrate`를 실행하여 문서화되어 있습니다. 프로덕션 빌드는 `pnpm run build` 및 `pnpm run start`를 포트 3000에서 사용하며, 인증 쿠키를 위해 `APP_URL`이 설정됩니다. 개발자 문서는 CONTRIBUTING.md에 참조되어 있습니다.