Glyph
📝 Glyph is a private desktop workspace for notes, documents, and ideas, with Markdown editing and built-in AI tools.
Install / Use
/learn @SidhuK/GlyphREADME
Glyph
<p align="center"> <img src="./website/assets/logo_g.PNG" alt="Glyph logo" width="140" /> </p>Offline-first desktop note-taking application. Tauri 2 shell with a React 19 / TypeScript / Vite 8 frontend and a Rust backend. Data lives entirely on-disk in a per-space .glyph/ directory backed by SQLite and the local filesystem. No cloud sync, no server.

Prerequisites
| Dependency | Version |
| ---------- | --------------------------------------------------------- |
| Node.js | ≥ 20 |
| pnpm | ≥ 10 (corepack enable && corepack prepare pnpm@10.28.2) |
| Rust | stable (latest) |
| Xcode CLT | required for macOS native compilation |
| macOS | primary target — full Tauri app dev requires macOS |
Build & Run
# Install frontend dependencies
pnpm install
# Development — frontend only (Vite on :1420)
pnpm dev
# Development — full Tauri app (compiles Rust backend + launches Vite)
pnpm tauri dev
# Production build (tsc + vite build; Tauri hooks run beforeBuildCommand)
pnpm build
# Lint & format (Biome)
pnpm check # check only
pnpm format # auto-fix
# Tests (Vitest)
pnpm test # all tests
pnpm test -- src/lib/diff.test.ts # single file
pnpm test -- -t "test name" # single test by name
# Rust checks
cd src-tauri && cargo check # typecheck
cd src-tauri && cargo clippy # lint
# Marketing site (Astro, separate workspace)
cd website && pnpm dev
cd website && pnpm build
Pre-push checklist
pnpm check && pnpm build && cd src-tauri && cargo check
Key dependencies
Frontend: React 19, TipTap 3, Tailwind 4, Radix UI (via shadcn/ui), Motion 12, TanStack Table, cmdk, Zod 4, date-fns, Mermaid 11, highlight.js/lowlight, react-resizable-panels, Sonner, react-hook-form
Backend: Tauri 2 (macos-private-api), rig-core 0.24, rusqlite 0.31 (bundled), notify 6, reqwest 0.12 (rustls), tokio, serde/serde_json/serde_yaml, chrono, uuid, sha2, window-vibrancy, core-text (macOS)
Tooling: Vite 8, TypeScript 5.8, Biome, Vitest 4, Tauri CLI 2
Conventions
- TypeScript strict mode. No
any— useunknown+ narrowing. - Functional React components only. State via Context, not prop drilling.
- All Tauri IPC through
invoke()fromsrc/lib/tauri.ts. - Rust: atomic writes via
io_atomic, safe paths viapaths::join_under(), SSRF checks vianet.rs. - Hard cutover migrations — no backward-compatibility shims.
- Never log secrets, keys, or sensitive user data.
- ~200 LOC per file guideline; refactor into submodules when exceeded.
Licensing
Source is open. Official release binaries include a 7-day trial with Gumroad license activation.
- Releases: GitHub Releases
- Purchase: Gumroad
- Details:
docs/licensing.md
Platform support
macOS only. Windows and Linux are not actively supported. See CONTRIBUTING.md.
Related Skills
himalaya
350.8kCLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).
node-connect
350.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
taskflow
350.8kname: taskflow description: Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layer
frontend-design
110.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
