{"_id":"@aperdomoll90/ledger-ai","_rev":"11-a12f0e64987a3e9c363b1c0f531634f2","name":"@aperdomoll90/ledger-ai","dist-tags":{"latest":"1.4.2"},"versions":{"1.0.0":{"name":"@aperdomoll90/ledger-ai","version":"1.0.0","keywords":["ai","memory","knowledge-base","rag","semantic-search","mcp","supabase","pgvector","claude","agent","persona","sync"],"author":{"name":"Adrian Perdomo"},"license":"ISC","_id":"@aperdomoll90/ledger-ai@1.0.0","maintainers":[{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"}],"homepage":"https://github.com/aperdomoll90/ledger#readme","bugs":{"url":"https://github.com/aperdomoll90/ledger/issues"},"bin":{"ledger":"dist/cli.js"},"dist":{"shasum":"e19e062049bd111c2f3cf7327dde973b6718d1d4","tarball":"https://registry.npmjs.org/@aperdomoll90/ledger-ai/-/ledger-ai-1.0.0.tgz","fileCount":37,"integrity":"sha512-SqSYnkA4gRhXFkRvgwlo+rMLP7l34EsBm6GzFfX4k2B2divPXhjzn6LSeLZDGNuqDtzVyMSRjyz/5nBtDWiPWw==","signatures":[{"sig":"MEYCIQCCvTFZeBwYpQWNlZzOA1txwfOaLKEaB/pCSMPkis9HiwIhAOkpk223aZoRcAbPFG+Zn1VvauKOO+T8DwspABS98EBI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98526},"type":"module","engines":{"node":">=20"},"scripts":{"test":"vitest run","build":"tsc && cp -r src/migrations dist/migrations && cp -r src/hooks dist/hooks && chmod +x dist/cli.js dist/hooks/*.sh","start":"tsx src/mcp-server.ts","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"},"repository":{"url":"git+https://github.com/aperdomoll90/ledger.git","type":"git"},"_npmVersion":"11.8.0","description":"AI identity and memory system — portable persona, knowledge sync, semantic search across agents and devices","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zod":"^4.3.6","dotenv":"^17.3.1","openai":"^6.29.0","commander":"^14.0.3","@supabase/supabase-js":"^2.99.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.0","typescript":"^5.9.3","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger-ai_1.0.0_1773706285686_0.7825967743844804","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aperdomoll90/ledger-ai","version":"1.0.1","keywords":["ai","memory","knowledge-base","rag","semantic-search","mcp","supabase","pgvector","claude","agent","persona","sync"],"author":{"name":"Adrian Perdomo"},"license":"ISC","_id":"@aperdomoll90/ledger-ai@1.0.1","maintainers":[{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"}],"homepage":"https://github.com/aperdomoll90/ledger#readme","bugs":{"url":"https://github.com/aperdomoll90/ledger/issues"},"bin":{"ledger":"dist/cli.js"},"dist":{"shasum":"64636709a5f5fd213b551040e98f9e9a01831c2e","tarball":"https://registry.npmjs.org/@aperdomoll90/ledger-ai/-/ledger-ai-1.0.1.tgz","fileCount":38,"integrity":"sha512-em4IbmJ15BkJlZTZKIA8jx2Du41N/FNp6DEGd+16bSA2VANj7gVXb5idlOwkv26nEjKnbu2EFbybjV2tF9NDcw==","signatures":[{"sig":"MEUCIQD2LR5IlYehAWoHqKAa5Rq3bXEe0d1HRlOpUr45OMczbAIgLWOuyDN8KZtVLdXjQxdo5MDHp7JOaKM/Hlb4vo2zoak=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118552},"type":"module","engines":{"node":">=20"},"gitHead":"c8298c8ff8b3f73a0cc634fdbce11dbb8823ee92","scripts":{"test":"vitest run","build":"tsc && cp -r src/migrations dist/migrations && cp -r src/hooks dist/hooks && chmod +x dist/cli.js dist/hooks/*.sh","start":"tsx src/mcp-server.ts","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"},"repository":{"url":"git+https://github.com/aperdomoll90/ledger.git","type":"git"},"_npmVersion":"11.8.0","description":"AI identity and memory system — portable persona, knowledge sync, semantic search across agents and devices","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zod":"^4.3.6","dotenv":"^17.3.1","openai":"^6.29.0","commander":"^14.0.3","@supabase/supabase-js":"^2.99.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.0","typescript":"^5.9.3","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger-ai_1.0.1_1773759796606_0.5129241271345768","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@aperdomoll90/ledger-ai","version":"1.0.2","keywords":["ai","memory","knowledge-base","rag","semantic-search","mcp","supabase","pgvector","claude","agent","persona","sync"],"author":{"name":"Adrian Perdomo"},"license":"ISC","_id":"@aperdomoll90/ledger-ai@1.0.2","maintainers":[{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"}],"homepage":"https://github.com/aperdomoll90/ledger#readme","bugs":{"url":"https://github.com/aperdomoll90/ledger/issues"},"bin":{"ledger":"dist/cli.js"},"dist":{"shasum":"f27f764d1079fb61c0941fbda6762c05b8a58043","tarball":"https://registry.npmjs.org/@aperdomoll90/ledger-ai/-/ledger-ai-1.0.2.tgz","fileCount":38,"integrity":"sha512-0N7X02Kr5zpyHCx8Exk0C5TbeMoJzLZJQMJJHNH3SbS+v8QJu72c+mm/KPaXqLaQ5HCR8xl8bDr+qv4uZizx8A==","signatures":[{"sig":"MEYCIQDopqimmTkIPpN9LPjvvcwRB31dcWeMREUZDgkmegi+FAIhAP8tP5whUH1JtlqFDb6phzkaGpxseUHUvbClO+lKNeTv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118785},"type":"module","engines":{"node":">=20"},"gitHead":"e432d50c1831ad8c8ae7501f7542635ee2b8d053","scripts":{"test":"vitest run","build":"tsc && cp -r src/migrations dist/migrations && cp -r src/hooks dist/hooks && chmod +x dist/cli.js dist/hooks/*.sh","start":"tsx src/mcp-server.ts","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"},"repository":{"url":"git+https://github.com/aperdomoll90/ledger.git","type":"git"},"_npmVersion":"11.8.0","description":"AI identity and memory system — portable persona, knowledge sync, semantic search across agents and devices","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zod":"^4.3.6","dotenv":"^17.3.1","openai":"^6.29.0","commander":"^14.0.3","@supabase/supabase-js":"^2.99.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.0","typescript":"^5.9.3","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger-ai_1.0.2_1773761309284_0.9319574756213316","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@aperdomoll90/ledger-ai","version":"1.1.0","keywords":["ai","memory","knowledge-base","rag","semantic-search","mcp","supabase","pgvector","claude","agent","persona","sync"],"author":{"name":"Adrian Perdomo"},"license":"ISC","_id":"@aperdomoll90/ledger-ai@1.1.0","maintainers":[{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"}],"homepage":"https://github.com/aperdomoll90/ledger#readme","bugs":{"url":"https://github.com/aperdomoll90/ledger/issues"},"bin":{"ledger":"dist/cli.js"},"dist":{"shasum":"17a5035c7b20f4b0b013fd527b2c789a591ce638","tarball":"https://registry.npmjs.org/@aperdomoll90/ledger-ai/-/ledger-ai-1.1.0.tgz","fileCount":46,"integrity":"sha512-BUOxX3VcXdeWCMx7NL6E4JYnFUbSpIaiaij19RgWJSOuM2aU3gTCuYsf5Z6vDSU0jnhr63uAG1m+ZKC7v4Vbcg==","signatures":[{"sig":"MEUCIFJapK2j5OtsgWp21cH8aApIRVrh7U99wukoQ+atagIyAiEAkZdsAq+09uCyrgn08Y/x+RVPZ87+yxIp+Njns5S2p40=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168368},"type":"module","engines":{"node":">=20"},"gitHead":"532465dfc38f7ef97d02f7d14e64c8a2e55eed2a","scripts":{"test":"vitest run","build":"tsc && cp -r src/migrations dist/migrations && cp -r src/hooks dist/hooks && chmod +x dist/cli.js dist/hooks/*.sh","start":"tsx src/mcp-server.ts","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"},"repository":{"url":"git+https://github.com/aperdomoll90/ledger.git","type":"git"},"_npmVersion":"11.8.0","description":"AI identity and memory system — portable persona, knowledge sync, semantic search across agents and devices","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zod":"^4.3.6","dotenv":"^17.3.1","openai":"^6.29.0","commander":"^14.0.3","@supabase/supabase-js":"^2.99.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.0","typescript":"^5.9.3","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger-ai_1.1.0_1773939628132_0.979931725529537","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@aperdomoll90/ledger-ai","version":"1.1.1","keywords":["ai","memory","knowledge-base","rag","semantic-search","mcp","supabase","pgvector","claude","agent","persona","sync"],"author":{"name":"Adrian Perdomo"},"license":"ISC","_id":"@aperdomoll90/ledger-ai@1.1.1","maintainers":[{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"}],"homepage":"https://github.com/aperdomoll90/ledger#readme","bugs":{"url":"https://github.com/aperdomoll90/ledger/issues"},"bin":{"ledger":"dist/cli.js"},"dist":{"shasum":"ad4bfde742aae7688d26897ff65acf2af31a8d6f","tarball":"https://registry.npmjs.org/@aperdomoll90/ledger-ai/-/ledger-ai-1.1.1.tgz","fileCount":46,"integrity":"sha512-QyJpcq7uiUNpaZypGkmtFoMkQeDzTRxHBqV6QG3JXLuq0Mud3N9IM0CSrPC/IStgbSHBPN3YUgOZw/a28W0oCA==","signatures":[{"sig":"MEQCIAT2RdVkz1fpr+bfntNyS/rXlB3Rc7F2am2MUVGfJ5ExAiBda54t8lzpQfVwhg3i0VST+FSlwK9v+jb5HCX7TqFxbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168504},"type":"module","engines":{"node":">=20"},"gitHead":"05fa1155fc24ecbd028a6651c518183e8b9c9367","scripts":{"test":"vitest run","build":"tsc && cp -r src/migrations dist/migrations && cp -r src/hooks dist/hooks && chmod +x dist/cli.js dist/hooks/*.sh","start":"tsx src/mcp-server.ts","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"},"repository":{"url":"git+https://github.com/aperdomoll90/ledger.git","type":"git"},"_npmVersion":"11.8.0","description":"AI identity and memory system — portable persona, knowledge sync, semantic search across agents and devices","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zod":"^4.3.6","dotenv":"^17.3.1","openai":"^6.29.0","commander":"^14.0.3","@supabase/supabase-js":"^2.99.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.0","typescript":"^5.9.3","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger-ai_1.1.1_1773941369988_0.6931156786270649","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@aperdomoll90/ledger-ai","version":"1.1.2","keywords":["ai","memory","knowledge-base","rag","semantic-search","mcp","supabase","pgvector","claude","agent","persona","sync"],"author":{"name":"Adrian Perdomo"},"license":"ISC","_id":"@aperdomoll90/ledger-ai@1.1.2","maintainers":[{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"}],"homepage":"https://github.com/aperdomoll90/ledger#readme","bugs":{"url":"https://github.com/aperdomoll90/ledger/issues"},"bin":{"ledger":"dist/cli.js"},"dist":{"shasum":"7fd7035b2e0d9d54314feaea7ba67b345b505f9c","tarball":"https://registry.npmjs.org/@aperdomoll90/ledger-ai/-/ledger-ai-1.1.2.tgz","fileCount":46,"integrity":"sha512-6Tx4TGOwOMTp0azAH0p4cpclev/fz9FvQNO8KkeLEB/PNKm3T/O8RQMDAqGRsHSDoll1YbtbHLOMcWSTx3pCRw==","signatures":[{"sig":"MEQCIGwQso84FWOhfyi8RpVG9ZkihgS6ZSaZTTkFY8xfC1fNAiA5ZoawpTZqzz2F0ncgdRjnwgiev1eK/QIvG5OGi6XDDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179234},"type":"module","engines":{"node":">=20"},"gitHead":"9792425df12c59183b8d1f2c8dfbc74433f624a1","scripts":{"ship":"bash scripts/ship.sh","test":"vitest run","build":"tsc && cp -r src/migrations dist/migrations && cp -r src/hooks dist/hooks && chmod +x dist/cli.js dist/hooks/*.sh","start":"tsx src/mcp-server.ts","release":"npm version patch && npm publish --access public","typecheck":"tsc --noEmit","preversion":"npm run typecheck && npm test","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"},"repository":{"url":"git+https://github.com/aperdomoll90/ledger.git","type":"git"},"_npmVersion":"11.8.0","description":"AI identity and memory system — portable persona, knowledge sync, semantic search across agents and devices","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zod":"^4.3.6","dotenv":"^17.3.1","openai":"^6.29.0","commander":"^14.0.3","@supabase/supabase-js":"^2.99.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.0","typescript":"^5.9.3","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger-ai_1.1.2_1773955544528_0.5423135256423657","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@aperdomoll90/ledger-ai","version":"1.1.3","keywords":["ai","memory","knowledge-base","rag","semantic-search","mcp","supabase","pgvector","claude","agent","persona","sync"],"author":{"name":"Adrian Perdomo"},"license":"ISC","_id":"@aperdomoll90/ledger-ai@1.1.3","maintainers":[{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"}],"homepage":"https://github.com/aperdomoll90/ledger#readme","bugs":{"url":"https://github.com/aperdomoll90/ledger/issues"},"bin":{"ledger":"dist/cli.js"},"dist":{"shasum":"7444bbeec93b9d9628cbc2ec3e7c892ab3f4e613","tarball":"https://registry.npmjs.org/@aperdomoll90/ledger-ai/-/ledger-ai-1.1.3.tgz","fileCount":46,"integrity":"sha512-hZxRCmopAb1kme1U0ASTuY9+yHs+Ccr7pYZrGWsE4Q9AdzWkUxv492iVk/xGDt7zeN0F8QOnXPoBGHGzsui0VQ==","signatures":[{"sig":"MEYCIQDnYDVKS+QnYdZD8wi2mFmz3wsHBrVnD/h8wc77NiaTtwIhANGLqpxjS/+Sgg2ceiktUCboO4M9JZRVLwcT66ITTnYx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181310},"type":"module","engines":{"node":">=20"},"gitHead":"54c85b65d6ac687112dac2075d2ad47abafeaeda","scripts":{"ship":"bash scripts/ship.sh","test":"vitest run","build":"tsc && cp -r src/migrations dist/migrations && cp -r src/hooks dist/hooks && chmod +x dist/cli.js dist/hooks/*.sh","start":"tsx src/mcp-server.ts","release":"npm version patch && npm publish --access public","typecheck":"tsc --noEmit","preversion":"npm run typecheck && npm test","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"},"repository":{"url":"git+https://github.com/aperdomoll90/ledger.git","type":"git"},"_npmVersion":"11.8.0","description":"AI identity and memory system — portable persona, knowledge sync, semantic search across agents and devices","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zod":"^4.3.6","dotenv":"^17.3.1","openai":"^6.29.0","commander":"^14.0.3","@supabase/supabase-js":"^2.99.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.0","typescript":"^5.9.3","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger-ai_1.1.3_1773956069939_0.3236806592768191","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@aperdomoll90/ledger-ai","version":"1.2.0","keywords":["ai","memory","knowledge-base","rag","semantic-search","mcp","supabase","pgvector","claude","agent","persona","sync"],"author":{"name":"Adrian Perdomo"},"license":"ISC","_id":"@aperdomoll90/ledger-ai@1.2.0","maintainers":[{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"}],"homepage":"https://github.com/aperdomoll90/ledger#readme","bugs":{"url":"https://github.com/aperdomoll90/ledger/issues"},"bin":{"ledger":"dist/cli.js"},"dist":{"shasum":"a54b4739a5dc44b7acd243fe7501b671a396ab22","tarball":"https://registry.npmjs.org/@aperdomoll90/ledger-ai/-/ledger-ai-1.2.0.tgz","fileCount":46,"integrity":"sha512-VuEIHSNxDuKUHXuQXvhcJLxRGkCsHHPuP0vXI3pkuz/KaXG32Hun3rjwI7TqX1CRfZeBHnWoyTeXn2fncNPUKw==","signatures":[{"sig":"MEYCIQCnM+b5KQsdZHX6M/1h2qsW/2Wbval9ZCyYkILEwXb65gIhAPJL2xl2JR04pUrOcfrVrXYi5U406iERc+qqaCGrpGGI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195370},"type":"module","engines":{"node":">=20"},"gitHead":"7db33d018116b66df67ec7786c9f452545c8c3fb","scripts":{"ship":"bash scripts/ship.sh","test":"vitest run","build":"tsc && cp -r src/migrations dist/migrations && cp -r src/hooks dist/hooks && chmod +x dist/cli.js dist/hooks/*.sh","start":"tsx src/mcp-server.ts","release":"npm version patch && npm publish --access public","typecheck":"tsc --noEmit","preversion":"npm run typecheck && npm test","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"},"repository":{"url":"git+https://github.com/aperdomoll90/ledger.git","type":"git"},"_npmVersion":"11.8.0","description":"AI identity and memory system — portable persona, knowledge sync, semantic search across agents and devices","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zod":"^4.3.6","dotenv":"^17.3.1","openai":"^6.29.0","commander":"^14.0.3","@supabase/supabase-js":"^2.99.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.0","typescript":"^5.9.3","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger-ai_1.2.0_1774040376642_0.17016094290399963","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@aperdomoll90/ledger-ai","version":"1.3.0","keywords":["ai","memory","knowledge-base","rag","semantic-search","mcp","supabase","pgvector","claude","agent","persona","sync"],"author":{"name":"Adrian Perdomo"},"license":"ISC","_id":"@aperdomoll90/ledger-ai@1.3.0","maintainers":[{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"}],"homepage":"https://github.com/aperdomoll90/ledger#readme","bugs":{"url":"https://github.com/aperdomoll90/ledger/issues"},"bin":{"ledger":"dist/cli.js"},"dist":{"shasum":"f938092de305ed6ea2f13ed0296c0e092f0391ed","tarball":"https://registry.npmjs.org/@aperdomoll90/ledger-ai/-/ledger-ai-1.3.0.tgz","fileCount":51,"integrity":"sha512-QBrw1SUlXssnqGb9wzHzBwTRtSNeRSW4etcnaJCju2lLxRwVKKg29Wsy1QxYQfMXblgv58jXXp4WQFf+997m1A==","signatures":[{"sig":"MEUCIEF3mLtg5YfVxHb5Y+ZpH8cMh+vmzuCTtZ+1zP8lmR7cAiEArwLVi5pxFhS5dOtcqbZknZFiM/ZFNRXa1spsqErFsXs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":232401},"type":"module","engines":{"node":">=20"},"gitHead":"0063130a70942575d8c4403e75583474c6713e31","scripts":{"ship":"bash scripts/ship.sh","test":"vitest run","build":"tsc && cp -r src/migrations dist/migrations && cp -r src/hooks dist/hooks && chmod +x dist/cli.js dist/hooks/*.sh","start":"tsx src/mcp-server.ts","release":"npm version patch && npm publish --access public","typecheck":"tsc --noEmit","preversion":"npm run typecheck && npm test","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"},"repository":{"url":"git+https://github.com/aperdomoll90/ledger.git","type":"git"},"_npmVersion":"11.8.0","description":"AI identity and memory system — portable persona, knowledge sync, semantic search across agents and devices","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zod":"^4.3.6","dotenv":"^17.3.1","openai":"^6.29.0","commander":"^14.0.3","@supabase/supabase-js":"^2.99.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.0","typescript":"^5.9.3","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger-ai_1.3.0_1774477292799_0.6746301521676386","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@aperdomoll90/ledger-ai","version":"1.4.0","keywords":["ai","memory","knowledge-base","rag","semantic-search","mcp","supabase","pgvector","claude","agent","persona","sync"],"author":{"name":"Adrian Perdomo"},"license":"ISC","_id":"@aperdomoll90/ledger-ai@1.4.0","maintainers":[{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"}],"homepage":"https://github.com/aperdomoll90/ledger#readme","bugs":{"url":"https://github.com/aperdomoll90/ledger/issues"},"bin":{"ledger":"dist/cli.js"},"dist":{"shasum":"d2c7e9e683aa1b264be8bbe303fd4cd285e4de92","tarball":"https://registry.npmjs.org/@aperdomoll90/ledger-ai/-/ledger-ai-1.4.0.tgz","fileCount":51,"integrity":"sha512-wvqe3xKMqZ0r851eq0pI3Zchl/SQm4E/I7jSt1FJNu6IaibOLeCSGNLnDDa6TBvf+aIySxlxqkiR3RKmo86exw==","signatures":[{"sig":"MEYCIQDHf2UTgxt7mg6M6vQlWZIwGx230pXTD+AhX6Z2GTmZ4AIhAKroFZdQDS3cppkTRZIgHTlpoagO/RmC2kr3WYVD9uMG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":232401},"type":"module","engines":{"node":">=20"},"gitHead":"c84f6039d9e9679b3245be813d572a9cc7104682","scripts":{"ship":"bash scripts/ship.sh","test":"vitest run","build":"tsc && cp -r src/migrations dist/migrations && cp -r src/hooks dist/hooks && chmod +x dist/cli.js dist/hooks/*.sh","start":"tsx src/mcp-server.ts","release":"npm version patch && npm publish --access public","typecheck":"tsc --noEmit","preversion":"npm run typecheck && npm test","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"},"repository":{"url":"git+https://github.com/aperdomoll90/ledger.git","type":"git"},"_npmVersion":"11.8.0","description":"AI identity and memory system — portable persona, knowledge sync, semantic search across agents and devices","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zod":"^4.3.6","dotenv":"^17.3.1","openai":"^6.29.0","commander":"^14.0.3","@supabase/supabase-js":"^2.99.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.0","typescript":"^5.9.3","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger-ai_1.4.0_1774477421931_0.5462185580749084","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@aperdomoll90/ledger-ai","version":"1.4.2","description":"AI identity and memory system — portable persona, knowledge sync, semantic search across agents and devices","type":"module","bin":{"ledger":"dist/cli.js"},"scripts":{"start":"tsx src/mcp-server.ts","build":"tsc && cp -r src/migrations dist/migrations && cp -r src/hooks dist/hooks && chmod +x dist/cli.js dist/hooks/*.sh","prepublishOnly":"npm run build && npm test","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit","preversion":"npm run typecheck && npm test","ship":"bash scripts/ship.sh","release":"npm version patch && npm publish --access public"},"keywords":["ai","memory","knowledge-base","rag","semantic-search","mcp","supabase","pgvector","claude","agent","persona","sync"],"author":{"name":"Adrian Perdomo"},"license":"ISC","repository":{"type":"git","url":"git+https://github.com/aperdomoll90/ledger.git"},"engines":{"node":">=20"},"dependencies":{"@langfuse/openai":"^5.1.0","@langfuse/otel":"^5.1.0","@langfuse/tracing":"^5.1.0","@modelcontextprotocol/sdk":"^1.27.1","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.6.1","@supabase/supabase-js":"^2.99.1","bottleneck":"^2.19.5","commander":"^14.0.3","dotenv":"^17.3.1","openai":"^6.29.0","zod":"^4.3.6"},"devDependencies":{"@types/node":"^25.5.0","tsx":"^4.21.0","typescript":"^5.9.3","vitest":"^4.1.0"},"gitHead":"3b649ec9aae44f3e71bc6c8556fbf318c5d343bb","_id":"@aperdomoll90/ledger-ai@1.4.2","bugs":{"url":"https://github.com/aperdomoll90/ledger/issues"},"homepage":"https://github.com/aperdomoll90/ledger#readme","_nodeVersion":"24.13.1","_npmVersion":"11.8.0","dist":{"integrity":"sha512-KyUGhJ7B9AAZJ8AfRtB9faUBUDD9acSQGUUARS5XHjFZ9xfzknphsNPFdx7WE6tdByM/gXF9HzQs+s9xego7Lg==","shasum":"a6dc65b4180bbaa9f2e2c487c78878a423573455","tarball":"https://registry.npmjs.org/@aperdomoll90/ledger-ai/-/ledger-ai-1.4.2.tgz","fileCount":104,"unpackedSize":573142,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEY+KTDWSpSydqIRQ5oqlMHjB0O48PYo++cvQVloGYnuAiEAmxguJwQM3bYSPj5G7M993wG9Em1MMsMqjEJEhmalzpw="}]},"_npmUser":{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"},"directories":{},"maintainers":[{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ledger-ai_1.4.2_1780194712386_0.6525738892708697"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-17T00:11:25.573Z","modified":"2026-05-31T02:31:52.640Z","1.0.0":"2026-03-17T00:11:25.873Z","1.0.1":"2026-03-17T15:03:16.789Z","1.0.2":"2026-03-17T15:28:29.442Z","1.1.0":"2026-03-19T17:00:29.559Z","1.1.1":"2026-03-19T17:29:30.136Z","1.1.2":"2026-03-19T21:25:44.692Z","1.1.3":"2026-03-19T21:34:30.110Z","1.2.0":"2026-03-20T20:59:36.800Z","1.3.0":"2026-03-25T22:21:32.951Z","1.4.0":"2026-03-25T22:23:42.106Z","1.4.2":"2026-05-31T02:31:52.529Z"},"bugs":{"url":"https://github.com/aperdomoll90/ledger/issues"},"author":{"name":"Adrian Perdomo"},"license":"ISC","homepage":"https://github.com/aperdomoll90/ledger#readme","keywords":["ai","memory","knowledge-base","rag","semantic-search","mcp","supabase","pgvector","claude","agent","persona","sync"],"repository":{"type":"git","url":"git+https://github.com/aperdomoll90/ledger.git"},"description":"AI identity and memory system — portable persona, knowledge sync, semantic search across agents and devices","maintainers":[{"name":"aperdomoll90","email":"aperdomoll90@gmail.com"}],"readme":"# @aperdomoll90/ledger-ai\n\nYour AI, everywhere. One identity, one memory, every device.\n\nLedger stores who you are, how you work, and what you know in a single knowledge base. Connect any AI agent — Claude, OpenClaw, ChatGPT — and it immediately knows your rules, preferences, and context. Switch devices and pick up where you left off.\n\n## Install\n\n```bash\nnpm install -g @aperdomoll90/ledger-ai\n```\n\nRequires Node.js 20+.\n\n## Quick Start\n\n```bash\n# One command does everything:\nledger init\n```\n\nThe init wizard walks you through:\n1. **Credentials** — Supabase + OpenAI keys\n2. **Database** — connect and set up schema\n3. **Device** — name this machine (optional)\n4. **Persona** — profile, communication style, rules\n5. **Platforms** — install Claude Code, OpenClaw, or ChatGPT\n6. **Sync** — pull everything down\n7. **Migrate** — detect stray local files\n\nSmart step-skipping — re-run anytime, it only does what's needed.\n\n### Second device? Same Ledger, same persona:\n\n```bash\nnpm install -g @aperdomoll90/ledger-ai\nledger init    # connect to existing Supabase, pull persona, set up platform\n```\n\n## What It Does\n\n**For you:** Define who you are, how you want AI to behave, your coding conventions, communication style. Do it once. Every AI agent on every device follows the same rules.\n\n**For your agents:** A full RAG (Retrieval-Augmented Generation) system. Notes are embedded with OpenAI and stored in Postgres with pgvector. Agents find relevant context by semantic meaning, not keywords. Retrieved context is injected into agent prompts automatically via MCP.\n\n**For your workflow:** Automatic sync at session start, conflict detection, session-end checks. Hooks enforce rules (block credential file access, auto-ingest notes to Ledger).\n\n## Commands\n\n| Command | Description |\n|---|---|\n| `ledger init` | Guided setup wizard (credentials, persona, platforms, sync) |\n| `ledger setup <platform>` | Configure an agent (claude-code, openclaw, chatgpt) |\n| `ledger onboard` | Create your persona (interactive questionnaire) |\n| `ledger sync` | Bidirectional sync between Ledger and local cache |\n| `ledger pull` | Download notes from Ledger to local cache |\n| `ledger push <file>` | Upload a local file to Ledger |\n| `ledger check` | Compare local files vs Ledger (dry-run sync) |\n| `ledger show <query>` | Search by meaning, open matching note |\n| `ledger export <query>` | Download a note to any path (untracked) |\n| `ledger ingest [file]` | Add files to Ledger with duplicate detection |\n| `ledger migrate` | Migrate local files to Ledger (backup, compare, merge) |\n| `ledger add` | Add a new note (interactive metadata prompts) |\n| `ledger update <id>` | Update a note by ID |\n| `ledger delete <id>` | Delete a note by ID |\n| `ledger list` | List recent notes |\n| `ledger tag <id>` | Update metadata on a note |\n| `ledger backup` | Backup all notes to ~/.ledger/backups/ |\n| `ledger restore <file>` | Restore from backup |\n| `ledger config list` | View settings |\n\n## Note Metadata\n\nEvery note has structured metadata for organization and discovery:\n\n| Field | Purpose | Example |\n|---|---|---|\n| `type` | Categorization | `feedback`, `user-preference`, `architecture-decision`, `reference` |\n| `upsert_key` | Unique identifier, dedup | `feedback-communication-style`, `ledger-spec-init` |\n| `description` | What the note IS and what it's FOR | `\"How to communicate with Adrian\"` |\n| `status` | Lifecycle stage | `idea`, `planning`, `active`, `done` |\n| `project` | Which project | `ledger`, `ai-studio` |\n| `delivery` | Sync tier | `persona` (everywhere), `project` (per-repo), `knowledge` (search only) |\n\n### Interactive prompting\n\nWhen creating notes, Ledger prompts for missing metadata by default — both via MCP (agents) and CLI. This helps keep notes organized without requiring users to memorize the schema.\n\nSkip prompts with `--force` (CLI) or `interactive_skip: true` (MCP). Disable globally: `ledger config set naming.interactive false`.\n\n### Naming enforcement (opt-in)\n\nEnable strict naming validation: `ledger config set naming.enforce true`\n\nKeys follow the pattern `{prefix}-{topic}` or `{project}-{prefix}-{topic}`:\n- `feedback-communication-style`\n- `ledger-spec-init`\n- `user-profile`\n\n## Stack\n\n- **Database:** Supabase (hosted Postgres + pgvector) — free tier\n- **Embeddings:** OpenAI `text-embedding-3-small`\n- **Protocol:** MCP (Model Context Protocol) for Claude Code\n- **CLI:** Commander, TypeScript, ES modules\n- **Sync:** SHA-256 content hashing, conflict detection\n\n## How It Works\n\n```\nYour devices / agents\n    |\n    v\nledger CLI ←→ Supabase (Postgres + pgvector)\n    |\n    ├── init: guided wizard (credentials → persona → platforms → sync)\n    ├── sync: bidirectional, hash-based conflict detection\n    ├── show: semantic search → open in editor\n    ├── add: interactive metadata prompts → duplicate guard → save\n    └── MCP server: Claude Code talks to Ledger natively (6 tools)\n```\n\nNotes are stored with content + metadata + vector embeddings. Search finds relevant notes by meaning. Sync uses SHA-256 content hashes to detect changes without markers.\n\n## Platforms\n\n| Platform | Connection | Sync |\n|---|---|---|\n| Claude Code | MCP (live) + hooks | Bidirectional, automatic |\n| OpenClaw | CLI | Bidirectional via `ledger` commands |\n| ChatGPT | None | Static snapshot, re-run to update |\n\nPlatform management is built into the wizard — install, reinstall, or uninstall from `ledger init`.\n\n## Development\n\n```bash\nnpm run ship       # typecheck → test → commit → push\nnpm run release    # version bump → build → test → publish to npm\n```\n\n## Requirements\n\n- Node.js 20+\n- Supabase project (free tier works)\n- OpenAI API key (for embeddings, ~$0.02/1M tokens)\n\n## Known Limitations\n\n- **Embeddings require OpenAI** — currently uses `text-embedding-3-small` only. Multi-provider support planned.\n- **Anthropic has no embedding API** — Claude is for text generation. Even Claude users need an OpenAI key for embeddings.\n- **English-optimized** — semantic search works best with English content.\n\n## Roadmap\n\n### RAG Enhancements\n- Hybrid search (vector + BM25 keyword via PostgreSQL full-text search)\n- Re-ranking — score retrieved chunks before feeding to LLM\n- Chunking strategies for large documents (auto-split on ingest)\n- Multi-format ingest (PDF, Excel, images, audio)\n- Multi-provider embeddings (Supabase built-in, OpenAI, Ollama, Cohere)\n\n### Platform\n- Note versioning / history\n- Soft delete (trash)\n- Web dashboard\n- Skills system (context-aware convention enforcement)\n- VS Code extension\n\n## License\n\nISC\n","readmeFilename":"README.md"}