[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81561":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":15,"starSnapshotCount":15,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},81561,"Permanence","rody-png\u002FPermanence","rody-png","A place for you to store your taste. Permanently","https:\u002F\u002Fx.com\u002FMachYear\u002Fstatus\u002F2051198437090103444?s=20",null,"TypeScript",26,3,25,0,1,1.81,false,"main",true,[],"2026-06-12 02:04:16","# Permanence\n\nA local-first personal creative memory system. Its central object is the **Pearl**: a structured record of a cultural encounter, the synthesis that followed, and the connections that become useful later.\n\nEach Pearl has three layers:\n\n1. **Envelope** — metadata (title, source\u002Ftype, author, date, location)\n2. **Experiential Diary** — how the encounter felt\n3. **Professor Transcript** — a running dialogue with the Hermes Professor about this Pearl\n\n## Prerequisites\n\n- [Node.js](https:\u002F\u002Fnodejs.org\u002F) (v20 or later recommended)\n- npm (comes with Node.js)\n- (Optional, for Professor) [Hermes Agent](https:\u002F\u002Fgithub.com\u002Frody-png\u002Fhermes-agent) installed and available in your PATH\n- (Optional, for Programmer) An [OpenRouter](https:\u002F\u002Fopenrouter.ai\u002F) API key\n\n## Install\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Frody-png\u002FPermanence.git\ncd Permanence\nnpm install\n```\n\n## Run\n\n```bash\nnpm run dev\n```\n\nThen open the local URL printed by Next.js (usually `http:\u002F\u002Flocalhost:3000`).\n\nYour Pearls are stored in `.data\u002Fpearls.json` on disk and backed by `localStorage` in the browser. The `.data` directory is gitignored — your personal library never leaves your machine.\n\n## AI Features\n\n### Professor (Hermes Agent)\n\nThe Professor is a dedicated Hermes Agent embedded in Permanence. It reads the full context of a Pearl and responds with relevant cultural context, challenging questions, and useful connections.\n\n**Setup:**\n\n1. Install [Hermes Agent](https:\u002F\u002Fgithub.com\u002Frody-png\u002Fhermes-agent)\n2. Make sure the `professor` (or `hermes`) command is available in your terminal PATH\n3. The Professor will connect automatically\n\nIf Hermes is not installed, the Professor panel will show:\n> \"Your Hermes Agent is not set up yet. The 'professor' command was not found. Install Hermes and make sure it is available in your PATH.\"\n\nThe Professor requires a local Hermes Agent because it relies on persistent memory across sessions.\n\n### Programmer (OpenRouter)\n\nThe Programmer is a direct API connection to an LLM (via OpenRouter) that can read your codebase and propose edits. It sends your source files to the model and applies the returned changes automatically.\n\n**Setup:**\n\nSet your OpenRouter API key in one of these ways:\n\n- Environment variable: `OPENROUTER_API_KEY=sk-or-... npm run dev`\n- Or create `~\u002F.hermes\u002F.env` with:\n  ```\n  OPENROUTER_API_KEY=sk-or-...\n  OPENROUTER_MODEL=moonshotai\u002Fkimi-k2.6\n  ```\n\nThe default model is `moonshotai\u002Fkimi-k2.6`. You can override it with `OPENROUTER_MODEL`.\n\n### Threading\n\nThreading runs a project prompt against your Pearl library and returns a briefing that surfaces the most relevant Pearls and their connective tissue.\n\n## Architecture\n\n```\nsrc\u002Fapp\u002Fpage.tsx              — Main workspace shell\nsrc\u002Fcomponents\u002F               — UI components (Canvas, Reader, Forms, Panels)\nsrc\u002Flib\u002Fpearls\u002F               — Pearl domain model, storage, persistence\nsrc\u002Flib\u002Fprofessor\u002F            — Professor adapter (Hermes Agent)\nsrc\u002Flib\u002Fsearch\u002F               — Threading adapter\nsrc\u002Flib\u002Fprogrammer\u002F           — Programmer route helpers\nsrc\u002Fapp\u002Fapi\u002F                  — Next.js API routes\n```\n\n- `src\u002Flib\u002Fpearls\u002Ffile-store.ts` — File-backed persistence (`.data\u002Fpearls.json`)\n- `src\u002Flib\u002Fpearls\u002Fstore.ts` — Browser `localStorage` fallback\n- `src\u002Fapp\u002Fapi\u002Fpearls\u002Froute.ts` — REST API for Pearl CRUD\n- `src\u002Fapp\u002Fapi\u002Fprofessor\u002Fchat\u002Froute.ts` — Professor chat endpoint\n- `src\u002Fapp\u002Fapi\u002Fprogrammer\u002Fchat\u002Froute.ts` — Programmer code-editing endpoint\n- `src\u002Fapp\u002Fapi\u002Fthread\u002Froute.ts` — Threading briefing endpoint\n\n## Local Data & Privacy\n\nPermanence is local-first. Your Pearls live in `.data\u002Fpearls.json` and are never sent to any server unless you explicitly interact with the Professor or Programmer. The Professor sends Pearl context to your local Hermes Agent. The Programmer sends source code to OpenRouter for editing.\n\n## License\n\nMIT\n","Permanence 是一个用于永久存储个人品味和文化体验的本地优先系统。其核心对象是 Pearl，一种结构化的记录，包含元数据（Envelope）、体验日记（Experiential Diary）和与 Hermes 教授的对话（Professor Transcript）。项目使用 TypeScript 编写，支持通过 Hermes Agent 提供的文化背景、挑战性问题及有用连接的 AI 交互功能，以及通过 OpenRouter API 连接 LLM 来自动编辑代码的能力。适合需要保存和回顾个人创意灵感及其相关思考的场景，如作家、艺术家或任何希望以结构化方式记录并反思自己文化体验的人士。所有数据均存储在本地，确保了隐私安全。",2,"2026-06-11 04:05:30","CREATED_QUERY"]