{"id":45783291,"url":"https://github.com/sidhuk/glyph","last_synced_at":"2026-06-13T07:01:44.495Z","repository":{"id":340357981,"uuid":"1145747382","full_name":"SidhuK/Glyph","owner":"SidhuK","description":"📝 Glyph is a private desktop workspace for notes, documents, and ideas, with Markdown editing and built-in AI tools.","archived":false,"fork":false,"pushed_at":"2026-06-12T10:28:47.000Z","size":35973,"stargazers_count":88,"open_issues_count":9,"forks_count":17,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-12T12:08:07.183Z","etag":null,"topics":["ai-agents","ai-assistant","ai-tools","knowledge-base","knowledge-management","mac","macos","note-taking","notes-app","rust","rust-lang","second-brain","tauri-app"],"latest_commit_sha":null,"homepage":"https://glyphformac.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SidhuK.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/security.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-01-30T06:51:30.000Z","updated_at":"2026-06-12T10:28:01.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/SidhuK/Glyph","commit_stats":null,"previous_names":["sidhuk/glyph"],"tags_count":105,"template":false,"template_full_name":null,"purl":"pkg:github/SidhuK/Glyph","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SidhuK%2FGlyph","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SidhuK%2FGlyph/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SidhuK%2FGlyph/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SidhuK%2FGlyph/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SidhuK","download_url":"https://codeload.github.com/SidhuK/Glyph/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SidhuK%2FGlyph/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34275068,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","ai-assistant","ai-tools","knowledge-base","knowledge-management","mac","macos","note-taking","notes-app","rust","rust-lang","second-brain","tauri-app"],"created_at":"2026-02-26T11:23:42.072Z","updated_at":"2026-06-13T07:01:44.488Z","avatar_url":"https://github.com/SidhuK.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Glyph\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"logo_g.PNG\" alt=\"Glyph logo\" width=\"140\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eJoin the Glyph community\u003c/strong\u003e\u003cbr /\u003e\n  Share feedback, ask questions, and help shape what comes next.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://discord.gg/fasY8gAQR\"\u003e\u003cstrong\u003eJoin us on Discord →\u003c/strong\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nOffline-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.\n\n![Glyph](imageforWebsite.png)\n\n## Prerequisites\n\n| Dependency | Version                                                   |\n| ---------- | --------------------------------------------------------- |\n| Node.js    | ≥ 20                                                      |\n| pnpm       | ≥ 10 (`corepack enable \u0026\u0026 corepack prepare pnpm@10.28.2`) |\n| Rust       | stable (latest)                                           |\n| Xcode CLT  | required for macOS native compilation                     |\n| macOS      | primary target — full Tauri app dev requires macOS        |\n\n## Build \u0026 Run\n\n```bash\n# Install frontend dependencies\npnpm install\n\n# Development — frontend only (Vite on :1420)\npnpm dev\n\n# Development — full Tauri app (compiles Rust backend + launches Vite)\npnpm tauri dev\n\n# Production build (tsc + vite build; Tauri hooks run beforeBuildCommand)\npnpm build\n\n# Lint \u0026 format (Biome)\npnpm check          # check only\npnpm format         # auto-fix\n\n# Tests (Vitest)\npnpm test                              # all tests\npnpm test -- src/lib/diff.test.ts      # single file\npnpm test -- -t \"test name\"            # single test by name\n\n# Rust checks\ncd src-tauri \u0026\u0026 cargo check            # typecheck\ncd src-tauri \u0026\u0026 cargo clippy           # lint\n\n```\n\n### Pre-push checklist\n\n```bash\npnpm check \u0026\u0026 pnpm build \u0026\u0026 cd src-tauri \u0026\u0026 cargo check\n```\n\n## Key dependencies\n\n**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\n\n**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)\n\n**Tooling:** Vite 8, TypeScript 5.8, Biome, Vitest 4, Tauri CLI 2\n\n## Conventions\n\n- TypeScript strict mode. No `any` — use `unknown` + narrowing.\n- Functional React components only. State via Context, not prop drilling.\n- All Tauri IPC through `invoke()` from `src/lib/tauri.ts`.\n- Rust: atomic writes via `io_atomic`, safe paths via `paths::join_under()`, SSRF checks via `net.rs`.\n- Hard cutover migrations — no backward-compatibility shims.\n- Never log secrets, keys, or sensitive user data.\n- ~200 LOC per file guideline; refactor into submodules when exceeded.\n\n## Licensing\n\nSource is open. Official release binaries include a 7-day trial with Gumroad license activation.\n\n- Releases: [GitHub Releases](https://github.com/SidhuK/Glyph/releases)\n- Purchase: [Gumroad](https://karatsidhu.gumroad.com/l/sqxfay)\n- Details: [`docs/licensing.md`](docs/licensing.md)\n\n## Platform support\n\nmacOS only. Windows and Linux are not actively supported. See [`CONTRIBUTING.md`](CONTRIBUTING.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsidhuk%2Fglyph","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsidhuk%2Fglyph","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsidhuk%2Fglyph/lists"}