{"_id":"nlm-memory","_rev":"48-b6c0387fc7146c7ed84d2128cdabecf7","name":"nlm-memory","dist-tags":{"latest":"0.21.0"},"versions":{"0.4.0":{"name":"nlm-memory","version":"0.4.0","license":"Apache-2.0","_id":"nlm-memory@0.4.0","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"8722b835d5a1dfeaa16710dceab2f163b67be684","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.4.0.tgz","fileCount":472,"integrity":"sha512-BytuYQgdyTXTyfb+bhULcwvGs92m5F+OzYy3xvtSzLTvTShe+ZBwav19+2ypxagijlUrIo+jv4XUxzvJWVRjSA==","signatures":[{"sig":"MEYCIQCrxhhyopU2X4ZVH2iPZsaqXrQxtyEjuH0LJ7HrGUPuSAIhAN7x8ectuP/nVxb7fCF1QUJKMpcis29EXF1tLSC2ktpX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2743533},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"715c75855def079460c8725ec697f3b55993fbbe","scripts":{"dev":"tsx watch src/cli/nlm.ts start","lint":"eslint src tests","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.4.0_1780021835472_0.450716851573401","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"nlm-memory","version":"0.4.1","license":"Apache-2.0","_id":"nlm-memory@0.4.1","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"8764b9eb7925a1203db22583e85ff958791062f9","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.4.1.tgz","fileCount":472,"integrity":"sha512-dEbELJ+fJiwKRuO9WIZ9p+B5KYFTdoCNm2Hk8WnMchP4MDVHJFPuJ/C04DuoczYqdkloGgrvyThV6X+twdZ9YQ==","signatures":[{"sig":"MEUCIQCfmNQONYEzxpdNS0ppp33QHRw6+fG0hVQeEtMCOhO9XwIgRHUEVGYC90FYDPhZImXN1gEqCEycFf+AI1L96iZ+jE8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2748494},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"c566824b4dd1a27ce700c826f5a9eba066cf0506","scripts":{"dev":"tsx watch src/cli/nlm.ts start","lint":"eslint src tests","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.4.1_1780060511927_0.5743158228650425","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"nlm-memory","version":"0.4.2","license":"Apache-2.0","_id":"nlm-memory@0.4.2","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"600385d46143530ac0c73b7453d27324a27dec6f","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.4.2.tgz","fileCount":472,"integrity":"sha512-0sahSblzLHmnszzLq9IeG7TJDynNWy3/VBsZURaO5ukDiKxAsT2AL5MfHcY2KCQvll6lvAZyo2ecGiKnQGAg3g==","signatures":[{"sig":"MEUCIQC8UtZ6ypeVaSnj+UxkMpl8pA+lQVVWVu4JGIZdRtgF8QIgTx2rdRp/BSgHCAZfx5CPEqfAtML9HEMVi24/e3bnsnI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2748893},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"d71f2a9a2eb89053ec5b4b6583e3060ca515c0ea","scripts":{"dev":"tsx watch src/cli/nlm.ts start","lint":"eslint src tests","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.4.2_1780060611091_0.029664553880658806","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"nlm-memory","version":"0.5.0","license":"Apache-2.0","_id":"nlm-memory@0.5.0","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"4d9bacb71ee21303256d1054620d43a8a764a63e","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.0.tgz","fileCount":500,"integrity":"sha512-46aD3xdGMOwfQHzuIDOKEfLCgP9YRZCwPMHJgb8xs6jp5mWZItXsMxy6f3DXYxCdd/9B4GUdrRKe6n/VThHTwg==","signatures":[{"sig":"MEUCIA64T9/UqBg3jmQ0hlOk/9itg+QmGOfjonQlG9mmIeARAiEA39bwdJYckxPuXRXtAYX6M/MXrY6CwJAnyHAVA067hNw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3018417},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"4bd343b088a941923757c899ff426337aba18b72","scripts":{"dev":"tsx watch src/cli/nlm.ts start","lint":"eslint src tests","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.0_1780068378722_0.28682399064047703","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"nlm-memory","version":"0.5.1","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.1","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"7eeab65d349f3387145a5c9b4e5c66821f2b4eef","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.1.tgz","fileCount":264,"integrity":"sha512-dH9oqZxdEoPMOOzftwO7uDHDLUKytYd4j9UvOm22+V9vGuoZAAAHWM1e+Hop2dpLKsN1OlPAu4vyjyKbwOOX8Q==","signatures":[{"sig":"MEQCIDFTV1g59TQ18nnv85eFwr4SdRsV5bof4cM3+xR9H16LAiBsimnLx7H1THHfjk5cKztFiDvJLi93GksZW2S88PkFlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1420991},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"af657125f191a46d004f4a707d3fcc4887c21e87","scripts":{"dev":"tsx watch src/cli/nlm.ts start","lint":"eslint src tests","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.1_1780079482150_0.18036093016553445","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"nlm-memory","version":"0.5.2","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.2","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"df30c758cc0ff4d2aa1f9ee0b5a7165a7c398fb9","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.2.tgz","fileCount":273,"integrity":"sha512-LBVy5fl8Sopnqa5NpiaOYUtlSou4yX+vHb47WWdksvajqYeksW505yBM6/We4+Y/XTRWKt5ker4EeXx2qxbDDQ==","signatures":[{"sig":"MEYCIQDcZ+VjJKcQj1H9Lqda6q1LdgPaGqJ1+0HNXA0q7aiO5gIhAKeht3ezJrow7lyrsx94ErtJCLEmBIL8XloHgQ9PEV/3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1448886},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"ab88726427b48d3dbed195e1118364b4f319f56c","scripts":{"dev":"tsx watch src/cli/nlm.ts start","lint":"eslint src tests","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.2_1780080529324_0.08171411396199457","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"nlm-memory","version":"0.5.3","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.3","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"a79b1824bdf939c0b201543abffe403fb73115d4","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.3.tgz","fileCount":273,"integrity":"sha512-ojqKVG+6PMBQuc14V1x+dy+2idVcNqemJd9Ewli+Ive7ZrL2kdGrEfHUy2+BJgHrZ1OzU73EZLVgrC1tGnEvYg==","signatures":[{"sig":"MEUCIQDWX35AdU24nG91SP3aC74ytVDa604Jj9WUVsn05EMNBwIgOzhCHn+B4+2MFfJjYFcgVkHIX8XTSJJ8cYK2R92WAfk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1460176},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"512c9f9da68e42299b598d9baa30ec6a0a658304","scripts":{"dev":"tsx watch src/cli/nlm.ts start","lint":"eslint src tests","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.3_1780081153800_0.7541049727787024","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"nlm-memory","version":"0.5.4","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.4","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"b6c4e46363413ada320c4b4f78827600390dba04","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.4.tgz","fileCount":275,"integrity":"sha512-GuqTWeIL6aChHMwNnMaAwD0W9UOrUbpUbiMeb6gWMkIFQfzjsLbpAMCCKS8BbTzvmq2OooPEcHPjA48p/jXp7A==","signatures":[{"sig":"MEUCIAp8x/gK9mb91MDBEFF6fzU4B/0u3IIq5hV3Toi1yLhhAiEAzHxcpHzg+2lq6lsTBcXOx9Ejgvj59nCKPG2CfSpGDhA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1467514},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"57ebffc1460429642e13bdf52b9f1f408136b6fb","scripts":{"dev":"tsx watch src/cli/nlm.ts start","lint":"eslint src tests","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.4_1780082121273_0.2353190513222363","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"nlm-memory","version":"0.5.5","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.5","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"38367d4aeeb56e5c9f5a2e7fb6fca9a8d4aaac0d","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.5.tgz","fileCount":275,"integrity":"sha512-99041dPkvp4/99OCGUQ8XSAxdf4dR1EB1fee6n7dYwUX+swCH2TqZ/anC5tsT0vz/njnxRXfD2O8Buub65bYPw==","signatures":[{"sig":"MEUCIQDBLiSd7rPc3sY85uEEOYyeI6PQDvSiAxUrCruxRHKGPgIgS5MoX2adqt3Tqf2lERxWBXJnkGOpru3JZ/19X+kNnMo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1469679},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"fcdee13d579ddbb68d979f1575f1559f3f21ca97","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.5_1780083777309_0.16140484046436665","host":"s3://npm-registry-packages-npm-production"}},"0.5.6":{"name":"nlm-memory","version":"0.5.6","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.6","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"b6c55798cad40947af865724673e0d637bca669d","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.6.tgz","fileCount":275,"integrity":"sha512-5f9HoaczupyyXE1C4DwxelQEzqqdgyNHCvw8xjowFoP4C5FDtDB2dB/EgP9+wBv+6xocmw9BT47jB8VXr17d2A==","signatures":[{"sig":"MEUCIQCqWB+AcCAcUBvQ/Lq0ROxcgGcT1Uo/0Ev4eNcptx2K4AIgUucHzbaaCvH6RJXuYpQv2E4gWfmWRv1WLr3zuge3TTQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1462941},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"b413246269339a37b60575d52f6419a0fcf5dc6e","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.6_1780085583544_0.8076974945068207","host":"s3://npm-registry-packages-npm-production"}},"0.5.7":{"name":"nlm-memory","version":"0.5.7","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.7","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"195f84a03d912e18f1f2c079e51ac28f08ddac24","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.7.tgz","fileCount":281,"integrity":"sha512-PuxqWVXdSbyomMU3nl3wbg1GDpOPDejEL6mvw5hTZlyLr9EtMJJovUF5seTkEs0wMS2WPTRkVilegTlm9lRwww==","signatures":[{"sig":"MEUCIBTtuNdsRQxTbsVZ1AsmpmbBhWtjhIbn0SjTvB6xQx91AiEA6M+wR2poHeepKB2xgxonPcHymC9aLp4ZCSaRWyx5mTI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1492069},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"855d0391084ff25d42cdc124d39b0ed4e533f92c","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.7_1780169459225_0.9068237735586728","host":"s3://npm-registry-packages-npm-production"}},"0.5.8":{"name":"nlm-memory","version":"0.5.8","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.8","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"75a1e63948160a80f9c7527c23d5115cae230e4b","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.8.tgz","fileCount":284,"integrity":"sha512-Oc8W5f4REAqGwRBS7MdiPVRSktODbCNrq5KpmGO/hpXUGLFtQFCOPF5rg4Il56ITWO+1vLImjYqXIgvdlWOObg==","signatures":[{"sig":"MEUCIQDaCFgZgH9C+CXMfqicVxwiAyUnDq5NPrmeU77wZtCN4QIgFXwk6DzZopdlUXgM/zWyC3GJem+xaN6TEd3gC77YviA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1535506},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"1b21c254b53bbe3c566550238b2be53779098fc7","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.8_1780175396651_0.7994237514092333","host":"s3://npm-registry-packages-npm-production"}},"0.5.9":{"name":"nlm-memory","version":"0.5.9","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.9","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"fcb381dbe489f742112e613b332e94182ac6253e","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.9.tgz","fileCount":287,"integrity":"sha512-BgumABnDXhyIAimgwA+DMCVECKtiOblX9zok3tgTAJdwIsqfXLzifKCY7NrWNeea+Zto9Ll1DGbLXbnXpR3b6g==","signatures":[{"sig":"MEQCIFij8ZM1qvUbWJK9MmEYdMzHQK/bMOwGvBd0ASgiC/coAiAdxw8TZZtNexc6wJ35QOD7Hdjq3J3y1qMHnbA1ux3y2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1553687},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"25648b69440dba49b8335fdd37c24c9242124e5c","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.9_1780176050350_0.6215452416323339","host":"s3://npm-registry-packages-npm-production"}},"0.5.10":{"name":"nlm-memory","version":"0.5.10","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.10","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"a2644719cc51b3d44fff71a66e6e199d4128fd51","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.10.tgz","fileCount":290,"integrity":"sha512-yS6dTpgNz/eiSrM2HkfRGFGXxHbnyRYqMxJXSlNP115Gd8rlGTN7hoCkWEa1DfRAVueUMU8Y5Qt8qxUrmDZ/yw==","signatures":[{"sig":"MEYCIQDtTP2h3vrr/h3y2zP670WqWJPMHHJfhBJr/boPxz9oHgIhAOQwGOk05C948WqcVCOxGksVsedywuwyMLyEGlKyd9e5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1561633},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"411b78fc789c642e19602c6b8a320723b4927405","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.10_1780178120768_0.30386998923769837","host":"s3://npm-registry-packages-npm-production"}},"0.5.11":{"name":"nlm-memory","version":"0.5.11","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.11","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"b42cf0bbcdaa081a096e453160436699169ff77a","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.11.tgz","fileCount":290,"integrity":"sha512-8irhVTXG6RHYJRGRmq6uD6zwrI5KYLxnsfPyVECRBqQF485ZGwwqKT1ftrUFUkx7DbQvg1fSEvKv7huaMDvJ7A==","signatures":[{"sig":"MEYCIQCWMbrnpYE/vNV0euzRGunQ+/AqwKc/kFGMUSD2e726cAIhAMl1C1aK6ExNprL04HAT05OsmJ017eDCgFIOSccIYBY0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1562672},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"88a7e5162ad67ef9b23790a5297c87dc21068d2a","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.11_1780178476292_0.7732774774723026","host":"s3://npm-registry-packages-npm-production"}},"0.5.12":{"name":"nlm-memory","version":"0.5.12","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.12","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"26a9092bc3646de49dcf11ec99eae1351b120eb3","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.12.tgz","fileCount":290,"integrity":"sha512-0lo9SEtI5G8aJ7TlrXh+dmk1PfVjoy/b0g8qB03Nj/D9JS0SiVZDQt+uL0oa6MCo9WphfqXEBWXWe1WSAXCduQ==","signatures":[{"sig":"MEUCIBrHb7EBaPiuB3ey6SfPCJIOsM2srxoFoALi8OQ9M5CGAiEAkMSdAGk7D6aAXcBA7mgOEroAtb5uASDISP2oN3JJdkg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1563527},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"ec9c9a60bff6dd6b4b8094ce7fb75deca30cb7d0","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.12_1780178841860_0.7393017486273492","host":"s3://npm-registry-packages-npm-production"}},"0.5.13":{"name":"nlm-memory","version":"0.5.13","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.13","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"8b3db6e621ec9cbfe4465eddb4f2db6a83fab4e1","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.13.tgz","fileCount":293,"integrity":"sha512-tcRmYkFWU0tmyD3OtDl+bCJm4F1S7/49KiR7UShKiVF8caEcpx+ewysXhF9yL0wgPqSy0t5Fgp4FnPIAOtLbhg==","signatures":[{"sig":"MEYCIQCghLfD9fxdkPwPiGFQtbXfc7GoawVr6+PbzZZd8fnnGQIhAMTYTwmBvr/VXosr+OfGPbNAndyf+zw3VLoMzhmWsZHf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1579642},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"1ca924bd7a26b7038741f63588fbfe0c81895391","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.13_1780179493397_0.6300134252855163","host":"s3://npm-registry-packages-npm-production"}},"0.5.14":{"name":"nlm-memory","version":"0.5.14","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.14","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"d7efe43510fc4c90cc6587fdf266f46e33d3b71c","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.14.tgz","fileCount":293,"integrity":"sha512-jbxcVt3PSx2iVarXEGuImJVk+6ZreGiWz4cm5XR02qRFVo/0c2imzvod0CXoCawlzRxEcOrf+7Ezx1DC6aTrnw==","signatures":[{"sig":"MEUCIQDw6KsoyJdYfu+pioZwUdfWL/nRm1fLAFvbARnD6XrVvQIgTxcah/Lnjh7rP7oJyLk9X1RdDZk2WJTQSyRr4KvILAA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1579991},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"71a0114e27d64ff3f17782adb306665bd63390ff","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.14_1780179623460_0.6436980422515293","host":"s3://npm-registry-packages-npm-production"}},"0.5.15":{"name":"nlm-memory","version":"0.5.15","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.15","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"4dd4d5c487af535d133054da2e029e2a8633f5db","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.15.tgz","fileCount":293,"integrity":"sha512-kuAfofFlae0T9tJNZytPp7dQ0K6tUJhzLK9cIhd+scjK+B3UnHF9QeWluV18pZGSNwU1I4liJ1V1QoBFClxKag==","signatures":[{"sig":"MEUCIGx9ild3Q01Q1w+vUVZuPa39e3XnALtI55vXoiT83/ETAiEAnfm8KoI06efW8oAyuD3GzFOmzNwA4YYhZJnpsh0uVSU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1578631},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"977039e6ccc5822e01119eda871982f1773063c0","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.15_1780179807913_0.14476842823447522","host":"s3://npm-registry-packages-npm-production"}},"0.5.16":{"name":"nlm-memory","version":"0.5.16","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.16","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"ca72125a99b01c9058f3dc9b24390a27fb44e527","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.16.tgz","fileCount":296,"integrity":"sha512-Vb8jU/m1Oe/wTBI1KhO7As1ojLFMjAv1TpK4Zz/7BukLWfojp+/9gCPlZ2Z/Tl41sJoP9wf41JVC/GIluYraOg==","signatures":[{"sig":"MEQCIH8AM4/U+YCtMOD4gW1egEfDLpKnyNYRQWdGs3jb6OKUAiBuVC0zoVhHRJKsL0elgPAD7ybYVOdiWx9g1l50f6TFYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1585155},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"efccb726ed1e2b9b24b1561de340c3a5e851bb5c","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.16_1780180057412_0.11878832589363619","host":"s3://npm-registry-packages-npm-production"}},"0.5.17":{"name":"nlm-memory","version":"0.5.17","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.17","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"982787acf5ad813d4ca9df2df1821095312bb732","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.17.tgz","fileCount":299,"integrity":"sha512-hyMEjMhxOpTgu4V3gO0h176bvRn88YYB8vYZaExrNMZ0xkA4++o5eqpg2lLcHzBR7SWDN3u7o6DnJT3pJ+czeg==","signatures":[{"sig":"MEUCIQC3JCTLf2ciGCeRqeJ6DavZqTKaxVYV4w0JRpEGau1AewIga8cGbWGbujDfjF/Z4v/aNuK/7EKdBtSegg0fgXoOLhU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1594713},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"8918ebc2e5170ccdb59de063781e8dbe96083e74","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.17_1780180520065_0.3611413641027583","host":"s3://npm-registry-packages-npm-production"}},"0.5.18":{"name":"nlm-memory","version":"0.5.18","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.18","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"e46d00952f9c6827126a467dd6e09799bf231e09","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.18.tgz","fileCount":299,"integrity":"sha512-ajtEdEEcebLQ7ED1YXiAeiVHB+3gNTOp6A9aewEpEgY6MUNxkyjnl2/5u0/ztxgmUh96KLw0CqE87oHHq7g/Mw==","signatures":[{"sig":"MEYCIQC78mR8UNIj6ZHAOekeBpIeo7fZMx9oHRBykBHcNU6XbgIhAO+9eJ3/xLpl82P9gqsXydnpqYHn/vMsl3TYa9wG5eE4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1597012},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"a33e0c41712cf09f2869c2f7214202f89d97d038","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.18_1780181597979_0.17073607941659463","host":"s3://npm-registry-packages-npm-production"}},"0.5.19":{"name":"nlm-memory","version":"0.5.19","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.19","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"3985db58db4554ff41ddd191cfeebeecf9c0f1d6","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.19.tgz","fileCount":329,"integrity":"sha512-By3qFNMv5rzaGfJSGhsyfTkax+ZsL2Rn0vUWhx4Lhv2nIqgrq24bCh1kytd56jyhXoo4iMQzZiXpyh45T4i93w==","signatures":[{"sig":"MEQCIGm5HrkEiq1C0Y0xEnBOyDhHX4OmnjaBF7ApLELQ29ZuAiBNFiGgD8oBYaXp7zDT13VI7hMuC9pMC8euY0P5skOK8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1742437},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"ef8fe1e9dfe3e53b8a992b00b613d9a18b5b007a","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","test:integration":"vitest run tests/integration","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"pg":"^8.21.0","zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.2.1","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.19_1780359033912_0.49513956091343503","host":"s3://npm-registry-packages-npm-production"}},"0.5.20":{"name":"nlm-memory","version":"0.5.20","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.20","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"cb86282ee824b89b28694abce9fd2a02c6232fb4","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.20.tgz","fileCount":329,"integrity":"sha512-K8DDOloh2xm8k/51FdB1BMU2CU0ecw4DDKyX18/9BQ2EA17NRFqS1jSBV0spYdsueBMQ6P5FWG7dFvg/za6VFw==","signatures":[{"sig":"MEUCIQDHM3lhouPusYGsjCGW8VFgr6DM4vrY6rshgtCJRHWsiwIgWkpvJCoUHGpNrmZqrTRWsNJLGAgG2OCoWE9a29dhbxE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1748153},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"197422f6eefd6039cce2c47175c83711754ff75e","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"pg":"^8.21.0","zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.2.1","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.20_1780408282712_0.5619986246580138","host":"s3://npm-registry-packages-npm-production"}},"0.5.21":{"name":"nlm-memory","version":"0.5.21","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.21","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"5478d055c0d74f1bfa71d003872e10c5ab4d18bf","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.21.tgz","fileCount":332,"integrity":"sha512-dWOjShoSyGlTjVa8tKIKSlXI9w8487fI4X70Ho4o5gSUhUlmUAkRTn1SYXxpgzma/tO9lOUO4ZaG9xItR4BlzQ==","signatures":[{"sig":"MEQCIEMRJQG/sZaOVo+g4wYF1TIpuueN78xsBO4OSHhGQDEAAiAs6sJGLrl9j/LaWLe/v6vO+7PuiLhk6rcB45XVkBnqTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1754482},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"5bf519569bc57683b34de05da1965498c035b80e","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"pg":"^8.21.0","zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.2.1","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.21_1780413859453_0.6677478482225017","host":"s3://npm-registry-packages-npm-production"}},"0.5.22":{"name":"nlm-memory","version":"0.5.22","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.5.22","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory-ts#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory-ts/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"ee52567a04272dbd789ed4e1bc2afbc7eaa9e35d","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.5.22.tgz","fileCount":359,"integrity":"sha512-r+yqhuCG7WI5GUbclGwlG7vFS87aOSt0vgA1PzyaxPFma2d9VaNIloyUIE9XoBHjy2bbaHf1qk+t8b6UjiR/mQ==","signatures":[{"sig":"MEUCIQDC/83BFPKuPGwq9bk9RSQXneVWLxNVhomvMKN0RukUPQIgDf+Fiv2Ap5syam2w71+l9m0yUhCSNwwAEBClACU7r1g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1874323},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"013a258dbf14d5fe6f3f3d62e405992441691489","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory-ts.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"pg":"^8.21.0","zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.2.1","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.5.22_1780950434231_0.13277011018293283","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"nlm-memory","version":"0.6.0","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.6.0","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"a028302b8866bb0f06bb1c8217f9198f5ca0979f","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.6.0.tgz","fileCount":383,"integrity":"sha512-YmPfFOapBJtjU72JH6Bsg1vKYwykclPQpmrSvuuQ+r8oyLTO6zESklzK/u8dwL88aLjH0MlygZBzS7jOYO5BhA==","signatures":[{"sig":"MEYCIQDZ8SlNImVrO6Kr4DG0hMihAjXtr+Fsjkj4EgKClWCBowIhAOtYmxyvn4UOB2aHy528i7bBr1acivdOXDi3iSQREQa+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1996491},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"d22e812ea035724c2a09ac7b5329122262781c29","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"pg":"^8.21.0","zod":"^3.23.0","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.2.1","commander":"^12.1.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^11.5.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^5.4.21","react":"^18.3.1","vitest":"^2.1.0","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^18.3.1","tsc-alias":"^1.8.17","typescript":"^5.7.0","@types/node":"^22.10.0","@types/react":"^18.3.28","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.6.0_1781057997179_0.296218285079753","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"nlm-memory","version":"0.7.0","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.7.0","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"309a27b19d7c7ceceaa9fe6db534681b45d7e967","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.7.0.tgz","fileCount":383,"integrity":"sha512-lyykbsEgv7dfSw4zXghYo7/IEZ2TU9tAOWDlysWjONXzPSsLjgHUVobnv3auY0GTw3iSs0ONJ8eH0moBMXW1Lg==","signatures":[{"sig":"MEYCIQC38GBf5VWcV3cXez+CoPEcVRWmpfbzAB/mj+NUBPyLnQIhAKw/uxzkcViGP4IneP3w4zx95291u6QFUczfcB/nt+x/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2048696},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"5e82a49876cd2fd37ce4b89037d691d13cc2d16b","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.7.0_1781059241218_0.24278986410293668","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"nlm-memory","version":"0.8.0","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.8.0","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"308e2c7557c92414eeb25512dda710b14fa359c9","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.8.0.tgz","fileCount":392,"integrity":"sha512-/q/gYDRQeIdzSmod5q1eOsD5bXzjBSIPtacndRRQajFPspXtoIwQuwY2INM7PYdoGCtf6dmFVidBR2zz+XJoHw==","signatures":[{"sig":"MEYCIQDtoX4Al2d6ljOZ3iKt3EDlZaI+YojBu5til9okfmYJ9gIhAM3Zjgn94KnCSRmxOEqS0wEFdpUEZadymdIxskxMn9Ho","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2074811},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"4965082daa071b5be0b25645c31023db465b61da","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.8.0_1781061519787_0.2623901731549727","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"nlm-memory","version":"0.9.0","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.9.0","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"98f6108029a7056cf5a33be332b98c046fe93a9f","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.9.0.tgz","fileCount":392,"integrity":"sha512-1T1VaDUNyo78Vbnsh5/TDfhTE+lBE7LIC6ASzBLfFfs/uX87cWVUFcyIOxCqCuFOlTk4u/yc9r55MjTGV7XCWA==","signatures":[{"sig":"MEUCIQDmoxsl+EeePxtAFEHXvRVqokssi0BkvA2o7QOdcqVQgwIgXApsUQYc3HLlCbSCYjPrZqLNDZq0bkew0N/2hG3j5HA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2081884},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"5508c13f2c742cfbf04097fbd80fc6b2eb3aa108","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.9.0_1781064432514_0.5544197768409742","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"nlm-memory","version":"0.9.1","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.9.1","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"8f09f4ae070d53e72a42cb72c0089bea938e3ec1","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.9.1.tgz","fileCount":392,"integrity":"sha512-3hnLWqhLv5p72dLAbM6RGCmIj9Q1lhOrlzF1iSeect71m0B7uNMpgwjcUufICARVx3FQ/GsOVPx2yQW9GfSMvA==","signatures":[{"sig":"MEUCIFPAEw7ESAyPHdBy1AP0bKpMA1uHsXJv/gzeJtlCB6oVAiEAvdyQvExHaj/L0DEh48Agkh1EbnAuNGlLk66B5oj+Yvg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2083346},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"907938f01810d246442abdc9f855e91644e32326","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.9.1_1781065181125_0.7406853965391982","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"nlm-memory","version":"0.9.2","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.9.2","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"a9a7486da9bce9ac44ce01f1f475dc54149eb5e3","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.9.2.tgz","fileCount":392,"integrity":"sha512-odRf+Zzc9osYW4juneoxW/4pQm9AXeQgLpFXjPdaYQena7laCKUOOrxwWQ9FplszNoYnIt5bVenxNo6QifE8+A==","signatures":[{"sig":"MEYCIQCwjFxUul0s6wz0/q0L9Ow1UWLrgIeCRwCOgAZ0xeFzzQIhAN5HkxmFAXzops1OEqjliwYjMDSEr2ekTREjfvnCLAiz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2084246},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"bf856af0226bd0978eef7bf5fc14c15666b2ab0b","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.9.2_1781065704771_0.40174708814419113","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"nlm-memory","version":"0.10.0","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.10.0","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"39a324403d8d16ddeeeffad10af176bcd743e9d5","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.10.0.tgz","fileCount":420,"integrity":"sha512-3COSMJ1msgvc+aJpJLzGfCLyWxPKMjNNJhzE/c66qpeEEde05MthJqIrur++eB9uHHjka/GNcOimZDLy/TfLCA==","signatures":[{"sig":"MEUCIG9sGYvz0/4blJVy+zX40JA3ydGuLpjHaGnrisyHL1u8AiEAgUObxWBTbbfAfNa9gGjGvh8TfgHzvYSHYczx+NvUCZ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2191557},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"4eed33c71d81dd539cbeae7f80c7398d311fe7f3","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"echalupa","email":"echalupa@whtnxt.io"},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"10.9.4","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.10.0_1781110911822_0.31710392235245677","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"nlm-memory","version":"0.10.1","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.10.1","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"d6f0c1e6ddc4e0243f7e6a28f266aee2fcd94aaa","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.10.1.tgz","fileCount":411,"integrity":"sha512-K9YcJTFeoOyyQMibY/iPR3YRQirxNwiu8Bn+j8Vz8PWGUHUf6+wkm+qFpX1qvmALhky6uryLIyV/cvMEUEk6RQ==","signatures":[{"sig":"MEQCIDMBpx9WJsxvrdq2d03+sv+U9khlE0pFT+NU5XGzcpRUAiABKZNpYM1cbzpXi8Ekl+rvE2H1elunEU9L8DRlXDOT9g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nlm-memory@0.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2155410},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"6ab481c03536e0e21d959897e0c999b09ac520b1","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e25c264d-9818-465c-b271-a7f0f47f05ad"}},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"11.16.0","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.10.1_1781112807497_0.9821208279811546","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"nlm-memory","version":"0.11.0","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.11.0","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"db0251acf8eeedaa22dbb95fb340d2aee1a3ff44","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.11.0.tgz","fileCount":411,"integrity":"sha512-JCKY76Ar10h5r1YPW+IM7ITIkyF0FQQOSDnzGc2KEfvyh2VrYwj8Hqz6Swud3hKvHEIPjl92cSwoNtLd1kKYAA==","signatures":[{"sig":"MEYCIQD5+FXKpZSBnnDu5YuW11sS+1RPHZBtWYCwMC6bDaIbyAIhALB7N4vx0TlgA/0FwpAqAQQoyv5CEJmqCZEPV2NSM+k/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nlm-memory@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2166276},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"a0af57c121ebf29824785517563910efdca4115e","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e25c264d-9818-465c-b271-a7f0f47f05ad"}},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"11.16.0","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.11.0_1781113994874_0.06802290195186411","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"nlm-memory","version":"0.11.1","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.11.1","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"b943601c0546b6b33d524a7dd2fde51dfeee6eca","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.11.1.tgz","fileCount":414,"integrity":"sha512-1DvMVVyIRDHvR6eVeHnCzSou4hI0yf8g/dnNLa0QyZt1qFD6JxDswLD6/hceOihfl0rqENMKOeTJvnz0PKQh2A==","signatures":[{"sig":"MEUCIBVB3ge2x4jhSz34V2O1L3hxkZ4SbH6sHCg86J+3eSSFAiEApemZadABdCcyDVdtphIFXbXhf2C77leLdUVbPnvZXag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nlm-memory@0.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2177531},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"1d44b20969c710ef9b070bc30b3a4a5db66e7750","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e25c264d-9818-465c-b271-a7f0f47f05ad"}},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"11.16.0","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.11.1_1781116752240_0.014400969974716737","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"nlm-memory","version":"0.12.0","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.12.0","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"b1e6a82e217a1c78645b5f6c5541ece613302ae5","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.12.0.tgz","fileCount":417,"integrity":"sha512-CshKPsNRp6fEcg77SICr3OByjmHjTe6D0sDLC9eW610C2PwbKWkCyBFdHa5Zk3et7lfCXE6QffHxQpIIPp5/Rg==","signatures":[{"sig":"MEUCIQDXTiQpPVtX03/DtfywSA/Wwl9QejEamxIM4WwVvJiHAwIgU182PIT+N7J6LdXzSLxl4L5MYsIgs3lxLLRrlCskfFQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nlm-memory@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2184297},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"cbcc48c2cfb8141b8e893ffd230a335f1be320ff","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e25c264d-9818-465c-b271-a7f0f47f05ad"}},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"11.16.0","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.12.0_1781189667104_0.33422223307570187","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"nlm-memory","version":"0.13.0","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.13.0","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"e03f63f7a92c664a473df47810acafb2176bdf4e","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.13.0.tgz","fileCount":455,"integrity":"sha512-6hMM6VuZdPbN5rP0/t9kb5ZF684/+YEf5gPBmWUoOWBvF20tBFruYqUyrADeQ2Yq6QUovMJlZ2d9yWVa0uAbsw==","signatures":[{"sig":"MEUCIQCEUhGjt2JcMstPNVquAkWMV/XuQ7QoONVH5Rkni3il5QIgQ0RFNGEL7qdwkdxX0Qq9RgNUPoQqOE33zKgC5wsz+Fc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nlm-memory@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2388467},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"9e57052f60e9df510ce5323dfb617fd4ff3bcabe","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","eval:classifier":"tsx scripts/eval/classifier-eval.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e25c264d-9818-465c-b271-a7f0f47f05ad"}},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"11.17.0","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.13.0_1781883828300_0.23866637862974693","host":"s3://npm-registry-packages-npm-production"}},"0.13.1":{"name":"nlm-memory","version":"0.13.1","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.13.1","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"51fbc4affcd35f7a8873c86a9144d917ade4f7ce","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.13.1.tgz","fileCount":455,"integrity":"sha512-3fYU+ynhC796IirfxeOto9M1qt+uVb6MtM8LN6Ma8T2hUQDi0w675w5g3GdBV4fWWEDnYuBqzmnLuUknyZaZTg==","signatures":[{"sig":"MEQCIBGHWeSfzDC5JRaSaHeiwM+rNSFhmGcoq1gw802j0RSQAiBfaxiDpwT0LRahUVkIHIDnzNYcNg6gNsVcGslvVCp2+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nlm-memory@0.13.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2389103},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"8e9efd35a792991dbf62ccd8639804f1e174babe","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","eval:classifier":"tsx scripts/eval/classifier-eval.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e25c264d-9818-465c-b271-a7f0f47f05ad"}},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"11.17.0","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.13.1_1781884637755_0.3457744386087762","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"nlm-memory","version":"0.14.0","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.14.0","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"6f94223df0442ed97a74fc54d4ec5c92bd538e64","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.14.0.tgz","fileCount":455,"integrity":"sha512-ThGikfxFmScC9dOh/ZPTiQqrcrO+wHqCCn+WaB9taRrZRSysBfyM7pHWaPuK3S+y9r/34OiKhqIEZ4zggOLD2g==","signatures":[{"sig":"MEYCIQDAObzeMqKI5Lz5fENPkSsZAKMZMC4x1ooceqGetxMuowIhANGtr6C2C9fEDyUHGPUbaQh2YMgsueVSiIn9ws8tdETs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nlm-memory@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2405984},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"19196d3e006a3105c69281cb3f4f77476687597e","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","eval:classifier":"tsx scripts/eval/classifier-eval.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e25c264d-9818-465c-b271-a7f0f47f05ad"}},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"11.17.0","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.14.0_1781886730109_0.2975325613704747","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"nlm-memory","version":"0.14.1","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.14.1","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"a6fd4ce8c6b81151b3c101373c7b389b4d6fd871","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.14.1.tgz","fileCount":455,"integrity":"sha512-ZG7q2iKGBklEV2y328/Xwxexkgs2YdGo9YDRRP8PIFfSoVFPKvfjWNxJnfpyMLe1bAxYcAUvuYouEqXK/9ImSQ==","signatures":[{"sig":"MEUCIBzt8vSioXSWegF9CoHlqBfpv1cVZxbFoHRyPoPqFhidAiEA1flABETOHimW2JG7TIkGK/XKVNuzlNfAxYAuG4/7ACc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nlm-memory@0.14.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2406238},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"d8f33ae4a0b1565272ab6be61eae87937570c588","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","eval:classifier":"tsx scripts/eval/classifier-eval.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e25c264d-9818-465c-b271-a7f0f47f05ad"}},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"11.17.0","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.14.1_1781887527597_0.5096068898397081","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"nlm-memory","version":"0.15.0","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.15.0","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"81442d0029b7ba4f3ee25cbc68d7bfe636d3d069","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.15.0.tgz","fileCount":461,"integrity":"sha512-IqfeAXN5KFs3uKmJoz7MeOWAIiUM4XxXo7R9fHVJ+5VxZegERR1/oJ8wXjc9D+qqm7FJ4mhOGq6J40d4qDGtiA==","signatures":[{"sig":"MEQCICqxNgZ0bB+jP0BzY/Om0Tr4ORI5Clx8qlVCP4hAdc34AiB68rh/V3nUh+Zfq2+1H6Rwu4g0lSRSWBlWwO0DRjeeng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nlm-memory@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2417183},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"745e1ab1bb6aaf4aadd823d3176e36ec02942490","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","eval:classifier":"tsx scripts/eval/classifier-eval.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e25c264d-9818-465c-b271-a7f0f47f05ad"}},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"11.17.0","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.15.0_1781892544957_0.15119961378521762","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"nlm-memory","version":"0.16.0","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.16.0","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"30899cf77fa5294b7e612281772954b2fe1e0fc8","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.16.0.tgz","fileCount":464,"integrity":"sha512-71wAWADVCvMh6GglwhiA8WrRdtIa18uZVNY8tRHFl0+FPiM1+U0sdnd2WkMwP39vuzkQ+yriz6KvXqwo+bjxUA==","signatures":[{"sig":"MEUCIA2ZbKALQq39sIPHvJ31HZ+0DLmFZNFl4HzKQhowgQAEAiEAsBMV767rrJwRJ8dQ2ta/XFBaAZw51nx/AT2dwQNERFM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nlm-memory@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2430514},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"4b5b63ced71e95ae7f461ec482db4cd9ef4cd352","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","eval:classifier":"tsx scripts/eval/classifier-eval.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e25c264d-9818-465c-b271-a7f0f47f05ad"}},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"11.17.0","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.16.0_1781894891764_0.7121228388538889","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"nlm-memory","version":"0.18.0","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.18.0","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"b45aefeba797a25efc2b7cfc38d2bc6b47ba38a3","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.18.0.tgz","fileCount":467,"integrity":"sha512-rz4zatQTy5y/VKDS8y/kcZvoz9/QZd8kqlIfwxKGWbJ20r4sOnAIEx0J1VuCCSVu/FJ3ky/senaTKPkUwh4nvQ==","signatures":[{"sig":"MEUCIAh74fEhopaCwgDqcVWvxnCj+/mTECHMmzC6uSdkV8TZAiEAn0BVEUBEJzST7GGziBBgsQDhhJI/RBy/GsYWcmNz4EU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nlm-memory@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2455934},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"75eced8287ad7514c515220e263e132757527859","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","eval:classifier":"tsx scripts/eval/classifier-eval.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e25c264d-9818-465c-b271-a7f0f47f05ad"}},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"11.17.0","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.18.0_1781951117501_0.7290142594684612","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"nlm-memory","version":"0.19.0","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.19.0","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"e5efc6886f568fcdf5312f8c8644fd82f036d674","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.19.0.tgz","fileCount":467,"integrity":"sha512-bLDZSKLHY6RId0UCWp3i/ud5wXGP89IzqL5kep5CI3us217FoYq0x8UjO7+N62yFCYkBPZtfWSnAntPRpsjleg==","signatures":[{"sig":"MEQCIFG8D1VGwFnWXj1bprfLfCKwK5qMPjp6k427hMoSYDxsAiBu/wyDL33+CKUuH6a9MU8CnRzaKOWjyaIPQEsLqu3FsA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nlm-memory@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2458884},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"dff694632c4bc07fb36a5ae450de5da085b0c5ba","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","eval:classifier":"tsx scripts/eval/classifier-eval.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e25c264d-9818-465c-b271-a7f0f47f05ad"}},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"11.17.0","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.19.0_1782053987322_0.4145001488535631","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"nlm-memory","version":"0.20.0","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.20.0","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"bc0a3ff0e757b887dbef6e2880419691234e706d","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.20.0.tgz","fileCount":470,"integrity":"sha512-JSYirJFV4Kjc8U+XblcElHhaSDhUZi1f/5SWZhQMMh0SwG5lqWPIoLlqKEF2Tn11Oy5XVO+A9g2TOYO5YEU4Sw==","signatures":[{"sig":"MEUCIDjT03nR1mkk3oLvBnHAuBYruD6rjG5BIA9zOptpmYU+AiEAy7PlE5O+VYI1rNFyqM+TG0QVSKBiC+3SoftNSxBlzzw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nlm-memory@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2460709},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"53c71e7fc5d6895eff0249450754c296e5426b0e","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","eval:classifier":"tsx scripts/eval/classifier-eval.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e25c264d-9818-465c-b271-a7f0f47f05ad"}},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"11.17.0","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.20.0_1782059697428_0.6621162455016121","host":"s3://npm-registry-packages-npm-production"}},"0.20.1":{"name":"nlm-memory","version":"0.20.1","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"license":"Apache-2.0","_id":"nlm-memory@0.20.1","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"bin":{"nlm":"dist/cli/nlm.js"},"dist":{"shasum":"8ac9976344e9315e36db11b2abd3242d018b5649","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.20.1.tgz","fileCount":690,"integrity":"sha512-/g4XHlkjKGiEoHR6HGSa+yVNmr6TvYbatjgXw+vveRpNxlo1rkC/SzeJgClderhnl/GIx9+bKybO4DHriASVng==","signatures":[{"sig":"MEUCIQCEUfC+8ETkL70pYWpF40JsYfY/Oswm3/WMTMA4NjiU3gIgCYxwGh8ceFI9sQb0uWys+3tnqaxxeuhmhUe31wxodEw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nlm-memory@0.20.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3096465},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"cc57af9fba3df7c11f97ffd7cb7650e554e804e4","scripts":{"dev":"tsx watch src/cli/nlm.ts start","test":"vitest run","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","start":"node dist/cli/nlm.js start","ui:dev":"vite --config src/ui/vite.config.ts","prepare":"[ -d src ] && npm run build || true","test:pg":"vitest run --no-file-parallelism .pg.test.ts","build:ui":"vite build --config src/ui/vite.config.ts","test:unit":"vitest run tests/unit","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","eval:floor":"tsx scripts/eval/floor-calibration.ts","test:watch":"vitest","eval:naming":"tsx scripts/eval/tune-naming.ts","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","eval:matcher":"tsx scripts/eval/tune-matcher.ts","eval:signals":"tsx scripts/eval/signals-eval.ts","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","eval:reranker":"tsx scripts/eval/reranker-ablation.ts","eval:classifier":"tsx scripts/eval/classifier-eval.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","eval:fact-recall":"tsx scripts/eval/fact-recall-eval.ts","test:integration":"vitest run tests/integration","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs","eval:code-exemplar":"tsx scripts/eval/code-exemplar-eval.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e25c264d-9818-465c-b271-a7f0f47f05ad"}},"repository":{"url":"git+https://github.com/pbmagnet4/nlm-memory.git","type":"git"},"_npmVersion":"11.18.0","description":"Local-first non-linear memory operating system for AI operators.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"pg":"^8.21.0","zod":"^4.4.3","hono":"^4.6.0","yaml":"^2.9.0","pgvector":"^0.3.0","commander":"^15.0.0","sqlite-vec":"^0.1.6","@clack/prompts":"^1.4.0","better-sqlite3":"^12.10.0","@hono/node-server":"^2.0.3","@toon-format/toon":"^2.3.0","@huggingface/transformers":"4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^8.0.16","react":"^19.2.7","vitest":"^4.1.8","esbuild":"^0.28.0","@types/pg":"^8.20.0","react-dom":"^19.2.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^22.10.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.3","@vitejs/plugin-react":"^6.0.2","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/nlm-memory_0.20.1_1783110323814_0.12658736949320937","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"nlm-memory","version":"0.21.0","description":"Local-first non-linear memory operating system for AI operators.","type":"module","license":"Apache-2.0","engines":{"node":">=22.0.0"},"repository":{"type":"git","url":"git+https://github.com/pbmagnet4/nlm-memory.git"},"homepage":"https://github.com/pbmagnet4/nlm-memory#readme","bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"bin":{"nlm":"dist/cli/nlm.js"},"scripts":{"dev":"tsx watch src/cli/nlm.ts start","start":"node dist/cli/nlm.js start","build:server":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","build:ui":"vite build --config src/ui/vite.config.ts","build:codex-plugin":"node scripts/build-codex-plugin.mjs","build":"npm run build:server && npm run build:ui && npm run build:codex-plugin","prepare":"[ -d src ] && npm run build || true","ui:dev":"vite --config src/ui/vite.config.ts","test":"vitest run","test:watch":"vitest","test:unit":"vitest run tests/unit","test:integration":"vitest run tests/integration","test:pg":"vitest run --no-file-parallelism .pg.test.ts","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","bench:longmemeval":"tsx scripts/longmemeval/run-harness.ts","bench:classifier":"tsx scripts/longmemeval/run-harness.ts --classifier","bench:compare":"tsx scripts/longmemeval/compare-classifiers.ts","eval:signals":"tsx scripts/eval/signals-eval.ts","eval:classifier":"tsx scripts/eval/classifier-eval.ts","eval:fact-recall":"tsx scripts/eval/fact-recall-eval.ts","eval:code-exemplar":"tsx scripts/eval/code-exemplar-eval.ts","eval:reranker":"tsx scripts/eval/reranker-ablation.ts","eval:floor":"tsx scripts/eval/floor-calibration.ts","eval:matcher":"tsx scripts/eval/tune-matcher.ts","eval:naming":"tsx scripts/eval/tune-naming.ts"},"dependencies":{"@clack/prompts":"^1.4.0","@hono/node-server":"^2.0.3","@huggingface/transformers":"4.2.0","@modelcontextprotocol/sdk":"^1.29.0","@toon-format/toon":"^2.3.0","better-sqlite3":"^12.10.0","commander":"^15.0.0","hono":"^4.6.0","pg":"^8.21.0","pgvector":"^0.3.0","sqlite-vec":"^0.1.6","yaml":"^2.9.0","zod":"^4.4.3"},"devDependencies":{"@types/better-sqlite3":"^7.6.13","@types/node":"^22.10.0","@types/pg":"^8.20.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.2","esbuild":"^0.28.0","react":"^19.2.7","react-dom":"^19.2.7","react-router-dom":"^6.30.3","tsc-alias":"^1.8.17","tsx":"^4.19.0","typescript":"^6.0.3","vite":"^8.0.16","vitest":"^4.1.8"},"_id":"nlm-memory@0.21.0","gitHead":"b747d9f043c0d5d87548f9692011ea5ccf41d50d","_nodeVersion":"22.23.1","_npmVersion":"11.5.2","dist":{"integrity":"sha512-DC9YOSBoFjygXPtwG8kJvg7h0dCtskhD9MmZrWhctBfEw54mQ0fWCq+8ogtria7GNLzsw76oabxDozxsTOIBbA==","shasum":"457462d1f55370778f8b176738d36c91f76ec83b","tarball":"https://registry.npmjs.org/nlm-memory/-/nlm-memory-0.21.0.tgz","fileCount":740,"unpackedSize":3262546,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nlm-memory@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCh07/tobMgh6uLk3u3cGEOKlEx2XyX09w4ngMixMa8QwIhAN9SitWH8weUXjFz+VRSkmeUaPBpjg5WpejdPwn2d7qd"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e25c264d-9818-465c-b271-a7f0f47f05ad"}},"directories":{},"maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nlm-memory_0.21.0_1784667562462_0.4449831284162413"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-29T02:30:35.400Z","modified":"2026-07-21T20:59:22.956Z","0.4.0":"2026-05-29T02:30:35.696Z","0.4.1":"2026-05-29T13:15:12.125Z","0.4.2":"2026-05-29T13:16:51.352Z","0.5.0":"2026-05-29T15:26:19.013Z","0.5.1":"2026-05-29T18:31:22.366Z","0.5.2":"2026-05-29T18:48:49.555Z","0.5.3":"2026-05-29T18:59:13.957Z","0.5.4":"2026-05-29T19:15:21.496Z","0.5.5":"2026-05-29T19:42:57.511Z","0.5.6":"2026-05-29T20:13:03.730Z","0.5.7":"2026-05-30T19:30:59.424Z","0.5.8":"2026-05-30T21:09:56.791Z","0.5.9":"2026-05-30T21:20:50.527Z","0.5.10":"2026-05-30T21:55:20.945Z","0.5.11":"2026-05-30T22:01:16.547Z","0.5.12":"2026-05-30T22:07:22.090Z","0.5.13":"2026-05-30T22:18:13.596Z","0.5.14":"2026-05-30T22:20:23.638Z","0.5.15":"2026-05-30T22:23:28.112Z","0.5.16":"2026-05-30T22:27:37.565Z","0.5.17":"2026-05-30T22:35:20.273Z","0.5.18":"2026-05-30T22:53:18.143Z","0.5.19":"2026-06-02T00:10:34.146Z","0.5.20":"2026-06-02T13:51:22.873Z","0.5.21":"2026-06-02T15:24:19.598Z","0.5.22":"2026-06-08T20:27:14.458Z","0.6.0":"2026-06-10T02:19:57.345Z","0.7.0":"2026-06-10T02:40:41.480Z","0.8.0":"2026-06-10T03:18:39.977Z","0.9.0":"2026-06-10T04:07:12.709Z","0.9.1":"2026-06-10T04:19:41.339Z","0.9.2":"2026-06-10T04:28:24.947Z","0.10.0":"2026-06-10T17:01:52.053Z","0.10.1":"2026-06-10T17:33:27.747Z","0.11.0":"2026-06-10T17:53:15.224Z","0.11.1":"2026-06-10T18:39:12.483Z","0.12.0":"2026-06-11T14:54:27.306Z","0.13.0":"2026-06-19T15:43:48.548Z","0.13.1":"2026-06-19T15:57:17.940Z","0.14.0":"2026-06-19T16:32:10.330Z","0.14.1":"2026-06-19T16:45:27.759Z","0.15.0":"2026-06-19T18:09:05.186Z","0.16.0":"2026-06-19T18:48:11.945Z","0.18.0":"2026-06-20T10:25:17.671Z","0.19.0":"2026-06-21T14:59:47.510Z","0.20.0":"2026-06-21T16:34:57.637Z","0.20.1":"2026-07-03T20:25:24.028Z","0.21.0":"2026-07-21T20:59:22.633Z"},"bugs":{"url":"https://github.com/pbmagnet4/nlm-memory/issues"},"license":"Apache-2.0","homepage":"https://github.com/pbmagnet4/nlm-memory#readme","keywords":["ai","memory","mcp","claude-code","codex","hermes","local-first","recall","session-memory"],"repository":{"type":"git","url":"git+https://github.com/pbmagnet4/nlm-memory.git"},"description":"Local-first non-linear memory operating system for AI operators.","maintainers":[{"name":"echalupa","email":"echalupa@whtnxt.io"}],"readme":"<p align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"assets/banner-dark.svg\" />\n    <source media=\"(prefers-color-scheme: light)\" srcset=\"assets/banner-light.svg\" />\n    <img alt=\"nlm-memory — Local-first non-linear memory OS\" src=\"assets/banner-light.svg\" width=\"720\" />\n  </picture>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/nlm-memory\"><img src=\"https://img.shields.io/npm/v/nlm-memory?color=CB3837&label=npm&logo=npm\" alt=\"npm version\" /></a>\n  <a href=\"https://github.com/pbmagnet4/nlm-memory/actions/workflows/ci.yml\"><img src=\"https://github.com/pbmagnet4/nlm-memory/actions/workflows/ci.yml/badge.svg?branch=main\" alt=\"CI status\" /></a>\n  <a href=\"https://github.com/pbmagnet4/nlm-memory/blob/main/LICENSE\"><img src=\"https://img.shields.io/github/license/pbmagnet4/nlm-memory?color=blue\" alt=\"License: Apache 2.0\" /></a>\n  <a href=\"https://nodejs.org\"><img src=\"https://img.shields.io/node/v/nlm-memory?color=brightgreen\" alt=\"Node 20+\" /></a>\n  <img src=\"https://img.shields.io/badge/tests-1%2C700%2B%20passing-success\" alt=\"1,700+ tests passing\" />\n  <img src=\"https://img.shields.io/badge/MCP-9%20runtimes-8A2BE2\" alt=\"MCP across 9 runtimes\" />\n  <img src=\"https://img.shields.io/badge/hooks-4%20runtimes-7B2CBF\" alt=\"Hooks on 4 runtimes\" />\n  <img src=\"https://img.shields.io/badge/telemetry-none-informational\" alt=\"Zero telemetry\" />\n</p>\n\n<p align=\"center\">\n  <a href=\"#install\">Install</a> &middot;\n  <a href=\"#quick-start\">Quick Start</a> &middot;\n  <a href=\"#runtimes\">Runtimes</a> &middot;\n  <a href=\"#how-recall-works\">How recall works</a> &middot;\n  <a href=\"#agent-self-improvement-signals\">Signals</a> &middot;\n  <a href=\"#mcp-tools\">MCP</a> &middot;\n  <a href=\"#rest-api\">REST API</a> &middot;\n  <a href=\"#daily-digest\">Digest</a> &middot;\n  <a href=\"#configuration\">Config</a> &middot;\n  <a href=\"#security\">Security</a> &middot;\n  <a href=\"#vs-alternatives\">vs Alternatives</a>\n</p>\n\n---\n\n`nlm-memory` is a local-first memory layer for AI coding agents. It indexes every session from Claude Code, Codex CLI, OpenCode, Cursor, Windsurf, Hermes WebUI, Hermes Agent, Aider, and pi across nine runtimes into a single searchable store on your machine. Three properties no other memory layer ships together:\n\n1. **Cross-runtime reach.** One index, every adapter.\n2. **Editable timeline.** Sessions can be superseded by newer ones; entities can be retired. Patch history retroactively — no other tool lets you do this. See [docs/supersedence.md](docs/supersedence.md).\n3. **Strong R@5 baselines.** Two measurements, both committed: **97.2% R@5** on the public LongMemEval-S benchmark (hybrid mode, n=500, body-only, reproducible by anyone) and **90.0% R@5** on a real 14-month personal corpus (n=40 curated decision queries, keyword mode, 36/40 retrieved). No fine-tuning. The corpus labels were generated by DeepSeek V4; expect a lower number with a smaller local classifier. See [docs/benchmarks.md](docs/benchmarks.md) and [docs/methodology-recall-baseline.md](docs/methodology-recall-baseline.md).\n\n**Install-and-recovery validation.** A context-free agent (\"the stranger\") with no knowledge of NLM internals installed from HEAD and answered \"Why pgvector over Qdrant, and was anything reconsidered?\" correctly in under 6 minutes, recovering the full decision arc including a superseded session. See [reports/stranger-sim/2026-06-10-recovery-simulation.md](reports/stranger-sim/2026-06-10-recovery-simulation.md).\n\nEverything stays on your machine by default. No telemetry, no account. The classifier defaults to local (Ollama); if you opt into a cloud classifier (DeepSeek, OpenAI, Anthropic, OpenRouter, or any OpenAI-compatible endpoint), session transcripts are sent to that provider — see [Security](#security) for the exact data-flow.\n\n---\n\n## Install\n\n```sh\nnpm install -g nlm-memory\nnlm setup\n```\n\n`nlm setup` is the interactive first-run wizard. It picks your classifier + model, wires the runtimes you actually use, generates an `NLM_MCP_TOKEN`, hardens permissions on `~/.nlm/`, and installs the daemon supervisor for your platform. For headless environments (servers, CI, agents), use `nlm start` directly after initial setup — it boots the daemon without interactive prompts.\n\n| Platform | Daemon | Notes |\n|---|---|---|\n| **macOS** | LaunchAgent at `~/Library/LaunchAgents/com.github.pbmagnet4.nlm-memory.plist` | Auto-starts on login |\n| **Linux** | systemd user unit at `~/.config/systemd/user/nlm.service` | Headless servers: `loginctl enable-linger $USER` so the daemon survives logout |\n| **Windows** | Manual `nlm start` for now | Hook + MCP install paths are platform-aware; supervisor lands next release |\n\nStop or remove: `nlm uninstall`.\n\n---\n\n## Quick Start\n\nAfter `nlm setup` finishes, open **http://localhost:3940/ui** — the daemon is running. (If you changed `NLM_PORT`, substitute your port in all examples below.) A 30-second sanity check:\n\n```sh\nnlm recall \"what was that pgvector decision\"   # one-shot search from the shell\nnlm digest                                      # yesterday's activity at a glance\nnlm --version\n```\n\n---\n\n## Runtimes\n\nOne corpus across every adapter. MCP works against all nine. **Automatic context injection via hooks** ships on four (Claude Code, Codex CLI, Hermes Agent, pi.dev). Cursor, Windsurf, and OpenCode receive an optional static rules-file nudge (`nlm connect <runtime> --with-rules`) that instructs the agent to call `recall_sessions` on history-flavored prompts — those runtimes don't expose a pre-prompt hook today, so a rules nudge is the closest equivalent. Aider is ingest-only. `nlm connect` wires whichever surface the runtime supports:\n\n| Runtime | Connect | Sessions read from | Hooks |\n|---|---|---|---|\n| **Claude Code** | `nlm connect claude-code` | `~/.claude/projects/**/*.jsonl` | 6 hooks: UserPromptSubmit, SessionStart, SessionEnd, Stop, PreCompact, SubagentStart |\n| **Codex CLI** | `nlm connect codex` | `~/.codex/sessions/` | Marketplace plugin (UserPromptSubmit + Stop) |\n| **Hermes** (WebUI) | `nlm connect hermes` | `~/.hermes/sessions/` | MCP only (writes the MCP server block to `~/.hermes/config.yaml`) |\n| **Hermes Agent** (NousResearch CLI) | `nlm connect hermes-agent` | `~/.hermes/state.db` | 6 hooks: pre_llm_call, post_llm_call, on_session_start/end/finalize/reset (Python plugin in `~/.hermes/plugins/nlm-memory/`) |\n| **Cursor** | `nlm connect cursor [--with-rules]` | Cursor IDE chat DB | MCP + optional rules nudge (workspace `.cursor/rules/nlm-recall.mdc`) |\n| **Windsurf** | `nlm connect windsurf [--with-rules]` | Windsurf user dir | MCP + optional rules nudge (`~/.codeium/windsurf/memories/global_rules.md`) |\n| **OpenCode** | `nlm connect opencode [--with-rules]` | `~/.local/share/opencode/` | MCP + optional rules nudge (`~/.config/opencode/AGENTS.md`) |\n| **Aider** | adapter active (ingest only) | `AIDER_CHAT_HISTORY_FILE` | No native MCP, no hooks — sessions are read into the corpus but Aider cannot call recall back |\n| **pi.dev** | `nlm setup` (auto) or `nlm connect pi` | `~/.pi/agent/sessions/**/*.jsonl` | 1 hook: input (prepend via transform) |\n\n`nlm disconnect <runtime>` reverses any of the above.\n\n---\n\n## How recall works\n\nTwo delivery paths. They share the same index.\n\n### 1. Hooks — automatic context injection\n\nHooks deliver memory into agent context. Four runtimes ship hooks today: Claude Code (six-hook lifecycle), Codex CLI (UserPromptSubmit + Stop via the marketplace plugin), Hermes Agent (six parallel hooks), and pi.dev (one `input` hook via [nlm/](nlm/README.md)). Cursor, Windsurf, and OpenCode don't expose a pre-prompt hook today, so the `--with-rules` install path drops a static rules snippet that asks the agent to call `recall_sessions` itself on history-flavored prompts (see [docs/hooks.md](docs/hooks.md) for the snippet). Full lifecycle, modes, logging surface, and the daily liveness canary documented in [docs/hooks.md](docs/hooks.md).\n\nOn fresh installs, the **SessionStart** hook injects the pointer block at conversation open. The **UserPromptSubmit** (per-prompt) lane is off by default: measured pulls are 72.4% useful vs 18.2% ambient on the same judge (see [reports/usefulness/2026-07-03-consumption-measurements.md](reports/usefulness/2026-07-03-consumption-measurements.md)), so pull-first via the recall MCP tools is the recommended posture. Set `NLM_HOOK_PROMPT_RECALL=on` to re-enable per-prompt injection.\n\n**Claude Code** — six hooks written to `~/.claude/settings.json` via `nlm connect claude-code`:\n\n| Event | What NLM does | Mode |\n|---|---|---|\n| **UserPromptSubmit** | Score the prompt, silently prepend pointer block listing 0–3 most likely-relevant prior sessions | off by default (pull-first); set `NLM_HOOK_PROMPT_RECALL=on` to enable |\n| **SessionStart** | Cold-start agents (cron, background) hit this; same pointer-block delivery without a user prompt, plus a \"Known failure modes for this repo\" block when signals data exists (see Signals below) | live by default |\n| **SessionEnd** | Delete the per-conversation memo on session close so state files don't accumulate | always on |\n| **Stop** | Scan the model's response for citations of surfaced session IDs → updates `useful_hit_rate` and builds the reranker training substrate | always on |\n| **PreCompact** | Flush the per-conversation surfaced-IDs memo so post-compaction recalls aren't gated | always on |\n| **SubagentStart** | Record parent→subagent links so threads stay coherent across dispatches | always on |\n\n**Hermes Agent** — six hooks installed to `~/.hermes/plugins/nlm-memory/` via `nlm connect hermes-agent`. All calls are fire-and-forget except `pre_llm_call`, which returns a context string for injection:\n\n| Hook | What NLM does | Blocks turn? |\n|---|---|---|\n| **pre_llm_call** | POST prompt to daemon → inject pointer block of relevant prior sessions into context | yes (returns context string) |\n| **post_llm_call** | POST assistant response to daemon → citation scan, `useful_hit_rate` update | no |\n| **on_session_start** | Signal session open → daemon initialises per-session memo | no |\n| **on_session_end** | Signal session close → daemon flushes memo | no |\n| **on_session_finalize** | Signal transcript finalised → triggers async classifier run | no |\n| **on_session_reset** | Signal session reset → daemon clears per-session state | no |\n\n**pi.dev** — one `input` hook registered via `nlm connect pi`. Pi's extension API only exposes `input`, so transcript ingestion is handled separately by the passive adapter scanning `~/.pi/agent/sessions/`:\n\n| Hook | What NLM does | Blocks turn? |\n|---|---|---|\n| **input** | Score user message → if relevant sessions found, prepend pointer block to the prompt text via `{ action: \"transform\" }` | yes (returns transformed text) |\n\nAll three fail-open: any daemon error yields a clean exit and never blocks the model. Switch Claude Code hooks to **shadow** mode (log-only, no injection) with `NLM_HOOK_MODE=shadow`.\n\n### 2. MCP — explicit tools any agent can call\n\nContainer-hosted agents (Hermes WebUI, Codex CLI, etc.) hit the Streamable-HTTP `POST /mcp` endpoint with `Authorization: Bearer ${NLM_MCP_TOKEN}`. Stdio MCP is also supported for Claude Code via `~/.mcp.json`.\n\n---\n\n## Agent self-improvement signals\n\nNLM can ingest structured feedback events (`nlm.signal`) from any tool in your agent stack -- quality gates, eval runners, code reviewers, test harnesses -- and surface the aggregated failure patterns back to the agent at session start. Over time the agent learns which steps tend to fail for a given repo and model, without any external service.\n\n### Payload contract\n\n```jsonc\n{\n  \"v\": 1,\n  \"kind\": \"gate\" | \"eval\" | \"review\" | \"test\",  // required\n  \"outcome\": \"pass\" | \"fail\" | \"fix\" | \"exhausted\",  // required\n  \"producer\": \"quality-gate\",   // defaults to \"unknown\"\n  \"model\": \"qwen3-coder\",       // defaults to \"unknown\"\n  \"repo\": \"/path/or/name\",      // defaults to \"unknown\"\n  \"detail\": { \"step\": \"types\", \"files\": [\"a.ts\"], \"attempt\": 2 },\n  \"session\": \"<session-id-if-known>\",\n  \"ts\": \"2026-06-09T18:00:00.000Z\"  // defaults to now\n}\n```\n\n`kind` and `outcome` are the only required fields; invalid values are rejected with `400`. `install_scope` is stamped server-side -- do not send it.\n\n### Transports\n\n**HTTP (any producer)**\n\n```js\nawait fetch(\"http://localhost:3940/api/signal\", {\n  method: \"POST\",\n  headers: { \"content-type\": \"application/json\" },\n  body: JSON.stringify({\n    kind: \"gate\", producer: \"my-tool\", outcome: \"fail\",\n    model, repo, detail: { step: \"types\" }, ts: new Date().toISOString(),\n  }),\n});\n```\n\nRides the standard `/api/*` loopback gate. When the daemon runs with `NLM_UI_AUTH=cookie`, send `Authorization: Bearer $NLM_MCP_TOKEN`.\n\n**Session-embedded (pi.dev)**\n\nPi producers call `pi.appendEntry(\"nlm.signal\", payload)` inside an extension. This writes:\n\n```json\n{ \"type\": \"custom\", \"customType\": \"nlm.signal\", \"data\": { ...payload } }\n```\n\nto the session `.jsonl`. NLM's pi adapter recognises the `nlm.signal` customType and the scheduler drains it during normal ingest -- no HTTP call required.\n\n### Failure-mode recall\n\nNLM aggregates signals into failure modes per `(repo, model)` pair. A mode surfaces when its fail-rate reaches 20% or higher over at least 10 events in a trailing 14-day window. At session start the Claude Code `SessionStart` hook injects a \"Known failure modes for this repo\" block into the agent prompt automatically (repo-scoped). Any harness can fetch the same data directly:\n\n```\nGET /api/signals/failure-modes?repo=<repo>&model=<model>\n```\n\n### Inspection\n\n```sh\nnlm improve   # prints failure modes + recommendations for the current repo\n```\n\nThe UI **Recall** page also has a failure-modes panel. NLM surfaces findings and recommendations only -- it never acts on them.\n\n### Configuration and privacy\n\n| Var | Default | What |\n|---|---|---|\n| `NLM_SIGNALS_ENABLED` | `1` (on) | Set to `0` to disable signal ingest entirely |\n| `NLM_SIGNAL_RETENTION_DAYS` | `90` | Raw signals older than this are pruned |\n\nSignals are local-only. They are stamped with a per-install ID from `~/.nlm/install-id` and never leave the machine.\n\n### Reference producer\n\nThe pi `quality-gate` extension (in the `pi-sandbox` repo) is a ~10-line integration that emits `nlm.signal` per gate step and again on retry exhaustion. It is the canonical example of the session-embedded transport.\n\n### Code exemplar recall\n\nBuilt on the signals lane: a code-bearing signal — one carrying a `git_sha` or `detail.code` with a `pass`/`fail`/`fix` outcome — is captured as a **code exemplar**, a concrete chunk that worked (or didn't) for a task. At implementation time an agent calls `recall_code` to pull \"code that passed a gate like this,\" with positives ranked first and labeled negatives surfaced as anti-patterns.\n\nOff by default — enable with `NLM_CODE_EXEMPLARS_ENABLED=1`. Capture rides the existing `/api/signal` path (no separate producer wiring); retrieval is exposed on every transport: the `recall_code` MCP tool (stdio and `/mcp`), `GET /api/recall-code`, and the `nlm recall-code \"<task>\"` CLI. Code embeddings use CodeRankEmbed (`hf.co/awhiteside/CodeRankEmbed-Q8_0-GGUF` via Ollama, 768-dim; override with `NLM_CODE_EMBED_MODEL`). Works on both the SQLite and Postgres+pgvector backends.\n\n---\n\n## MCP Tools\n\n| Tool | What it does |\n|---|---|\n| `recall_sessions` | Hybrid keyword+semantic search across the full session corpus. Returns label, started_at, snippet, match score, `status`, and `superseded_by`. Superseded sessions are included (down-ranked, badged) so a decision investigation sees overturned reasoning; prefer the `superseded_by` successor for current state. |\n| `get_session` | Full body of one session by ID. Includes enriched `supersedes` / `supersededBy` links (id + label + summary) so chasing corrected facts doesn't need a second round-trip. |\n| `recall_facts` | Search structured facts: decisions, open questions, project state. Filterable by entity and kind. |\n| `get_fact_history` | Full version history of one fact — how a decision evolved over time. |\n| `cite_session` | Mark a session as explicitly referenced. Drives the `useful_hit_rate` metric and the future learned reranker. |\n\n**When to call `cite_session`:** Call it when a surfaced session actually changes what you say — you referenced it explicitly, it corrected a decision, or you called `get_session` to read the full body. Do not call it for sessions you scanned and discarded. The Stop hook auto-detects citation when a session ID appears verbatim in your response; `cite_session` covers the deliberate case where the session influenced your reasoning without being quoted directly. Both paths feed the same signal loop.\n\n| `mark_superseded` | Retroactively retire a stale session and point it at the newer one that replaces it. The editable-timeline write path — see [docs/supersedence.md](docs/supersedence.md). |\n| `recall_code` | Semantic search over captured code exemplars — \"code that passed/failed a gate like this task.\" Returns positives plus labeled negatives. Registered only when `NLM_CODE_EXEMPLARS_ENABLED=1`. |\n\n---\n\n## REST API\n\nDaemon binds `127.0.0.1:3940` (override with `NLM_PORT`). Selected endpoints:\n\n| Method | Path | Auth | Purpose |\n|---|---|---|---|\n| GET | `/api/health` | Host-only | Liveness probe; returns `{version, status, service}` |\n| GET | `/api/recall` | Bearer/Origin | Hybrid recall — `?q=`, `?mode=keyword\\|semantic\\|hybrid`, `?limit=`, `?include_superseded=true` (default off; opt-in to surface overturned sessions down-ranked, badged with `superseded_by`). Each result carries `status` + `superseded_by`. |\n| GET | `/api/recall/stats` | Bearer/Origin | 7-day stats: total, hit_rate, useful_hit_rate, top queries |\n| GET | `/api/recall/recent` | Bearer/Origin | Last N recall events for live tail/telemetry |\n| GET | `/api/recall/cite-stats` | Bearer/Origin | Citation rate over `?days=` |\n| GET | `/api/session/:id` | Bearer/Origin | Full session body + supersedence links |\n| GET | `/api/recall/facts` | Bearer/Origin | Structured fact search; includes `hint` field when empty |\n| GET | `/api/facts/history` | Bearer/Origin | Version chain for one fact |\n| GET | `/api/dataset` | Bearer/Origin | Full session list for the UI dataset view |\n| GET | `/api/live/recent-writes` | Bearer/Origin | Live tail of ingested sessions |\n| GET | `/api/data/backup` | Bearer/Origin | Streaming SQLite snapshot download |\n| POST | `/api/data/restore` | Bearer/Origin | Stage a snapshot for apply-on-restart |\n| POST | `/api/citation/explicit` | Bearer/Origin | Log an explicit session citation (the route backing the `cite_session` MCP tool; payload `{id, conversation_id?, reason?}`) |\n| POST | `/api/hook/pre-compact` | Bearer/Origin | Hook endpoint; flushes the surfaced-IDs memo |\n| ALL | `/mcp` | Bearer required | Streamable-HTTP MCP transport for container agents |\n| GET | `/api/recall-code` | Bearer/Origin | Semantic code-exemplar search — `?q=`, `?repo=`, `?lang=`, `?k=`, `?negatives=0`. Requires `NLM_CODE_EXEMPLARS_ENABLED=1`. |\n| POST | `/api/exemplar` | Bearer/Origin | Direct code-exemplar push (capture also happens automatically from code-bearing signals). Requires the flag. |\n\n`/api/*` is gated by three layers: 127.0.0.1 Host check (defeats DNS rebinding), Origin check when the browser sends one (defeats cross-origin drive-by), Bearer fallback when Origin is absent (server-to-server clients).\n\n---\n\n## Daily digest\n\nOnce-a-day summary of yesterday's activity:\n\n```sh\nnlm digest                  # print to stdout\nnlm digest --telegram       # post to Telegram (TELEGRAM_BOT_TOKEN + TELEGRAM_CHAT_ID)\n```\n\nReports 24h real-traffic (probes filtered), 7d hit_rate + useful_hit_rate, top 5 queries, and a **`WARN hook silent`** alert when Claude Code ran yesterday but no live hook fires were logged. That alert is the canary for post-install drift — node upgrades, `settings.json` hand-edits, and `dist/` moves silently break the hook while Claude Code keeps working. Setup-time smoke tests can't catch this; only the daily correlation can.\n\nWire to cron for a morning push:\n\n```cron\n0 7 * * *  nlm digest --telegram >> ~/.nlm/logs/digest.log 2>&1\n```\n\nWhen the daemon is unreachable, `--telegram` still fires — posts a \"daemon unreachable\" alert instead of failing silently.\n\n---\n\n## What's inside the UI\n\nOpen `http://localhost:3940/ui` after the daemon starts.\n\n| Page | What it shows |\n|---|---|\n| **Live** | Sessions being written in real time, recent reads, recent decisions |\n| **Pulse** | System health — coherence, runtimes, stale entities, recent sessions |\n| **River** | Full session timeline with density controls + superseded-lane visualization |\n| **Thread** | Per-entity conversation history with runtime filters and ←/→ navigation |\n| **Search** | Keyword, semantic, or hybrid recall with match snippets and field-origin tags |\n| **Recall** | Adoption telemetry — useful_hit_rate, source breakdown, query log |\n| **Settings** | Sources, providers, classifier, data backup/restore |\n\n---\n\n## Pipeline\n\nWhat happens when an AI runtime writes a session and you later recall it:\n\n```\ningest:  runtime transcript (jsonl/sqlite)\n   -> adapter parses runtime-specific format\n   -> classifier (Ollama local by default; DeepSeek / OpenAI / Anthropic / OpenRouter / OpenAI-compatible if you opt in) extracts label + entities + decisions + open questions\n   -> embedder (nomic-embed-text via Ollama) computes 768-dim vector\n   -> SQLite canonical store + FTS5 keyword index + sqlite-vec ANN index\n\nrecall: prompt / query\n   -> tokenize + match scoring (label x3, entity-exact x4, decision x2, summary x1, phrase-bonus +5)\n   -> hybrid: BM25-style keyword + vector cosine, fused by score\n   -> select-top-N gate (per-fire cap 3, per-conversation cap 10)\n   -> pointer block prepended to model context (hooks) or returned as tool result (MCP)\n```\n\n---\n\n## Configuration\n\n### Environment variables\n\n| Var | Default | What |\n|---|---|---|\n| `NLM_PORT` | `3940` | Daemon bind port (loopback only) |\n| `NLM_DB_PATH` | `~/.nlm/canonical.sqlite` | SQLite canonical store location |\n| `NLM_HOOK_MODE` | `live` | `live` injects pointer block; `shadow` logs without injecting |\n| `NLM_HOOK_RECALL_TIMEOUT_MS` | `4000` | Hook-side budget for the daemon recall call. Must stay below `NLM_HOOK_DEADLINE_MS` and above the daemon's embed deadline or the pointer block silently empties (#396). |\n| `NLM_HOOK_DEADLINE_MS` | `6000` | Outer wall-clock deadline for the recall + gate stages of a hook fire. Fail-open on expiry. |\n| `NLM_HOOK_PROMPT_RECALL` | `(unset = off)` | Per-prompt ambient recall. Off by default (pull-first); set `on` to inject a pointer block on every prompt. `off` disables explicitly. |\n| `NLM_HOOK_LOG` | `~/.nlm/hook-log.jsonl` | Hook fire log; powers digest's liveness alert |\n| `NLM_USEFUL_HIT_LOG` | `~/.nlm/useful-hit-log.jsonl` | Citation/useful-hit ledger |\n| `NLM_QUERY_LOG` | `~/.nlm/query-log.jsonl` | Recall query telemetry |\n| `NLM_CITATION_LOG` | `~/.nlm/citation-log.jsonl` | Stop-hook citation events |\n| `NLM_MISS_LOG` | `~/.nlm/miss-log.jsonl` | Stop-hook miss events — sessions the agent explicitly fetched via `get_session`/`cite_session` that the hook never surfaced. Reviewed via `nlm misses`. |\n| `NLM_MISS_LOG_ENABLED` | `true` | Set to `0` to disable miss-log emission entirely. |\n| `NLM_MCP_TOKEN` | auto-generated | 256-bit bearer for `/api/*` (non-browser) and `/mcp` |\n| `NLM_MCP_CONFIG` | `~/.mcp.json` | Path the `connect`/`disconnect` commands modify |\n| `NLM_CLASSIFIER` | `ollama` | `ollama` (local, default), `deepseek`, `openai`, `anthropic`, `openrouter`, or `openai-compatible` |\n| `NLM_CLASSIFIER_MODEL` | `qwen3.5:4b` | Model id for the chosen provider. `qwen3.5:4b` (Q4_K_M, 4.7B) is the recommended local default. For measured tier expectations, see [docs/classifier-tiers.md](docs/classifier-tiers.md). |\n| `NLM_OLLAMA_URL` | `http://localhost:11434` | Override Ollama endpoint |\n| `NLM_CODE_EXEMPLARS_ENABLED` | — | Set to `1` to enable the code-exemplar lane (capture from code-bearing signals + the `recall_code` tool/routes). Off by default. |\n| `NLM_CODE_EMBED_MODEL` | `hf.co/awhiteside/CodeRankEmbed-Q8_0-GGUF` | Ollama model for code-exemplar embeddings (768-dim). Only used when the exemplar lane is enabled. |\n| `NLM_ADAPTERS` | all | Comma-separated allowlist of adapters to enable |\n| `DEEPSEEK_API_KEY` | — | Required only when classifier=deepseek |\n| `NLM_DISABLE_UPDATE_CHECK` | — | Set to `1` to disable the daily npm-registry update check |\n| `NLM_RECALL_DECAY_HALF_LIFE_DAYS` | `180` | Half-life of the recency multiplier applied to recall scores. Older sessions score lower; defaults to 6 months. Set to `0` to disable recency weighting entirely. |\n| `NLM_RECALL_DECAY_FLOOR` | `0.25` | Lower bound on the recency multiplier — even ancient sessions retain at least 25% of their raw score so a perfect-match old session can still surface. |\n| `NLM_RECALL_REWRITE_DEFAULT` | `true` | Default value for the MCP `recall_sessions` `rewrite` parameter. When true, the service runs an LLM rewrite on vague natural-language queries before search. The HTTP hook caller bypasses rewrite regardless (hot-path protection). |\n| `NLM_RECALL_REWRITE_TIMEOUT_MS` | `5000` | Per-call timeout for the rewrite LLM. Separate from the classifier timeout. |\n| `NLM_FACT_CORROBORATION_BOOST_CAP` | `2.0` | Maximum multiplicative boost applied to fact recall scores based on how many sessions corroborate the same `(subject, predicate, value)`. Log-scale: 1 corroboration is 1.0×, 10 is 2.0× (capped). Set to `1.0` to disable the boost — the count is still returned on each hit. |\n| `NLM_HOOK_INJECT_FACTS` | `true` | Whether to attach high-confidence facts about top-hit entities to the pointer block injected by the hook. Set to `0` to disable globally. |\n| `NLM_HOOK_FACT_LIMIT` | `5` | Maximum number of facts in the \"Known facts\" section of the pointer block. |\n| `NLM_HOOK_FACT_MIN_CORROBORATION` | `2` | Minimum number of sessions that must have asserted a fact before it qualifies for hook injection. Set to `1` to include single-source facts. |\n| `NLM_HOOK_FACT_MIN_CONFIDENCE` | `0.7` | Minimum classifier confidence for a fact to qualify for hook injection. |\n| `TELEGRAM_BOT_TOKEN` / `TELEGRAM_CHAT_ID` | — | Required for `nlm digest --telegram` |\n\n### Changing the classifier from the UI\n\nThe CLI env-vars above are one path; the running UI is the other. **Settings → Providers** is a full CRUD list of LLM endpoints (Ollama, DeepSeek, OpenAI, Anthropic, OpenRouter, or any OpenAI-compatible endpoint such as LM Studio, llama.cpp, vLLM, text-generation-webui). Click **Add provider**, point it at your local server, hit **Save & test**. Then in **Settings → Classifier**, pick that provider and model. No env-var editing required, and the DeepSeek row can be disabled or deleted from the same screen.\n\nAdapter source paths can be overridden individually: `NLM_CLAUDE_PROJECTS_PATH`, `NLM_CODEX_CONFIG`, `NLM_CURSOR_DB_PATH`, `NLM_HERMES_SESSIONS_PATH`, `NLM_HERMES_AGENT_DB_PATH`, `NLM_WINDSURF_USER_DIR`, `OPENCODE_DB_PATH`, `PI_SESSIONS_PATH`, `AIDER_CHAT_HISTORY_FILE`.\n\n### Config file\n\n`~/.nlm/.env` — autoloaded by every CLI command. Mode `0600`, owned by you, never readable by other users. The setup wizard writes the initial keys; you can edit it directly.\n\n### Ports\n\n| Port | Process | Bind | Override |\n|---|---|---|---|\n| `3940` | Daemon HTTP API + MCP | `127.0.0.1` only | `NLM_PORT` |\n| `11434` | Ollama (embedding + local classifier) | localhost | `NLM_OLLAMA_URL` |\n\n---\n\n## Security\n\nNLM is local-first by design, but \"local-first\" is not \"local-only\" — read this section before picking a classifier.\n\n**Daemon hardening (always on):**\n\n- Binds to `127.0.0.1` only — never `0.0.0.0`\n- Enforces Host + Origin checks on `/api/*` to defeat DNS rebinding and cross-origin drive-by\n- Generates a 256-bit `NLM_MCP_TOKEN` on first run, persists to `~/.nlm/.env` (mode `0600`); non-browser clients authenticate with `Authorization: Bearer ${NLM_MCP_TOKEN}` compared with `timingSafeEqual`\n- Recursively enforces `0700` on `~/.nlm/` and `0600` on its contents on every start\n- Optional opt-in UI cookie auth (`NLM_UI_AUTH=cookie`) with HMAC-derived cookie value and nonce-based bootstrap (token never appears in a URL)\n\n**Outbound network traffic — exhaustive list:**\n\n| Destination | When | What data leaves |\n|---|---|---|\n| Configured classifier endpoint | Every new session is classified | Up to ~30K chars of the session transcript (prompts, responses, code snippets — whatever is in the transcript). If the classifier is **Ollama (default)** the destination is `localhost:11434` and nothing leaves the machine. If you opted into DeepSeek / OpenAI / Anthropic / OpenRouter / any OpenAI-compatible endpoint, the transcript is POSTed to that vendor. |\n| Ollama `localhost:11434` | Every new session | 768-dim embedding request (local) |\n| `registry.npmjs.org` | Once per 24h | Anonymous `GET /nlm-memory/latest` for update notifications. Cached at `~/.nlm/update-check.json`. Disable with `NLM_DISABLE_UPDATE_CHECK=1`. |\n| `api.telegram.org` | Only when `nlm digest --telegram` is invoked | Digest content |\n| AI runtime transcript files | Continuous | Read-only filesystem reads |\n\nNo analytics SDK. No crash reporter. No vendor ping beyond the four rows above.\n\n**Honest caveats — known limitations:**\n\n- **Cloud-classifier data egress.** A \"cloud\" classifier (DeepSeek, OpenAI, Anthropic, OpenRouter) by definition sees your session content. Anything pasted into a transcript — API keys, client names, internal URLs — is sent to that vendor under their data-use terms. The setup wizard warns you before you pick one. The default is Ollama for this reason.\n- **Provider API keys are stored in plaintext in SQLite today** (`providers.api_key`, in `~/.nlm/canonical.sqlite`). The file is `0600`, in a `0700` directory, owned by your user — so any process running as your user can read it. OS-keychain migration is on the roadmap; until then, treat the SQLite file like a `.env` file.\n- **The classifier is fed untrusted indexed content.** Sessions written by AI runtimes can contain prompt-injection attempts. The classifier output is structured (label, entities, decisions, open questions) and never executed, but if you wire NLM to an agent that *acts* on classifier output, model that as untrusted input.\n- **The hook fails open.** Any error in the recall hook yields a clean exit so it can't block your model. This means a silently-broken hook is possible — the daily digest's `WARN hook silent` canary is the detection path.\n\nReport vulnerabilities via [SECURITY.md](SECURITY.md).\n\n### Remote access\n\nThe daemon binds to `127.0.0.1`. If you want to reach the UI from another device — phone, second laptop — don't change the bind. Put a tunnel in front instead.\n\n**Tailscale (recommended for personal use).** Run once on the daemon host:\n\n```sh\ntailscale serve --bg http://localhost:3940\n```\n\nThen visit `https://<machine>.<tailnet>.ts.net/ui/` from any tailnet device. Tailscale Serve rewrites the upstream `Host` header to `localhost:3940`, so the loopback check passes without any nlm-memory config. WireGuard + your tailnet ACLs are the auth layer — for a single-user tailnet this is strictly stronger than `NLM_UI_AUTH=cookie`, so leave that off.\n\n**If you do enable `NLM_UI_AUTH=cookie`** (defense in depth, or you've added untrusted devices to your tailnet), bootstrapping a cookie from a remote device needs one extra step. `nlm ui` only opens a browser on the daemon host; for the remote browser:\n\n```sh\nssh <daemon-host> 'nlm ui --print'   # mints a nonce, prints the URL\n# Paste the URL into the remote browser within ~60s (nonce TTL)\n```\n\n**Do not expose the daemon directly to the public internet.** The cookie is a shared-HMAC speed bump, not real public-internet auth. If you absolutely must, put it behind something with real authentication (Cloudflare Access, Tailscale Funnel with auth in front, etc.).\n\n---\n\n## Upgrading from v0.4.x\n\n```sh\nnpm update -g nlm-memory\n```\n\nOld installs have `NLM_HOOK_MODE=shadow` hardcoded in `~/.claude/settings.json` — shadow mode is silent, so re-run `nlm hook install` to switch to live recall injection. Permissions and `NLM_MCP_TOKEN` self-heal on the next `nlm start`.\n\n---\n\n## vs Alternatives\n\n| | **nlm-memory** | mem0 | Letta / MemGPT | Built-in (`CLAUDE.md`) |\n|---|---|---|---|---|\n| **Unit of memory** | Whole session + extracted markers | Atomic facts | Graph nodes + edges | Static file |\n| **Cross-runtime** | 9 adapters, one corpus | Per-app SDK integration | Per-app SDK integration | Per-runtime config |\n| **Editable timeline** | Sessions can be superseded, retired, aborted | Append-only fact log | Graph edits | Manual file edits |\n| **R@5 baseline** | 97.2% public benchmark; 90.0% real 14mo corpus ([docs/benchmarks.md](docs/benchmarks.md)) | published varies | published varies | n/a |\n| **External deps** | SQLite + Ollama (local) | Postgres or Qdrant | Postgres | none |\n| **Hosted offering** | none — local only | yes | yes | n/a |\n| **Account required** | none | yes (cloud tier) | yes | none |\n| **Telemetry** | none | yes | yes | none |\n| **License** | Apache 2.0 | Apache 2.0 | Apache 2.0 | — |\n\nThe defining property is the editable timeline. mem0 and Letta append; NLM lets you reach back and mark a session as superseded by a newer one, retire one as no-longer-relevant, or flag one as aborted-mid-flight. The next recall surfaces the corrected version, not the stale one. A claim from 6 months ago can be patched today.\n\n---\n\n## Docs\n\n- [docs/supersedence.md](docs/supersedence.md) — the editable timeline: statuses, what gets recorded when, how supersedence flows through recall\n- [docs/hooks.md](docs/hooks.md) — full hook lifecycle, modes, selection logic, pointer-block format, logging surface, daily liveness canary\n- [docs/corpus-retention.md](docs/corpus-retention.md) - corpus monitor, size thresholds, and the entity dedup runbook\n- [docs/benchmarks.md](docs/benchmarks.md) - all three measurement dimensions: retrieval quality (LongMemEval-S + personal corpus), classifier quality, and consumption quality\n- [docs/methodology-recall-baseline.md](docs/methodology-recall-baseline.md) — how both R@5 baselines are measured and how to run LongMemEval-S on your own machine\n- [SECURITY.md](SECURITY.md) — threat model + responsible disclosure\n\n---\n\n## Development\n\n```sh\ngit clone https://github.com/pbmagnet4/nlm-memory\ncd nlm-memory\nnpm install\nnpm run build          # compile dist/ — commit the result, it ships in the repo\nnpm run dev            # hot-reload daemon\nnpm run ui:dev         # hot-reload UI at localhost:5173 (proxies /api to :3940)\nnpm test               # 1,700+ tests across 245 files\nnpm run typecheck\nnode dist/cli/nlm.js doctor    # pre-publish: verify DB invariants (exit 1 on violations)\n```\n\nArchitecture: hexagonal. `src/core/` knows about ports (interfaces), not adapters. `src/cli/nlm.ts` is the composition root — the only file that wires concrete implementations (`SqliteSessionStore`, `OllamaClient`, `Hono`, `StdioServerTransport`). Adapters in `src/core/adapters/` are one-way: they parse runtime-specific session formats into NLM's canonical shape; nothing in the runtime sees NLM.\n\n`dist/` is built on install via the `prepare` script (runs automatically on `npm install` from git or registry) and packed into the published tarball via the `files` field. Not tracked in git.\n\n---\n\n## License\n\nApache 2.0 — see [LICENSE](LICENSE).\n","readmeFilename":"README.md"}