{"exhaustive":{"nbHits":true,"typo":true},"exhaustiveNbHits":true,"exhaustiveTypo":true,"hits":[{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"calcsam"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Hi HN, we\u2019re Sam, Shane, and Abhi, and we\u2019re building Mastra (https://mastra.ai), an open-source JavaScript SDK for building agents on top of Vercel\u2019s AI SDK.

You can start a Mastra project with `npm create mastra` and create workflow graphs that can suspend/resume, build a RAG pipeline and write evals, give agents memory, create multi-agent workflows, and view it all in a local playground.

Previously, 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. We also noticed our friends building AI applications suffering from long iteration cycles: they were getting stuck debugging prompts, figuring out why their agents called (or didn\u2019t call) tools, and writing lots of custom memory retrieval logic.

At some point we just looked at each other and were like, why aren't we trying to make this part easier, and decided to work on Mastra.

Demo video: https://www.youtube.com/watch?v=8o_Ejbcw5s8

One thing we heard from folks is that seeing input/output of every step, of every run of every workflow, is very useful. So we took XState and built a workflow graph primitive on top with OTel tracing. We wrote the APIs to make control flow explicit: `.step()` for branching, `.then()` for chaining, and `.after()` for merging. We also added .`.suspend()/.resume()` for human-in-the-loop.

We abstracted the main RAG verbs like `.chunk()`, `embed()`, `.upsert(),\u2019 `.query()`, and `rerank()` across document types and vector DBs. We shipped an eval runner with evals like completeness and relevance, plus the ability to write your own.

Then we read the MemGPT paper and implemented agent memory on top of AI SDK with a `lastMessages` key, `topK` retrieval, and a `messageRange` for surrounding context (think `grep -C`).

But we still weren\u2019t sure whether our agents were behaving as expected, so we built a local dev playground that lets you curl agents/workflows, chat with agents, view evals and traces across runs, and iterate on prompts with an assistant. The playground uses a local storage layer powered by libsql (thanks Turso team!) and runs on localhost with `npm run dev` (no Docker).

Mastra agents originally ran inside a Next.js app. But we noticed that AI teams\u2019 development was increasingly decoupled from the rest of their organization, so we built Mastra so that you can also run it as a standalone endpoint or service.

Some things people have been building so far: one user automates support for an iOS app he owns with tens of thousands of paying users. Another bundled Mastra inside an Electron app that ingests aerospace PDFs and outputs CAD diagrams. Another is building WhatsApp bots that let you chat with objects like your house.

We did (for now) adopt an Elastic v2 license. The agent space is pretty new, and we wanted to let users do whatever they want with Mastra but prevent, eg, AWS from grabbing it.

If you want to get started:\n- On npm: npm create mastra@latest \n- Github repo: https://github.com/mastra-ai/mastra\n- Demo video: https://www.youtube.com/watch?v=8o_Ejbcw5s8\n- Our website homepage: https://mastra.ai (includes some nice diagrams and code samples on agents, RAG, and links to examples) \n- And our docs: https://mastra.ai/docs

Excited to share Mastra with everyone here \u2013 let us know what you think!"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Show HN: Mastra \u2013 Open-source JS agent framework, by the developers of Gatsby"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://github.com/mastra-ai/mastra"}},"_tags":["story","author_calcsam","story_43103073","show_hn"],"author":"calcsam","children":[43103503,43104920,43105019,43105036,43105129,43105134,43105151,43105172,43105453,43105621,43105774,43105871,43105932,43106002,43106216,43106220,43106373,43106494,43106825,43106904,43107250,43107464,43107560,43107901,43108437,43108488,43108999,43109591,43109820,43109991,43111312,43111545,43111939,43112050,43112122,43112158,43117779,43119166,43135024],"created_at":"2025-02-19T15:25:08Z","created_at_i":1739978708,"num_comments":154,"objectID":"43103073","points":442,"story_id":43103073,"story_text":"Hi HN, we\u2019re Sam, Shane, and Abhi, and we\u2019re building Mastra (https://mastra.ai), an open-source JavaScript SDK for building agents on top of Vercel\u2019s AI SDK.

You can start a Mastra project with `npm create mastra` and create workflow graphs that can suspend/resume, build a RAG pipeline and write evals, give agents memory, create multi-agent workflows, and view it all in a local playground.

Previously, 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. We also noticed our friends building AI applications suffering from long iteration cycles: they were getting stuck debugging prompts, figuring out why their agents called (or didn\u2019t call) tools, and writing lots of custom memory retrieval logic.

At some point we just looked at each other and were like, why aren't we trying to make this part easier, and decided to work on Mastra.

Demo video: https://www.youtube.com/watch?v=8o_Ejbcw5s8

One thing we heard from folks is that seeing input/output of every step, of every run of every workflow, is very useful. So we took XState and built a workflow graph primitive on top with OTel tracing. We wrote the APIs to make control flow explicit: `.step()` for branching, `.then()` for chaining, and `.after()` for merging. We also added .`.suspend()/.resume()` for human-in-the-loop.

We abstracted the main RAG verbs like `.chunk()`, `embed()`, `.upsert(),\u2019 `.query()`, and `rerank()` across document types and vector DBs. We shipped an eval runner with evals like completeness and relevance, plus the ability to write your own.

Then we read the MemGPT paper and implemented agent memory on top of AI SDK with a `lastMessages` key, `topK` retrieval, and a `messageRange` for surrounding context (think `grep -C`).

But we still weren\u2019t sure whether our agents were behaving as expected, so we built a local dev playground that lets you curl agents/workflows, chat with agents, view evals and traces across runs, and iterate on prompts with an assistant. The playground uses a local storage layer powered by libsql (thanks Turso team!) and runs on localhost with `npm run dev` (no Docker).

Mastra agents originally ran inside a Next.js app. But we noticed that AI teams\u2019 development was increasingly decoupled from the rest of their organization, so we built Mastra so that you can also run it as a standalone endpoint or service.

Some things people have been building so far: one user automates support for an iOS app he owns with tens of thousands of paying users. Another bundled Mastra inside an Electron app that ingests aerospace PDFs and outputs CAD diagrams. Another is building WhatsApp bots that let you chat with objects like your house.

We did (for now) adopt an Elastic v2 license. The agent space is pretty new, and we wanted to let users do whatever they want with Mastra but prevent, eg, AWS from grabbing it.

If you want to get started:\n- On npm: npm create mastra@latest \n- Github repo: https://github.com/mastra-ai/mastra\n- Demo video: https://www.youtube.com/watch?v=8o_Ejbcw5s8\n- Our website homepage: https://mastra.ai (includes some nice diagrams and code samples on agents, RAG, and links to examples) \n- And our docs: https://mastra.ai/docs

Excited to share Mastra with everyone here \u2013 let us know what you think!","title":"Show HN: Mastra \u2013 Open-source JS agent framework, by the developers of Gatsby","updated_at":"2026-04-14T23:59:08Z","url":"https://github.com/mastra-ai/mastra"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"calcsam"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Hi HN, we're Sam, Shane, and Abhi.

Almost a year ago, we first shared Mastra here (https://news.ycombinator.com/item?id=43103073). It\u2019s kind of fun looking back since we were only a few months into building at the time. The HN community gave a lot of enthusiasm and some helpful feedback.

Today, we released Mastra 1.0 in stable, so we wanted to come back and talk about what\u2019s changed.

If you\u2019re new to Mastra, it's an open-source TypeScript agent framework that also lets you create multi-agent workflows, run evals, inspect in a local studio, and emit observability.

Since our last post, Mastra has grown to over 300k weekly npm downloads and 19.4k GitHub stars. It\u2019s now Apache 2.0 licensed and runs in prod at companies like Replit, PayPal, and Sanity.

Agent development is changing quickly, so we\u2019ve added a lot since February:

- Native model routing: You can access 600+ models from 40+ providers by specifying a model string (e.g., `openai/gpt-5.2-codex`) with TS autocomplete and fallbacks.

- Guardrails: Low-latency input and output processors for prompt injection detection, PII redaction, and content moderation. The tricky thing here was the low-latency part.

- Scorers: An async eval primitive for grading agent outputs. Users were asking how they should do evals. We wanted to make it easy to attach to Mastra agents, runnable in Mastra studio, and save results in Mastra storage.

- Plus a few other features like AI tracing (per-call costing for Langfuse, Braintrust, etc), memory processors, a `.network()` method that turns any agent into a routing agent, and server adapters to integrate Mastra within an existing Express/Hono server.

(That last one took a bit of time, we went down the ESM/CJS bundling rabbithole, ran into lots of monorepo issues, and ultimately opted for a more explicit approach.)

Anyway, we'd love for you to try Mastra out and let us know what you think. You can get started with `npm create mastra@latest`.

We'll be around and happy to answer any questions!"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Show HN: Mastra 1.0, open-source JavaScript agent framework from the Gatsby devs"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://github.com/mastra-ai/mastra"}},"_tags":["story","author_calcsam","story_46693959","show_hn"],"author":"calcsam","children":[46697168,46697330,46697336,46697346,46697549,46697554,46697582,46697822,46698748,46698861,46699007,46699322,46699323,46699748,46699990,46700367,46700788,46701008,46701238,46701350,46701702,46703051,46704176,46706505,46707830,46708111,46708234,46709744],"created_at":"2026-01-20T16:38:56Z","created_at_i":1768927136,"num_comments":70,"objectID":"46693959","points":213,"story_id":46693959,"story_text":"Hi HN, we're Sam, Shane, and Abhi.

Almost a year ago, we first shared Mastra here (https://news.ycombinator.com/item?id=43103073). It\u2019s kind of fun looking back since we were only a few months into building at the time. The HN community gave a lot of enthusiasm and some helpful feedback.

Today, we released Mastra 1.0 in stable, so we wanted to come back and talk about what\u2019s changed.

If you\u2019re new to Mastra, it's an open-source TypeScript agent framework that also lets you create multi-agent workflows, run evals, inspect in a local studio, and emit observability.

Since our last post, Mastra has grown to over 300k weekly npm downloads and 19.4k GitHub stars. It\u2019s now Apache 2.0 licensed and runs in prod at companies like Replit, PayPal, and Sanity.

Agent development is changing quickly, so we\u2019ve added a lot since February:

- Native model routing: You can access 600+ models from 40+ providers by specifying a model string (e.g., `openai/gpt-5.2-codex`) with TS autocomplete and fallbacks.

- Guardrails: Low-latency input and output processors for prompt injection detection, PII redaction, and content moderation. The tricky thing here was the low-latency part.

- Scorers: An async eval primitive for grading agent outputs. Users were asking how they should do evals. We wanted to make it easy to attach to Mastra agents, runnable in Mastra studio, and save results in Mastra storage.

- Plus a few other features like AI tracing (per-call costing for Langfuse, Braintrust, etc), memory processors, a `.network()` method that turns any agent into a routing agent, and server adapters to integrate Mastra within an existing Express/Hono server.

(That last one took a bit of time, we went down the ESM/CJS bundling rabbithole, ran into lots of monorepo issues, and ultimately opted for a more explicit approach.)

Anyway, we'd love for you to try Mastra out and let us know what you think. You can get started with `npm create mastra@latest`.

We'll be around and happy to answer any questions!","title":"Show HN: Mastra 1.0, open-source JavaScript agent framework from the Gatsby devs","updated_at":"2026-03-05T23:29:06Z","url":"https://github.com/mastra-ai/mastra"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"sebg"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Building AI Agents with Mastra and Deno"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://katsuba.dev/articles/building-ai-agents-with-mastra-and-deno"}},"_tags":["story","author_sebg","story_43634533"],"author":"sebg","children":[43634554],"created_at":"2025-04-09T17:06:45Z","created_at_i":1744218405,"num_comments":1,"objectID":"43634533","points":5,"story_id":43634533,"title":"Building AI Agents with Mastra and Deno","updated_at":"2025-04-10T15:02:07Z","url":"https://katsuba.dev/articles/building-ai-agents-with-mastra-and-deno"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"varunsharma07"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Multiple mastra NPM packages compromised"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://github.com/mastra-ai/mastra/issues/18045"}},"_tags":["story","author_varunsharma07","story_48564925"],"author":"varunsharma07","children":[48564926],"created_at":"2026-06-17T02:10:51Z","created_at_i":1781662251,"num_comments":1,"objectID":"48564925","points":4,"story_id":48564925,"title":"Multiple mastra NPM packages compromised","updated_at":"2026-06-17T03:22:51Z","url":"https://github.com/mastra-ai/mastra/issues/18045"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"codekarate"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Mastra is now Apache 2.0 licensed"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://mastra.ai/blog/apache-license"}},"_tags":["story","author_codekarate","story_44532082"],"author":"codekarate","created_at":"2025-07-11T13:44:04Z","created_at_i":1752241444,"num_comments":0,"objectID":"44532082","points":4,"story_id":44532082,"title":"Mastra is now Apache 2.0 licensed","updated_at":"2025-07-11T15:43:27Z","url":"https://mastra.ai/blog/apache-license"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"handfuloflight"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Mastra: The TypeScript AI Framework"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://mastra.ai/"}},"_tags":["story","author_handfuloflight","story_42344734"],"author":"handfuloflight","created_at":"2024-12-06T21:35:17Z","created_at_i":1733520917,"num_comments":0,"objectID":"42344734","points":4,"story_id":42344734,"title":"Mastra: The TypeScript AI Framework","updated_at":"2025-04-10T17:41:49Z","url":"https://mastra.ai/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"bugvader"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Mastra compromised in supply chain attack"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://www.endorlabs.com/learn/mastra-npm-org-compromised-multiple-packages-trojanized-to-drop-a-remote-payload-via-easy-day-js"}},"_tags":["story","author_bugvader","story_48565319"],"author":"bugvader","children":[48565320,48565390,48595566],"created_at":"2026-06-17T03:24:25Z","created_at_i":1781666665,"num_comments":2,"objectID":"48565319","points":3,"story_id":48565319,"title":"Mastra compromised in supply chain attack","updated_at":"2026-06-19T06:47:13Z","url":"https://www.endorlabs.com/learn/mastra-npm-org-compromised-multiple-packages-trojanized-to-drop-a-remote-payload-via-easy-day-js"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"nbbaier"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Mastra 101"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://mastra.ai/course"}},"_tags":["story","author_nbbaier","story_44188086"],"author":"nbbaier","children":[44188087],"created_at":"2025-06-05T03:33:16Z","created_at_i":1749094396,"num_comments":1,"objectID":"44188086","points":3,"story_id":44188086,"title":"Mastra 101","updated_at":"2025-06-11T05:19:00Z","url":"https://mastra.ai/course"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"crashpn"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"140+ Mastra npm Packages Compromised in Coordinated Supply Chain Attack"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://socket.dev/blog/mastra-npm-packages-compromised"}},"_tags":["story","author_crashpn","story_48897959"],"author":"crashpn","children":[48898156],"created_at":"2026-07-13T19:59:07Z","created_at_i":1783972747,"num_comments":0,"objectID":"48897959","points":3,"story_id":48897959,"title":"140+ Mastra npm Packages Compromised in Coordinated Supply Chain Attack","updated_at":"2026-07-14T00:18:16Z","url":"https://socket.dev/blog/mastra-npm-packages-compromised"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"fagnerbrack"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"The TypeScript AI Framework \u2013 Mastra"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://mastra.ai/"}},"_tags":["story","author_fagnerbrack","story_47957538"],"author":"fagnerbrack","created_at":"2026-04-30T03:00:22Z","created_at_i":1777518022,"num_comments":0,"objectID":"47957538","points":3,"story_id":47957538,"title":"The TypeScript AI Framework \u2013 Mastra","updated_at":"2026-04-30T05:04:34Z","url":"https://mastra.ai/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"AnhTho_FR"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Mastra Cloud"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://mastra.ai/cloud"}},"_tags":["story","author_AnhTho_FR","story_44392228"],"author":"AnhTho_FR","created_at":"2025-06-26T22:50:01Z","created_at_i":1750978201,"num_comments":0,"objectID":"44392228","points":3,"story_id":44392228,"title":"Mastra Cloud","updated_at":"2025-06-27T01:06:15Z","url":"https://mastra.ai/cloud"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"manthangupta109"},"story_text":{"matchLevel":"none","matchedWords":[],"value":"I went through both the blog and the code for Observational Memory, and really interesting direction, and I appreciate the transparency in sharing implementation details. I do have a few thoughts on the SOTA memory claim and the broader framing.

From what I can see:

1. The implementation appears heavily tuned toward performing well on LongMemEval. That's a useful signal, but it doesn't necessarily translate to robust long-term memory behavior in production environments.

2. It feels closer to context compression/context management than a durable long-term agent memory system. This will perform really well for a single long-running task

3. Both the Observer and Reflector rewrite memory in compressed form. That's helpful for token control, but compression is inherently lossy and can drop smaller details that might become important later.

4. The Reflector seems to validate success primarily via token thresholds, rather than checking whether the rewritten memory remains semantically faithful to the original. Over time, this could allow memory drift.

5. The Observer prompt may introduce assumptions (e.g., inferring that a planned action happened if enough time has passed), which risks creating incorrect memories.

6. The design appears to emphasize recency when rewriting observations. While that keeps context fresh, it may bias the system toward recent information and gradually compress away older but still important details. Durable memory systems usually need mechanisms to preserve salient long-term facts, not just recent activity.

7. The full observations block is repeatedly injected into context. This may increase token cost and introduce irrelevant noise depending on the task.

8. There appears to be limited grounding back to raw message evidence at response time, which makes it harder to detect and correct incorrect compressed memories.

9. Finally, I think we should be cautious about claiming "SOTA" based on performance on a single benchmark. LongMemEval results may demonstrate strong performance on that setup, but production workloads are much messier. Robustness, drift, grounding, and cost behavior typically show up only under sustained real-world usage.

Overall, this looks like a strong benchmark-oriented context handling. I am just less convinced that it yet qualifies as a robust, general-purpose long-term memory system. Curious how the team is thinking about these trade-offs beyond benchmark performance."},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Ask HN: Views on Mastra's SOTA Memory?"}},"_tags":["story","author_manthangupta109","story_46992444","ask_hn"],"author":"manthangupta109","children":[47078600],"created_at":"2026-02-12T17:59:17Z","created_at_i":1770919157,"num_comments":1,"objectID":"46992444","points":2,"story_id":46992444,"story_text":"I went through both the blog and the code for Observational Memory, and really interesting direction, and I appreciate the transparency in sharing implementation details. I do have a few thoughts on the SOTA memory claim and the broader framing.

From what I can see:

1. The implementation appears heavily tuned toward performing well on LongMemEval. That's a useful signal, but it doesn't necessarily translate to robust long-term memory behavior in production environments.

2. It feels closer to context compression/context management than a durable long-term agent memory system. This will perform really well for a single long-running task

3. Both the Observer and Reflector rewrite memory in compressed form. That's helpful for token control, but compression is inherently lossy and can drop smaller details that might become important later.

4. The Reflector seems to validate success primarily via token thresholds, rather than checking whether the rewritten memory remains semantically faithful to the original. Over time, this could allow memory drift.

5. The Observer prompt may introduce assumptions (e.g., inferring that a planned action happened if enough time has passed), which risks creating incorrect memories.

6. The design appears to emphasize recency when rewriting observations. While that keeps context fresh, it may bias the system toward recent information and gradually compress away older but still important details. Durable memory systems usually need mechanisms to preserve salient long-term facts, not just recent activity.

7. The full observations block is repeatedly injected into context. This may increase token cost and introduce irrelevant noise depending on the task.

8. There appears to be limited grounding back to raw message evidence at response time, which makes it harder to detect and correct incorrect compressed memories.

9. Finally, I think we should be cautious about claiming "SOTA" based on performance on a single benchmark. LongMemEval results may demonstrate strong performance on that setup, but production workloads are much messier. Robustness, drift, grounding, and cost behavior typically show up only under sustained real-world usage.

Overall, this looks like a strong benchmark-oriented context handling. I am just less convinced that it yet qualifies as a robust, general-purpose long-term memory system. Curious how the team is thinking about these trade-offs beyond benchmark performance.","title":"Ask HN: Views on Mastra's SOTA Memory?","updated_at":"2026-03-05T23:35:37Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"shaunpud"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Mastra NPM Supply Chain Attack: 140 Packages Backdoor via easy-day-JS Typosquat"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://www.stepsecurity.io/blog/mastra-npm-packages-compromised-using-easy-day-js"}},"_tags":["story","author_shaunpud","story_48568298"],"author":"shaunpud","created_at":"2026-06-17T10:28:30Z","created_at_i":1781692110,"num_comments":0,"objectID":"48568298","points":2,"story_id":48568298,"title":"Mastra NPM Supply Chain Attack: 140 Packages Backdoor via easy-day-JS Typosquat","updated_at":"2026-06-17T11:41:37Z","url":"https://www.stepsecurity.io/blog/mastra-npm-packages-compromised-using-easy-day-js"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"alex7o"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Mastra Code"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://code.mastra.ai/"}},"_tags":["story","author_alex7o","story_47860880"],"author":"alex7o","created_at":"2026-04-22T08:50:04Z","created_at_i":1776847804,"num_comments":0,"objectID":"47860880","points":2,"story_id":47860880,"title":"Mastra Code","updated_at":"2026-04-22T08:53:51Z","url":"https://code.mastra.ai/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"alaeddine-13"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Agent Skills Support in Mastra"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://github.com/mastra-ai/mastra/pull/12252"}},"_tags":["story","author_alaeddine-13","story_46742546"],"author":"alaeddine-13","created_at":"2026-01-24T10:56:28Z","created_at_i":1769252188,"num_comments":0,"objectID":"46742546","points":2,"story_id":46742546,"title":"Agent Skills Support in Mastra","updated_at":"2026-03-05T23:24:38Z","url":"https://github.com/mastra-ai/mastra/pull/12252"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"calcsam"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Mastra is now Apache 2.0 licensed"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://mastra.ai/blog/apache-license"}},"_tags":["story","author_calcsam","story_44592773"],"author":"calcsam","created_at":"2025-07-17T12:49:12Z","created_at_i":1752756552,"num_comments":0,"objectID":"44592773","points":2,"story_id":44592773,"title":"Mastra is now Apache 2.0 licensed","updated_at":"2025-07-17T13:28:10Z","url":"https://mastra.ai/blog/apache-license"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"blufish"},"title":{"fullyHighlighted":true,"matchLevel":"full","matchedWords":["mastra"],"value":"Mastra"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://mastra.ai/"}},"_tags":["story","author_blufish","story_46656053"],"author":"blufish","children":[46656054],"created_at":"2026-01-17T07:30:50Z","created_at_i":1768635050,"num_comments":1,"objectID":"46656053","points":1,"story_id":46656053,"title":"Mastra","updated_at":"2026-03-05T23:26:35Z","url":"https://mastra.ai/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"ianhmacartney"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"I reimplemented Mastra workflows with my own durable functions and I regret it"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://stack.convex.dev/reimplementing-mastra-regrets"}},"_tags":["story","author_ianhmacartney","story_43565154"],"author":"ianhmacartney","children":[43565155],"created_at":"2025-04-03T05:34:58Z","created_at_i":1743658498,"num_comments":1,"objectID":"43565154","points":1,"story_id":43565154,"title":"I reimplemented Mastra workflows with my own durable functions and I regret it","updated_at":"2025-04-03T05:38:29Z","url":"https://stack.convex.dev/reimplementing-mastra-regrets"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"philiparxist"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Feedback on a runtime-agnostic AI agent workflow spec (LangGraph/Mastra)"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/3IVIS/itsharness"}},"_tags":["story","author_philiparxist","story_48147471"],"author":"philiparxist","children":[48147472],"created_at":"2026-05-15T11:53:25Z","created_at_i":1778846005,"num_comments":0,"objectID":"48147471","points":1,"story_id":48147471,"title":"Feedback on a runtime-agnostic AI agent workflow spec (LangGraph/Mastra)","updated_at":"2026-05-16T08:36:34Z","url":"https://github.com/3IVIS/itsharness"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"calcsam"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Announcing Mastra's Agent Studio"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://mastra.ai/blog/agent-studio"}},"_tags":["story","author_calcsam","story_45763612"],"author":"calcsam","created_at":"2025-10-30T18:40:18Z","created_at_i":1761849618,"num_comments":0,"objectID":"45763612","points":1,"story_id":45763612,"title":"Announcing Mastra's Agent Studio","updated_at":"2026-03-05T22:58:45Z","url":"https://mastra.ai/blog/agent-studio"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"jmarbach"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Monitoring Safari Park Camera Feeds with Mastra.ai"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://anchorbrowser.io/blog/monitoring-safari-park-camera-feeds-with-mastra-ai"}},"_tags":["story","author_jmarbach","story_45276028"],"author":"jmarbach","created_at":"2025-09-17T14:08:07Z","created_at_i":1758118087,"num_comments":0,"objectID":"45276028","points":1,"story_id":45276028,"title":"Monitoring Safari Park Camera Feeds with Mastra.ai","updated_at":"2026-03-05T22:43:12Z","url":"https://anchorbrowser.io/blog/monitoring-safari-park-camera-feeds-with-mastra-ai"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"slawton3"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"How to deploy a containerized Mastra AI app with Cloudflare Containers"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://twitter.com/snlwtn/status/1958648742703493128"}},"_tags":["story","author_slawton3","story_44978644"],"author":"slawton3","created_at":"2025-08-21T22:03:16Z","created_at_i":1755813796,"num_comments":0,"objectID":"44978644","points":1,"story_id":44978644,"title":"How to deploy a containerized Mastra AI app with Cloudflare Containers","updated_at":"2026-03-05T22:32:49Z","url":"https://twitter.com/snlwtn/status/1958648742703493128"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"calcsam"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Mastra is now Apache 2.0 licensed"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://mastra.ai/blog/apache-license"}},"_tags":["story","author_calcsam","story_44524731"],"author":"calcsam","created_at":"2025-07-10T19:46:20Z","created_at_i":1752176780,"num_comments":0,"objectID":"44524731","points":1,"story_id":44524731,"title":"Mastra is now Apache 2.0 licensed","updated_at":"2025-07-10T19:48:38Z","url":"https://mastra.ai/blog/apache-license"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"handfuloflight"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Reimplementing Mastra Workflows: Lessons Learned"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://stack.convex.dev/reimplementing-mastra-regrets"}},"_tags":["story","author_handfuloflight","story_43610372"],"author":"handfuloflight","created_at":"2025-04-07T12:09:55Z","created_at_i":1744027795,"num_comments":0,"objectID":"43610372","points":1,"story_id":43610372,"title":"Reimplementing Mastra Workflows: Lessons Learned","updated_at":"2025-04-07T12:15:19Z","url":"https://stack.convex.dev/reimplementing-mastra-regrets"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"sebg"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Optimizing Mastra for Seamless Edge Deployments"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://mastra.ai/blog/seamless-edge-deployments"}},"_tags":["story","author_sebg","story_43475935"],"author":"sebg","created_at":"2025-03-25T21:02:36Z","created_at_i":1742936556,"num_comments":0,"objectID":"43475935","points":1,"story_id":43475935,"title":"Optimizing Mastra for Seamless Edge Deployments","updated_at":"2025-03-25T21:06:05Z","url":"https://mastra.ai/blog/seamless-edge-deployments"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"javatuts"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Mastra \u2013 Open-source JavaScript agent framework"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://mastra.dev/"}},"_tags":["story","author_javatuts","story_43158355"],"author":"javatuts","created_at":"2025-02-24T11:35:04Z","created_at_i":1740396904,"num_comments":0,"objectID":"43158355","points":1,"story_id":43158355,"title":"Mastra \u2013 Open-source JavaScript agent framework","updated_at":"2025-02-24T11:36:43Z","url":"https://mastra.dev/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"AnhTho_FR"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Mastra: TypeScript AI Framework"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://mastra.ai/"}},"_tags":["story","author_AnhTho_FR","story_42883943"],"author":"AnhTho_FR","created_at":"2025-01-31T01:29:40Z","created_at_i":1738286980,"num_comments":0,"objectID":"42883943","points":1,"story_id":42883943,"title":"Mastra: TypeScript AI Framework","updated_at":"2025-01-31T01:34:07Z","url":"https://mastra.ai/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"codekarate"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"We wanted to build a course for new Mastra devs to get started quickly. However, we knew videos would go out of date and be more difficult to maintain.

We decided to launch our "course" as an MCP server. This way your coding agent actually teaches the course content to you and can help you write the code. We think this is a really interactive way to learn.

Using an editor with MCP support (such as Cursor, Windsurf, or VSCode), your code agent will call the appropriate MCP tools which will return context for the agent. This context tries to instruct the agent that it should be teaching you the content, not just doing the work for you.

The course is still pretty experimental and some models work better than others. Code is available in the Mastra Github repo in the mcp-docs-server package (https://github.com/mastra-ai/mastra/tree/main/packages/mcp-d...)"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: A \u201cCourse\u201d as an MCP Server"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://mastra.ai/course"}},"_tags":["story","author_codekarate","story_44241202","show_hn"],"author":"codekarate","children":[44242154,44242555,44243350,44243783,44244855,44245792,44245828,44248048,44248149,44249313,44253815,44262593],"created_at":"2025-06-10T20:36:55Z","created_at_i":1749587815,"num_comments":32,"objectID":"44241202","points":213,"story_id":44241202,"story_text":"We wanted to build a course for new Mastra devs to get started quickly. However, we knew videos would go out of date and be more difficult to maintain.

We decided to launch our "course" as an MCP server. This way your coding agent actually teaches the course content to you and can help you write the code. We think this is a really interactive way to learn.

Using an editor with MCP support (such as Cursor, Windsurf, or VSCode), your code agent will call the appropriate MCP tools which will return context for the agent. This context tries to instruct the agent that it should be teaching you the content, not just doing the work for you.

The course is still pretty experimental and some models work better than others. Code is available in the Mastra Github repo in the mcp-docs-server package (https://github.com/mastra-ai/mastra/tree/main/packages/mcp-d...)","title":"Show HN: A \u201cCourse\u201d as an MCP Server","updated_at":"2026-02-26T18:39:37Z","url":"https://mastra.ai/course"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"eallam"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Hi HN, I\u2019m Eric, CTO at Trigger.dev (https://trigger.dev). We\u2019re a developer platform for building and running AI agents and workflows, open-source under the Apache 2.0 license (https://github.com/triggerdotdev/trigger.dev).

We provide everything needed to create production-grade agents in your codebase and deploy, run, monitor, and debug them. You can use just our primitives or combine with tools like Mastra, LangChain and Vercel AI SDK. You can self-host or use our cloud, where we take care of scaling for you. Here\u2019s a quick demo: (https://youtu.be/kFCzKE89LD8).

We started in 2023 as a way to reliably run async background jobs/workflows in TypeScript (https://news.ycombinator.com/item?id=34610686). Initially we didn\u2019t deploy your code, we just orchestrated it. But we found that most developers struggled to write reliable code with implicit determinism, found breaking their work into small \u201csteps\u201d tricky, and they wanted to install any system packages they needed. Serverless timeouts made this even more painful.

We also wanted to allow you to wait for things to happen: on external events, other tasks finishing, or just time passing. Those waits can take minutes, hours, or forever in the case of events, so you can\u2019t just keep a server running.

The solution was to build and operate our own serverless cloud infrastructure. The key breakthrough that enabled this was realizing we could snapshot the CPU and memory state. This allowed us to pause running code, store the snapshot, then restore it later on a different physical server. We currently use Checkpoint Restore In Userspace (CRIU) which Google has been using at scale inside Borg since 2018.

Since then, our adoption has really taken off especially because of AI agents/workflows. This has opened up a ton of new use cases like compute-heavy tasks such as generating videos using AI (Icon.com), real-time computer use (Scrapybara), AI enrichment pipelines (Pallet, Centralize), and vibe coding tools (Hero UI, Magic Patterns, Capy.ai).

You can get started with Trigger.dev cloud (https://cloud.trigger.dev), self-hosting (https://trigger.dev/docs/self-hosting/overview), or read the docs (https://trigger.dev/docs).

Here\u2019s a sneak peek at some upcoming changes: 1) warm starts for self-hosting 2) switching to MicroVMs for execution \u2013 this will be open source, self-hostable, and will include checkpoint/restoring.

We\u2019re excited to be sharing this with HN and are open to all feedback!"},"title":{"matchLevel":"none","matchedWords":[],"value":"Launch HN: Trigger.dev (YC W23) \u2013 Open-source platform to build reliable AI apps"}},"_tags":["story","author_eallam","story_45250720","launch_hn"],"author":"eallam","children":[45250894,45250961,45250969,45250988,45251071,45251149,45251283,45251302,45251341,45251367,45251621,45251790,45251919,45252051,45252099,45252533,45253054,45253069,45253583,45253611,45253689,45253954,45255816,45255823,45256385,45256643,45257619,45258125,45258270,45259389,45260669,45276542],"created_at":"2025-09-15T15:20:18Z","created_at_i":1757949618,"num_comments":65,"objectID":"45250720","points":162,"story_id":45250720,"story_text":"Hi HN, I\u2019m Eric, CTO at Trigger.dev (https://trigger.dev). We\u2019re a developer platform for building and running AI agents and workflows, open-source under the Apache 2.0 license (https://github.com/triggerdotdev/trigger.dev).

We provide everything needed to create production-grade agents in your codebase and deploy, run, monitor, and debug them. You can use just our primitives or combine with tools like Mastra, LangChain and Vercel AI SDK. You can self-host or use our cloud, where we take care of scaling for you. Here\u2019s a quick demo: (https://youtu.be/kFCzKE89LD8).

We started in 2023 as a way to reliably run async background jobs/workflows in TypeScript (https://news.ycombinator.com/item?id=34610686). Initially we didn\u2019t deploy your code, we just orchestrated it. But we found that most developers struggled to write reliable code with implicit determinism, found breaking their work into small \u201csteps\u201d tricky, and they wanted to install any system packages they needed. Serverless timeouts made this even more painful.

We also wanted to allow you to wait for things to happen: on external events, other tasks finishing, or just time passing. Those waits can take minutes, hours, or forever in the case of events, so you can\u2019t just keep a server running.

The solution was to build and operate our own serverless cloud infrastructure. The key breakthrough that enabled this was realizing we could snapshot the CPU and memory state. This allowed us to pause running code, store the snapshot, then restore it later on a different physical server. We currently use Checkpoint Restore In Userspace (CRIU) which Google has been using at scale inside Borg since 2018.

Since then, our adoption has really taken off especially because of AI agents/workflows. This has opened up a ton of new use cases like compute-heavy tasks such as generating videos using AI (Icon.com), real-time computer use (Scrapybara), AI enrichment pipelines (Pallet, Centralize), and vibe coding tools (Hero UI, Magic Patterns, Capy.ai).

You can get started with Trigger.dev cloud (https://cloud.trigger.dev), self-hosting (https://trigger.dev/docs/self-hosting/overview), or read the docs (https://trigger.dev/docs).

Here\u2019s a sneak peek at some upcoming changes: 1) warm starts for self-hosting 2) switching to MicroVMs for execution \u2013 this will be open source, self-hostable, and will include checkpoint/restoring.

We\u2019re excited to be sharing this with HN and are open to all feedback!","title":"Launch HN: Trigger.dev (YC W23) \u2013 Open-source platform to build reliable AI apps","updated_at":"2026-03-05T22:41:38Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"engomez"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Hi HN! I'm Nick from Inkeep. We built an agent builder with true 2-way sync between code and a drag-and-drop visual editor, so devs and non-devs can collaborate on the same agents. Here\u2019s a demo video: https://go.inkeep.com/video.

As a developer, the flow is:\n1) Build AI Chat Assistants or AI Workflows with the TypeScript SDK 2) Run `inkeep push` from your CLI to publish 3)Edit agents in the visual builder (or hand off to non-technical teams) 4) Run `inkeep pull to edit in code again.

We built this because we wanted the accessibility of no-code workflow builders (n8n, Zapier), but the flexibility and devex of code-based agent frameworks (LangGraph, Mastra). We also wanted first-class support for chat assistants with interactive UIs, not just workflows. OpenAI got close, but you can only do a one-time export from visual builder to code and there\u2019s vendor lock-in.

How I've used it: I bootstrapped a few agents for our marketing and sales teams, then was able to hand off so they can maintain and create their own agents. This has enabled us to adopt agents across technical and non-technical roles in our company on a single platform.

To try it, here\u2019s the quickstart: https://go.inkeep.com/quickstart.

We leaned on open protocols to make it easy to use agents anywhere:\nAn MCP endpoint, so agents can be used from Cursor/Claude/ChatGPT\nA Chat UI library with interactive elements you can customize in React\nAn API endpoint compatible with the Vercel AI SDK `useChat` hook\nSupport for Agent2Agent (A2A) so they work with other agent ecosystems

We made some practical templates like a customer_support, deep_research, and docs_assistant. Deployment is easy with Vercel/Docker with a fair-code license and there's a traces UI and OTEL logs for observability.

Under the hood, we went all-in on a multi-agent architecture. Agents are made up of LLMs, MCPs, and agent-to-agent relationships. We\u2019ve found this approach to be easier to maintain and more flexible than traditional \u201cif/else\u201d approaches for complex workflows.

The interoperability works because the SDK and visual builder share a common underlying representation, and the Inkeep CLI bridges it with a mix of LLMs and TypeScript syntactic sugar. Details in our docs: https://docs.inkeep.com.

We\u2019re open to ideas and contributions! And would love to hear about your experience building agents - what works, hasn\u2019t worked, what\u2019s promising?"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: Inkeep (YC W23) \u2013 Agent Builder to create agents in code or visually"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/inkeep/agents"}},"_tags":["story","author_engomez","story_45604700","show_hn"],"author":"engomez","children":[45605461,45605499,45605514,45605640,45605674,45605773,45606286,45606314,45606324,45607660,45608233,45609341,45610224,45612116,45612711,45614126,45614674,45616292],"created_at":"2025-10-16T12:50:08Z","created_at_i":1760619008,"num_comments":49,"objectID":"45604700","points":79,"story_id":45604700,"story_text":"Hi HN! I'm Nick from Inkeep. We built an agent builder with true 2-way sync between code and a drag-and-drop visual editor, so devs and non-devs can collaborate on the same agents. Here\u2019s a demo video: https://go.inkeep.com/video.

As a developer, the flow is:\n1) Build AI Chat Assistants or AI Workflows with the TypeScript SDK 2) Run `inkeep push` from your CLI to publish 3)Edit agents in the visual builder (or hand off to non-technical teams) 4) Run `inkeep pull to edit in code again.

We built this because we wanted the accessibility of no-code workflow builders (n8n, Zapier), but the flexibility and devex of code-based agent frameworks (LangGraph, Mastra). We also wanted first-class support for chat assistants with interactive UIs, not just workflows. OpenAI got close, but you can only do a one-time export from visual builder to code and there\u2019s vendor lock-in.

How I've used it: I bootstrapped a few agents for our marketing and sales teams, then was able to hand off so they can maintain and create their own agents. This has enabled us to adopt agents across technical and non-technical roles in our company on a single platform.

To try it, here\u2019s the quickstart: https://go.inkeep.com/quickstart.

We leaned on open protocols to make it easy to use agents anywhere:\nAn MCP endpoint, so agents can be used from Cursor/Claude/ChatGPT\nA Chat UI library with interactive elements you can customize in React\nAn API endpoint compatible with the Vercel AI SDK `useChat` hook\nSupport for Agent2Agent (A2A) so they work with other agent ecosystems

We made some practical templates like a customer_support, deep_research, and docs_assistant. Deployment is easy with Vercel/Docker with a fair-code license and there's a traces UI and OTEL logs for observability.

Under the hood, we went all-in on a multi-agent architecture. Agents are made up of LLMs, MCPs, and agent-to-agent relationships. We\u2019ve found this approach to be easier to maintain and more flexible than traditional \u201cif/else\u201d approaches for complex workflows.

The interoperability works because the SDK and visual builder share a common underlying representation, and the Inkeep CLI bridges it with a mix of LLMs and TypeScript syntactic sugar. Details in our docs: https://docs.inkeep.com.

We\u2019re open to ideas and contributions! And would love to hear about your experience building agents - what works, hasn\u2019t worked, what\u2019s promising?","title":"Show HN: Inkeep (YC W23) \u2013 Agent Builder to create agents in code or visually","updated_at":"2026-04-29T18:30:50Z","url":"https://github.com/inkeep/agents"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"systima"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"EU legislation (which affects UK and US companies in many cases) requires being able to truly reconstruct agentic events.

I've worked in a number of regulated industries off & on for years, and recently hit this gap.

We already had strong observability, but if someone asked me to prove exactly what happened for a specific AI decision X months ago (and demonstrate that the log trail had not been altered), I could not.

The EU AI Act has already entered force, and its Article 12 kicks-in in August this year, requiring automatic event recording and six-month retention for high-risk systems, which many legal commentators have suggested reads more like an append-only ledger requirement than standard application logging.

With this in mind, we built a small free, open-source TypeScript library for Node apps using the Vercel AI SDK that captures inference as an append-only log.

It wraps the model in middleware, automatically logs every inference call to structured JSONL in your own S3 bucket, chains entries with SHA-256 hashes for tamper detection, enforces a 180-day retention floor, and provides a CLI to reconstruct a decision and verify integrity. There is also a coverage command that flags likely gaps (in practice omissions are a bigger risk than edits).

The library is deliberately simple: TS, targeting Vercel AI SDK middleware, S3 or local fs, linear hash chaining. It also works with Mastra (agentic framework), and I am happy to expand its integrations via PRs.

Blog post with link to repo: https://systima.ai/blog/open-source-article-12-audit-logging

I'd value feedback, thoughts, and any critique."},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: Open-Source Article 12 Logging Infrastructure for the EU AI Act"}},"_tags":["story","author_systima","story_47230438","show_hn"],"author":"systima","children":[47239316,47252549,47272722,47411465],"created_at":"2026-03-03T10:11:44Z","created_at_i":1772532704,"num_comments":10,"objectID":"47230438","points":42,"story_id":47230438,"story_text":"EU legislation (which affects UK and US companies in many cases) requires being able to truly reconstruct agentic events.

I've worked in a number of regulated industries off & on for years, and recently hit this gap.

We already had strong observability, but if someone asked me to prove exactly what happened for a specific AI decision X months ago (and demonstrate that the log trail had not been altered), I could not.

The EU AI Act has already entered force, and its Article 12 kicks-in in August this year, requiring automatic event recording and six-month retention for high-risk systems, which many legal commentators have suggested reads more like an append-only ledger requirement than standard application logging.

With this in mind, we built a small free, open-source TypeScript library for Node apps using the Vercel AI SDK that captures inference as an append-only log.

It wraps the model in middleware, automatically logs every inference call to structured JSONL in your own S3 bucket, chains entries with SHA-256 hashes for tamper detection, enforces a 180-day retention floor, and provides a CLI to reconstruct a decision and verify integrity. There is also a coverage command that flags likely gaps (in practice omissions are a bigger risk than edits).

The library is deliberately simple: TS, targeting Vercel AI SDK middleware, S3 or local fs, linear hash chaining. It also works with Mastra (agentic framework), and I am happy to expand its integrations via PRs.

Blog post with link to repo: https://systima.ai/blog/open-source-article-12-audit-logging

I'd value feedback, thoughts, and any critique.","title":"Show HN: Open-Source Article 12 Logging Infrastructure for the EU AI Act","updated_at":"2026-06-14T10:48:40Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"Kappa90"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Hey HN,

I just spent the last few weeks building a database for agents.

Over the last year I built PostHog AI, the company's business analyst agent, where we experimented on giving raw SQL access to PostHog databases vs. exposing tools/MCPs. Needless to say, SQL wins.

I left PostHog 3 weeks ago to work on side-projects. I wanted to experiment more with SQL+agents.

I built an MVP exposing business data through DuckDB + annotated schemas, and ran a benchmark with 11 LLMs (from Kimi 2.5 to Claude Opus 4.6) answering business questions with either 1) per-source MCP access (e.g. one Stripe MCP, one Hubspot MCP) or 2) my annotated SQL layer.

My solution consistently reached 2-3x accuracy (correct vs. incorrect answers), using 16-22x less tokens per correct answer, and being 2-3x faster. Benchmark in the repo!

The insight is that tool calls/MCPs/raw APIs force the agent to join information in-context. SQL does that natively.

What I have today:\n- 101 connectors (SaaS APIs, databases, file storages) sync to Parquet via dlt, locally or in your S3/GCS/Azure bucket\n- DuckDB is the query engine \u2014 cross-source JOINs across sources work natively, plus guardrails for safe mutations / reverse ETL \n- After each sync a Claude agent annotates the schema: table descriptions, column docs, PII flags, relationship maps

It works with all major agent frameworks (LangChain, CrewAI, LlamaIndex, Pydantic AI, Mastra), and local agents like Claude Code, Cursor, Codex and OpenClaw.

I love dinosaurs and the domain was available, so it's called Dinobase.

It's not bug free and I'm here to ask for feedback or major holes in the project I can't see, because the results seem almost too good. Thanks!"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: I built a database for AI agents"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/DinobaseHQ/dinobase"}},"_tags":["story","author_Kappa90","story_47678048","show_hn"],"author":"Kappa90","children":[47678124,47678132,47678141,47678937,47679077,47680221],"created_at":"2026-04-07T16:43:51Z","created_at_i":1775580231,"num_comments":10,"objectID":"47678048","points":12,"story_id":47678048,"story_text":"Hey HN,

I just spent the last few weeks building a database for agents.

Over the last year I built PostHog AI, the company's business analyst agent, where we experimented on giving raw SQL access to PostHog databases vs. exposing tools/MCPs. Needless to say, SQL wins.

I left PostHog 3 weeks ago to work on side-projects. I wanted to experiment more with SQL+agents.

I built an MVP exposing business data through DuckDB + annotated schemas, and ran a benchmark with 11 LLMs (from Kimi 2.5 to Claude Opus 4.6) answering business questions with either 1) per-source MCP access (e.g. one Stripe MCP, one Hubspot MCP) or 2) my annotated SQL layer.

My solution consistently reached 2-3x accuracy (correct vs. incorrect answers), using 16-22x less tokens per correct answer, and being 2-3x faster. Benchmark in the repo!

The insight is that tool calls/MCPs/raw APIs force the agent to join information in-context. SQL does that natively.

What I have today:\n- 101 connectors (SaaS APIs, databases, file storages) sync to Parquet via dlt, locally or in your S3/GCS/Azure bucket\n- DuckDB is the query engine \u2014 cross-source JOINs across sources work natively, plus guardrails for safe mutations / reverse ETL \n- After each sync a Claude agent annotates the schema: table descriptions, column docs, PII flags, relationship maps

It works with all major agent frameworks (LangChain, CrewAI, LlamaIndex, Pydantic AI, Mastra), and local agents like Claude Code, Cursor, Codex and OpenClaw.

I love dinosaurs and the domain was available, so it's called Dinobase.

It's not bug free and I'm here to ask for feedback or major holes in the project I can't see, because the results seem almost too good. Thanks!","title":"Show HN: I built a database for AI agents","updated_at":"2026-07-23T05:25:02Z","url":"https://github.com/DinobaseHQ/dinobase"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"snyy"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Hi HN,

We\u2019re Shreyash and Bhavnick. We built Chonkie, an open-source library for advanced chunking and embedding of text and code. It was previously Python-only, but we just released a TypeScript version: https://github.com/chonkie-inc/chonkie-ts

Many AI projects in JS/TS (like those using Vercel's AI SDK or Mastra) rely on basic text splitters. But better chunking = better retrieval = better performance. That\u2019s what Chonkie is built for.

Current native chunkers (in TS):

- Code Chunker \u2013 handles Python, TypeScript, etc.

- Recursive Chunker \u2013 rule-based, hierarchical splitting

- Token Chunker \u2013 split by token count (fully customizable)

- Sentence Chunker \u2013 split on sentence boundaries. Delimiters are customizable, so it works for multiple languages.

All chunkers support custom tokenizers, chunk overlap, delimiters, and more.

Coming soon in native TS (already available via the API client):

- Semantic Chunker \u2013 splits texts wherever it detects a shift in meaning.

- SDPM Chunker \u2013 merges semantically similar disjoint chunks

- Late Chunker \u2013 generates context-aware embeddings for each chunk

- Slumber Chunker \u2013 LLM-refined recursive chunks. Significantly reduces token usage (and thus cost) while maximizing chunk quality.

- Embeddings Refinery - Embed chunks with any embedding model

- Overlap Refinery \u2013 Create overlaps between consecutive chunks for better context preservation.

Chonkie is free, open-source, and MIT licensed. GitHub: https://github.com/chonkie-inc/chonkie-ts

We\u2019d love your feedback, ideas, or contributions. Thanks!"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: Advanced Chunking in JavaScript/TypeScript with Chonkie"}},"_tags":["story","author_snyy","story_44076134","show_hn"],"author":"snyy","children":[44076596,44077834,44084757],"created_at":"2025-05-23T20:03:41Z","created_at_i":1748030621,"num_comments":6,"objectID":"44076134","points":10,"story_id":44076134,"story_text":"Hi HN,

We\u2019re Shreyash and Bhavnick. We built Chonkie, an open-source library for advanced chunking and embedding of text and code. It was previously Python-only, but we just released a TypeScript version: https://github.com/chonkie-inc/chonkie-ts

Many AI projects in JS/TS (like those using Vercel's AI SDK or Mastra) rely on basic text splitters. But better chunking = better retrieval = better performance. That\u2019s what Chonkie is built for.

Current native chunkers (in TS):

- Code Chunker \u2013 handles Python, TypeScript, etc.

- Recursive Chunker \u2013 rule-based, hierarchical splitting

- Token Chunker \u2013 split by token count (fully customizable)

- Sentence Chunker \u2013 split on sentence boundaries. Delimiters are customizable, so it works for multiple languages.

All chunkers support custom tokenizers, chunk overlap, delimiters, and more.

Coming soon in native TS (already available via the API client):

- Semantic Chunker \u2013 splits texts wherever it detects a shift in meaning.

- SDPM Chunker \u2013 merges semantically similar disjoint chunks

- Late Chunker \u2013 generates context-aware embeddings for each chunk

- Slumber Chunker \u2013 LLM-refined recursive chunks. Significantly reduces token usage (and thus cost) while maximizing chunk quality.

- Embeddings Refinery - Embed chunks with any embedding model

- Overlap Refinery \u2013 Create overlaps between consecutive chunks for better context preservation.

Chonkie is free, open-source, and MIT licensed. GitHub: https://github.com/chonkie-inc/chonkie-ts

We\u2019d love your feedback, ideas, or contributions. Thanks!","title":"Show HN: Advanced Chunking in JavaScript/TypeScript with Chonkie","updated_at":"2025-06-24T06:49:19Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"Arindam1729"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"I recently saw a tweet from Sam Bhagwat (Mastra AI's Founder) which mentions that around 60\u201370% of YC X25 agent companies are building their AI agents in TypeScript.

This stat surprised me because early frameworks like LangChain were originally Python-first. So, why the shift toward TypeScript for building AI agents?

Here are a few possible reasons I\u2019ve understood:

- Many early projects focused on stitching together tools and APIs. That pulled in a lot of frontend/full-stack devs who were already in the TypeScript ecosystem.

- TypeScript\u2019s static types and IDE integration are a huge productivity boost when rapidly iterating on complex logic, chaining tools, or calling LLMs.

- Also, as Sam points out, full-stack devs can ship quickly using TS for both backend and frontend.

- Vercel's AI SDK also played a big role here.

I would love to know your take on this!"},"title":{"matchLevel":"none","matchedWords":[],"value":"60\u201370% of YC X25 Agent Startups Are Using TypeScript"}},"_tags":["story","author_Arindam1729","story_44212560","ask_hn"],"author":"Arindam1729","children":[44212626,44212653,44212665,44212692,44212924,44213403,44215482,44217146],"created_at":"2025-06-07T20:50:04Z","created_at_i":1749329404,"num_comments":17,"objectID":"44212560","points":7,"story_id":44212560,"story_text":"I recently saw a tweet from Sam Bhagwat (Mastra AI's Founder) which mentions that around 60\u201370% of YC X25 agent companies are building their AI agents in TypeScript.

This stat surprised me because early frameworks like LangChain were originally Python-first. So, why the shift toward TypeScript for building AI agents?

Here are a few possible reasons I\u2019ve understood:

- Many early projects focused on stitching together tools and APIs. That pulled in a lot of frontend/full-stack devs who were already in the TypeScript ecosystem.

- TypeScript\u2019s static types and IDE integration are a huge productivity boost when rapidly iterating on complex logic, chaining tools, or calling LLMs.

- Also, as Sam points out, full-stack devs can ship quickly using TS for both backend and frontend.

- Vercel's AI SDK also played a big role here.

I would love to know your take on this!","title":"60\u201370% of YC X25 Agent Startups Are Using TypeScript","updated_at":"2026-03-21T13:47:28Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"calcsam"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Hi, I\u2019m Sam, the cofounder/CEO of Mastra, the Typescript agent framework. I wrote a book on building agents and wanted to share it with HN.

The book is called Principles of Building AI Agents. Right now it has 34 chapters and 148 pages covering LLMs, prompting, agents, workflows, RAG, evals, multi-agent, tracing, deployment, MCP, tool use, and a few other topics.

The backstory here is that last October when we started working on Mastra we knew very little about AI engineering, and had to learn as we were building.

In January, we started going to local AI meetups. We met a lot of people who were where we\u2019d been. Somehow, we turned from students to teachers. Whenever an explanation seemed to stick we\u2019d go home and put it in our docs or blog.

One day my cofounder Shane turned to me and was like, what if you wrote a book on this stuff?

I was initially skeptical, but I tried writing an outline and it was pretty natural. So I spent the next couple weekends trying to hammer our posts into book form, and fill in the gaps. Surprisingly it worked. The initial version was 92 pages, in 27 very short chapters.

We were going to call it Principles of AI Engineering but a founder author friend convinced me to use the word Agents instead, so Principles of Building AI Agents it was.

The first reaction we got was surprise. We handed it out at the same meetups we\u2019d gone to earlier.

We started seeing people post book reviews on social media. A couple founder friends told us the book changed their agent architecture or their interface design. An engineer turned videographer came to our office and shot a mini-documentary.

People asked us a lot how we\u2019d keep the book up to date. We didn\u2019t really know. Then MCP and Studio Ghibli happened, and we knew we needed to update it.

I sat down in May to write for another weekend. I ended up with another 50 pages. In addition to MCP and image gen, there was a lot of stuff to write about web browsing, workflow streaming, code gen, agentic RAG. We republished the book as the 2nd edition.

The single thing that people comment on the most is a page where I give a partial excerpt from the leaked Bolt.new system prompt. It\u2019s the first time many people have read a production-grade prompt.

The book has become pretty popular recently. We've given out thousands of copies at AI meetups and conferences, and it's even gone viral on LinkedIn (of all places).

In terms of actual mechanics, I wrote the book in Notion, then pasted it into a desktop app called Vellum, which spits out ePubs and PDFs. Amazon\u2019s KDP lets you upload those and publish your book (they\u2019ll print it for you). Having a nice CI/CD helped, as did having docs and blog posts as sort of intermediate artifacts in a content pipeline. It meant that when I was writing I could pull from a warm cache. The process felt O(n) rather than O(n log n).

Enjoy reading, and please let me know what you think! (You probably just want to download the book and read it in your favorite reader, rather than use Github's PDF reader)

I\u2019ll be starting on a third edition soon, and I want to know what topics feel like they\u2019re missing, if anything feels outdated, and so on."},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: Principles of Building AI Agents book [pdf]"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://github.com/mastra-ai/mastra/blob/main/book/principles-of-building-ai-agents.pdf"}},"_tags":["story","author_calcsam","story_44812367","show_hn"],"author":"calcsam","created_at":"2025-08-06T14:17:58Z","created_at_i":1754489878,"num_comments":0,"objectID":"44812367","points":5,"story_id":44812367,"story_text":"Hi, I\u2019m Sam, the cofounder/CEO of Mastra, the Typescript agent framework. I wrote a book on building agents and wanted to share it with HN.

The book is called Principles of Building AI Agents. Right now it has 34 chapters and 148 pages covering LLMs, prompting, agents, workflows, RAG, evals, multi-agent, tracing, deployment, MCP, tool use, and a few other topics.

The backstory here is that last October when we started working on Mastra we knew very little about AI engineering, and had to learn as we were building.

In January, we started going to local AI meetups. We met a lot of people who were where we\u2019d been. Somehow, we turned from students to teachers. Whenever an explanation seemed to stick we\u2019d go home and put it in our docs or blog.

One day my cofounder Shane turned to me and was like, what if you wrote a book on this stuff?

I was initially skeptical, but I tried writing an outline and it was pretty natural. So I spent the next couple weekends trying to hammer our posts into book form, and fill in the gaps. Surprisingly it worked. The initial version was 92 pages, in 27 very short chapters.

We were going to call it Principles of AI Engineering but a founder author friend convinced me to use the word Agents instead, so Principles of Building AI Agents it was.

The first reaction we got was surprise. We handed it out at the same meetups we\u2019d gone to earlier.

We started seeing people post book reviews on social media. A couple founder friends told us the book changed their agent architecture or their interface design. An engineer turned videographer came to our office and shot a mini-documentary.

People asked us a lot how we\u2019d keep the book up to date. We didn\u2019t really know. Then MCP and Studio Ghibli happened, and we knew we needed to update it.

I sat down in May to write for another weekend. I ended up with another 50 pages. In addition to MCP and image gen, there was a lot of stuff to write about web browsing, workflow streaming, code gen, agentic RAG. We republished the book as the 2nd edition.

The single thing that people comment on the most is a page where I give a partial excerpt from the leaked Bolt.new system prompt. It\u2019s the first time many people have read a production-grade prompt.

The book has become pretty popular recently. We've given out thousands of copies at AI meetups and conferences, and it's even gone viral on LinkedIn (of all places).

In terms of actual mechanics, I wrote the book in Notion, then pasted it into a desktop app called Vellum, which spits out ePubs and PDFs. Amazon\u2019s KDP lets you upload those and publish your book (they\u2019ll print it for you). Having a nice CI/CD helped, as did having docs and blog posts as sort of intermediate artifacts in a content pipeline. It meant that when I was writing I could pull from a warm cache. The process felt O(n) rather than O(n log n).

Enjoy reading, and please let me know what you think! (You probably just want to download the book and read it in your favorite reader, rather than use Github's PDF reader)

I\u2019ll be starting on a third edition soon, and I want to know what topics feel like they\u2019re missing, if anything feels outdated, and so on.","title":"Show HN: Principles of Building AI Agents book [pdf]","updated_at":"2026-03-05T22:28:57Z","url":"https://github.com/mastra-ai/mastra/blob/main/book/principles-of-building-ai-agents.pdf"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"dennisy"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"I have seen multiple HN threads and opinions both positive and negative regarding the usage of agent frameworks such as LangGraph, Mastra etc.

I wanted to post this question to try and spark a good discussion to try and capture some concrete and tangible points arguing both sides, as so far most of the comments people make so not give much evidence for their views.

Obviously we must bear in mind that frameworks can be very small[1] and very large[2], so need to be thought of differently.

For those "rolling your own" please share as much detail as possible.

[1] https://the-pocket.github.io/PocketFlow/\n[2] https://www.langchain.com/langgraph"},"title":{"matchLevel":"none","matchedWords":[],"value":"Ask HN: Agent / workflow frameworks or roll your own?"}},"_tags":["story","author_dennisy","story_44065351","ask_hn"],"author":"dennisy","children":[44072516,44073607],"created_at":"2025-05-22T18:48:54Z","created_at_i":1747939734,"num_comments":4,"objectID":"44065351","points":4,"story_id":44065351,"story_text":"I have seen multiple HN threads and opinions both positive and negative regarding the usage of agent frameworks such as LangGraph, Mastra etc.

I wanted to post this question to try and spark a good discussion to try and capture some concrete and tangible points arguing both sides, as so far most of the comments people make so not give much evidence for their views.

Obviously we must bear in mind that frameworks can be very small[1] and very large[2], so need to be thought of differently.

For those "rolling your own" please share as much detail as possible.

[1] https://the-pocket.github.io/PocketFlow/\n[2] https://www.langchain.com/langgraph","title":"Ask HN: Agent / workflow frameworks or roll your own?","updated_at":"2025-05-24T13:32:21Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"monadoid"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Hey HN, I\u2019m Sam, a maintainer of Stagehand, and I\u2019m excited to show off Stagehand v4: the SDK for browser agents.

For agents to do most knowledge work, they needs access to the internet. Today most people allow their agents to use Playwright to control a browser for them.

But Playwright was built for testing, not agents.

If you\u2019ve ever tried to give it to your agent, you\u2019ll quickly run into bloated context windows, inability to use iframes, and painful state sync issues (on remote browsers).

We built Stagehand specifically for agents. v4 fixes all of Playwright\u2019s issues, with better page snapshotting, nested iframe support, webmcp, self-healing primitives, and we even rebuilt it to run as an extension in the browser which minimizes round trip time for all requests.

We\u2019re roughly ~80% more token efficient and 2x faster than Playwright.

Use AI primitives for self-healing automations in natural language:

    // Act: execute natural language actions\n    await stagehand.act("click the login button");\n\n    // Extract: pull structured data\n    const { data } = await stagehand.extract(\n      "extract the price",\n      z.object({ price: z.number() }),\n    );\n\n    // Observe: discover available actions\n    const { data: actions } = await stagehand.observe("find submit buttons");\n
\nOr use familiar Playwright-style APIs:

    const page = await stagehand.browser.context.activePage();\n\n    await page.goto("https://example.com");\n    await page.locator('textarea[name="q"]').fill("Browserbase");\n    await page.keyPress("Enter");\n    await page.screenshot();\n
\nStagehand v4 is live today, we built some reference integrations with popular agent frameworks like LangChain DeepAgents, Mastra, Vercel\u2019s eve, and CrewAI.

Checkout the docs - docs.stagehand.dev

And join our discord for updates and feedback - discord.gg/stagehand"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: Stagehand \u2013 the open source SDK for browser agents"}},"_tags":["story","author_monadoid","story_49248980","show_hn"],"author":"monadoid","children":[49249724,49258596],"created_at":"2026-08-10T20:06:43Z","created_at_i":1786392403,"num_comments":0,"objectID":"49248980","points":4,"story_id":49248980,"story_text":"Hey HN, I\u2019m Sam, a maintainer of Stagehand, and I\u2019m excited to show off Stagehand v4: the SDK for browser agents.

For agents to do most knowledge work, they needs access to the internet. Today most people allow their agents to use Playwright to control a browser for them.

But Playwright was built for testing, not agents.

If you\u2019ve ever tried to give it to your agent, you\u2019ll quickly run into bloated context windows, inability to use iframes, and painful state sync issues (on remote browsers).

We built Stagehand specifically for agents. v4 fixes all of Playwright\u2019s issues, with better page snapshotting, nested iframe support, webmcp, self-healing primitives, and we even rebuilt it to run as an extension in the browser which minimizes round trip time for all requests.

We\u2019re roughly ~80% more token efficient and 2x faster than Playwright.

Use AI primitives for self-healing automations in natural language:

    // Act: execute natural language actions\n    await stagehand.act("click the login button");\n\n    // Extract: pull structured data\n    const { data } = await stagehand.extract(\n      "extract the price",\n      z.object({ price: z.number() }),\n    );\n\n    // Observe: discover available actions\n    const { data: actions } = await stagehand.observe("find submit buttons");\n
\nOr use familiar Playwright-style APIs:

    const page = await stagehand.browser.context.activePage();\n\n    await page.goto("https://example.com");\n    await page.locator('textarea[name="q"]').fill("Browserbase");\n    await page.keyPress("Enter");\n    await page.screenshot();\n
\nStagehand v4 is live today, we built some reference integrations with popular agent frameworks like LangChain DeepAgents, Mastra, Vercel\u2019s eve, and CrewAI.

Checkout the docs - docs.stagehand.dev

And join our discord for updates and feedback - discord.gg/stagehand","title":"Show HN: Stagehand \u2013 the open source SDK for browser agents","updated_at":"2026-08-14T12:46:51Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"jangletown"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Hello HN!

Better Agents is a CLI tool and a set of standards for agent building.

It supercharges your coding assistant (Claude Code, Cursor, Kilo Code, etc), making it an expert in any agent framework you choose (Agno, Mastra, etc) and all their best practices and agent building best practices we collected over this past two years.

Better Agents brings an opinionated folder structure to your agent application:

my-agent-project/

\u251c\u2500\u2500 app/ (or src/) # The actual agent code, according to the chosen framework

\u251c\u2500\u2500 tests/

\u2502 \u251c\u2500\u2500 evaluations/ # Jupyter notebooks for evaluations

\u2502 \u2502 \u2514\u2500\u2500 example_eval.ipynb

\u2502 \u2514\u2500\u2500 scenarios/ # End-to-end scenario tests

\u2502 \u2514\u2500\u2500 example_scenario.test.{py,ts}

\u251c\u2500\u2500 prompts/ # Versioned prompt files for team collaboration

\u2502 \u2514\u2500\u2500 sample_prompt.yaml

\u251c\u2500\u2500 prompts.json # Prompt registry

\u251c\u2500\u2500 .mcp.json # MCP server configuration

\u251c\u2500\u2500 AGENTS.md # Development guidelines

\u251c\u2500\u2500 .env # Environment variables

\u2514\u2500\u2500 .gitignore

The structure and guidelines on AGENTS.md ensure every new feature required for the coding assistant is properly tested, evaluated, and that the prompts are versioned.

The `.mcp.json` comes with all the right MCPs set up so you coding assistant becomes an expert in your framework of choice and know where to find new tools.

`scenarios/` tests guarantee the agent behaves as expected, which simulates a conversation with the agent making sure it does what expected.

`evaluations/` notebooks holds dataset and notebooks for evaluating pieces of your agent pipeline such as a RAG or classification tasks it must do

Finally, `prompts/` hold all your versioned prompts in yaml format, synced and controlled by prompts.json, to allow for playground and team collaboration.

We defined it and built the CLI after seeing many of our customers having to adapt their codebases and ways of working to add scenario tests and more structure to their agent apps. We are hoping to shift-left the industry and already start new agent projects the right way."},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: Better Agents CLI"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/langwatch/better-agents"}},"_tags":["story","author_jangletown","story_46057197","show_hn"],"author":"jangletown","created_at":"2025-11-26T13:28:43Z","created_at_i":1764163723,"num_comments":0,"objectID":"46057197","points":3,"story_id":46057197,"story_text":"Hello HN!

Better Agents is a CLI tool and a set of standards for agent building.

It supercharges your coding assistant (Claude Code, Cursor, Kilo Code, etc), making it an expert in any agent framework you choose (Agno, Mastra, etc) and all their best practices and agent building best practices we collected over this past two years.

Better Agents brings an opinionated folder structure to your agent application:

my-agent-project/

\u251c\u2500\u2500 app/ (or src/) # The actual agent code, according to the chosen framework

\u251c\u2500\u2500 tests/

\u2502 \u251c\u2500\u2500 evaluations/ # Jupyter notebooks for evaluations

\u2502 \u2502 \u2514\u2500\u2500 example_eval.ipynb

\u2502 \u2514\u2500\u2500 scenarios/ # End-to-end scenario tests

\u2502 \u2514\u2500\u2500 example_scenario.test.{py,ts}

\u251c\u2500\u2500 prompts/ # Versioned prompt files for team collaboration

\u2502 \u2514\u2500\u2500 sample_prompt.yaml

\u251c\u2500\u2500 prompts.json # Prompt registry

\u251c\u2500\u2500 .mcp.json # MCP server configuration

\u251c\u2500\u2500 AGENTS.md # Development guidelines

\u251c\u2500\u2500 .env # Environment variables

\u2514\u2500\u2500 .gitignore

The structure and guidelines on AGENTS.md ensure every new feature required for the coding assistant is properly tested, evaluated, and that the prompts are versioned.

The `.mcp.json` comes with all the right MCPs set up so you coding assistant becomes an expert in your framework of choice and know where to find new tools.

`scenarios/` tests guarantee the agent behaves as expected, which simulates a conversation with the agent making sure it does what expected.

`evaluations/` notebooks holds dataset and notebooks for evaluating pieces of your agent pipeline such as a RAG or classification tasks it must do

Finally, `prompts/` hold all your versioned prompts in yaml format, synced and controlled by prompts.json, to allow for playground and team collaboration.

We defined it and built the CLI after seeing many of our customers having to adapt their codebases and ways of working to add scenario tests and more structure to their agent apps. We are hoping to shift-left the industry and already start new agent projects the right way.","title":"Show HN: Better Agents CLI","updated_at":"2026-03-05T23:08:07Z","url":"https://github.com/langwatch/better-agents"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"yuto_1192"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Hi HN!

Two weeks ago, I launched Kaizen Agent \u2013 an open-source tool to help you test, debug, and automatically fix LLM agents and apps.

It runs evaluations based on YAML-defined inputs/outputs, detects failures, suggests fixes, re-runs tests, and even opens a pull request \u2014 all from a single CLI command.

What\u2019s new since launch:\n Greatly improved README with better examples and onboarding

Now compatible with Mastra, a popular TypeScript agent framework

Full documentation site launched \u2192 https://kaizen-agent.github.io/kaizen-agent/

Available on PyPI \u2192 pip install kaizen-agent

It\u2019s still early, but if you\u2019re building production-ready LLM apps and tired of tedious trial and error, I\u2019d love your feedback. Try it out locally \u2014 and if you find it useful, a GitHub would mean a lot!

Thanks for checking it out"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: Tired of fixing broken LLM agents? Automate it"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/Kaizen-agent/kaizen-agent"}},"_tags":["story","author_yuto_1192","story_44460162","show_hn"],"author":"yuto_1192","created_at":"2025-07-04T00:13:45Z","created_at_i":1751588025,"num_comments":0,"objectID":"44460162","points":3,"story_id":44460162,"story_text":"Hi HN!

Two weeks ago, I launched Kaizen Agent \u2013 an open-source tool to help you test, debug, and automatically fix LLM agents and apps.

It runs evaluations based on YAML-defined inputs/outputs, detects failures, suggests fixes, re-runs tests, and even opens a pull request \u2014 all from a single CLI command.

What\u2019s new since launch:\n Greatly improved README with better examples and onboarding

Now compatible with Mastra, a popular TypeScript agent framework

Full documentation site launched \u2192 https://kaizen-agent.github.io/kaizen-agent/

Available on PyPI \u2192 pip install kaizen-agent

It\u2019s still early, but if you\u2019re building production-ready LLM apps and tired of tedious trial and error, I\u2019d love your feedback. Try it out locally \u2014 and if you find it useful, a GitHub would mean a lot!

Thanks for checking it out","title":"Show HN: Tired of fixing broken LLM agents? Automate it","updated_at":"2025-07-04T02:41:13Z","url":"https://github.com/Kaizen-agent/kaizen-agent"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"David1238"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Hey HN, we\u2019re David and Ethan, co-founders of Toolbase.

Toolbase is an AI agent and workflow builder that helps you quickly create production-grade AI automations \u2014 batteries included.

Try it without registering here: https://gettoolbase.com/

------- The dev cycle in Toolbase -------

1. Define a rough goal.

2. Connect any API or MCP server (we have thousands, or bring your own).

3. Teach the AI what valid input and output examples look like (these later become your unit tests!).

4. Let Toolbase generate the perfect prompt, code, workflow, or agent.

5. Deploy your project as an API, MCP server, or chat interface!

Coding optional. Sharing encouraged.

Note: If you\u2019re familiar with Cursor/Windsurf and the core concepts behind frameworks like Mastra (which Toolbase runs on), you already know how to use Toolbase. You retain the flexibility of coding but avoid boilerplate and plumbing tasks (integration, validation, context mapping, testing, etc.) unless you explicitly choose to do them.

------- Demo -------

https://www.loom.com/share/540c61b2c5634996b088ebbb16989cf0?...

This simple agent validates company billing addresses in our CRM (Pipedrive) by researching them through Tavily search. If there\u2019s an address mismatch, it asks a human to pick the right one via email (watch on 2x speed):

Output email for the example shown in the demo: https://gettoolbase.com/assets/demo-screenshot.png

Producing code and more deterministic workflows follows a similar process.

------- Why another agent/workflow builder? -------

We started building Toolbase out of frustration with existing frameworks, especially for production use, and the lack of IDE support for MLOps artifacts, such as prompts, golden data, workflows, and evaluations. Since much of the code for agentic systems can be dynamically generated and validated using these artifacts, they often become even more important than the code itself.

After speaking with other builders, we also realized that manually coding workflows, experimenting with prompts through trial-and-error, and setting up infrastructure/integrations all took far more time than they should. Tools like Cursor and Windsurf help, but extracting meaning from AI-generated code is slow. Chatbots whipping up arcane code potions in tinted chat windows, which is the other end of the spectrum, demos really well but isn\u2019t maintainable at all (sorry, vibe-coding). So we went with something in the middle: an AI-assiststed visual builder with full code fallback.

------- What do you think? -------

We\u2019re excited for any feedback, thoughts, or questions from the HN community.

Let us know what you think in the comments!

- David & Ethan"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: Toolbase \u2013 Build reliable AI teammates by example, not instruction"}},"_tags":["story","author_David1238","story_43871499","show_hn"],"author":"David1238","children":[43871523],"created_at":"2025-05-02T15:58:20Z","created_at_i":1746201500,"num_comments":1,"objectID":"43871499","points":2,"story_id":43871499,"story_text":"Hey HN, we\u2019re David and Ethan, co-founders of Toolbase.

Toolbase is an AI agent and workflow builder that helps you quickly create production-grade AI automations \u2014 batteries included.

Try it without registering here: https://gettoolbase.com/

------- The dev cycle in Toolbase -------

1. Define a rough goal.

2. Connect any API or MCP server (we have thousands, or bring your own).

3. Teach the AI what valid input and output examples look like (these later become your unit tests!).

4. Let Toolbase generate the perfect prompt, code, workflow, or agent.

5. Deploy your project as an API, MCP server, or chat interface!

Coding optional. Sharing encouraged.

Note: If you\u2019re familiar with Cursor/Windsurf and the core concepts behind frameworks like Mastra (which Toolbase runs on), you already know how to use Toolbase. You retain the flexibility of coding but avoid boilerplate and plumbing tasks (integration, validation, context mapping, testing, etc.) unless you explicitly choose to do them.

------- Demo -------

https://www.loom.com/share/540c61b2c5634996b088ebbb16989cf0?...

This simple agent validates company billing addresses in our CRM (Pipedrive) by researching them through Tavily search. If there\u2019s an address mismatch, it asks a human to pick the right one via email (watch on 2x speed):

Output email for the example shown in the demo: https://gettoolbase.com/assets/demo-screenshot.png

Producing code and more deterministic workflows follows a similar process.

------- Why another agent/workflow builder? -------

We started building Toolbase out of frustration with existing frameworks, especially for production use, and the lack of IDE support for MLOps artifacts, such as prompts, golden data, workflows, and evaluations. Since much of the code for agentic systems can be dynamically generated and validated using these artifacts, they often become even more important than the code itself.

After speaking with other builders, we also realized that manually coding workflows, experimenting with prompts through trial-and-error, and setting up infrastructure/integrations all took far more time than they should. Tools like Cursor and Windsurf help, but extracting meaning from AI-generated code is slow. Chatbots whipping up arcane code potions in tinted chat windows, which is the other end of the spectrum, demos really well but isn\u2019t maintainable at all (sorry, vibe-coding). So we went with something in the middle: an AI-assiststed visual builder with full code fallback.

------- What do you think? -------

We\u2019re excited for any feedback, thoughts, or questions from the HN community.

Let us know what you think in the comments!

- David & Ethan","title":"Show HN: Toolbase \u2013 Build reliable AI teammates by example, not instruction","updated_at":"2025-07-04T14:06:42Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"dallinbentley"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Hello HN,

I\u2019m Dallin, building Keystroke with my co-founder Blake. Keystroke is a recent pivot from Buster, our original YC W24 company.

Keystroke lets you build agents and durable workflows as TypeScript in your own repo, then deploy them to a web application where your team can use them. Our repo (ELv2 licensed) is here: https://github.com/keystrokehq/keystroke.

At Buster, we spent a lot of time building internal agents and automations. We used visual platforms like n8n and Zapier, as well as code-first tools like Trigger.dev, Mastra, and several of Vercel\u2019s open frameworks. We genuinely liked many of them, but kept encountering two different problems:

1. Visual platforms gave us integrations, credentials, hosting, and an app the rest of the team could use, but became difficult to test, review, and debug as our systems grew.

2. Code-first tools gave us the flexibility of ordinary TypeScript and worked well with coding agents, but left us building the UI, runtime, permissions, credentials, and operational tooling ourselves.

So, we started building the thing we wish existed: a code-first framework that made it easy to build complex agents and AI systems, with a web app for teams to collaborate on top. We liked it so much that we decided to pivot away from Buster and focus on building Keystroke full time.

With Keystroke, I was able to rebuild our W24 idea (an AI data analyst) in ~5 minutes. I pointed Cursor at our old Buster repo and it was able to:

- spin up a local Keystroke project

- rebuild the OG Buster agent w/ memory, its own file system, etc

- connect our Postgres DB, PostHog, Metabase, and Slack

- build skills for using each of the data sources

- explore our DB and add schema docs to the file system

- build a workflow to keep schema docs synced

- name the agent "Delbert"

- then pushed him up to the Keystroke app

Since then, \u201cDelbert\u201d has been answering ad-hoc questions for me in Slack on a regular basis. He builds me metabase dashboards when I need them. He sets his own triggers, reviews key metrics periodically, and pings me in Slack if anything looks off.

In Keystroke, workflows are ordinary async TypeScript: a `for` loop is an actual `for` loop, inputs use Zod schemas, and everything you build can be tested with Vitest. Our managed runtime makes workflows durable across errors, sleeps, approval steps, and process restarts.

Agents wrap Vercel\u2019s AI SDK and can use workflows, actions, other agents, MCP servers, and integrations as tools. They also include memory, a persistent filesystem, web search, triggers, and optional VM sandboxes.

Deployed agents and workflows instantly appear in the web app with a chat UI, workflow visualizations, input forms, sharing, credential management, integrations, and logs.

The entire platform was built from the ground up with coding agents in mind. Your coding agent can use the CLI to scaffold a local directory with a Keystroke project and an AGENTS.md. Then, it can build whatever agent or AI system you want, search our docs, run tests, and push what you build up to the Keystroke platform.

We plan to make money from our cloud offering, which has a free plan and usage-based pricing.

Our docs are here: https://keystroke.ai/docs.

You can watch a quick demo of Keystroke here: https://supercut.ai/share/keystroke/zeor1pD0bNlSTOuLUWmRBT?v....

You can try on cloud for free at: https://keystroke.ai/.

We\u2019d especially appreciate feedback from people who have maintained agents and AI systems in visual tools or code-first frameworks. Where does this approach seem useful, and where are we rebuilding something that already works well elsewhere?"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: Keystroke \u2013 open sourcing our internal agents and automations platform"}},"_tags":["story","author_dallinbentley","story_49160376","show_hn"],"author":"dallinbentley","created_at":"2026-08-03T19:34:37Z","created_at_i":1785785677,"num_comments":0,"objectID":"49160376","points":2,"story_id":49160376,"story_text":"Hello HN,

I\u2019m Dallin, building Keystroke with my co-founder Blake. Keystroke is a recent pivot from Buster, our original YC W24 company.

Keystroke lets you build agents and durable workflows as TypeScript in your own repo, then deploy them to a web application where your team can use them. Our repo (ELv2 licensed) is here: https://github.com/keystrokehq/keystroke.

At Buster, we spent a lot of time building internal agents and automations. We used visual platforms like n8n and Zapier, as well as code-first tools like Trigger.dev, Mastra, and several of Vercel\u2019s open frameworks. We genuinely liked many of them, but kept encountering two different problems:

1. Visual platforms gave us integrations, credentials, hosting, and an app the rest of the team could use, but became difficult to test, review, and debug as our systems grew.

2. Code-first tools gave us the flexibility of ordinary TypeScript and worked well with coding agents, but left us building the UI, runtime, permissions, credentials, and operational tooling ourselves.

So, we started building the thing we wish existed: a code-first framework that made it easy to build complex agents and AI systems, with a web app for teams to collaborate on top. We liked it so much that we decided to pivot away from Buster and focus on building Keystroke full time.

With Keystroke, I was able to rebuild our W24 idea (an AI data analyst) in ~5 minutes. I pointed Cursor at our old Buster repo and it was able to:

- spin up a local Keystroke project

- rebuild the OG Buster agent w/ memory, its own file system, etc

- connect our Postgres DB, PostHog, Metabase, and Slack

- build skills for using each of the data sources

- explore our DB and add schema docs to the file system

- build a workflow to keep schema docs synced

- name the agent "Delbert"

- then pushed him up to the Keystroke app

Since then, \u201cDelbert\u201d has been answering ad-hoc questions for me in Slack on a regular basis. He builds me metabase dashboards when I need them. He sets his own triggers, reviews key metrics periodically, and pings me in Slack if anything looks off.

In Keystroke, workflows are ordinary async TypeScript: a `for` loop is an actual `for` loop, inputs use Zod schemas, and everything you build can be tested with Vitest. Our managed runtime makes workflows durable across errors, sleeps, approval steps, and process restarts.

Agents wrap Vercel\u2019s AI SDK and can use workflows, actions, other agents, MCP servers, and integrations as tools. They also include memory, a persistent filesystem, web search, triggers, and optional VM sandboxes.

Deployed agents and workflows instantly appear in the web app with a chat UI, workflow visualizations, input forms, sharing, credential management, integrations, and logs.

The entire platform was built from the ground up with coding agents in mind. Your coding agent can use the CLI to scaffold a local directory with a Keystroke project and an AGENTS.md. Then, it can build whatever agent or AI system you want, search our docs, run tests, and push what you build up to the Keystroke platform.

We plan to make money from our cloud offering, which has a free plan and usage-based pricing.

Our docs are here: https://keystroke.ai/docs.

You can watch a quick demo of Keystroke here: https://supercut.ai/share/keystroke/zeor1pD0bNlSTOuLUWmRBT?v....

You can try on cloud for free at: https://keystroke.ai/.

We\u2019d especially appreciate feedback from people who have maintained agents and AI systems in visual tools or code-first frameworks. Where does this approach seem useful, and where are we rebuilding something that already works well elsewhere?","title":"Show HN: Keystroke \u2013 open sourcing our internal agents and automations platform","updated_at":"2026-08-03T22:14:45Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"BearFlinn"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"After poking around in the various \u2018claw\u2019 spaces, I realized two things. One the foundation of OpenClaw is genius, and two, everyone is innovating in the wrong directions.

Because, the system prompt and memory just being a bunch of markdown files is very very smart. At any time you can go see why the agent is acting a certain way, and change it, with nothing but a text editor. Heartbeats are also a genuinely solid way to handle proactivity.

Yet the ecosystem that spawned around it is either chasing absolute minimalism or endless feature expansions. Meanwhile the communities around these tools are constantly trying to figure out how to get their agent to remember anything.

I didn\u2019t find anyone else really trying to solve that problem so I decided to take a crack at it. The idea for "Observational Memory" came from this post from Mastra https://mastra.ai/blog/observational-memory timestamped observations that get continuously compressed. I added episodes and projects on top of it as a way to give the agent an index of what it knows instead of having to search blindly.

Most everything else is a \u2018me too!\u2019 implementation with my own spin/improvements. I\u2019m really proud of how it\u2019s turned out so far and wanted to share. Open to contributions if it sparks your interest!

Also, it's Rust btw ;) (Not for any real reason, I just fucking hate python/typescript)"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: Residuum | Agentic AI with continuous context"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/Grizzly-Endeavors/residuum"}},"_tags":["story","author_BearFlinn","story_47255561","show_hn"],"author":"BearFlinn","created_at":"2026-03-04T23:40:51Z","created_at_i":1772667651,"num_comments":0,"objectID":"47255561","points":1,"story_id":47255561,"story_text":"After poking around in the various \u2018claw\u2019 spaces, I realized two things. One the foundation of OpenClaw is genius, and two, everyone is innovating in the wrong directions.

Because, the system prompt and memory just being a bunch of markdown files is very very smart. At any time you can go see why the agent is acting a certain way, and change it, with nothing but a text editor. Heartbeats are also a genuinely solid way to handle proactivity.

Yet the ecosystem that spawned around it is either chasing absolute minimalism or endless feature expansions. Meanwhile the communities around these tools are constantly trying to figure out how to get their agent to remember anything.

I didn\u2019t find anyone else really trying to solve that problem so I decided to take a crack at it. The idea for "Observational Memory" came from this post from Mastra https://mastra.ai/blog/observational-memory timestamped observations that get continuously compressed. I added episodes and projects on top of it as a way to give the agent an index of what it knows instead of having to search blindly.

Most everything else is a \u2018me too!\u2019 implementation with my own spin/improvements. I\u2019m really proud of how it\u2019s turned out so far and wanted to share. Open to contributions if it sparks your interest!

Also, it's Rust btw ;) (Not for any real reason, I just fucking hate python/typescript)","title":"Show HN: Residuum | Agentic AI with continuous context","updated_at":"2026-03-05T23:41:50Z","url":"https://github.com/Grizzly-Endeavors/residuum"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"gurvinderd"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"Hi HN,\nI've been thinking about the current state of AI development and see a familiar pattern emerging.\nWe're in the same situation mobile development was in 2007 \u2013 hundreds of fragmented frameworks and SDKs that don't interoperate. Today we have LangChain, OpenAI SDK, CrewAI, Vercel AI SDK, Mastra, and dozens more appearing weekly. Each has different APIs, integration patterns, and tool definitions.\nI'm proposing Agent-Oriented Programming (AOP) as a solution: making AI agents first-class citizens in programming languages, similar to how Object-Oriented Programming elevated objects from structs.\nKey concepts:

agent keyword instead of class for AI constructs\ntool keyword instead of def for agent capabilities\nNative HTML elements like <agent> and <tool>\nNew HTTP methods for agent operations (CHAT, TOOL, COMPOSE)\nUniversal syntax across Python, TypeScript, Go, Rust

Instead of this complexity:\npythonclass MyAgent:\n def __init__(self):\n self.openai = OpenAI(api_key="...")\n self.search = SearchAPI(...)

    def search_and_analyze(self, query):\n        results = self.search.query(query)\n        response = self.openai.chat.completions.create(...)\n        return response.choices[0].message.content
\nYou'd write:\npythonagent ResearchAgent():\n def __init__(self, model="gpt-4", provider="openai"):\n super().__init__(model=model, provider=provider)

    tool search_web(self, query: str) -> SearchResults:\n        return web_search(query)\n    \n    tool analyze_content(self, content: str) -> Analysis:\n        return llm_analyze(content)
\nThis follows the same evolutionary pattern: Procedural \u2192 Object-Oriented \u2192 Agent-Oriented.\nThe proposal includes implementation roadmap, cross-language syntax examples, and how this could standardize the fragmented AI ecosystem.\nWould love to hear HN's thoughts on this approach. Is this a natural evolution or am I overthinking the fragmentation problem?\nhttps://www.aiop.dev/aop_intro.html"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: Agent-Oriented Programming next programming paradigm"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://www.aiop.dev/aop_intro.html"}},"_tags":["story","author_gurvinderd","story_44166336","show_hn"],"author":"gurvinderd","created_at":"2025-06-03T04:35:31Z","created_at_i":1748925331,"num_comments":0,"objectID":"44166336","points":1,"story_id":44166336,"story_text":"Hi HN,\nI've been thinking about the current state of AI development and see a familiar pattern emerging.\nWe're in the same situation mobile development was in 2007 \u2013 hundreds of fragmented frameworks and SDKs that don't interoperate. Today we have LangChain, OpenAI SDK, CrewAI, Vercel AI SDK, Mastra, and dozens more appearing weekly. Each has different APIs, integration patterns, and tool definitions.\nI'm proposing Agent-Oriented Programming (AOP) as a solution: making AI agents first-class citizens in programming languages, similar to how Object-Oriented Programming elevated objects from structs.\nKey concepts:

agent keyword instead of class for AI constructs\ntool keyword instead of def for agent capabilities\nNative HTML elements like <agent> and <tool>\nNew HTTP methods for agent operations (CHAT, TOOL, COMPOSE)\nUniversal syntax across Python, TypeScript, Go, Rust

Instead of this complexity:\npythonclass MyAgent:\n def __init__(self):\n self.openai = OpenAI(api_key="...")\n self.search = SearchAPI(...)

    def search_and_analyze(self, query):\n        results = self.search.query(query)\n        response = self.openai.chat.completions.create(...)\n        return response.choices[0].message.content
\nYou'd write:\npythonagent ResearchAgent():\n def __init__(self, model="gpt-4", provider="openai"):\n super().__init__(model=model, provider=provider)

    tool search_web(self, query: str) -> SearchResults:\n        return web_search(query)\n    \n    tool analyze_content(self, content: str) -> Analysis:\n        return llm_analyze(content)
\nThis follows the same evolutionary pattern: Procedural \u2192 Object-Oriented \u2192 Agent-Oriented.\nThe proposal includes implementation roadmap, cross-language syntax examples, and how this could standardize the fragmented AI ecosystem.\nWould love to hear HN's thoughts on this approach. Is this a natural evolution or am I overthinking the fragmentation problem?\nhttps://www.aiop.dev/aop_intro.html","title":"Show HN: Agent-Oriented Programming next programming paradigm","updated_at":"2025-10-24T10:18:34Z","url":"https://www.aiop.dev/aop_intro.html"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"mfilion"},"title":{"matchLevel":"none","matchedWords":[],"value":"Firefox Wayland Development in 2021"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://mastransky.wordpress.com/2021/10/01/firefox-wayland-development-in-2021/"}},"_tags":["story","author_mfilion","story_28718526"],"author":"mfilion","children":[28718777,28723272],"created_at":"2021-10-01T14:00:41Z","created_at_i":1633096841,"num_comments":13,"objectID":"28718526","points":47,"story_id":28718526,"title":"Firefox Wayland Development in 2021","updated_at":"2024-09-20T09:27:21Z","url":"https://mastransky.wordpress.com/2021/10/01/firefox-wayland-development-in-2021/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"TangerineDream"},"title":{"matchLevel":"none","matchedWords":[],"value":"Firefox and Linux in 2025"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://mastransky.wordpress.com/2026/01/23/firefox-linux-in-2025/"}},"_tags":["story","author_TangerineDream","story_46731759"],"author":"TangerineDream","created_at":"2026-01-23T12:38:02Z","created_at_i":1769171882,"num_comments":0,"objectID":"46731759","points":9,"story_id":46731759,"title":"Firefox and Linux in 2025","updated_at":"2026-03-05T23:23:59Z","url":"https://mastransky.wordpress.com/2026/01/23/firefox-linux-in-2025/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"codekarate"},"title":{"matchLevel":"none","matchedWords":[],"value":"The MCP Registry Registry"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://mastra.ai/mcp-registry-registry"}},"_tags":["story","author_codekarate","story_43644789"],"author":"codekarate","children":[43644938,43648408],"created_at":"2025-04-10T15:20:44Z","created_at_i":1744298444,"num_comments":1,"objectID":"43644789","points":7,"story_id":43644789,"title":"The MCP Registry Registry","updated_at":"2025-04-11T04:28:21Z","url":"https://mastra.ai/mcp-registry-registry"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"tasqa"},"title":{"matchLevel":"none","matchedWords":[],"value":"Firefox WebGL and fgx acceleration on Wayland"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://mastransky.wordpress.com/2020/03/03/webgl-and-fgx-acceleration-on-wayland/"}},"_tags":["story","author_tasqa","story_22475082"],"author":"tasqa","created_at":"2020-03-03T15:19:29Z","created_at_i":1583248769,"num_comments":0,"objectID":"22475082","points":6,"story_id":22475082,"title":"Firefox WebGL and fgx acceleration on Wayland","updated_at":"2024-09-20T05:45:15Z","url":"https://mastransky.wordpress.com/2020/03/03/webgl-and-fgx-acceleration-on-wayland/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"TangerineDream"},"title":{"matchLevel":"none","matchedWords":[],"value":"Wayland Proxy Load Balancer"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://mastransky.wordpress.com/2023/12/22/wayland-proxy-load-balancer/"}},"_tags":["story","author_TangerineDream","story_38736989"],"author":"TangerineDream","children":[38744429],"created_at":"2023-12-22T18:29:22Z","created_at_i":1703269762,"num_comments":3,"objectID":"38736989","points":5,"story_id":38736989,"title":"Wayland Proxy Load Balancer","updated_at":"2024-09-20T15:59:08Z","url":"https://mastransky.wordpress.com/2023/12/22/wayland-proxy-load-balancer/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"6mile"},"title":{"matchLevel":"none","matchedWords":[],"value":"NPM attack targets Zapier and security tool browser extensions"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://opensourcemalware.com/blog/mastra-npm-malware"}},"_tags":["story","author_6mile","story_48590682"],"author":"6mile","children":[48590683],"created_at":"2026-06-18T19:58:26Z","created_at_i":1781812706,"num_comments":1,"objectID":"48590682","points":5,"story_id":48590682,"title":"NPM attack targets Zapier and security tool browser extensions","updated_at":"2026-06-18T20:35:58Z","url":"https://opensourcemalware.com/blog/mastra-npm-malware"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"montroser"},"title":{"matchLevel":"none","matchedWords":[],"value":"Firefox and Linux in 2025"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mastra"],"value":"https://mastransky.wordpress.com/2026/01/23/firefox-linux-in-2025/"}},"_tags":["story","author_montroser","story_46756048"],"author":"montroser","created_at":"2026-01-25T17:29:37Z","created_at_i":1769362177,"num_comments":0,"objectID":"46756048","points":5,"story_id":46756048,"title":"Firefox and Linux in 2025","updated_at":"2026-03-05T23:25:27Z","url":"https://mastransky.wordpress.com/2026/01/23/firefox-linux-in-2025/"}],"hitsPerPage":50,"nbHits":5646,"nbPages":20,"page":0,"params":"query=mastra&tags=story&hitsPerPage=50&advancedSyntax=true&analyticsTags=backend","processingTimeMS":5,"processingTimingsMS":{"_request":{"roundTrip":19},"afterFetch":{"format":{"highlighting":2,"total":3}},"fetch":{"query":2,"scanning":1,"total":4},"total":5},"query":"mastra","serverTimeMS":8}