https://github.com/sidhuk/glyph
📝 Glyph is a private desktop workspace for notes, documents, and ideas, with Markdown editing and built-in AI tools.
https://github.com/sidhuk/glyph
ai-agents ai-assistant ai-tools knowledge-base knowledge-management mac macos note-taking notes-app rust rust-lang second-brain tauri-app
Last synced: 8 days ago
JSON representation
📝 Glyph is a private desktop workspace for notes, documents, and ideas, with Markdown editing and built-in AI tools.
- Host: GitHub
- URL: https://github.com/sidhuk/glyph
- Owner: SidhuK
- License: agpl-3.0
- Created: 2026-01-30T06:51:30.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-06-12T10:28:47.000Z (8 days ago)
- Last Synced: 2026-06-12T12:08:07.183Z (8 days ago)
- Topics: ai-agents, ai-assistant, ai-tools, knowledge-base, knowledge-management, mac, macos, note-taking, notes-app, rust, rust-lang, second-brain, tauri-app
- Language: TypeScript
- Homepage: https://glyphformac.com/
- Size: 34.3 MB
- Stars: 88
- Watchers: 1
- Forks: 17
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Security: docs/security.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Glyph
Join the Glyph community
Share feedback, ask questions, and help shape what comes next.
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
```bash
# 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
```
### Pre-push checklist
```bash
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` — use `unknown` + narrowing.
- Functional React components only. State via Context, not prop drilling.
- All Tauri IPC through `invoke()` from `src/lib/tauri.ts`.
- Rust: atomic writes via `io_atomic`, safe paths via `paths::join_under()`, SSRF checks via `net.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](https://github.com/SidhuK/Glyph/releases)
- Purchase: [Gumroad](https://karatsidhu.gumroad.com/l/sqxfay)
- Details: [`docs/licensing.md`](docs/licensing.md)
## Platform support
macOS only. Windows and Linux are not actively supported. See [`CONTRIBUTING.md`](CONTRIBUTING.md).