[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80300":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":11,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":13,"stars7d":13,"stars30d":13,"stars90d":13,"forks30d":13,"starsTrendScore":13,"compositeScore":14,"rankGlobal":9,"rankLanguage":9,"license":15,"archived":16,"fork":16,"defaultBranch":17,"hasWiki":18,"hasPages":16,"topics":19,"createdAt":9,"pushedAt":9,"updatedAt":20,"readmeContent":21,"aiSummary":22,"trendingCount":13,"starSnapshotCount":13,"syncStatus":23,"lastSyncTime":24,"discoverSource":25},80300,"nom-pet","dylan-labs\u002Fnom-pet","dylan-labs","A desktop pet that eats the AI tokens you burn through Claude Code.",null,"TypeScript",74,1,0,0.9,"Other",false,"main",true,[],"2026-06-12 02:04:00","**English** | [简体中文](.\u002FREADME.zh-CN.md)\n\n# nom\n\nA desktop pet that lives on your screen and **eats the AI tokens you burn** — feeds on Claude Code and Codex CLI today (Cursor support coming).\n\n> **Privacy first**: nom never sends your token data anywhere. It only reads usage numbers (not prompts\u002Fresponses) from local transcripts, stores everything in `~\u002F.nom\u002F` on your machine, and you can `rm -rf ~\u002F.nom` at any time.\n\n![nom — weekly token card, Game Boy style](.\u002Fassets\u002Fscreenshots\u002Fweekly-card.png)\n\n## Features\n\n- **Eats tokens in real time, from multiple agents** — tails `~\u002F.claude\u002Fprojects\u002F*.jsonl` (Claude Code) and `~\u002F.codex\u002Fsessions\u002F**\u002F*.jsonl` (Codex CLI). Toggle each source independently from the right-click menu.\n- **Greets new sessions** — wakes up and bubbles a hello when you open a new Claude Code session.\n- **Wanders on its own** — strolls around the screen between activity, like a real desktop companion (toggle off via right-click).\n- **Skin support** — install any [petdex](https:\u002F\u002Fgithub.com\u002Fcrafter-station\u002Fpetdex) pack with `npx petdex install \u003Cslug>`, then right-click → **选择宠物** to switch on the fly. No restart.\n- **Sleeps when idle, wakes when you're back** — 30 min of silence and it dozes off.\n- **Chat-card bubbles** — contextual lines on session start, milestones, click-to-talk, eating bursts. Local templates by default; **optional** LLM upgrade for dynamic, situation-aware lines (see below).\n- **Drag anywhere** on the pet to move it; window position remembers across restarts.\n- **Multi-display friendly** — `⌘⌥N` summons it back to whichever screen your cursor is on.\n\n## Install (end users)\n\nDownload links always point to the latest release — bookmark and forget.\n\n### macOS\n\n- **Apple Silicon (M1\u002FM2\u002FM3\u002FM4)**: [`nom-arm64.dmg`](https:\u002F\u002Fgithub.com\u002Fdylan-labs\u002Fnom-pet\u002Freleases\u002Flatest\u002Fdownload\u002Fnom-arm64.dmg)\n- **Intel Mac**: [`nom-x64.dmg`](https:\u002F\u002Fgithub.com\u002Fdylan-labs\u002Fnom-pet\u002Freleases\u002Flatest\u002Fdownload\u002Fnom-x64.dmg)\n\nDrag `nom.app` into `\u002FApplications`. First launch macOS will block it — go to **System Settings → Privacy & Security**, scroll to the bottom and click **Open Anyway** next to nom. Confirm in the dialog and it'll launch from then on.\n\n### Windows\n\n- [`nom-setup.exe`](https:\u002F\u002Fgithub.com\u002Fdylan-labs\u002Fnom-pet\u002Freleases\u002Flatest\u002Fdownload\u002Fnom-setup.exe) — NSIS installer wizard, x64\n\nDouble-click the setup, walk through the wizard. You'll get a desktop shortcut and a Start Menu entry.\n\n> Browsing all versions: [Releases page](..\u002F..\u002Freleases).\n\n## Use a custom pet skin\n\nBrowse the catalogue at **[petdex.crafter.run](https:\u002F\u002Fpetdex.crafter.run\u002Fzh)** and install any pack:\n\n```bash\nnpx petdex install boba       # or doraemon, goku-blue, ...\n```\n\nRight-click the pet → **选择宠物** → pick your new skin. Pets live in `~\u002F.codex\u002Fpets\u002F\u003Cslug>\u002F` and `~\u002F.nom\u002Fpets\u002F\u003Cslug>\u002F`.\n\n## Right-click menu\n\n| Item | What it does |\n|---|---|\n| ☑ 允许游走 | Toggle auto-wander on\u002Foff |\n| ☐ AI 台词 | Toggle LLM-powered dialogue (see below) |\n| 数据源 → | Per-source on\u002Foff (Claude Code, Codex) |\n| 选择宠物 → | Switch among installed petdex skins |\n| 打开配置文件 | Open `~\u002F.nom\u002Fstate.json` for manual edits |\n| 关闭宠物 | Quit |\n\nPlus a global shortcut: `⌘⌥N` (Mac) \u002F `Ctrl+Alt+N` (Win) to summon the pet to the current screen.\n\n## Optional: AI-powered dialogue\n\nBy default nom speaks from a local template file — fully offline, deterministic, no network. If you want context-aware lines (e.g. *\"凌晨两点了还在用 Claude，你这个 prompt 写得有点暴躁啊\"*), wire it to any **OpenAI-compatible chat-completions endpoint** — your own Anthropic key, an Ollama instance, a self-hosted model, anything that speaks the OpenAI API.\n\n1. Right-click the pet → **设置…** (or press `⌘,` \u002F `Ctrl+,`)\n2. Find the **AI 台词** card, flip the toggle on\n3. Fill in **Endpoint** \u002F **Model** \u002F **API Key** (key is optional for endpoints that don't require auth)\n4. Click **测试连接** — you'll get a real reply preview if it's wired up correctly, or a specific error (HTTP code, empty content, timeout, etc) if not\n5. Click **保存 AI 配置**\n\n**Model picking**: nom asks for a one-sentence reply, so the speed difference between a `mini`\u002F`chat`\u002F`instruct` model and a reasoning model (`o1`, `r1`, `M2`, `qwq`…) is large — thinking models burn extra tokens on internal reasoning before saying a single line. nom does send `enable_thinking: false` \u002F `reasoning_effort: 'none'` and friends across the major vendor dialects, and falls back to `reasoning_content` if the server emits the reply there, but if you want snappy bubbles, pick a non-reasoning model.\n\n**Privacy contract**: only metadata (trigger type, time of day, token counts, pet name) ever leaves your machine. Your prompts and Claude's responses are **never** sent to the LLM endpoint. Failed \u002F timed-out LLM calls silently fall back to the local templates — the pet keeps working even if your endpoint goes down.\n\n## Develop\n\n```bash\nnpm install\nnpm run dev          # electron-vite dev with HMR\nnpm run typecheck    # tsc --noEmit\nnpm run pack:mac     # build .dmg → release\u002F\nnpm run pack:win     # build .exe → release\u002F\n```\n\nRequires Node ≥ 18.\n\nArchitecture, technical decisions, and reasoning are in [`CLAUDE.md`](.\u002FCLAUDE.md). Product scope and out-of-scope items are in [`PRODUCT.md`](.\u002FPRODUCT.md).\n\n## Privacy\n\nnom is paranoid by design:\n\n1. **No network calls by default.** The base experience is fully offline — everything ships from your local Claude Code transcripts. The optional AI dialogue feature is the only thing that can hit the network, and only when you explicitly enable it and configure an endpoint.\n2. **No prompt\u002Fresponse content ever read or sent.** nom only parses `usage.{input,output,cache_*}_tokens` numbers from JSONL. When AI dialogue is on, only metadata (trigger, time, counts) goes to your LLM endpoint — never the actual conversation.\n3. **Startup re-reads historical JSONL.** Each launch runs two passes: a fast 7-day scan (so \"yesterday's recap\" and today's counter have data immediately) and a full lifetime scan in the background (used to self-heal if `~\u002F.nom\u002Fstate.json` was wiped or tampered). Both passes **only read `usage.*_tokens` numbers** — no prompts, no responses, no file paths leave your machine. Results stay in `~\u002F.nom\u002Fstate.json`.\n4. **All state local.** `~\u002F.nom\u002Fstate.json` is human-readable JSON. Nuke the dir to fully reset.\n\n## Star History\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=dylan-labs\u002Fnom-pet&type=Date)](https:\u002F\u002Fwww.star-history.com\u002F#dylan-labs\u002Fnom-pet&Date)\n\n## License\n\n[MIT](.\u002FLICENSE) for source code. Bundled sprite assets carry their own licenses — see [`CREDITS.md`](.\u002FCREDITS.md).\n","nom-pet 是一款桌面宠物应用，它会在你的屏幕上生活并“吃掉”你通过 Claude Code 和 Codex CLI 使用的 AI 令牌。其核心功能包括实时从多个来源（如 Claude Code 和 Codex CLI）获取令牌数据、自动迎接新会话、在屏幕上游走以及支持多种皮肤切换等。该软件特别注重用户隐私，所有数据均保存在本地，并且用户可以随时清除。适合需要长时间使用 AI 辅助编程工具且希望增添一些趣味性的开发者或研究人员使用。此外，nom-pet 还具有多显示器友好特性，能够在不同屏幕间轻松切换显示位置。",2,"2026-06-11 04:00:12","CREATED_QUERY"]