{"data":{"slug":"hmdsimdev-heartmorrow","name":"heartmorrow","tagline":"LLM-powered dating simulator","github_url":"https://github.com/HMDSimDev/heartmorrow","owner":"HMDSimDev","repo":"heartmorrow","owner_avatar_url":"https://avatars.githubusercontent.com/u/295296238?v=4","primary_language":"TypeScript","stars":149,"forks":15,"topics":["ai","dating-simulator","game","llm","llms","local-ai","local-llm","node","nodejs","simulator"],"archived":false,"github_pushed_at":"2026-07-02T19:37:32+00:00","maintenance_label":"Active","url":"https://www.graphcanon.com/tools/hmdsimdev-heartmorrow","markdown_url":"https://www.graphcanon.com/tools/hmdsimdev-heartmorrow.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/hmdsimdev-heartmorrow","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=hmdsimdev-heartmorrow","description":"LLM-powered dating simulator","homepage_url":null,"license":"Unlicense","open_issues":0,"watchers":4,"ai_summary":null,"readme_excerpt":"## Requirements\n\n> **Using the [self-contained installer](#quick-start)?** You can skip the Node and pnpm\n> requirements below — `install.sh` / `install.ps1` download a pinned, local Node and activate\n> the right pnpm for you. The only thing you'd still want is an LLM server to actually play.\n\n- **Node.js 20+** (developed on Node 24). Uses Node's built-in `node:sqlite`, so installation\n  never compiles a native C addon.\n- **pnpm** — the repo pins **`pnpm@11.7.0`** via `packageManager`, so running `corepack\n  enable` once will fetch the right version automatically (or `npm i -g pnpm`).\n- *(Optional, but basically needed to actually play)* an **OpenAI-API-compatible** LLM server, either local or a cloud API.\n\n---\n\n---\n\n## Quick start\n\nThe fastest way in is the **self-contained installer**. It needs *no prerequisites* — not\neven Node or pnpm. It downloads a pinned, official Node.js into a local `./.runtime/node`\nfolder (verified against nodejs.org's SHA-256 checksums, nothing installed system-wide),\nactivates the exact pnpm pinned in `package.json` via corepack, installs dependencies, and\nseeds the sample database. Then a matching `run` script starts the app.\n\n**macOS / Linux**\n\n```bash\n./install.sh      # one-time setup (downloads Node locally, installs, seeds)\n./run.sh          # start the server + web client\n```\n\n**Windows**\n\n```powershell\npowershell -ExecutionPolicy Bypass -File .\\install.ps1   # one-time setup\n.\\run.bat                                                # start the app\n```\n\n> **Unattended/CI?** Pass `-y`/`--yes` to `install.sh` (or `-Yes` to `install.ps1`), or set\n> `HEARTMORROW_YES=1`, to skip the Node-download confirmation prompt.\n\n> **📱 Works on Termux, too.** The Linux installer runs as-is under\n> [Termux](https://termux.dev/) on Android — `./install.sh` then `./run.sh` — so you can host\n> Heartmorrow right on your phone and play it from the device's browser. (Point it at a local\n> or remote LLM the same way you would anywhere else.)\n\nBoth installers are **idempotent** — re-run them anytime; they skip the Node download if the\nvendored copy is already present.\n\nThen open **http://localhost:5173**.\n\n---\n\n### Manual install\n\nAlready have **Node.js 20+** and **pnpm**? Skip the installer and run the steps yourself:\n\n```bash","github_created_at":"2026-06-20T05:44:15+00:00","created_at":"2026-07-15T11:01:44.809539+00:00","updated_at":"2026-07-15T11:01:50.156974+00:00","categories":[{"slug":"developer-tools","name":"Developer Tools","url":"https://www.graphcanon.com/categories/developer-tools","markdown_url":"https://www.graphcanon.com/categories/developer-tools.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/developer-tools"},{"slug":"inference-serving","name":"Inference & Serving","url":"https://www.graphcanon.com/categories/inference-serving","markdown_url":"https://www.graphcanon.com/categories/inference-serving.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/inference-serving"},{"slug":"llm-frameworks","name":"LLM Frameworks","url":"https://www.graphcanon.com/categories/llm-frameworks","markdown_url":"https://www.graphcanon.com/categories/llm-frameworks.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/llm-frameworks"}],"tags":[{"slug":"ai","name":"ai"},{"slug":"dating-simulator","name":"dating-simulator"},{"slug":"game","name":"game"},{"slug":"llm","name":"llm"},{"slug":"llms","name":"llms"},{"slug":"local-ai","name":"local-ai"},{"slug":"local-llm","name":"local-llm"},{"slug":"node","name":"node"}],"trust":{"provenance":{"is_fork":false,"github_id":1274989973,"owner_type":"User","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-07-15T11:01:45.873Z","maintenance":{"label":"Active","score":82,"methodology":"github_public_v1","releases_90d":0,"days_since_push":12,"last_release_at":null},"security_summary":{"status":"ok","scanner":"osv@v1","low_count":0,"high_count":0,"last_scan_at":"2026-07-15T11:01:46.365Z","medium_count":0,"scan_profile":"deps","critical_count":0}},"capability_facts":{"mcp":{"source":"repo_scan","observed_at":"2026-07-15T11:01:45.623Z","server_manifest":false},"scan":{"source":"repo_scan","observed_at":"2026-07-15T11:01:45.623Z"},"has_cli":{"value":true,"source":"package.json:bin|scripts","observed_at":"2026-07-15T11:01:45.623Z"},"languages":{"value":["typescript","javascript"],"source":"github.language+package.json","observed_at":"2026-07-15T11:01:45.623Z"},"license_spdx":{"value":"Unlicense","source":"github.license","observed_at":"2026-07-15T11:01:45.623Z"}}}}