[{"data":1,"prerenderedAt":724},["ShallowReactive",2],{"project-43103073":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":48,"post_text":50,"what":51,"said":104,"maker_in_thread":255,"shape":266,"grid":271,"attempts":680,"same_week":687,"maker_shows":34,"maker_hidden":716,"reader_version":717,"card":718},"43103073","Mastra","Open-source JS agent framework, by the developers of Gatsby","title","Show HN: Mastra – Open-source JS agent framework, by the developers of Gatsby","https:\u002F\u002Fgithub.com\u002Fmastra-ai\u002Fmastra","github.com","calcsam",1739978708,2025,442,154,97,3837,3,"legend","ai","agent framework","library",[24,25,26,27,28],"ai agent framework","javascript agents","rag pipeline","agent memory","workflow orchestration","curious",-0.007,{"positive":32,"neutral":33,"mixed":34,"critical":35},16,44,1,24,85,{"design":38,"idea":41,"performance":43,"execution":45,"docs":46,"pricing":47},{"positive":39,"critical":40},2,5,{"positive":34,"critical":42},10,{"positive":44,"critical":34},0,{"positive":34,"critical":34},{"positive":34,"critical":44},{"positive":44,"critical":18},[34,18,34,18,40,18,18,40,39,39,34,18,18,18,34,34,34,44,44,34,34,34,18,18,49,18,18,49,40,18,18,18,40,40,34,34,34,40,40,44],4,"Hi HN, we’re Sam, Shane, and Abhi, and we’re building Mastra (https:\u002F\u002Fmastra.ai), an open-source JavaScript SDK for building agents on top of Vercel’s AI SDK.\n\nYou can start a Mastra project with `npm create mastra` and create workflow graphs that can suspend\u002Fresume, build a RAG pipeline and write evals, give agents memory, create multi-agent workflows, and view it all in a local playground.\n\nPreviously, we built Gatsby, the open-source React web framework. Later, we worked on an AI-powered CRM but it felt like we were having to roll all the AI bits (agentic workflows, evals, RAG) ourselves. W",{"problem":52,"audience":58,"pricing":59,"motivation":69,"time_to_build":58,"stack":73,"openness":101,"stage":102,"team_size":103},{"value":53,"source":54,"evidence":55},"Building AI agents, RAG pipelines, evals and memory is hard to do from scratch","maker",[56],{"id":57},"post",null,{"value":60,"source":54,"evidence":61},"Elastic License v2 with cloud platform in beta",[62,63,66],{"id":57},{"id":64,"by":11,"text":65},"43106677","I mentioned that in the comment. We’re using Elastic v2 for now because we want users to be able to do anything with us, but protect from eg AWS",{"id":67,"by":11,"text":68},"43107037","If you watch the demo video you will see the cloud platform we are building at the end. Right now it’s in beta.",{"value":70,"source":54,"evidence":71},"Make AI application development easier after struggling to build agentic workflows, evals and RAG themselves",[72],{"id":57},[74,84,89,93,97],{"value":75,"source":54,"evidence":76},"TypeScript",[77,81],{"id":78,"by":79,"text":80},"43104920","bobremeika","A TypeScript first AI framework is something that has been missing. How do you work with AI SDK?",{"id":82,"by":11,"text":83},"43105095","We originally were wrapping AI SDK, but that confused people who wanted to use both, so we decided to make the API more explicit, eg: import { Agent } from \"@mastra\u002Fcore\u002Fagent\";…",{"value":85,"source":54,"evidence":86},"Vercel AI SDK",[87,88],{"id":57},{"id":82,"by":11,"text":83},{"value":90,"source":54,"evidence":91},"XState",[92],{"id":57},{"value":94,"source":54,"evidence":95},"libsql",[96],{"id":57},{"value":98,"source":54,"evidence":99},"OpenTelemetry tracing",[100],{"id":57},"open_source","beta","team",{"praise":105,"objections":121,"requests":154,"questions":190,"alternatives":222},[106,114],{"value":107,"source":108,"evidence":109},"Clear, easy-to-use abstractions with low-level control when needed","commenter",[110],{"id":111,"by":112,"text":113},"43107250","alanwells","Happy Mastra user here! Strikes the right balance between letting me build with higher level abstractions but providing lower level controls when needed. I looked at a handful of…",{"value":115,"source":108,"evidence":116},"Better than LangChain for the commenter's needs",[117],{"id":118,"by":119,"text":120},"43105019","yovboy","You’re awesome guys! I had so many problems with lanchain and am very happy since switching to Mastra",[122,129,140,147],{"value":123,"source":108,"evidence":124},"Elastic v2 license is not truly open source",[125],{"id":126,"by":127,"text":128},"43106220","fuddle","\"You may not provide the software to third parties as a hosted or managed service\" - The Elastic v2 license isn't actually open source like your title mentions: \"Open-source JS…",{"value":130,"source":108,"evidence":131},"Workflow syntax with chained step\u002Fthen\u002Fafter is awkward to read",[132,136],{"id":133,"by":134,"text":135},"43111545","Palmik","The example from the landing page does not exactly spark joy: ``` testWorkflow .step(llm) .then(decider) .then(agentOne) .then(workflow) .after(decider) .then(agentTwo)…",{"id":137,"by":138,"text":139},"43113935","jumski","I think it is just easier to comprehend if the edges\u002Fdependencies are explicit (as an array for example).",{"value":141,"source":108,"evidence":142},"Many similar agent frameworks already exist; the framework covers only a small part of the work",[143],{"id":144,"by":145,"text":146},"43108437","_pdp_","I don't want to be that person but there are hundreds of other similar frameworks doing more or less the same thing. Do you know why? Because writing a framework that…",{"value":148,"source":108,"evidence":149},"Built on JavaScript, which is the wrong runtime for agents",[150],{"id":151,"by":152,"text":153},"43108655","cpursley","I agree, and it feels like JS is just the wrong runtime for agents. Really languages that can model state in sane ways and have a good concurrency story like Elixir make much…",[155,162,169,176,183],{"value":156,"source":108,"evidence":157},"Python support",[158],{"id":159,"by":160,"text":161},"43106002","gregpr07","Any timeline for python?",{"value":163,"source":108,"evidence":164},"Automatic step retries with backoff",[165],{"id":166,"by":167,"text":168},"43106373","monideas","Are there any plans to add automatic retries for individual steps (with configurable max attempts and backoff strategy)?",{"value":170,"source":108,"evidence":171},"Websocket support",[172],{"id":173,"by":174,"text":175},"43111939","lmrl","Congrats, looks promising! 1. Is it possible to create custom endpoints? I see that several endpoints are created when running “mastra dev”. 2. Related to previous question,…",{"value":177,"source":108,"evidence":178},"SSE MCP server support",[179],{"id":180,"by":181,"text":182},"43105871","joshstrange","This looks awesome! Quick question, are there plans to support SSE MCP servers? I see Stdio [0] are supported and I can always run a proxy but SSE would be awesome. [0]…",{"value":184,"source":108,"evidence":185},"Explicit edges or dependencies in workflow graphs",[186,187],{"id":137,"by":138,"text":139},{"id":188,"by":11,"text":189},"43118303","We have a ticket to allow this actually!",[191,202,212],{"value":192,"source":108,"evidence":193},"What are agents actually for compared with a single LLM call",[194,198],{"id":195,"by":196,"text":197},"43106216","brap","I don’t really understand agents. I just don’t get why we need to pretend we have multiple personalities, especially when they’re all using the same model. Can anyone please give…",{"id":199,"by":200,"text":201},"43106401","2pointsomone","I don't work in prompt engineering but my partner does and she tells me numerous need for agents in cases where you want some technology which goes and seeks things on the live…",{"value":203,"source":108,"evidence":204},"Voice agent support",[205,209],{"id":206,"by":207,"text":208},"43105172","harliem","Impressive. Have you seen any success with Mastra being used to build voice agents? Our company has been experimenting with VAPI, which just launched a workflow builder into open…",{"id":210,"by":11,"text":211},"43105293","We're just starting to do that and have a few TTS providers: ElevenLabs, OpenAI, PlayAI. We hear a lot from people who are outgrowing the voice agent platforms and moving to…",{"value":213,"source":108,"evidence":214},"When to start writing evals",[215,219],{"id":216,"by":217,"text":218},"43103503","aranibatta","Congrats on launching! Curious how early the Mastra team thinks people should be thinking about evals and setting up a pipeline for them.",{"id":220,"by":11,"text":221},"43103589","We tend to recommend folks spend a few hours writing evals after they spend a couple weeks prototyping. Then they get a sense of how valuable evals are for their use-case. We…",[223,231,238,244,248],{"value":224,"source":108,"evidence":225},"LangChain",[226,227],{"id":118,"by":119,"text":120},{"id":228,"by":229,"text":230},"43108733","fsndz","True. That's the reason I see a lot of people dropping similar frameworks like LangChain recently:…",{"value":232,"source":108,"evidence":233},"LangGraph",[234],{"id":235,"by":236,"text":237},"43110904","incanspyder","Couldn't agree more. This also looks mostly like a Typescript \"port\" of Langgraph, and I say \"port\" because Langgraph has a TS framework already.",{"value":85,"source":108,"evidence":239},[240],{"id":241,"by":242,"text":243},"43111094","jerrygoyal","i was using vercel ai sdk for my production app and it was such a bad experience that I eventually went with native implementation and tbh it was not much of work thanks to…",{"value":245,"source":108,"evidence":246},"Instructor",[247],{"id":228,"by":229,"text":230},{"value":249,"source":108,"evidence":250},"Aider architect\u002Feditor approach",[251],{"id":252,"by":253,"text":254},"43106535","bravura","https:\u002F\u002Faider.chat\u002F2024\u002F09\u002F26\u002Farchitect.html \"Aider now has experimental support for using two models to complete each coding task: An Architect model is asked to describe how to…",{"comments":256,"answered":257,"key":258},28,12,[259,262,265],{"id":260,"text":261},"43111621","Thanks! The conditional `when` clauses live on the steps, rather than being represented in the workflow, and in fact when we built this for an example, the last step being called…",{"id":263,"text":264},"43115706","You’re right that the syntax was inspired by the desire to avoid nested structures. But the syntax here is interesting as well and fairly readable. Worth thinking about!",{"id":188,"text":189},{"commenters":267,"max_depth":268,"maker_replies":256,"first_comment_mins":269,"lifespan_hours":270},98,8,33,75,[272,274,276,279,280,283,284,285,287,291,295,298,302,305,308,312,315,318,321,324,326,330,332,334,337,339,341,343,346,348,350,352,353,354,357,359,362,365,369,372,373,376,379,382,386,389,391,394,397,401,404,406,408,411,413,418,421,424,427,430,433,436,438,441,443,444,447,450,452,455,457,460,463,466,468,471,474,475,477,480,482,485,486,487,488,492,495,500,501,502,507,508,510,514,516,518,521,524,528,530,532,535,537,539,542,546,550,552,556,558,560,564,566,569,573,575,578,581,585,589,591,594,596,600,605,607,609,611,615,618,620,622,625,628,630,633,635,639,642,644,647,649,651,655,657,661,663,666,668,671,673,674,676,678],[133,44,34,273,134,44],"project\u002Fcritical\u002Fdesign",[260,44,44,275,11,34],"maker\u002Fneutral\u002Fdesign",[277,44,34,273,278,44],"43113743","anentropic",[263,44,44,275,11,34],[281,44,18,282,278,44],"43126122","project\u002Fneutral\u002Fdesign",[137,44,18,282,138,44],[188,44,44,275,11,34],[286,44,18,282,138,44],"43113922",[288,44,44,289,290,44],"43114354","commenter\u002Fneutral\u002Fnone","campers",[292,44,34,293,294,44],"43114882","project\u002Fcritical\u002Fidea","nwienert",[296,44,44,297,138,44],"43116228","commenter\u002Fneutral\u002Fdesign",[299,44,44,300,301,44],"43118682","other\u002Fneutral\u002Fnone","CMCDragonkai",[303,44,34,293,304,44],"43116216","zeroq",[306,44,44,300,307,44],"43141477","ranjanprj",[309,34,40,310,311,44],"43105774","maker\u002Fpositive\u002Fnone","kylemathews",[313,34,18,314,152,44],"43108691","project\u002Fneutral\u002Fidea",[316,34,44,289,317,44],"43108876","funerr",[319,34,44,300,320,44],"43110390","mvf4z7",[322,34,40,310,323,44],"43112956","doctorpangloss",[180,39,18,325,181,44],"project\u002Fneutral\u002Fnone",[327,39,18,328,329,44],"43106183","maker\u002Fneutral\u002Fnone","tybaa",[331,39,18,325,181,44],"43106250",[333,39,44,289,329,44],"43106320",[335,39,18,336,181,44],"43106593","project\u002Fmixed\u002Fnone",[338,39,18,328,329,44],"43107035",[340,39,44,289,181,44],"43107541",[342,39,40,310,329,44],"43108319",[344,39,18,325,345,44],"43106636","nilslice",[347,39,18,325,329,44],"43108525",[111,18,40,349,112,44],"project\u002Fpositive\u002Fnone",[351,18,44,310,11,34],"43107716",[195,49,34,293,196,44],[199,49,18,314,200,44],[355,49,18,314,356,44],"43106452","dimgl",[358,49,18,314,200,44],"43117996",[360,49,18,314,361,44],"43106499","blainm",[363,49,34,293,364,44],"43106505","weego",[366,49,44,367,368,44],"43106822","commenter\u002Fneutral\u002Fidea","jacobr1",[370,49,34,293,371,44],"43107864","karn97",[252,49,44,300,253,44],[374,49,44,300,375,44],"43119041","hassleblad23",[377,49,18,314,378,44],"43106552","andrewmutz",[380,49,18,314,381,44],"43106679","coffeemug",[383,49,44,384,385,44],"43108095","other\u002Fneutral\u002Fidea","fryz",[387,49,44,384,388,44],"43108671","eric-burel",[390,49,18,314,368,44],"43106770",[392,49,18,314,393,44],"43107749","nsonha",[395,49,18,314,396,44],"43111518","ToJans",[398,40,18,399,400,44],"43105129","project\u002Fneutral\u002Fperformance","Gakho",[402,40,44,403,11,34],"43105240","maker\u002Fneutral\u002Fidea",[405,40,18,325,400,44],"43105291",[407,40,44,300,11,34],"43105807",[409,40,18,325,410,44],"43105556","swyx",[412,40,44,328,11,34],"43105688",[414,415,34,416,417,44],"43105932",6,"maker\u002Fcritical\u002Fnone","epolanski",[419,415,18,328,420,44],"43106193","user9999999999",[422,415,34,416,423,44],"43106351","mplewis",[425,415,18,328,426,44],"43106782","DSchau",[428,415,34,416,429,44],"43106363","squillion",[431,415,34,416,432,44],"43106872","paultannenbaum",[434,415,44,300,435,44],"43107987","benatkin",[437,415,44,300,417,44],"43114442",[439,415,44,300,440,44],"43110654","christina97",[144,442,34,293,145,44],7,[151,442,34,293,152,44],[445,442,44,289,446,44],"43109478","CharlieDigital",[448,442,44,289,449,44],"43110216","dartos",[451,442,44,289,446,44],"43110441",[453,442,44,289,454,44],"43111543","cjonas",[456,442,44,289,446,44],"43114920",[458,442,44,289,459,44],"43111611","holoduke",[461,442,44,300,462,44],"43110484","mikehostetler",[464,442,44,300,465,44],"43111018","MattDaEskimo",[467,442,44,300,152,44],"43113764",[469,442,44,289,470,44],"43108707","fullstackwife",[472,442,44,289,473,44],"43108725","chipgap98",[228,442,34,293,229,44],[241,442,34,476,242,44],"project\u002Fcritical\u002Fexecution",[478,442,44,300,479,44],"43111236","ilrwbwrkhv",[481,442,44,328,11,34],"43108927",[483,442,44,289,484,44],"43109350","santa_boy",[235,442,34,293,236,44],[206,268,18,325,207,44],[210,268,44,325,11,34],[489,268,34,490,491,44],"43118893","project\u002Fcritical\u002Fperformance","jmkni",[493,268,18,328,494,44],"43105303","soulofmischief",[496,497,40,498,499,44],"43107464",9,"project\u002Fpositive\u002Fdocs","eliotthehacker",[216,42,18,328,217,44],[220,42,44,328,11,34],[503,504,18,505,506,44],"43106825",11,"project\u002Fneutral\u002Fpricing","netcraft",[67,504,44,505,11,34],[166,257,18,509,167,44],"project\u002Fneutral\u002Fexecution",[511,512,18,314,513,44],"43106494",13,"davedx",[515,512,40,349,506,44],"43106856",[517,512,44,325,11,34],"43106874",[519,512,18,314,520,44],"43109195","tomhallett",[522,512,18,325,523,44],"43110198","leerob",[525,526,44,300,527,44],"43112050",14,"PetrBrzyBrzek",[173,529,18,325,174,44],15,[531,529,44,328,11,34],"43112361",[533,32,18,325,534,44],"43111312","orliesaurus",[536,32,44,325,11,34],"43111635",[538,32,18,325,534,44],"43123335",[540,32,18,325,541,44],"43137862","tough",[543,544,18,325,545,44],"43119166",17,"dstroot",[547,548,40,349,549,44],"43107560",18,"dhorthy",[551,548,44,310,11,34],"43108415",[553,554,18,325,555,44],"43105621",19,"_1",[557,554,44,325,11,34],"43105743",[559,554,40,349,541,44],"43137870",[561,562,40,349,563,44],"43105134",20,"realmikebernico",[565,562,44,328,11,34],"43105253",[567,562,44,300,568,44],"43106296","ash_091",[570,571,18,328,572,44],"43105151",21,"5Qn8mNbc2FNCiVV",[574,571,44,328,11,34],"43105202",[576,571,44,300,577,44],"43105834","thruflo",[579,571,44,300,580,44],"43105250","dang",[582,583,18,325,584,44],"43108488",22,"fnikacevic",[586,587,18,325,588,44],"43112122",23,"cshimmin",[590,587,44,325,11,34],"43112343",[592,35,40,349,593,44],"43112158","tobyhinloopen",[595,35,44,328,11,34],"43112460",[597,598,34,293,599,44],"43117779",25,"dikaio",[601,602,40,603,604,44],"43105453",26,"project\u002Fpositive\u002Fdesign","levensti",[606,602,18,314,410,44],"43105521",[608,602,44,403,11,34],"43105724",[610,602,44,328,11,34],"43107078",[612,613,40,310,614,44],"43109591",27,"asati",[616,256,40,603,617,44],"43135024","albertmz",[159,619,18,325,160,44],29,[621,619,44,314,11,34],"43106299",[623,619,44,300,624,44],"43114613","thinkxl",[126,626,34,627,127,44],30,"project\u002Fcritical\u002Fpricing",[64,626,44,629,11,34],"maker\u002Fneutral\u002Fpricing",[631,626,34,627,632,44],"43106827","Tomte",[634,626,34,627,127,44],"43107281",[636,637,34,273,638,44],"43108999",31,"delduca",[640,637,44,289,641,44],"43109097","jcheng",[643,637,34,273,638,44],"43109470",[645,637,44,289,646,44],"43110981","SparkyMcUnicorn",[648,637,34,273,638,44],"43113667",[650,637,44,289,646,44],"43124785",[652,653,40,349,654,44],"43105036",32,"jobryan",[656,653,44,328,11,34],"43105124",[658,269,40,659,660,44],"43106904","project\u002Fpositive\u002Fidea","pablodecm",[662,269,44,328,11,34],"43107019",[118,664,40,665,119,44],34,"project\u002Fpositive\u002Fexecution",[667,664,44,328,11,34],"43105101",[669,664,44,289,670,44],"43105509","ge96",[78,672,18,282,79,44],35,[82,672,44,275,11,34],[675,672,44,297,494,44],"43105205",[677,672,44,384,410,44],"43105581",[679,672,44,300,290,44],"43114157",[681,682],{"id":4,"t":12,"points":14,"comments":15},{"id":683,"t":684,"points":685,"comments":686},"46693959",1768927136,213,70,[688,693,698,703,707,711],{"id":689,"name":690,"points":691,"category":692},"43086479","Tintin 'What a week, huh?' live meme",834,"games",{"id":694,"name":695,"points":696,"category":697},"43041827","SQL Noir",463,"learning_science",{"id":699,"name":700,"points":701,"category":702},"43090214","Scripton",449,"dev_tools",{"id":704,"name":705,"points":706,"category":702},"43096477","Subtrace",369,{"id":708,"name":709,"points":710,"category":702},"43048027","CodeWeaver",281,{"id":712,"name":713,"points":714,"category":715},"43071934","ChillyATC",201,"productivity",false,"v2",{"id":719,"name":5,"line":6,"ai":716,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":720,"top":18,"kw":721,"maker":11,"domain":10,"tier":19,"attempts":39,"strip":722,"url":9,"mix":723,"praise":107,"objection":123,"sub":21},43103073,-0.01,[24,25,26,27,28],"1313533522133311100111334334533355111550",[32,33,34,35],1794036669973]