[{"data":1,"prerenderedAt":495},["ShallowReactive",2],{"project-45516584":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":46,"post_text":48,"what":49,"said":85,"maker_in_thread":182,"shape":194,"grid":198,"attempts":456,"same_week":457,"maker_shows":40,"maker_hidden":487,"reader_version":488,"card":489},"45516584","Recall","Give Claude memory with Redis-backed persistent context","title","Show HN: Recall: Give Claude memory with Redis-backed persistent context","https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@joseairosa\u002Frecall","npmjs.com","elfenleid",1759933686,2025,171,93,409,3837,11,"notable","ai","memory for coding assistants","cli",[24,25,26,27,28],"mcp server","claude memory","redis","semantic search","persistent context","roasted",-0.406,{"positive":32,"neutral":33,"mixed":34,"critical":35},2,18,0,20,40,{"design":38,"idea":39,"execution":42,"performance":44,"privacy":45},{"positive":34,"critical":32},{"positive":40,"critical":41},1,12,{"positive":34,"critical":43},3,{"positive":34,"critical":40},{"positive":34,"critical":40},[40,34,34,43,40,40,40,43,40,43,34,34,34,34,40,43,40,34,43,40,43,40,43,43,34,40,40,34,40,40,43,40,43,40,43,40,47,40,43,43],5,"Hey HN! I'm José, and I built Recall to solve a problem that was driving me crazy.\n\nThe Problem: I use Claude for coding daily, but every conversation starts from scratch. I'd explain my architecture, coding standards, past decisions... then hit the context limit and lose everything. Next session? Start over.\n\nThe Solution: Recall is an MCP (Model Context Protocol) server that gives Claude persistent memory using Redis + semantic search. Think of it as long-term memory that survives context limits and session restarts.\n\nHow it works: - Claude stores important context as \"memories\" during conve",{"problem":50,"audience":56,"pricing":60,"motivation":61,"time_to_build":60,"stack":65,"openness":82,"stage":83,"team_size":84},{"value":51,"source":52,"evidence":53},"Claude conversations start from scratch and lose context after limits and session restarts","maker",[54],{"id":55},"post",{"value":57,"source":52,"evidence":58},"developers using Claude for daily coding",[59],{"id":55},null,{"value":62,"source":52,"evidence":63},"Claude forgetting project context across sessions was frustrating",[64],{"id":55},[66,70,74,78],{"value":67,"source":52,"evidence":68},"TypeScript",[69],{"id":55},{"value":71,"source":52,"evidence":72},"Redis",[73],{"id":55},{"value":75,"source":52,"evidence":76},"OpenAI embeddings (text-embedding-3-small)",[77],{"id":55},{"value":79,"source":52,"evidence":80},"MCP SDK",[81],{"id":55},"unknown","beta","solo",{"praise":86,"objections":93,"requests":131,"questions":143,"alternatives":162},[87],{"value":88,"source":52,"evidence":89},"Useful for reducing context loss after compaction",[90],{"id":91,"by":11,"text":92},"45517271","I've been using it for a while now, personally. I've found that I have less issues with context, I can easily recall (pun intended) after a context compact, etc.",[94,110,117,124],{"value":95,"source":96,"evidence":97},"Claude Code already has native memory via CLAUDE.md and \u002Fmemory","commenter",[98,102,106],{"id":99,"by":100,"text":101},"45517703","steveklabnik","Memory features are useful for the same reason that a human would use a database instead of a large .md file: it's more efficient to query for something and get exactly what you…",{"id":103,"by":104,"text":105},"45518086","atonse","It's had native memory in the form of per-directory CLAUDE.md files for a while though. Not just 2.0",{"id":107,"by":108,"text":109},"45518128","ebcode","Claude’s memory function adds a note to the file(s) that it reads on startup. Whereas this tool pulls from a database of memories on-demand.",{"value":111,"source":96,"evidence":112},"Too many tools (27) bloat the context window",[113],{"id":114,"by":115,"text":116},"45517123","pacoWebConsult","Why would you bloat the (already crowded) context window with 27 tools instead of the 2 simplest ones: Save Memory & Search Memory? Or even just search, handling the save process…",{"value":118,"source":96,"evidence":119},"Distribution via npm is a non-starter for some",[120],{"id":121,"by":122,"text":123},"45522171","btbuildem","A great hack\u002Fshortcut for solving this \"memory\" problem is to have a rolling RAG KB. You don't fill up the context, and you can use a re-ranking model to further improve…",{"value":125,"source":96,"evidence":126},"Prompt injection risk from persistent memory",[127],{"id":128,"by":129,"text":130},"45518094","gmerc","Every single persistent memory feature is a persistence vector for prompt injection.",[132,139],{"value":133,"source":96,"evidence":134},"Support for Valkey",[135],{"id":136,"by":137,"text":138},"45517336","otterley","Does it work with Valkey as well?",{"value":140,"source":96,"evidence":141},"Simpler design with fewer tools",[142],{"id":114,"by":115,"text":116},[144,155],{"value":145,"source":96,"evidence":146},"How does Claude know when to store or recall memories?",[147,151],{"id":148,"by":149,"text":150},"45517911","datadrivenangel","How does Claude know when to try and remember? Often memory works too well and crowds out new things, so how are you balancing that?",{"id":152,"by":153,"text":154},"45517579","asdev","The problem is you need to tell prompt Claude to \"Store\" or \"Remember\", if you don't it will never call the MCP server. Ideally, Claude would have some mechanism to store…",{"value":156,"source":96,"evidence":157},"How was it benchmarked against a plain text file?",[158],{"id":159,"by":160,"text":161},"45517726","bananapub","how did you benchmark this against much less convoluted solutions, like \"a text file\"? how much better was this to justify all that extra complexity?",[163,168,175],{"value":164,"source":96,"evidence":165},"Claude's native CLAUDE.md and \u002Fmemory feature",[166,167],{"id":99,"by":100,"text":101},{"id":103,"by":104,"text":105},{"value":169,"source":96,"evidence":170},"Claude API memory tool",[171],{"id":172,"by":173,"text":174},"45518479","_joel","They do, new feature, not available in claude code but via API headers. https:\u002F\u002Fdocs.claude.com\u002Fen\u002Fdocs\u002Fagents-and-tools\u002Ftool-use\u002Fmemory-tool",{"value":176,"source":96,"evidence":177},"Markdown context files like SpecKit",[178],{"id":179,"by":180,"text":181},"45517078","bryanhogan","Why would you not use context files in form of .md? E.g. how the SpecKit project does it.",{"comments":35,"answered":183,"key":184},10,[185,188,191],{"id":186,"text":187},"45517178","That's a great point, the reality is that context, at least from personal experience, is brittle and over time will start to lose precision. This is a always there, persistent…",{"id":189,"text":190},"45522382","Absolutely. Remember these are just tools, how each one of us uses them it's a diffrent story. A lot can be leveraged as well by adding a couple of lines to CLAUDE.md on how he…",{"id":192,"text":193},"45517236","I still do, but having this allows for strategies like memory decay for older information. It also allows for much more structured searching capabilities, instead of opening file…",{"commenters":195,"max_depth":18,"maker_replies":35,"first_comment_mins":196,"lifespan_hours":197},56,39,143,[199,201,203,207,210,212,216,219,222,226,228,232,235,238,239,241,243,245,249,250,251,252,254,257,259,261,264,266,268,270,272,274,276,278,282,285,287,289,292,294,297,300,304,306,310,314,317,321,325,327,328,331,334,336,338,342,345,347,350,353,357,361,363,366,368,372,374,376,379,383,387,390,394,396,397,401,403,407,409,413,416,421,422,426,431,433,437,440,444,446,448,450,454],[114,34,40,200,115,34],"project\u002Fcritical\u002Fdesign",[186,34,34,202,11,40],"maker\u002Fneutral\u002Fdesign",[204,34,34,205,206,34],"45522179","commenter\u002Fneutral\u002Fnone","j45",[208,34,34,205,209,34],"45517650","fishmicrowaver",[211,34,34,205,206,34],"45522174",[213,34,34,214,215,34],"45524043","other\u002Fneutral\u002Fnone","icedrop",[217,34,34,214,218,34],"45524486","extr",[220,34,34,205,221,34],"45525103","blks",[223,34,43,224,225,34],"45518853","project\u002Fneutral\u002Fdesign","jrecyclebin",[189,34,34,227,11,40],"maker\u002Fneutral\u002Fnone",[229,34,40,230,231,34],"45518911","project\u002Fcritical\u002Fidea","athrowaway3z",[233,34,40,230,234,34],"45526623","laborcontract",[236,34,34,214,237,34],"45521634","fennecbutt",[179,40,40,230,180,34],[192,40,34,240,11,40],"maker\u002Fneutral\u002Fidea",[242,40,40,230,180,34],"45517436",[244,40,34,240,11,40],"45517498",[246,40,43,247,248,34],"45521698","project\u002Fneutral\u002Fidea","BHSPitMonkey",[99,40,40,230,100,34],[103,40,43,247,104,34],[107,40,43,224,108,34],[253,40,34,214,100,34],"45519072",[255,40,34,205,256,34],"45520833","koakuma-chan",[258,40,34,214,100,34],"45521414",[260,40,34,227,11,40],"45522395",[262,40,34,263,11,40],"45522573","maker\u002Fneutral\u002Fdocs",[265,40,34,205,100,34],"45523302",[267,40,34,214,256,34],"45528899",[269,40,34,214,100,34],"45530858",[271,40,34,214,256,34],"45531026",[273,40,34,214,100,34],"45531036",[275,40,34,214,256,34],"45531839",[277,40,34,240,11,40],"45522445",[279,32,40,280,281,34],"45522886","project\u002Fcritical\u002Fnone","dfee",[283,32,34,214,284,34],"45523600","replwoacause",[148,43,43,286,149,34],"project\u002Fneutral\u002Fexecution",[288,43,43,286,149,34],"45520257",[121,290,40,291,122,34],4,"project\u002Fcritical\u002Fexecution",[293,290,34,227,11,40],"45522276",[295,47,34,214,296,34],"45517523","iambateman",[298,47,34,214,299,34],"45518091","zzzeek",[301,302,34,214,303,34],"45519934",6,"DenisM",[305,302,34,227,11,40],"45522287",[307,308,43,247,309,34],"45519774",7,"ffsm8",[311,312,40,291,313,34],"45522887",8,"Merad",[315,312,34,214,316,34],"45523486","CSSer",[318,319,43,247,320,34],"45517985",9,"daxfohl",[322,319,34,323,324,34],"45518138","other\u002Fneutral\u002Fprivacy","ryan29",[326,319,34,323,320,34],"45522244",[172,319,34,214,173,34],[329,319,40,330,320,34],"45520841","project\u002Fcritical\u002Fperformance",[332,183,43,247,333,34],"45517193","tarun_anand",[335,183,34,227,11,40],"45517241",[337,18,43,247,303,34],"45518575",[339,41,43,340,341,34],"45517484","project\u002Fneutral\u002Fperformance","the_arun",[343,41,34,205,344,34],"45517843","joshstrange",[346,41,34,205,341,34],"45517882",[348,41,34,205,349,34],"45518744","deepdarkforest",[351,41,34,205,352,34],"45524509","rattyJ2",[354,355,40,230,356,34],"45517627",13,"iamleppert",[358,359,40,230,360,34],"45517163",14,"warthog",[362,359,34,240,11,40],"45517265",[364,359,34,214,365,34],"45517613","westurner",[367,359,34,214,365,34],"45518074",[369,359,34,370,371,34],"45517857","commenter\u002Fneutral\u002Fidea","namanyayg",[373,359,34,205,360,34],"45579918",[152,375,40,291,153,34],15,[377,375,34,378,11,40],"45522834","project\u002Fpositive\u002Fexecution",[380,381,40,230,382,34],"45521677",16,"ra",[384,385,43,247,386,34],"45521334",17,"moomoo11",[388,33,43,224,389,34],"45518957","jumski",[391,392,43,340,393,34],"45517363",19,"h1fra",[395,392,34,340,11,40],"45517392",[159,35,40,230,160,34],[398,399,43,247,400,34],"45517596",21,"jMyles",[402,399,34,214,173,34],"45518522",[404,405,40,230,406,34],"45517471",22,"alecco",[408,405,34,240,11,40],"45517485",[410,411,40,200,412,34],"45519524",23,"aktuel",[128,414,40,415,129,34],24,"project\u002Fcritical\u002Fprivacy",[417,418,47,419,420,34],"45517028",25,"project\u002Fpositive\u002Fnone","jcmontx",[91,418,34,419,11,40],[423,424,40,230,425,34],"45522320",26,"thund",[427,428,47,429,430,34],"45517295",27,"project\u002Fpositive\u002Fidea","mannyv",[432,428,34,247,11,40],"45517334",[434,435,43,286,436,34],"45521235",28,"uncletoxa",[438,435,34,439,11,40],"45522319","maker\u002Fneutral\u002Fexecution",[441,442,40,230,443,34],"45522169",29,"nibab",[445,442,34,240,11,40],"45522813",[136,447,43,286,137,34],30,[449,447,34,439,11,40],"45517352",[451,452,43,286,453,34],"45519765",31,"aiisthefiture",[455,452,34,439,11,40],"45522337",[],[458,463,468,472,477,482],{"id":459,"name":460,"points":461,"category":462},"45504973","Timelinize",630,"productivity",{"id":464,"name":465,"points":466,"category":467},"45492489","nullpt.rs",348,"security_privacy",{"id":469,"name":470,"points":471,"category":462},"45490578","Write It Down",271,{"id":473,"name":474,"points":475,"category":476},"45491609","Kent Dybvig's Scheme Machine (heap-lisp)",226,"languages",{"id":478,"name":479,"points":480,"category":481},"45515978","telefonefix",222,"hardware",{"id":483,"name":484,"points":485,"category":486},"45483531","ut",170,"dev_tools",false,"v2",{"id":490,"name":5,"line":6,"ai":487,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":491,"top":18,"kw":492,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":493,"url":9,"mix":494,"praise":88,"objection":95,"sub":21},45516584,-0.41,[24,25,26,27,28],"1003111313000013103131330110113131315133",[32,33,34,35],1793991131589]