# 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:

```bash
npm install -g @anthropic-ai/claude-code
claude  # Follow the prompts to authenticate
```

### 2. Install Runtime Dependencies

**Debian/Ubuntu:**

```bash
sudo apt install libwebkit2gtk-4.1-0 libgtk-3-0 libayatana-appindicator3-1 xdg-utils
```

**Fedora:**

```bash
sudo dnf install webkit2gtk4.1 gtk3 libappindicator-gtk3 xdg-utils
```

**Arch Linux:**

```bash
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 platform.

#### Linux

**AppImage** (any distro):

```bash
chmod +x hikari-desktop_*.AppImage
./hikari-desktop_*.AppImage
```

**Debian/Ubuntu:**

```bash
sudo dpkg -i hikari-desktop_*.deb
```

**Fedora:**

```bash
sudo rpm -i hikari-desktop-*.rpm
```

#### Windows

The Windows build requires WSL (Windows Subsystem for Linux) with Claude Code installed inside WSL.

1. Install WSL if you haven't already: https://learn.microsoft.com/en-us/windows/wsl/install
2. Install Claude Code inside your WSL distribution (see step 1 above)
3. Run the Windows installer (`.exe` or `.msi`)

## 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

#### Windows Cross-Compilation (from Linux/WSL)

To build Windows binaries from Linux, install the following:

```bash
sudo apt install nsis lld llvm clang
```

You will also need `cargo-xwin`:

```bash
cargo install cargo-xwin
```

### Build

```bash
# Install dependencies
pnpm install

# Development mode
pnpm run dev

# Build for Linux (AppImage, deb, rpm)
pnpm build:linux

# Build for Windows (exe/msi/nsis)
pnpm build:windows

# Build all platforms
pnpm build:all
```

## 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](https://chat.nhcarrigan.com)!

## 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](CONTRIBUTING.md) first.

## Code of Conduct

Before interacting with our community, please read our [Code of Conduct](CODE_OF_CONDUCT.md).

## License

This software is licensed under our [global software license](https://docs.nhcarrigan.com/#/license).

Copyright held by Naomi Carrigan.

## Contact

We may be contacted through our [Chat Server](http://chat.nhcarrigan.com) or via email at `contact@nhcarrigan.com`.
