cr
Builder

Building Glyphic: A Desktop GUI for Claude Code

I built a full desktop app for managing Claude Code in two days. Here's why Tauri v2 and Svelte 5 made that possible.

#claude-code#tauri#svelte#rust#ai#open-source

Claude Code is my primary development tool. I use it daily for everything from quick fixes to multi-file refactors. But managing it — editing JSON settings, writing CLAUDE.md files, configuring MCP servers, setting up hooks — means context-switching to text files and documentation. I wanted a proper interface. So I built Glyphic.

From Zero to v0.5.0 in Two Days

Glyphic went from idea to release in 48 hours. Not a prototype — a signed, notarized desktop app with 11 major features shipping on macOS, Windows, and Linux. The speed came from two things: a clear vision of what I needed, and a stack that gets out of the way.

The Stack

Tauri v2 for the desktop shell. Rust backend, native webview, tiny binary size. Tauri v2 is a significant upgrade from v1 — better plugin system, improved IPC, and first-class multi-window support. The Rust side handles file system operations, process spawning, and system integration.

Svelte 5 with runes for the frontend. Runes make reactivity explicit and composable. Combined with TypeScript strict mode and Tailwind CSS v4, I can build complex UI fast without fighting the framework.

xterm.js + portable-pty for the embedded terminal. Glyphic includes a full terminal emulator that runs Claude Code directly inside the app. Persistent multi-tab sessions, proper PTY handling, all the escape codes working correctly.

What It Does

Settings Editor — Visual configuration for global and project-level Claude Code settings. Model selection, permission management, environment variables. No more hand-editing settings.json.

Hooks Manager — Browse and create hooks across all 22 event types. Templates for common patterns, validation, and a visual editor. Hooks are powerful but the JSON format is tedious — Glyphic makes them approachable.

Instructions Editor — Read and write CLAUDE.md files at global, project, and .claude/ scopes. Markdown preview, scope visualization, conflict detection between levels.

Memory Browser — Card-based interface for managing project memories. Search, filter, edit, and delete memory files. See the full memory index at a glance.

MCP Servers — Manage Model Context Protocol servers, both cloud and local. Add, configure, test, and monitor MCP connections visually.

Dashboard — This one surprised me. Glyphic parses Claude Code’s history files and surfaces stats: total sessions, messages, activity heatmaps, streak tracking, and 19 unlockable achievements. It’s gamification that I didn’t plan but couldn’t resist building.

Analytics — Token usage tracking, cost analysis, and cache efficiency visualization. See exactly where your tokens are going across sessions and projects.

The Embedded Terminal

The terminal was the hardest part. Running Claude Code inside a web-based terminal emulator requires proper PTY handling — input/output streams, resize events, escape sequences, color rendering. xterm.js handles the rendering side, and portable-pty (via Tauri’s Rust backend) handles the OS side. The result is a terminal that feels native, with persistent sessions that survive app restarts.

Runs Locally, Stays Private

No server. No account. No telemetry. Glyphic reads and writes Claude Code’s existing config files on disk. Everything stays on your machine. The app is a thin GUI layer over the file system and CLI that Claude Code already uses.

Why Build This?

Claude Code is opinionated about being CLI-first, and that’s the right call. But configuration is a different story. When you have 22 hook event types, multiple settings scopes, MCP servers, memory files, and instruction layers — a visual interface isn’t a luxury, it’s a productivity multiplier.

Glyphic is available now on GitHub as signed binaries for macOS (DMG), Windows (MSI/EXE), and Linux (DEB/AppImage/RPM). Requires Claude Code CLI installed.

← All posts