Hikari Desktop
A Linux desktop application that wraps Claude Code with an anime girl character that reacts to Claude's activities in real-time.
Features
- Visual character that reflects Claude's current state (thinking, typing, searching, coding, etc.)
- Terminal-style output display
- Permission prompts with approve/deny interface
- Real-time state detection from Claude Code's NDJSON stream
Installation
1. Install Claude Code
Hikari Desktop requires Claude Code to be installed and authenticated:
npm install -g @anthropic-ai/claude-code
claude # Follow the prompts to authenticate
2. Install Runtime Dependencies
Debian/Ubuntu:
sudo apt install libwebkit2gtk-4.1-0 libgtk-3-0 libayatana-appindicator3-1 xdg-utils
Fedora:
sudo dnf install webkit2gtk4.1 gtk3 libappindicator-gtk3 xdg-utils
Arch Linux:
sudo pacman -S webkit2gtk-4.1 gtk3 libappindicator-gtk3 xdg-utils
| Package | Purpose |
|---|---|
| webkit2gtk-4.1 | WebView rendering (app UI) |
| gtk3 | Window management and native widgets |
| libappindicator | System tray support |
| xdg-utils | Opening URLs/files with default applications |
3. Install Hikari Desktop
Download the latest release for your distribution:
AppImage (any distro):
chmod +x hikari-desktop_*.AppImage
./hikari-desktop_*.AppImage
Debian/Ubuntu:
sudo dpkg -i hikari-desktop_*.deb
Fedora:
sudo rpm -i hikari-desktop-*.rpm
Character States
| State | Trigger |
|---|---|
| Idle | Waiting for user input |
| Thinking | Processing/API call in progress |
| Typing | Streaming text output |
| Searching | Using Read/Glob/Grep tools |
| Coding | Using Edit/Write tools |
| MCP | Running MCP tool calls |
| Permission | Permission prompt needed |
| Success | Task completed |
| Error | Error occurred |
Building from Source
Prerequisites
- Node.js and pnpm
- Rust toolchain
Build
# Install dependencies
pnpm install
# Development mode
pnpm run dev
# Build for Linux
pnpm tauri build
Architecture
Linux (Tauri App)
├── Svelte Frontend
│ ├── AnimeGirl (sprites + animations)
│ ├── Terminal (output display)
│ ├── InputBar (user input)
│ └── PermissionModal (approve/deny)
└── Rust Backend
├── Process Manager (spawn & communicate)
└── State Parser (NDJSON → character state)
│
│ stdin/stdout (NDJSON stream)
▼
claude -p --output-format stream-json --input-format stream-json
Tech Stack
- Tauri 2.x - Desktop framework with Rust backend
- Svelte 5 - Reactive frontend with runes
- Tailwind CSS - Styling
- Tokio - Async runtime for process management
Feedback and Bugs
If you have feedback or a bug report, please feel free to open a ticket request in our Discord!
Contributing
If you would like to contribute to the project, you may create a Pull Request containing your proposed changes and we will review it as soon as we are able! Please review our contributing guidelines first.
Code of Conduct
Before interacting with our community, please read our Code of Conduct.
License
This software is licensed under our global software license.
Copyright held by Naomi Carrigan.
Contact
We may be contacted through our Chat Server or via email at contact@nhcarrigan.com.