A local-first desktop AI companion app for you and your partner character.
This project uses AI-assisted design and development.
Chara-i-face / CharAIface is a desktop AI companion interface that combines local AI, optional cloud AI, file-analysis tools, and character-based interaction.
CharAIface is designed as a character-style desktop chat app, not as a raw AI model management console. It gives everyday users a friendly chat surface while keeping model, routing, character-pack, and developer settings available when needed.
- Overview
- Current Status
- Features
- Quick Start
- Project Structure
- Configuration
- Character Packs
- File Input and Export
- Development
- Roadmap
- License
- 한국어
CharAIface aims to provide:
- A ChatGPT-like desktop chat interface
- Lightweight local AI for casual conversation
- Optional cloud AI routing for heavier tasks
- Character packs with custom speech style, images, and themes
- File input and analysis support for text, tables, spreadsheets, and source code
- Manual file export for assistant answers
- Local model management with beginner-friendly recommendations
- Optional developer mode for advanced users
This project is in active alpha-stage development.
The current repository includes:
- Desktop app UI based on PySide6
- FastAPI backend service
- Local AI integration through Ollama
- Optional cloud AI integration
- Character pack loading, import, and export
.charpackarchive documentation- File analysis helper tools for CSV, TSV, XLSX, text, Markdown, and source code
- Korean and English UI localization
Alpha builds may still contain unfinished packaging, rough UI edges, and changing internal APIs.
- Chat-style desktop UI
- Central conversation log
- Bottom message input
- Character image and state display
- Session list and session controls
- Settings, model, theme, and character selection controls
- Uses local AI models for casual conversation
- Supports local model selection
- Integrates with Ollama
- Recommends lightweight models by default
- Warns users before using larger local models
- Routes heavier requests to cloud AI when configured
- Intended for coding, technical explanations, long documents, and complex reasoning
- Can rewrite cloud responses into the selected character's style
CharAIface includes backend file-analysis helpers so the model does not need to guess from raw file text alone.
Supported input categories:
- Documents:
.txt,.md,.json,.log, and similar text files - Tables:
.csv,.tsv - Spreadsheets:
.xlsx - Source/config files: major source code and config text formats
The app can provide parsed structure, schema, samples, statistics, and tool results to the AI model. The model still interprets the user's intent and uses the tool output to answer.
Assistant answers can be exported manually as:
- TXT
- Markdown
- CSV
The app returns an openable file link after export.
In packaged builds, user character packs are stored as folders under:
Windows: Documents\CharAIface\characters\
macOS: ~/Library/Application Support/CharAIface/characters/
Linux: $XDG_DATA_HOME/CharAIface/characters/ or ~/.local/share/CharAIface/characters/
Packaged builds create the user data folder and the characters and
chat_sessions subfolders on first launch. Source/development runs keep
writable data inside the repository under resources/data/ and
resources/characters/.
Each character pack uses one subfolder:
characters/
character_id/
manifest.json
style.md
style.short.md
idle.png
user_typing.gif
thinking.apng
assistant_typing.gif
assistant_done.png
error.png
A valid character pack can define:
- Character name
- Description
- Author
- Version
- Core and full speech style prompts
- State images
- Theme overrides
Character IDs are matched case-insensitively, so IDs that differ only by letter
case are treated as duplicates. User character packs can also be imported and
exported as .charpack archives. For the full archive format and policy, see
CHARPACK.md.
The built-in mascot characters are managed internally as character packs, but their official artwork, prompts, relationship data, and private interaction settings are not intended to be exposed as normal user character pack files.
Supported character states:
idle
user_typing
thinking
searching
assistant_typing
assistant_done
embarrassed
panic
error
Supported image formats:
jpg
jpeg
png
gif
apng
Theme modes:
- Character Theme
- Light
- Dark
Character-specific themes use:
base_theme + palette_override
UI text is managed through CSV files.
resources/locales/ui.csv
Tools/locales/ui.csv
Initial supported languages:
- Korean
- English
Additional languages can be added by adding new columns to the CSV files and connecting the language option in the app.
Developer mode changes user-friendly terms into technical terms.
| Normal Mode | Developer Mode |
|---|---|
| AI Model | LLM |
| Local AI | Local Model |
| Cloud AI | Cloud Model |
| Speech Style Conversion | Style Rewriter |
| Conversation Memory | Context Size |
| Auto Select | Routing Mode |
- Python 3.11 or newer
- macOS or Windows
- Ollama for local AI, recommended for the local-first experience
- Optional cloud AI API key if using cloud routing
Run:
./run_macos.shYou can also double-click:
run_macos.command
The launcher checks the virtual environment and runs the installer when needed.
Run from PowerShell:
.\run_windows.ps1The launcher checks the virtual environment and runs the installer when needed.
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txtOn Windows:
py -3.12 -m venv .venv
.\.venv\Scripts\activate
python -m pip install --upgrade pip
pip install -r requirements.txtbackend/ FastAPI backend and AI services
desktop/ PySide6 desktop app
resources/ App resources, built-in data, localization, characters
shared/ Shared schemas and file intake helpers
Tools/ Character pack generator/editor tool
scripts/ Install and launch helper scripts
CHARPACK.md Character pack archive specification
requirements.txt Runtime dependencies
pyproject.toml Project metadata and dependency groups
CharAIface reads runtime settings from the app settings file and environment configuration.
Useful files:
.env.example
resources/data/settings.json.example
Local AI defaults to Ollama at:
http://127.0.0.1:11434
The desktop app communicates with the backend through the local backend helper.
Character packs can be used in two forms:
- Folder packs under the runtime character data directory
.charpackarchives for import/export
In packaged Windows builds, settings, chat sessions, logs, exports, file
analysis results, and user character packs are saved under
Documents\CharAIface\. Source/development runs use the repository-local
resources/data/ and resources/characters/ folders instead.
For the complete format, import/export policy, duplicate ID behavior, and Korean documentation, see CHARPACK.md.
The file input path is designed around a tool layer:
- The app reads the file safely.
- The backend/file helper parses structure and useful metadata.
- The AI model interprets the user's request.
- The model uses the helper context or tool result to answer.
The app should avoid hardcoded case-by-case answers. File-analysis tools should provide reliable structure and calculations, while the model decides how to use them for the user's request.
Manual export is intentionally user-triggered. If the user asks to export an assistant answer, the app saves that answer and returns an openable link.
Common checks:
.venv/bin/python -m py_compile backend/app/services/file_export_response.py
.venv/bin/python -m py_compile desktop/ui/main_window.pyDevelopment dependencies are listed in pyproject.toml under the dev
dependency group.
Tests and packaging are still being organized for alpha releases. Keep generated artifacts and temporary workspace files out of source control unless they are intentional release assets.
Near-term work:
- Import/export UX stabilization
- Release packaging for alpha builds
- Alpha release notes
- Character pack import/export polish
- File-analysis tool result formatting
- Better real-world scenario testing for file input and export
Future ideas:
- Browser quick question add-on
- Voice input
- Tool plugins
- Update notification system
- More languages
- More character pack authoring tools
CharAIface uses a split license model.
The source code of CharAIface is licensed under the GNU General Public License v3.0.
You may use, study, modify, and redistribute the source code under the terms of the GPLv3. Modified versions of the code must also be distributed under the GPLv3.
See LICENSE for details.
You may not copy, redistribute, sell, modify, or use official assets or branding in derivative versions without explicit written permission.
Forks and derivative versions must remove or replace the official CharAIface mascot characters, artwork, private prompts, and branding unless they have explicit written permission.
These assets are © 2026 Locketgoma. All rights reserved.
Chara-i-face / CharAIface는 로컬 AI, 선택적 클라우드 AI, 파일 분석 도구, 캐릭터 기반 상호작용을 결합한 데스크톱 AI 컴패니언 앱입니다.
이 프로젝트는 원시 AI 모델 관리 도구가 아니라, 캐릭터와 대화하는 형태의 데스크톱 채팅 앱을 목표로 합니다. 일반 사용자는 친숙한 채팅 UI를 사용하고, 필요한 경우 개발자나 고급 사용자가 모델, 라우팅, 캐릭터팩, 개발자 설정을 조정할 수 있습니다.
CharAIface가 목표로 하는 기능:
- ChatGPT와 비슷한 데스크톱 채팅 인터페이스
- 가벼운 로컬 AI 기반 일상 대화
- 무거운 작업을 위한 선택적 클라우드 AI 라우팅
- 말투, 이미지, 테마를 가진 캐릭터팩
- 텍스트, 표, 스프레드시트, 소스 코드 파일 입력과 분석
- AI 답변의 수동 파일 내보내기
- 초보자 친화적인 로컬 모델 관리
- 고급 사용자를 위한 개발자 모드
이 프로젝트는 현재 알파 단계로 개발 중입니다.
현재 저장소에 포함된 항목:
- PySide6 기반 데스크톱 앱 UI
- FastAPI 백엔드 서비스
- Ollama 기반 로컬 AI 연동
- 선택적 클라우드 AI 연동
- 캐릭터팩 로딩, 가져오기, 내보내기
.charpack아카이브 문서- CSV, TSV, XLSX, 텍스트, Markdown, 소스 코드용 파일 분석 보조 도구
- 한국어/영어 UI 현지화
알파 빌드에는 아직 완성되지 않은 패키징, 다듬는 중인 UI, 변경 가능한 내부 API가 남아 있을 수 있습니다.
- 채팅형 데스크톱 UI
- 중앙 대화 로그
- 하단 메시지 입력창
- 캐릭터 이미지와 상태 표시
- 세션 목록 및 세션 제어
- Settings, 모델, 테마, 캐릭터 선택
- 일상 대화용 로컬 AI 모델 사용
- 로컬 모델 선택
- Ollama 연동
- 기본적으로 가벼운 모델 추천
- 큰 로컬 모델 사용 전 경고
- 설정된 경우 무거운 요청을 클라우드 AI로 라우팅
- 코딩, 기술 설명, 긴 문서, 복잡한 추론에 사용
- 선택한 캐릭터 말투로 응답을 다시 변환 가능
CharAIface는 모델이 원본 파일 텍스트를 눈대중으로 추측하지 않도록 백엔드 파일 분석 보조 도구를 제공합니다.
지원 입력 범주:
- 문서:
.txt,.md,.json,.log등 텍스트 파일 - 테이블:
.csv,.tsv - 스프레드시트:
.xlsx - 소스/설정 파일: 주요 소스 코드 및 설정 텍스트 파일
앱은 파싱된 구조, 스키마, 샘플, 통계, 도구 결과를 AI 모델에 전달할 수 있습니다. 사용자의 의도를 해석하고 결과를 설명하는 일은 여전히 모델이 담당합니다.
AI 답변은 사용자의 명령으로 다음 형식으로 내보낼 수 있습니다.
- TXT
- Markdown
- CSV
내보내기가 끝나면 앱은 바로 열 수 있는 파일 링크를 반환합니다.
사용자 캐릭터팩은 다음 위치의 폴더로 둘 수 있습니다.
resources/characters/
character_id/
manifest.json
style.md
style.short.md
idle.png
user_typing.gif
thinking.apng
assistant_typing.gif
assistant_done.png
error.png
캐릭터팩은 다음 정보를 정의할 수 있습니다.
- 캐릭터 이름
- 설명
- 제작자
- 버전
- 핵심/전체 말투 스타일 프롬프트
- 상태 이미지
- 테마 override
캐릭터 ID 비교는 대소문자를 구분하지 않습니다. 예를 들어 ID의 대소문자만
다른 캐릭터팩은 중복으로 취급됩니다. 사용자 캐릭터팩은 .charpack
아카이브로 가져오거나 내보낼 수도 있습니다. 자세한 형식과 정책은
CHARPACK.md를 참고하세요.
- Python 3.11 이상
- macOS 또는 Windows
- 로컬 AI 경험을 위한 Ollama 권장
- 클라우드 라우팅 사용 시 선택적 클라우드 AI API 키
실행:
./run_macos.sh또는 다음 파일을 더블클릭할 수 있습니다.
run_macos.command
런처는 가상환경을 확인하고 필요한 경우 설치 스크립트를 실행합니다.
PowerShell에서 실행:
.\run_windows.ps1런처는 가상환경을 확인하고 필요한 경우 설치 스크립트를 실행합니다.
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txtWindows:
py -3.12 -m venv .venv
.\.venv\Scripts\activate
python -m pip install --upgrade pip
pip install -r requirements.txtbackend/ FastAPI 백엔드와 AI 서비스
desktop/ PySide6 데스크톱 앱
resources/ 앱 리소스, 내장 데이터, 현지화, 캐릭터
shared/ 공유 스키마와 파일 입력 보조 코드
Tools/ 캐릭터팩 생성/편집 도구
scripts/ 설치 및 실행 보조 스크립트
CHARPACK.md 캐릭터팩 아카이브 사양
requirements.txt 런타임 의존성
pyproject.toml 프로젝트 메타데이터와 개발 의존성
유용한 예시 파일:
.env.example
resources/data/settings.json.example
로컬 AI의 기본 Ollama 주소:
http://127.0.0.1:11434
데스크톱 앱은 로컬 백엔드 헬퍼를 통해 백엔드와 통신합니다.
파일 입력은 도구 계층을 기준으로 설계되어 있습니다.
- 앱이 파일을 안전하게 읽습니다.
- 백엔드 또는 파일 헬퍼가 구조와 메타데이터를 파싱합니다.
- AI 모델이 사용자의 요청 의도를 해석합니다.
- 모델은 보조 컨텍스트나 도구 결과를 사용해 답변합니다.
앱은 하드코딩된 case-by-case 답변을 피해야 합니다. 파일 분석 도구는 안정적인 구조와 계산 결과를 제공하고, 모델은 그 결과를 사용해 사용자의 요청에 맞는 답변을 생성합니다.
내보내기는 사용자가 명시적으로 요청했을 때 수행됩니다. AI 답변을 내보내면 앱이 파일을 저장하고 열 수 있는 링크를 반환합니다.
개발 의존성은 pyproject.toml의 dev dependency group에 정리되어 있습니다.
알파 릴리즈를 준비하면서 테스트, 패키징, 임시 파일 정책은 계속 정리 중입니다. 생성물과 임시 workspace 파일은 의도된 릴리즈 asset이 아니라면 소스 관리에 넣지 않는 것을 권장합니다.
가까운 작업:
- import/export UX 안정화
- 알파 빌드 패키징
- 알파 릴리즈 노트 작성
- 캐릭터팩 가져오기/내보내기 폴리싱
- 파일 분석 도구 결과 포맷 정리
- 실제 사용 시나리오 기반 파일 입력/내보내기 테스트
향후 아이디어:
- 브라우저 quick question 애드온
- 음성 입력
- 도구 플러그인
- 업데이트 알림 시스템
- 추가 언어
- 캐릭터팩 제작 도구 강화
CharAIface는 분리된 라이선스 모델을 사용합니다.
CharAIface의 소스 코드는 GNU General Public License v3.0으로 라이선스됩니다.
소스 코드는 GPLv3 조건에 따라 사용, 학습, 수정, 재배포할 수 있습니다. 수정된 버전의 코드 역시 GPLv3로 배포되어야 합니다.
자세한 내용은 LICENSE를 참고하세요.
명시적인 서면 허가 없이 공식 asset이나 브랜딩을 파생 버전에서 복사, 재배포, 판매, 수정, 사용할 수 없습니다.
fork 및 파생 버전은 명시적인 서면 허가가 없는 한 공식 CharAIface 마스코트 캐릭터, 아트워크, private prompt, 브랜딩을 제거하거나 교체해야 합니다.
해당 asset은 © 2026 Locketgoma. All rights reserved.