[{"data":1,"prerenderedAt":310},["ShallowReactive",2],{"project-44329102":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":45,"post_text":47,"what":48,"said":88,"maker_in_thread":202,"shape":214,"grid":217,"attempts":271,"same_week":272,"maker_shows":44,"maker_hidden":302,"reader_version":303,"card":304},"44329102","Pickaxe","A TypeScript library for building AI agents","title","Show HN: Pickaxe – A TypeScript library for building AI agents","https:\u002F\u002Fgithub.com\u002Fhatchet-dev\u002Fpickaxe","github.com","abelanger",1750435671,2025,70,26,1008,3837,27,"notable","ai","agent framework library","library",[24,25,26,27,28],"ai agents","durable execution","typescript","checkpointing","human in the loop","mixed",0.085,{"positive":32,"neutral":33,"mixed":34,"critical":35},8,9,0,5,22,{"idea":38,"design":40,"docs":42,"performance":43},{"positive":39,"critical":34},6,{"positive":34,"critical":41},1,{"positive":34,"critical":41},{"positive":34,"critical":44},2,[46,35,35,46,46,46,35,46,46,41,35,41,35,35,34,41,35,35,34,46,46,46,34,41,34,41],3,"Hey HN, Gabe and Alexander here from Hatchet. Today we're releasing Pickaxe, a Typescript library to build AI agents which are scalable and fault-tolerant.\n\nHere's a demo: https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fb28fc406-f501-4427-9574-e4c756b29dd4\n\nPickaxe provides a simple set of primitives for building agents which can automatically checkpoint their state and suspend or resume processing (also known as durable execution) while waiting for external events (like a human in the loop). The library is based on common patterns we've seen when helping Hatchet users run millions of agent executi",{"problem":49,"audience":55,"pricing":60,"motivation":61,"time_to_build":60,"stack":65,"openness":86,"stage":86,"team_size":87},{"value":50,"source":51,"evidence":52},"Long-running, stateful AI agents get interrupted by deploys or serverless timeouts","maker",[53],{"id":54},"post",{"value":56,"source":57,"evidence":58},"Developers building remotely executed AI agents in TypeScript","inferred",[59],{"id":54},null,{"value":62,"source":51,"evidence":63},"Patterns seen from helping Hatchet users run millions of agent executions per day",[64],{"id":54},[66,70,74,78],{"value":67,"source":51,"evidence":68},"TypeScript",[69],{"id":54},{"value":71,"source":51,"evidence":72},"Hatchet",[73],{"id":54},{"value":75,"source":51,"evidence":76},"Postgres",[77],{"id":54},{"value":79,"source":80,"evidence":81},"Vercel AI SDK","commenter",[82],{"id":83,"by":84,"text":85},"44359555","gabrielruttner","gabe, hatchet cofounder here. thanks for this feedback and i agree! under the hood we're using vercel ai sdk to make tool calls so this is easily extended [1]. this is the only…","unknown","team",{"praise":89,"objections":108,"requests":141,"questions":163,"alternatives":185},[90,101],{"value":91,"source":80,"evidence":92},"Durable execution and checkpointing are needed for agents; the waitFor pattern is well designed",[93,97],{"id":94,"by":95,"text":96},"44403207","necatiozmen","Cool work, durable execution and resumability are hugely underrated problems in the agent space, especially once you move beyond toy demos. Love the checkpointing + waitFor…",{"id":98,"by":99,"text":100},"44329422","randomcatuser","Oh this is really cool! I was building out a bit of this with Restate this past week, but this seems really well put together :) will give it a try!",{"value":102,"source":80,"evidence":103},"Helps people learn what agents are",[104],{"id":105,"by":106,"text":107},"44329141","almosthere","What I really like about it, is that this kind of project helps people learn what an agent is.",[109,120,127,134],{"value":110,"source":80,"evidence":111},"Relies on Hatchet, which commenters say is not stable or performant enough",[112,116],{"id":113,"by":114,"text":115},"44329790","zegl","As a long time Hatchet user, I understand why you’ve created this library, but it also disappoints me a little bit. I wish more engineering time was spent on making the core…",{"id":117,"by":118,"text":119},"44363597","revskill","Hatchet is not stable.",{"value":121,"source":80,"evidence":122},"Lack of documentation on what the code looks like without the library",[123],{"id":124,"by":125,"text":126},"44378610","gerardosuarez","It would be great to have a section in the README about how the code looks without using the library, contrasting it with the example you already have. I would need a significant…",{"value":128,"source":80,"evidence":129},"Tying the API to the Vercel AI SDK risks lagging provider features",[130],{"id":131,"by":132,"text":133},"44360098","cmdtab","I think providing examples and sample code is better than tying your API to AI sdk. Due to how fast AI providers are iterating on their APIs, many features arrive weeks or months…",{"value":135,"source":80,"evidence":136},"Name clashes with pickaxe.co",[137],{"id":138,"by":139,"text":140},"44361264","j_rosenthal","The library name is confusing given https:\u002F\u002Fpickaxe.co\u002F, a nicely done low code platform for building\u002Fmonetizing chatbots and agents that's been around for 2.5 years or so. (No…",[142,152,159],{"value":143,"source":80,"evidence":144},"Agent-to-client streaming and resumable message streams",[145,149],{"id":146,"by":147,"text":148},"44359543","movedx01","This is great, and I keep my fingers crossed for Hatchet! One use case I imagine is key here is background\u002Fasync agents, so OpenAI Codex\u002FJules style, so that's great if I can…",{"id":150,"by":132,"text":151},"44360021","Pretty much was my first question if there was support for streaming events. Any way we could be beta tester? ༼ つ ◕_◕ ༽つ",{"value":153,"source":80,"evidence":154},"Ability to choose different models and prompts per task",[155],{"id":156,"by":157,"text":158},"44359338","blixt","I see the API is rarely mentioning exact message structure (system prompt, assistant\u002Fuser history, etc) or the choice of model (other than defaultLanguageModel). And it's not…",{"value":160,"source":80,"evidence":161},"Lower-level API so the user can handle LLM calls and streaming",[162],{"id":131,"by":132,"text":133},[164,171,178],{"value":165,"source":80,"evidence":166},"How does it compare to Mastra?",[167],{"id":168,"by":169,"text":170},"44359785","awaseem","Love to see more frameworks like this in the Typescript eco-system! How does this compare to Mastra: https:\u002F\u002Fmastra.ai\u002F",{"value":172,"source":80,"evidence":173},"How does it compare to Inngest's agent-kit?",[174],{"id":175,"by":176,"text":177},"44361707","muratsu","How does this compare to agent-kit by inngest?",{"value":179,"source":80,"evidence":180},"How to handle chat history and multiple tools in a chat assistant?",[181],{"id":182,"by":183,"text":184},"44359326","jskalc92","If I understand it correctly, tools and agents run() method works in a similar way to react hooks, correct? Depending on execution order, tool is either called or a cached value…",[186,190,194,198],{"value":187,"source":80,"evidence":188},"Mastra",[189],{"id":168,"by":169,"text":170},{"value":191,"source":80,"evidence":192},"Inngest agent-kit",[193],{"id":175,"by":176,"text":177},{"value":195,"source":80,"evidence":196},"Restate",[197],{"id":98,"by":99,"text":100},{"value":199,"source":80,"evidence":200},"VoltAgent",[201],{"id":94,"by":95,"text":96},{"comments":203,"answered":41,"key":204},4,[205,208,211],{"id":206,"text":207},"44329629","Thanks! Would love to hear more about what type of agent you're building. We've heard pretty often that durable execution is difficult to wrap your head around, and we've also…",{"id":209,"text":210},"44329216","Thanks! Our favorite resources on this (both have been posted on HN a few times): - https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fbuilding-effective-agents -…",{"id":212,"text":213},"44362093","(we haven't looked too deeply into agent-kit, so this is based on my impression from reading the docs) At a high level, in Pickaxe agents are just functions that execute durably,…",{"commenters":215,"max_depth":203,"maker_replies":203,"first_comment_mins":46,"lifespan_hours":216},17,185,[218,220,223,225,228,230,233,234,235,236,238,241,243,246,247,249,252,255,256,257,258,261,263,264,267,270],[146,34,46,219,147,34],"project\u002Fneutral\u002Fidea",[221,34,35,222,84,34],"44359609","maker\u002Fpositive\u002Fidea",[150,34,35,224,132,34],"project\u002Fpositive\u002Fidea",[226,34,46,227,84,34],"44360248","maker\u002Fneutral\u002Fnone",[182,41,46,229,183,34],"project\u002Fneutral\u002Fdesign",[231,41,46,232,84,34],"44359710","maker\u002Fneutral\u002Fdesign",[94,44,35,224,95,34],[156,46,46,229,157,34],[83,46,46,232,84,34],[131,46,41,237,132,34],"project\u002Fcritical\u002Fdesign",[239,46,35,240,157,34],"44365114","maker\u002Fpositive\u002Fnone",[124,203,41,242,125,34],"project\u002Fcritical\u002Fdocs",[244,35,35,224,245,34],"44359434","golergka",[98,39,35,224,99,34],[206,39,34,248,11,41],"maker\u002Fneutral\u002Fdocs",[138,250,41,251,139,34],7,"project\u002Fcritical\u002Fnone",[253,250,35,240,254,34],"44367814","nathanielmhld",[105,32,35,224,106,34],[209,32,34,248,11,41],[168,33,46,219,169,34],[259,33,46,260,84,34],"44359893","maker\u002Fneutral\u002Fidea",[175,262,46,219,176,34],10,[212,262,34,260,11,41],[113,265,41,266,114,34],11,"project\u002Fcritical\u002Fperformance",[268,265,34,269,11,41],"44332089","maker\u002Fneutral\u002Fperformance",[117,265,41,266,118,34],[],[273,278,283,288,293,297],{"id":274,"name":275,"points":276,"category":277},"44323253","ExTracker",394,"infrastructure",{"id":279,"name":280,"points":281,"category":282},"44329457","Nxtscape",314,"productivity",{"id":284,"name":285,"points":286,"category":287},"44351028","Lego Island (isle-portable)",263,"games",{"id":289,"name":290,"points":291,"category":292},"44317012","Claude Code Usage Monitor",245,"dev_tools",{"id":294,"name":295,"points":296,"category":282},"44375761","Scream to Unlock",242,{"id":298,"name":299,"points":300,"category":301},"44318588","rou2exOS",207,"other",false,"v2",{"id":305,"name":5,"line":6,"ai":302,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":306,"top":18,"kw":307,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":308,"url":9,"mix":309,"praise":91,"objection":110,"sub":21},44329102,0.09,[24,25,26,27,28],"35533353315155015503330101",[32,33,34,35],1794036677093]