{"id":27598722,"url":"https://github.com/nrl-ai/customchar","last_synced_at":"2025-08-25T07:11:19.933Z","repository":{"id":183173940,"uuid":"669196603","full_name":"nrl-ai/CustomChar","owner":"nrl-ai","description":"Your customized AI assistant - Personal assistants on any hardware! With llama.cpp, whisper.cpp, ggml, LLaMA-v2.","archived":false,"fork":false,"pushed_at":"2023-12-05T18:04:25.000Z","size":14989,"stargazers_count":115,"open_issues_count":2,"forks_count":12,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-08-24T16:36:46.043Z","etag":null,"topics":["cpp","ggml","llama","llama-cpp","llama-v2","llm","stt","tts","whisper-cpp"],"latest_commit_sha":null,"homepage":"https://docs.customchar.com","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nrl-ai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-07-21T15:22:31.000Z","updated_at":"2025-08-21T15:34:51.000Z","dependencies_parsed_at":"2023-07-23T09:53:54.498Z","dependency_job_id":"c135d6fb-8eaa-4f8d-9c45-a98135c16a9f","html_url":"https://github.com/nrl-ai/CustomChar","commit_stats":null,"previous_names":["vietanhdev/customchar","nrl-ai/customchar"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nrl-ai/CustomChar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nrl-ai%2FCustomChar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nrl-ai%2FCustomChar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nrl-ai%2FCustomChar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nrl-ai%2FCustomChar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nrl-ai","download_url":"https://codeload.github.com/nrl-ai/CustomChar/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nrl-ai%2FCustomChar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272020944,"owners_count":24859926,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-25T02:00:12.092Z","response_time":1107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","ggml","llama","llama-cpp","llama-v2","llm","stt","tts","whisper-cpp"],"created_at":"2025-04-22T14:29:33.260Z","updated_at":"2025-08-25T07:11:19.910Z","avatar_url":"https://github.com/nrl-ai.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CustomChar - Your customized AI characters\n\n![](/docs/banner.svg)\n\n- **Repository:** [https://github.com/nrl-ai/CustomChar](https://github.com/nrl-ai/CustomChar).\n- **Built With:** [GGML](https://github.com/ggerganov/ggml), [llama.cpp](https://github.com/ggerganov/llama.cpp) (LLM, with [LLaMA-v2](https://ai.meta.com/llama/)), [whisper.cpp](https://github.com/ggerganov/whisper.cpp) (speech recognition).\n\nYour customized AI characters - personal assistants on any hardware! This project aims to be a framework to enable the creation of AI characters that can be used in games, simulations, virtual assistants, and other applications without depending on specific platforms, cloud services, or specialized hardware.\n\n![](docs/customchar.png)\n\n**Some of the applications you can build with CustomChar:**\n\n- Game characters that can talk to you and interact with you.\n- Your customized virtual assistant. Think about a [JARVIS](https://en.wikipedia.org/wiki/J.A.R.V.I.S.) version on your computer.\n- Online education experience with virtual friends/teachers.\n- Cloud services that enable users to create their own virtual characters.\n\n**Our very early experiment with CustomChar**\n\nhttps://github.com/nrl-ai/CustomChar/assets/18329471/b035afb5-4440-4943-a0d9-e6b3d9f0f315\n\n**Think about your own JARVIS assistant that you can have totally inside your laptop...**\n\nhttps://github.com/nrl-ai/CustomChar/assets/18329471/005a2d0f-df32-4493-a391-59757d06d9a2\n\n**Note:** This project is still in the early stage of development. We are working hard to make it available as soon as possible. Star this project 🌟🌟🌟 to follow our progress and encourage us to make it happen.\n\n## 1. Architecture\n\n![CustomChar Architecture](/docs/architecture.svg)\n\n## 2. Updates\n\n- 🔥 **2023-08-06:** Load character configuration from a file.\n- 🔥 **2023-07-30:** Record a video with \"record a video\" and \"stop recording\".\n- 🔥 **2023-07-30:** Added OpenCV + camera view.\n- 🔥 **2023-07-29:** Added a plugin executor to open apps.\n- 🔥 **2023-07-25:** Added UI with Dear ImGui.\n- 🔥 **2023-07-23:** Documentation website is online at \u003chttps://docs.customchar.com\u003e.\n- 🔥 **2023-07-22:** Voice chat with your Llama-V2 model. TTS is supported on MacOS only.\n\n## 3. Features\n\n- [ ] Build AI characters from the knowledge database 💬💬💬 :\n  - [x] LLamaCpp for LLM. Chat with **Llama-V2** on **all platforms**.\n  - [x] Knowledge indexing and searching (EmbedDB + SQLite).\n  - [ ] Search knowledge DB to add into prompt.\n- [x] Talk to your character 🎤🎤🎤 :\n  - [x] STT with **whisper.cpp**. Now supports speech recognition **on all platforms**.\n- [ ] Hear from your character 🔊🔊🔊 :\n  - [x] TTS with \"say\" on MacOS. **Note**: \"say\" is not available on other platforms (Windows, Linux)\n  - [ ] TTS with bark.cpp. Expected to be available on all platforms.\n- [x] Plugin executor:\n  - [x] Open apps\n  - [x] Record video\n- [ ] Perception engine to see the world through the camera 📷📷📷\"\n  - [x] Support video capturing\n  - [ ] Object detection\n- [x] Add GUIs for the character interaction.\n  - [x] Dear ImgUI\n  - [ ] Web-based GUI\n- [ ] Add a GUI for the character creation.\n- [ ] Create virtual characters that can be used in games, simulations, and other applications.\n  - [x] Iron Man (WIP)\n  - [ ] Batman\n  - [ ] Superman\n- [ ] Add bindings to other languages:\n  - [ ] Python\n  - [ ] C# (Unity)\n  - [ ] Javascript (On-browser)\n\n## 4. Build\n\nClone the repository:\n\n```bash\ngit clone https://github.com/nrl-ai/CustomChar --recursive\ncd CustomChar\n```\n\nInstall dependencies:\n\n- [CMake](https://cmake.org/download/)\n- C++ 14 compiler\n\nOn macOS: Using [Homebrew](https://brew.sh/)\n\n```bash\nbrew install sdl2 glew glfw3\nbrew install opencv\nbrew install ffmpeg # For video recording\n```\n\nOn Ubuntu:\n\n```bash\nsudo apt-get install libsdl2-dev libglew-dev libglfw3-dev\nsudo apt-get install libopencv-dev\nsudo apt-get install ffmpeg # For video recording\n```\n\nOn Windows: Using [vcpkg](https://github.com/microsoft/vcpkg), [Git Bash](https://git-scm.com/downloads), and [FFmpeg](https://www.wikihow.com/Install-FFmpeg-on-Windows).\n\n```bash\nvcpkg install sdl2:x64-windows glew:x64-windows glfw3:x64-windows\nvcpkg install opencv[contrib,nonfree,ffmpeg,ipp]:x64-windows --recurse\n```\n\nBuild the **CustomChar** executable:\n\n```bash\nmkdir build\ncd build\ncmake ..\nmake\n```\n\n## 5. Usage\n\nDownload the models before running the program:\n\n```bash\nbash scripts/download-models.sh\n```\n\nRun the program:\n\n```bash\n./customchar\n```\n\n## 6. Build documentation\n\n- **Step 1:** Install **doxygen** first.\n\n- **Step 2:** Build the documentation:\n\n```bash\ndoxygen Doxyfile.in\n```\n\n- **Step 3:** Deploy html documentation from `docs/_build/html`.\n\n- **Step 4:** Our latest documentation is deployed at \u003chttps://docs.customchar.com\u003e.\n\n## 7. Contribution\n\nWe welcome all contributions to this project.\n\n- For coding style, please follow the style of the existing code.\n- Install [clang-format](https://clang.llvm.org/docs/ClangFormat.html) for auto formatting the code.\n- Install [pre-commit](https://pre-commit.com/) for the auto-formatting hook or manually run the script `scripts/format-code.sh` to format the code.\n\n```bash\npre-commit install # Install pre-commit hook\nbash scripts/format-code.sh # Format code (C++ styling)\n```\n\n## 8. Star history\n\n[![Star History Chart](https://api.star-history.com/svg?repos=nrl-ai/CustomChar\u0026type=Date)](https://star-history.com/#nrl-ai/CustomChar)\n\n## 9. References\n\n- Spinner: \u003chttps://github.com/dalerank/imspinner\u003e.\n- GGML: \u003chttps://ggml.ai/\u003e.\n- llama.cpp: \u003chttps://github.com/ggerganov/llama.cpp\u003e.\n- whisper.cpp: \u003chttps://github.com/ggerganov/whisper.cpp\u003e.\n- LLaMA-v2: \u003chttps://ai.meta.com/llama/\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnrl-ai%2Fcustomchar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnrl-ai%2Fcustomchar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnrl-ai%2Fcustomchar/lists"}