{"_id":"@alstroemeria/claude-directory","_rev":"3-8d3f91b325e9f0e77f1bd90e85ed7f07","name":"@alstroemeria/claude-directory","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@alstroemeria/claude-directory","version":"0.1.0","keywords":["claude","claude-code","dashboard","directory","dotclaude","explorer","cli","anthropic","sessions"],"author":{"name":"Jacky Mok"},"license":"MIT","_id":"@alstroemeria/claude-directory@0.1.0","maintainers":[{"name":"alstroemeria","email":"alstroemeri@gmail.com"}],"homepage":"https://github.com/alstroemeria/claude-directory#readme","bugs":{"url":"https://github.com/alstroemeria/claude-directory/issues"},"bin":{"claude-directory":"bin/claude-directory.js"},"dist":{"shasum":"4f8d44d3048def436a85c727e703b785763fbd58","tarball":"https://registry.npmjs.org/@alstroemeria/claude-directory/-/claude-directory-0.1.0.tgz","fileCount":2380,"integrity":"sha512-37x8YwXTGZN5fr14EQXCgLP2Gxz8maQ9LfwmQdLuW3F4tz0ux4Fy6LwQu7Kx3oWuSrFu4+7uUCdmD5rpjxTjGQ==","signatures":[{"sig":"MEQCIEPejl+Is+iD18VnupZrcrGnk+k4k2AMTsOMeEd2xbTMAiBBTYBYq61RmUqp3iAj6/337uABqg1x2Ux9TAX+lMEcjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92291767},"engines":{"node":">=20.9.0"},"gitHead":"8b355fc5bf586c4419c606c837d9332399b0e1b5","scripts":{"dev":"next dev","build":"next build","start":"next start","dashboard":"node ./bin/claude-directory.js dashboard","token-audit":"tsx scripts/audit/collect.ts --verify && tsx scripts/audit/analyze.ts --validate && tsx scripts/audit/report.ts","audit:report":"tsx scripts/audit/report.ts","audit:analyze":"tsx scripts/audit/analyze.ts","audit:collect":"tsx scripts/audit/collect.ts","dashboard:stop":"node ./bin/claude-directory.js dashboard stop","prepublishOnly":"next build && node scripts/prepare-standalone.mjs","dashboard:start":"node ./bin/claude-directory.js dashboard start","dashboard:status":"node ./bin/claude-directory.js dashboard status"},"_npmUser":{"name":"alstroemeria","email":"alstroemeri@gmail.com"},"repository":{"url":"git+https://github.com/alstroemeria/claude-directory.git","type":"git"},"_npmVersion":"11.16.0","description":"Explore your Claude Code home (~/.claude) — a local, read-only, educational dashboard for sessions, transcripts, agents, skills, hooks, commands, memory, todos, plans, and history, with an explain mode aligned to Anthropic's official .claude directory doc","directories":{},"_nodeVersion":"26.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","clsx":"^2.1.1","cmdk":"^1.1.1","next":"16.1.1","jotai":"^2.19.0","react":"^19.1.0","shadcn":"^4.1.0","radix-ui":"^1.4.3","react-dom":"^19.1.0","remark-gfm":"^4.0.1","typescript":"^5.8.3","@tobilu/qmd":"2.5.3","@types/node":"^22.14.0","next-themes":"^0.4.6","tailwindcss":"^4.1.3","@types/react":"^19.1.0","lucide-react":"^1.7.0","react-markdown":"^10.1.0","tailwind-merge":"^3.5.0","tw-animate-css":"^1.4.0","@types/react-dom":"^19.1.0","@tailwindcss/postcss":"^4.1.3","react-resizable-panels":"^4.7.6","@radix-ui/react-popover":"^1.1.15","class-variance-authority":"^0.7.1"},"_npmOperationalInternal":{"tmp":"tmp/claude-directory_0.1.0_1784603166370_0.5507082703280448","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alstroemeria/claude-directory","version":"0.1.1","keywords":["claude","claude-code","dashboard","directory","dotclaude","explorer","cli","anthropic","sessions"],"author":{"name":"Jacky Mok"},"license":"MIT","_id":"@alstroemeria/claude-directory@0.1.1","maintainers":[{"name":"alstroemeria","email":"alstroemeri@gmail.com"}],"homepage":"https://github.com/alstroemeria/claude-directory#readme","bugs":{"url":"https://github.com/alstroemeria/claude-directory/issues"},"bin":{"claude-directory":"bin/claude-directory.js"},"dist":{"shasum":"07044ee3e59e021d81302b19569809e49728c24f","tarball":"https://registry.npmjs.org/@alstroemeria/claude-directory/-/claude-directory-0.1.1.tgz","fileCount":1996,"integrity":"sha512-X5B48UR1wPoXSyYUd4mISzmDKdFdCyYuat8cXleOyuROzoLp9wiIhaEr0cU6kJXMwXR/O395OowEK2j8DmFvTw==","signatures":[{"sig":"MEUCIHmjceN5+h25POmUBPsivukhNfA1CRYoeaI63r/Nzea1AiEA5U2TCZxtdZYcHKNWjMsaxYrQShZyvNvm6SW957hQOkI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29792337},"engines":{"node":">=20.9.0"},"gitHead":"2664c940b29d770c82cf51b4a48a257d104b0951","scripts":{"dev":"next dev","build":"next build --webpack","start":"next start","dev:fake":"mkdir -p .fixtures/claude-fake && CLAUDE_CONFIG_DIR=\"$PWD/.fixtures/claude-fake\" NEXT_DIST_DIR=.next-fixture next dev","dashboard":"node ./bin/claude-directory.js dashboard","dev:empty":"rm -rf .fixtures/claude-empty && mkdir -p .fixtures/claude-empty && CLAUDE_CONFIG_DIR=\"$PWD/.fixtures/claude-empty\" NEXT_DIST_DIR=.next-fixture next dev","dev:missing":"rm -rf .fixtures/claude-missing && CLAUDE_CONFIG_DIR=\"$PWD/.fixtures/claude-missing\" NEXT_DIST_DIR=.next-fixture next dev","token-audit":"tsx scripts/audit/collect.ts --verify && tsx scripts/audit/analyze.ts --validate && tsx scripts/audit/report.ts","audit:report":"tsx scripts/audit/report.ts","audit:analyze":"tsx scripts/audit/analyze.ts","audit:collect":"tsx scripts/audit/collect.ts","dashboard:stop":"node ./bin/claude-directory.js dashboard stop","prepublishOnly":"next build --webpack && node scripts/prepare-standalone.mjs","dashboard:start":"node ./bin/claude-directory.js dashboard start","dashboard:status":"node ./bin/claude-directory.js dashboard status"},"_npmUser":{"name":"alstroemeria","email":"alstroemeri@gmail.com"},"repository":{"url":"git+https://github.com/alstroemeria/claude-directory.git","type":"git"},"_npmVersion":"11.16.0","description":"Explore your Claude Code home (~/.claude) — a local, read-only, educational dashboard for sessions, transcripts, agents, skills, hooks, commands, memory, todos, plans, and history, with an explain mode aligned to Anthropic's official .claude directory doc","directories":{},"_nodeVersion":"26.3.0","dependencies":{"liveline":"^0.0.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","clsx":"^2.1.1","cmdk":"^1.1.1","next":"16.1.1","jotai":"^2.19.0","react":"^19.1.0","shadcn":"^4.1.0","radix-ui":"^1.4.3","react-dom":"^19.1.0","remark-gfm":"^4.0.1","typescript":"^5.8.3","@tobilu/qmd":"2.5.3","@types/node":"^22.14.0","next-themes":"^0.4.6","tailwindcss":"^4.1.3","@types/react":"^19.1.0","lucide-react":"^1.7.0","react-markdown":"^10.1.0","tailwind-merge":"^3.5.0","tw-animate-css":"^1.4.0","@types/react-dom":"^19.1.0","@tailwindcss/postcss":"^4.1.3","react-resizable-panels":"^4.7.6","@radix-ui/react-popover":"^1.1.15","class-variance-authority":"^0.7.1"},"_npmOperationalInternal":{"tmp":"tmp/claude-directory_0.1.1_1785168124624_0.3244221942275103","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@alstroemeria/claude-directory","version":"0.1.2","description":"Explore your Claude Code home (~/.claude) — a local, read-only, educational dashboard for sessions, transcripts, agents, skills, hooks, commands, memory, todos, plans, and history, with an explain mode aligned to Anthropic's official .claude directory doc","license":"MIT","author":{"name":"Jacky Mok"},"repository":{"type":"git","url":"git+https://github.com/alstroemeria/claude-directory.git"},"homepage":"https://github.com/alstroemeria/claude-directory#readme","bugs":{"url":"https://github.com/alstroemeria/claude-directory/issues"},"keywords":["claude","claude-code","dashboard","directory","dotclaude","explorer","cli","anthropic","sessions"],"engines":{"node":">=20.9.0"},"bin":{"claude-directory":"bin/claude-directory.js"},"publishConfig":{"access":"public"},"scripts":{"dev":"next dev","dev:empty":"rm -rf .fixtures/claude-empty && mkdir -p .fixtures/claude-empty && CLAUDE_CONFIG_DIR=\"$PWD/.fixtures/claude-empty\" NEXT_DIST_DIR=.next-fixture next dev","dev:missing":"rm -rf .fixtures/claude-missing && CLAUDE_CONFIG_DIR=\"$PWD/.fixtures/claude-missing\" NEXT_DIST_DIR=.next-fixture next dev","dev:fake":"mkdir -p .fixtures/claude-fake && CLAUDE_CONFIG_DIR=\"$PWD/.fixtures/claude-fake\" NEXT_DIST_DIR=.next-fixture next dev","build":"next build --webpack","start":"next start","dashboard":"node ./bin/claude-directory.js dashboard","dashboard:start":"node ./bin/claude-directory.js dashboard start","dashboard:stop":"node ./bin/claude-directory.js dashboard stop","dashboard:status":"node ./bin/claude-directory.js dashboard status","audit:collect":"tsx scripts/audit/collect.ts","audit:analyze":"tsx scripts/audit/analyze.ts","audit:report":"tsx scripts/audit/report.ts","token-audit":"tsx scripts/audit/collect.ts --verify && tsx scripts/audit/analyze.ts --validate && tsx scripts/audit/report.ts","prepublishOnly":"next build --webpack && node scripts/prepare-standalone.mjs"},"devDependencies":{"@radix-ui/react-popover":"^1.1.15","@tailwindcss/postcss":"^4.1.3","@tobilu/qmd":"2.5.3","@types/node":"^22.14.0","@types/react":"^19.1.0","@types/react-dom":"^19.1.0","class-variance-authority":"^0.7.1","clsx":"^2.1.1","cmdk":"^1.1.1","jotai":"^2.19.0","lucide-react":"^1.7.0","next":"16.1.1","next-themes":"^0.4.6","radix-ui":"^1.4.3","react":"^19.1.0","react-dom":"^19.1.0","react-markdown":"^10.1.0","react-resizable-panels":"^4.7.6","remark-gfm":"^4.0.1","shadcn":"^4.1.0","tailwind-merge":"^3.5.0","tailwindcss":"^4.1.3","tsx":"^4.19.2","tw-animate-css":"^1.4.0","typescript":"^5.8.3"},"dependencies":{"liveline":"^0.0.7"},"gitHead":"de8419748762dd340b165c43f5cdd2a0c11d28fe","_id":"@alstroemeria/claude-directory@0.1.2","_nodeVersion":"22.23.1","_npmVersion":"11.18.0","dist":{"integrity":"sha512-4i1SGYkVkLy92Pjv5BlWxlgPQnQ5ZQdeBU2We/goEpAEaj4fuZrhAr2A2IIMv+afTieC+UWWvgDlIyeYOnefcA==","shasum":"937e24169109dfe35032249191a5301dd8880ad5","tarball":"https://registry.npmjs.org/@alstroemeria/claude-directory/-/claude-directory-0.1.2.tgz","fileCount":1996,"unpackedSize":29800674,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alstroemeria%2fclaude-directory@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIA9nVlrPi5wqnN6bATRKp57XYQxNMpHEkyHzuvgL4tl/AiBBnoCSIBRlntUxYcvFw8Hnjhv50p5+hIG9eNOKY7qdkg=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:50412e31-5ff7-45cc-98f7-3c28788ebc5b"}},"directories":{},"maintainers":[{"name":"alstroemeria","email":"alstroemeri@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-directory_0.1.2_1785215947268_0.9595985822974411"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-21T03:06:06.151Z","modified":"2026-07-28T05:19:07.869Z","0.1.0":"2026-07-21T03:06:06.803Z","0.1.1":"2026-07-27T16:02:04.960Z","0.1.2":"2026-07-28T05:19:07.554Z"},"bugs":{"url":"https://github.com/alstroemeria/claude-directory/issues"},"author":{"name":"Jacky Mok"},"license":"MIT","homepage":"https://github.com/alstroemeria/claude-directory#readme","keywords":["claude","claude-code","dashboard","directory","dotclaude","explorer","cli","anthropic","sessions"],"repository":{"type":"git","url":"git+https://github.com/alstroemeria/claude-directory.git"},"description":"Explore your Claude Code home (~/.claude) — a local, read-only, educational dashboard for sessions, transcripts, agents, skills, hooks, commands, memory, todos, plans, and history, with an explain mode aligned to Anthropic's official .claude directory doc","maintainers":[{"name":"alstroemeria","email":"alstroemeri@gmail.com"}],"readme":"# claude-directory\n\nExplore your Claude Code home — a read-only local dashboard for browsing `~/.claude`, with an **explain mode** that mirrors Anthropic's official [.claude directory docs](https://code.claude.com/docs/en/claude-directory).\n\n> Unofficial, community-built. Not affiliated with or endorsed by Anthropic.\n\n## Quick start\n\nRun it with no install:\n\n```bash\nnpx @alstroemeria/claude-directory\n```\n\nThis starts the dashboard at [http://localhost:4849](http://localhost:4849) and serves your `~/.claude` read-only.\n\nVerify it's up, then stop it when you're done:\n\n```bash\nclaude-directory status     # → Dashboard running (pid …) at http://localhost:4849\nclaude-directory stop\n```\n\n## Installation\n\n### Global (npm)\n\nInstalls the `claude-directory` CLI, which runs the dashboard as a background process:\n\n```bash\nnpm i -g @alstroemeria/claude-directory\nclaude-directory start      # start the dashboard\nclaude-directory status\nclaude-directory stop\nclaude-directory restart\n```\n\nRequires Node >= 20.9. Use `--port N` to choose another port, for example `claude-directory start --port 5000`.\n\n### Install script (macOS / Linux)\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/alstroemeria/claude-directory/main/install.sh | sh\n```\n\nDownloads the published tarball, installs it under `~/.local/share/claude-directory`, and adds a `claude-directory` launcher to `~/.local/bin` — no npm required. Requires Node >= 20.9 at runtime. Pin a version with `… | sh -s -- 0.2.0`; uninstall with `rm -rf ~/.local/share/claude-directory ~/.local/bin/claude-directory`.\n\n### From source\n\nRequires Node >= 20.9 and pnpm.\n\n```bash\ngit clone https://github.com/alstroemeria/claude-directory\ncd claude-directory\npnpm install\npnpm dev                                        # dev server on http://localhost:3000\n# or build and run the packaged standalone runtime:\npnpm build && node scripts/prepare-standalone.mjs\npnpm dashboard:start                            # http://localhost:4849\n```\n\n## Documentation\n\nFull docs live in [`docs/`](docs/) — a standalone Next.js + MDX site (deployable to Vercel). It covers installation, the CLI reference, explain mode, configuration, and the privacy/security model.\n\n### Access from other devices (LAN)\n\nBy default the dashboard binds to `127.0.0.1` (this machine only). To reach it from another\ndevice on your network — your phone, say — start it with `--lan`:\n\n```bash\nclaude-directory start --lan\n```\n\nIt prints a `http://<your-ip>:<port>` link. Because the port is deterministic, that link stays\nthe same across restarts. Use `--host ADDR` to bind a specific address.\n\n> **Heads up:** `--lan` serves your `~/.claude` to everyone on the network with no\n> authentication. Use it only on trusted networks.\n\n## What it shows\n\n- Sessions and transcripts, including a per-session context and cost meter\n- Agents, skills, hooks, commands, settings, memory, todos, plans, teams, and history\n- `CLAUDE.md` files\n- **Explain mode** — an educational overlay that annotates every entry in `~/.claude` with what it does and when Claude loads it, aligned with Anthropic's official docs\n\n## Privacy & security\n\nEverything stays on your machine. The dashboard is read-only: its API is GET-only (no side effects — it never writes, opens editors, or runs commands on your behalf), file reads are capped at 2 MB, and path access is sandboxed to `~/.claude`. It makes no outbound network calls and sends no telemetry. By default it binds only to `127.0.0.1`; `--lan` is an explicit opt-in that exposes it to your local network (see [Access from other devices](#access-from-other-devices-lan)).\n\n## Configuration\n\nSet `CLAUDE_CONFIG_DIR` to use a non-default Claude home, with the same semantics as Claude Code itself:\n\n```bash\nCLAUDE_CONFIG_DIR=/path/to/claude-home claude-directory start\n```\n\nEach distinct `CLAUDE_CONFIG_DIR` gets its own dashboard state (PID, port, log), so you can run\none dashboard per Claude home side by side. Non-default homes get a deterministic default port\nin the 4850–4949 range derived from the path; override it with `--port N`.\n\n## Development\n\n```bash\npnpm install\npnpm dev                 # port 3000\npnpm dashboard:start     # port 4849\npnpm build && node scripts/prepare-standalone.mjs\n```\n\nThe last command builds and prepares the packaged standalone server that ships in the npm tarball. Windows is not yet tested for v0.1.x.\n\n### Testing the new-user / empty state\n\nThe dashboard is easy to develop against a fully-populated `~/.claude` and accidentally break for\nbrand-new users. Three fixture modes run the dev server against a synthetic Claude home under\n`.fixtures/` (gitignored) instead of your real one:\n\n```bash\npnpm dev:missing         # CLAUDE_CONFIG_DIR points at a path that doesn't exist (true first launch)\npnpm dev:empty           # an existing but completely empty Claude home (wiped on every run)\npnpm dev:fake            # a persistent fake home you populate with real Claude runs\n```\n\nPopulate the fake home organically by running the real CLI against it:\n\n```bash\n./scripts/claude-fake.sh              # interactive claude, writes into .fixtures/claude-fake\nalias claude-fake='<repo>/scripts/claude-fake.sh'\n```\n\nFixture runs are fully isolated: the search index, dashboard state, and default port are all\nnamespaced by a hash of `CLAUDE_CONFIG_DIR`, so they never mix with your real home's data.\n\n### Releasing\n\nPublishing is automated by [`.github/workflows/release.yml`](.github/workflows/release.yml): bump `version` in `package.json`, merge to `main`, and CI publishes it if npm doesn't have that version yet — rebuilding the standalone runtime via `prepublishOnly` — then cuts a matching GitHub release. The two steps are gated independently, so a version published by hand still gets its release.\n\nAuth is npm [trusted publishing](https://docs.npmjs.com/trusted-publishers) (OIDC): the runner exchanges a short-lived GitHub identity token for publish rights, so there is no `NPM_TOKEN` to store or rotate, no 2FA prompt to answer, and provenance is attached automatically. It requires a one-time setup on npmjs.com — package **Settings → Trusted Publisher → GitHub Actions**, with organization `alstroemeria`, repository `claude-directory`, workflow `release.yml`.\n\nTo publish by hand instead, run `npm login` then `npm publish`, and let it prompt for the 2FA code rather than passing `--otp` — the `prepublishOnly` build runs first, and a pre-typed code expires before the upload.\n\nOptionally set the `HOMEBREW_TAP_REPO` variable and `HOMEBREW_TAP_TOKEN` secret to auto-bump the Homebrew formula — see [`packaging/homebrew/`](packaging/homebrew/).\n\n## Inspiration\n\nThis project is inspired by [`agent-browser`](https://www.npmjs.com/package/agent-browser) — the same lightweight, local-first dashboard idea, applied to Claude Code's `~/.claude/` directory instead of browser automation state. The CLI structure follows the `agent-browser` npm package.\n","readmeFilename":"README.md"}