Launch HN: Momentic (YC W24) – Agents that catch bugs by using your app
Here’s a demo: https://youtu.be/BFsM-Se1Fh8
We’re both software engineers that spent our careers on dev tooling and infra across companies like Robinhood, Retool, WeWork, and Qualtrics. Testing was always a pain in the ass (esp Playwright and Selenium), so we built agents to do it for us.
Modern day software has a ton of bugs and the change failure rate is only growing faster as coding agent adoption scales. LLMs are really good at generating code, but reinforce their own assumptions, write a ton of useless tests, and are bad at visual understanding. On DeepSWE v1.1, Sonnet 5.5 hit 66.2% pass rate when banned from writing tests, versus 65.3% when allowed.
OSS end-to-end testing frameworks like Playwright, Selenium, or Maestro force you to hardcode implementation details like XPath, text, or aria-* attributes in your tests. Even with agents, these take a nontrivial amount of time and tokens to build and maintain.
In 2023, we saw Nat Friedman drive a browser with GPT-3 via natbot. We were inspired to use this technology to automate the most painful and tedious parts of software engineering: testing. We started with using LLMs to generate and maintain Playwright, but quickly realized that those primitives were fundamentally misaligned with the agentic SDLC. We think the future of QA is agents testing themselves, not writing scripts.
Mo is a custom agent harness for catching bugs that builds on the past 3 years of Momentic and millions of test traces from complex, real-world applications. Mo is built for recall: it finds the most real bugs, though Codex is a bit more precise at 86% vs 84%. The tradeoff is cost: Mo costs $2.67 per bug vs $0.80 for Codex, less than Claude Code and Devin.
- Self-organizing agent graph. Mo builds a directed acyclic graph (DAG) as it explores. Large product areas automatically fork into parallel sub-agents, each with their own browser or device for concurrent execution.
- Specialized agents for domain specific tasks. Planner agents reason over screenshots and video while dedicated locator agents inspect page structure to resolve plain-English interaction targets. Others include image analysis, video understanding, audio generation, and more.
- Parallel agents coordinate through cooperative resource leases. Agents can announce that they’re “using” or “modifying” overlapping resources or fixtures. Multiple “using” claims can coexist, but only a single “modifying” claim can be active on any particular one.
- Scaled infrastructure. Mo ships with a tunnel that lets users expose private sites and local apps to our hosted agents and infra. A single bug bash can spin up 100s of concurrent browsers and devices.
We benchmarked Mo against coding agents on 4 popular open-source apps: Gitea (58.8k stars), Metabase, Twenty (YC), and Saleor, with 1,396 human-labeled bugs. Each agent got the same brief, a fresh E2B sandbox, and no access to source code. Codex and Claude Code used hosted Browserbase browsers, while Devin used its built-in browser. For evaluators, we implemented LLM as a judge (GPT-6.1 Sol) with a human reviewer.
Results from a time-boxed 60-minute run:
- Mo: 269 bugs, 19.3% recall, 84% precision, $2.67 per bug
- Codex (GPT-6.1 Sol + Playwright MCP): 86 bugs, 6.2% recall, 86% precision, $0.80 per bug
- Claude Code (Opus 5.5 + Playwright MCP): 59 bugs, 4.2% recall, 80% precision, $4.09 per bug
- Devin: 27 bugs, 1.9% recall, 84% precision, $3.89 per bug
Mo finds more bugs the more time it has. From 30 to 60 minutes, it went from 177 to 269 bugs (+52%), while Codex gained only 16%.
Results: https://momentic.ai/qa-bench
Write-up: https://momentic.ai/blog/qa-bench
Dataset: https://huggingface.co/datasets/momentic/qa-bench
Harness: https://github.com/momentic-ai/qa-bench
We just shipped PR testing for Vercel and Cloudflare deploy previews and we’re giving every new signup $250 in Mo spend. Paid plans have higher infra capacity and included usage along with options to top up.
We’d love for you to try it out and give us feedback. Feel free to comment here, we’ll be around all day!
We had someone recommend browser-use and are running it against the benchmark currently. We're hosting the results here if you'd like to see more: https://momentic.ai/qa-bench
- I would always pick an open source tool I can strap to my custom harness over using a service like this. Do you somehow expect that no such competitor will arrive that performs as well?
- If you are YC 2024 what have you been doing for 2 years?
- The real edge here would be supporting mobile development builds on real devices, is this on your roadmap and if so what's your plan to support it? In that case I would pay for this if you handled the real device on your end.
- I expect there will be many more competitors to come, as there already are. I also think achieving these performance improvements is non-trivial and depends on a lot of internal tooling we've built over the last two years (see next answer). As with any software, there will obviously be new competitors that match our historical performance eventually, but we will also be continuing to evolve our product. As you can see from the recall numbers in the benchmark, there is still a lot of room for improvement.
- Mo is really our second product. Over the last two years we've been building the Momentic e2e test framework and tooling around it, which allows engineering teams to own quality by authoring tests in plain-english and maintaining them with little to no effort. Mo builds on top of that nicely because we've already spent a lot of time tuning the underlying tools so that agents can use them efficiently to get better results.
- Real device support is already in the works! It should go live in the next couple of weeks. Would love to connect once it's ready.
Also wow I have been building something similar to that 2 year endeavor. But I didn’t think to store the tests in the actual codebase because the idea was to never look at the codebase for the vibecoders and such. But reading all of this I’m rethinking my technique there, why have the artificial constraint?
What do you guys have that's better than a self-hosted, open source extensible QA AI tool like Mira?
[1] https://miracode.ai
But to your general point, this benchmark is showing we are finding 3-5X more bugs than the best OSS performance out there right now. We did also try it on tester army e2e and it underperformed Codex + Playwright MCP (this will make it in the benchmark soon).
The "better" comes from custom agents and massively parallelized infrastructure. I'm not sure how many folks want to or even can self-host fleets of GPUs, browsers and Mac minis. We're happy for folks who can but our current offering is for those who want to find the most bugs with the least amount of effort.
is this good? so Mo costs more money per bug? I'm confused.
The main thing we're trying to show is that Mo finds over 3x as many correct bugs in the same amount of time as the next-best QA agent. This is the main thing we optimize for since the worst thing you can do in QA is miss a real bug and ship broken code to prod. Currently, the tradeoff you make for that better recall is higher cost. I would say the precision is more or less comparable, but marginally lower.
Obviously we'd love to be beating every other agent on all of these numbers, and we're actively working on it, but for now this is an honest and transparent look at how the tool is doing.
Feel free to take a look at the full writeup for more detail!
I also do believe search quality is recall dominated, but the link between the metrics and results are not as clear as they could have been. I think you have a stronger sell here than it looks at first glance.
Congratulations to the team tho! Those are very nice results
Maybe it varies by domain but I'm quite used to codebases where "fix every discovered bug" is basically infeasible; finding 1000 miniscule bugs isn't helpful. Finding _serious_ bugs is the goal.
Some questions are top of mind after having done POCs and trials with other companies that have products in this space (excuse me if they are answered somewhere obvious - I skimmed the site and your post before drafting this):
1. What is vendor lock-in like with Momentic? In my mind there's space for a mature QA platform that agentically generates and maintains playwright/similar tests, but perhaps I'm wrong.
1.b. will Momentic code or testing standard or some aspect be open enough that it is feasible to move away from it if needed, or continue using it if Momentic goes under/deploys major breaking changes?
2. How deterministic are Momentic tests?
3. Who is your target user? Product owner / developer / SDET / ?
----
Also - is this saying Codex is better and cheaper than Mo?
"... though Codex is a bit more precise at 86% vs 84%. The tradeoff is cost: Mo costs $2.67 per bug vs $0.80 for Codex, less than Claude Code and Devin."
1. Mo generates its own test cases in natural language, but you can ask it to write Playwright and maintain it in your repository if you really want. We actually do have a regression testing product as well where tests are just natural language in your repository. For that product yes there is some vendor lock-in since this is a proprietary format that only our CLI translates into browser actions. But ultimately since it's natural language it's pretty portable :)
2. Mo is focused on exploratory testing and so is inherently non-deterministic. But the regression testing product has a ton of caching built into it that we've written about in the past (not just a single css selector). https://momentic.ai/blog/teaching-browser-agents-user-intent This is a big part of reliability and latency optimization, otherwise your CI would just hang for hours on any reasonable suite.
3. I would say the regression testing product was very much SDET/developer focused since it required you to have a codebase and use Git. Mo is meant to be super easy for anyone to onboard onto and lower the barrier to entry, so we're hoping we'll see more product owners, PMs, QA and even leadership use the product. But devs are always going to be our bread and butter, we ultimately tried to build the product we wanted to use ourselves.
4. We're optimized for recall (# of bugs you find in a given amount of time). The bench shows we find ~3-5X more bugs compared to Codex and Claude Code, with approx. the same precision. The service costs more than the raw harnesses for sure, but that's the all-in cost including our infra, parallel agents, etc.
1/ General purpose models are still not good at this task. I would personally love it if I could trust my agent when it says its done after a 24h build. But whether it's because of sycophancy, context degradation over time, or something else coding agents still struggle to verify their own work. Maybe with 1B context windows this will change.
2/ Infra is still annoying to setup. We wanted to provide a unified interface across web, mobile and soon desktop as well. So users don't have to worry about provisioning, concurrency, security, etc.
3/ As with any SaaS, even beyond the initial build, maintenance is a headache. I think most companies would rather not consider agentic QA as one of their core competencies and investments. It takes a ton of eng effort to keep the lights on, continually update the models used, train new ones, groom ground truth, onboard infra providers, etc.
This strikes me as a company that is late delivering a product for November 2025, when it is November 2026.
But I would say even for medium sized features, it's the same difference between asking your Codex to "review the code make no mistakes" and using a paid AI code review tool.
As your product surface area increases, you need fundamentally different agent architecture to maintain context over time and across bug bash sessions. The benchmark apps are probably among the simplest apps we test on, and even those show a massive perf. gain. For large companies with 1000s of important user flows, have to support different viewports, and need to work across mobile/web/desktop, asking Codex to test it all before a big launch is not scalable.
Even basic constraints like the # of browsers/devices you can run concurrently, the amount of reliable TPM you need, and how many agents can run on a single box become problematic. You also have to think about ktlo: how do you evaluate new model releases in a data driven way, how does agent become more efficient itself over time, etc.
To be more constructive: let's say I have 2 frontier subscriptions and I end up with 20% left on each at the end of the week. It feels awful knowing that I would _love_ to use that with Momentic but I can't because I have to pay for yet another set of proprietary non-transferable tokens. It's like dealing with airline rewards.
That doesn't mean we won't eventually support byok, especially as OSS models catch up! We have our finger on the trigger there.
would be great to have more details about whats not compatible, I assume iOS version? app requires 27
how does this fit in to fixing the bugs? how do we close the loop with the agents we have coding?
Everything has to be reproducible and runnable by the general public
One suggestion for the future: QA Bench would be even more valuable with a human benchmark, so you can clearly see how the agents perform compared to human QA testers. That would settle that discussion also :)
so apparently they automatically hand over your email to Slack to contact you upon login even tho I don't remember this being mentioned anywhere at all. I went to check the Momentic settings and theres a Notifications section with Slack turned off...
used my public email so idc but others may
I'm building something in the same space and this bit me quite early, so what I ended up doing was basically mutation testing: take a handful of open source apps, plant bugs on purpose, and count how many of them the tool waves through anyway. Seems that the pass/fail counts were not the interesting part at all, the interesting part was letting the engine answer with a third option, "I can't tell", because once that was allowed the false passes mostly disappeared, it simply stopped guessing. I would say a guessed pass is worse than having no test, and I keep every run replayable for the same reason, otherwise I wouldn't trust my own numbers either.
Curious how Mo (nice name) handles the middle ground - the docs say a bug it can't reproduce is not reported as confirmed, but does it show up anywhere or is it just dropped? And for QA Bench, did you plant bugs yourselves or only label existing ones?
- Precision/recall vs pass/fail: I really like this point, and I would say QA bench is actually not a great fit for measuring pass/fail currently, because all of the fixtures have numerous bugs in them, and almost all agent runs find at least one (so the fail rate is basically zero). My assumption would be that recall is correlated with pass/fail accuracy, but we are working on a PR-review variant of QA-bench that I think would be more suited to measuring pass/fail directly.
- I think the insight about allowing "unsure" is interesting, and this is actually similar to what we have for some of the completions in regular Momentic tests, although I'm curious how you generate something useful for the user from the agent basically saying "there might be a bug in this code but I don't know what it is."
- Internally, if Mo can't reproduce a suspected bug it gets discarded. Although we do review some of these to make sure that there aren't issues with the reproduction agent.
- QA bench has zero planted bugs; they're all from the original source. Initially, we did try planting bugs and even generating apps with given bugs using an LLM, but we found that this didn't actually help us establish the ground truth because the agents were still finding bugs that we hadn't planted and needed manual review.
- The candidate ground truth bugs are generated using runs from all agents
- Every candidate gets reviewed by the other agents to generate a recommendation (just makes human review easier)
- A human reviewer makes the final call (no candidates are discarded just because Mo couldn't reproduce)
And in terms of grading the final runs:
- A lot of the final runs still found a small percentage of novel bugs (5-10%), because it's extremely difficult to build a comprehensive list of all bugs, even after hundreds of runs.
- Nothing that didn't match was auto-discarded (read - it wasn't rejected because Mo couldn't repro).
- All unmatched findings were run through the same human review process as above.
- All the runs were regraded after human review to get a final score with zero unmatched findings.
One interesting thing we did notice during this is that Codex and Claude tend to converge on the same findings run over run (very few initially unmatched findings on final runs), whereas Mo tends to find a lot more novel bugs on ever run.
- It’s a bit confusing: the window below "Live Mo's screen" says "No bugs yet," while the tabs at the top (Agents / Bugs / Mo's screen) indicate "Bugs: 11." Once the process finished, the window stated, "Mo didn't find any bugs," yet the tab at the top showed "Bugs: 12." Perhaps this is because they are sitting in the "Needs review" list? Nevertheless - If they are awaiting review, why does it say there are no bugs?
- All the bugs found are labeled as "medium," even though they clearly vary in severity. It would be helpful to add a tooltip explaining how the program assigns these labels. Even better, it would be great to have the option to customize which bugs are flagged as, for example, "high priority" for my report.
- The "stop testing" bttn only appeared right at the very end of the process. Maybe I missed something, but if I changed my mind, wanted to refine the prompt, got tired of waiting, or simply didn't want to burn through my budget - there are plenty of reasons why I might want to stop - yet the button wasn't there for the duration of the test.
- It would be excellent to have an option to export the list of discovered bugs. Since I can manually select and copy the headings anyway, why not provide a proper export feature? It would allow me to share the results of an initial audit with the relevant stakeholders.
Sorry, not a native English speaker, so I used a translator to save time. Good luck!
- Your first point sounds like a frontend bug to me. I wonder if there's missing revalidation.
- Sounds like the defaults need a little more tuning. You can actually update the definition yourself in settings https://app.momentic.ai/settings/mo.
- I'll take a look at this "stop testing" button thing as well. Thanks for flagging.
- What kind of export would you like? We currently have integrations that allow syncing bugs to Linear or other project management software.
But i suppose that this is only useful for codebase-wide bug sweeps? If one actually integrates it into a feature-by-feature agent loop, then the QA following each change is already narrow (since it only needs to test 1 changed feature), so this kind of exploration thoroughness optimization (in author's own words "recall") is less important.
1. It should be pretty efficient using prior knowledge from other runs.
2. It helps expand the graph as your app evolves so that the DAG is always up to date.
Even just Claude with basic prompts is better, but even better with skills.. and then even better with maestro scripts.
We parallelize testing across a massive fleet of browsers/devices so it should actually be much faster than Claude. The open source benchmarks prove it :)
Actually a lot of our mobile users came from Maestro, we hear the maintenance burden is a nightmare.
At my last job, we did this - gave access to codebase to codex/CC, allowed it to drive the app via browser (+ playwright). It not only found bugs but also correlated them to relevant UI and backend code. We didn't benchmark against anything else, but it was amazing to see it in action.
https://marketplace.visualstudio.com/items?itemName=novian.g...
They have a price recalculation task meant to only run on dirty listings, except someone forgot to assign the filtered queryset back to the variable. So it just recomputed every single listing on every run. The unit test still greenlit it for completely unrelated reasons, meaning it probably sat there burning cycles in prod for ages because the final output was technically valid. Does Mo catch that kind of silent no-op where the external state looks fine, or does it mostly hook into visible state diffs?