Launch HN: Bullet (YC S26) – A Faster Coding Agent
codewithbullet.comHi HN! We’re Adi and Alex, founders of Bullet, a faster coding agent.
Bullet started in a senior year dorm. We were fresh out of working at AppLovin and Citadel, and naturally thought we were on a sure path to startup success. We were going to use our skills optimizing stock pricing calculation speeds and agent document context to take over the world. So, Bullet started as an AI hedge fund, a browser-use agent, synthetic financial data (oof), a mobile IDE, and a bunch of other things. We wanted to build something people wanted, but it seemed like everything we built was just terrible, useless, or both.
So, we decided to do something completely different, something completely out of the blue, something that no one had ever done before. Solve a problem we actually had.
Over the course of six pivots, we suffered. Throughout all of our adventures, one final boss kept getting in our way. Claude Code and his little brother Codex. We were spending hours waiting for coding agents like Claude Code and Codex, and got so frustrated to the point that I downloaded the Claude Code whip. We had spent months of time waiting for six codebases-worth of useless coding agent work.
Lightbulb moment. There’s nothing more noble than destroying the institutions! Let’s take on Claude Code and Codex, we can do it! Piece of cake!
And so, Bullet started off as a side project. We used the Claude Code to improve the Claude Code:
1. Model routing. Do you regret giving a task to Fable when it could have literally been done by Sonnet?
2. Targeted code + context search. We think embedding the whole repo is dumb. We also think sticking the whole context (or compressed context) in chat is dumb. So we do faster and better greps over both.
3. Aggressive context hygiene. Tool output is bounded, stale screenshots disappear, we don’t re-read files…the garbage never floods the model.
4. Efficient turns. Batch independent investigation, make one surgical edit, then perform one focused verification. Internal measurement showed 16% fewer round trips and 27% lower cost.
5. The Flash. We prayed to Barry Allen for speed.
And thank the Flash, he gave us speed! On SWE-bench Verified, Bullet resolved 479/500 (95.8%) in one attempt, averaging 119s per task, 35–67% faster than mini-SWE-agent + Fable/Sol depending on task. Full results and methodology here (https://www.codewithbullet.com/blog/benchmark-results.html)
Eventually we started using it every day and never went back.
Listed above were just some of the things about Claude Code that frustrated us the most, but we are constantly optimizing every day (look at that, maybe we did learn something from our jobs).
In our development, the biggest insight was that model speed matters less than reducing round trips. Independent searches, reads, and commands should happen in parallel, while dependent editing and verification stay sequential. One surprising obstacle was code search, small issues like regex-dialect mismatches caused silent misses and sent agents down completely wrong paths, so we built targeted search with fallbacks and bounded context. The most interesting use case so far has been long iterative work (like benchmarks, data pipelines, and evaluation loops), where each step depends on the last and running multiple agents can’t help as much.
Here’s the video demo (https://www.youtube.com/watch?v=rWVmG5fRKgE)
We hope that you guys try out Bullet if you are suffering with speed as much as we were, and we hope it brings you joy, rainbows, and faster responses. And if it’s terrible, let us know it’s terrible (we’re masochists btw)! We'll be in the comments all day, you can also contact us at bullet@davidhf.com.
You can try it at https://codewithbullet.com.
P.S: we hid a code on the website, see if you can unlock the secret page at the footer, all built with Bullet
This is a promising direction! Unfortunately, I think the benchmark result here is essentially meaningless.
I recently discovered this same lesson the hard way. I was trying to get a multi-agent system I was building to improve upon GPQA Diamond scores (system here: http://pellmell.ai). No matter how hard I tried, I could not get any lift. When Fable 5 dropped, it also did not improve upon Opus, and I realized my mistake. The benchmark was saturated!
Now, looking at the result here, I see a similar pattern. Fable is not better than Opus, and the score is ~95%. Notably, this post omits which subagent is being used. Why? An intellectually honest way to tell if this thing really works would be to run that agent and report its score and cost as well.
Going back to my GPQA Diamond lesson, you can see here how a saturated leaderboard behaves https://artificialanalysis.ai/evaluations/gpqa-diamond. Fable gets 92.6% for $0.22 per task while several models score higher for $0.01. I could easily publish a router that “enhances Fable on GPQA Diamond” showing improved score for lower cost, just by implementing a router that picks the model at random!
The breakdown with which model, per-task cost, and methodology is in the "Full results and methodology" link in the post, not omitted. Definitely check it out if you haven't.
On the saturation point, we agree that a 95.8% result on a mature benchmark isn't the main proof, which is why we're currently running against harder, less saturated benchmarks like Terminal-Bench, CursorBench, and SlopCodeBench (going to publish results on these hard benchmarks shortly). Apart from current user experiences, that will show the value of our harness.
I did read "Full results and methodology". It doesn't seem to show which agents you are routing to. Am I missing something? And how do those agents score on SWE-Bench Verified?
The benchmark wasn't evaluated with the router, we wanted an apples-to-apples comparison of our harness against other harnesses like mini-swe-agent on the same models to see if we added speed + cost value beyond routing.
Okay, that makes more sense, but then this post is very confusing. Why mention the router at all? Or does your live system have a router and the eval doesn't? In which case why not publish an eval with the router?
Fair point, yes, the router is only in the live system (we'll try to make that more clear). We thought that comparing the router to other harnesses on the benchmark wouldn't be a fair evaluation because the speed/cost gains from our harness would mostly be from using cheaper and simpler models rather than actually having a better harness.
The same thing holds for speed. I could build a system that speeds up Fable on GPQA Diamond ~50%, while improving score, by literally randomly selecting between Fable and Gemini 3.7 Flash. (Solve time for Flash is 0.1min and 0.8min for Fable, with Flash having a better score.)
Hell, I could publish better score at 87.5% time reduction by having the router always pick Flash!
Like I mentioned, we omitted routing from the benchmark and evaluated with our strongest model modality. Also, randomly selecting between Fable and Gemini 3.7 Flash wouldn't preserve quality.
Mentioned where?
What do you mean it wouldn't preserve quality? I demonstrate in the comments here how it would on a saturated benchmark.
Mentioned in my comment above. Sorry, I thought you were talking about Gemini 3.6 Flash, not their new one. Yes, that's the reason why we didn't include the router in the benchmark to have a fair comparison of the harness itself.
35% faster than swe-mini-agent, nice. You say this is due to somehow parallelizing operations?
I'm using a custom harness based on swe-mini-agent (actually its little brother, their tutorial [0]) and found it way faster than codex (for small tasks) despite being "just bash" in a while loop.
The main difference is that I do the opposite of what you said, i.e. I do dump the context in the prompt. You don't need to grep for what's right in front of you :)
But my repos are small (often smaller than Claude's system prompt!), and I have a script that dumps an "outline" (e.g. function headers and top level vars).
I had an even smaller harness for surgical edits but it was a bit too fiddly and I missed the "let it poke around and figure stuff out" mode of full agentic ones.
What I do miss from that old one though is that it could edit several files simultaneously, in one LLM call. Maybe someday I'll add that back :)
That being said, within a few months everyone who cares about speed will be on Cerebras etc., which will make even the slow harnesses way faster than mine and yours! (I've tested them already and it's insane how fast it is...)
Really cool that you built your own harness off of mini-swe-agent, we took a lot of inspiration from that. We're looking forward to trying out Sol Ultra Fast ourselves too! In our own experience, testing, building, searching, and other tool work still dominate a lot of time, but yes there could be a future where harnesses don't matter at all...but we expect Cerebras will also be super expensive :/
Would be helpful to make it more clear that this doesn’t require another subscription and is only a harness, not another model.
> Bullet started as an AI hedge fund, a browser-use agent, synthetic financial data (oof), a mobile IDE, and a bunch of other things.
Is there another pivot coming? This would make me nervous.
No, we like that we're making this for ourselves as well!
Great, thank you. Will try it.
I use codex cli. It doens't have a UI for linux. I use opencode for that but it doens't work that well with the new 5.6 model suite from openai. Codex is both faster and better. I would have loved if there was a way to use a GUI that worked like codex. Gave this a try. I think this might be it.
Please consider atleast adding MCP support if you can. That'll help
Here you are:
"Codex in ChatGPT desktop app for Linux is now in preview" https://community.openai.com/t/codex-in-chatgpt-desktop-app-...
Thanks! Yes, adding MCP support and preserving skills is definitely a priority for us right now.
Hey just some feedback. I'm giving it a try on a new project I'm spinning up. It does seem faster although I haven't timed it against Claude or anything. I like the integrated browser to immediately see the changes (or see what the agent is doing). Thanks for having Linux support.
Thanks for trying it! If you want to time it against Claude/Codex in app, we have a race lab you can use for that. Good to hear that the Linux support and integrated browser help.
I expected Download to take me to a page with options, but it downloaded a 200MB .dmg file onto my Android phone.
So sorry about that! We disabled download on iOS, but not Android (we'll fix that), it's not meant to be used on a phone (except for using our remote control feature).
Skip signup:
Cmd+Option+I > Console > 'allow pasting'
const onboarding = document.querySelector('#onboarding'); const app = document.querySelector('#app'); onboarding.style.setProperty('display', 'none', 'important'); app.inert = false; app.removeAttribute('aria-hidden'); document.querySelector('#prompt')?.focus();
Also, warning:
# Share chats with Bullet — helps us improve model routing and answer quality
Enabled by default.
Thanks for bringing this up and trying it out! We've disabled Cmd+Option+I in the new version and also have a message during signup about sharing chats with Bullet, let us know if you run into any other issues!
> We've disabled Cmd+Option+I in the new version
Bulletproof.
Truly built on vibes.
We're optimizing every day :)
> We've disabled Cmd+Option+I
OP was providing a userful tips to users, and they weren't giving you a bug report to remove it. If anything, they were suggesting you remove a login-wall.
But now that you blocked the inspector tool, you'll find it harder for users to report bugs. Unless of course those are automatically shared too? /s
We're actively working on implementing a guest mode feature right now for users that don't want to make an account. For reporting bugs, we have an in-app feedback form. Bugs are not automatically shared.
Can it run inside docker? Can it use an arbitrary openai endpoint? Thanks!
Yes, the CLI can run in Docker. The desktop app is not designed to run in Docker. And yes, you can use any HTTPS OpenAI-compatible endpoint, including a custom base URL and model ID.
harnesses are becoming the new tech stack, I created my own and will compare it to how bullet operates, I’ve also built and deployed iOS and Android apps with my tool. When you have built something with the tool, other than the tool, it’s stronger proof.
Agree, building real apps with the harness is the strongest proof. Would love to hear where Bullet fell short vs your setup, especially on speed for your builds.
I have a way different taste, my coding agent doesn't run in a shell and proposes file changes first without changing them, so its prompt -> propose changes -> accept, bullet has the typical agent workflow, prompt -> create changes -> revert (if you don't like what was changed)
My coding agent leverages vector search and grep, just using grep takes longer and seems more expensive per task.
Congrats on the launch. I can't find which model providers are supported? Are you calling the claude-code CLI directly and make bullet usable with anthropic subscriptions like orca or herdr?
I guess however this is a harness and it needs to connect to the API?
Thanks! We support a variety of model providers (OpenCode/Codex/Grok/Claude) via their subscriptions and API keys. This can be seen in the app.
Can someone explain how this actually can go faster than other harnesses?
1. Model routing. Do you regret giving a task to Fable when it could have literally been done by Sonnet?
This is the one thing that I can understand.
2. Targeted code + context search. We think embedding the whole repo is dumb. We also think sticking the whole context (or compressed context) in chat is dumb. So we do faster and better greps over both.
Is this just a different system prompt? Why would other harnesses not be able to do it this way given instructions to do so?
3. Aggressive context hygiene. Tool output is bounded, stale screenshots disappear, we don’t re-read files…the garbage never floods the model.
Existing harnesses already don't re-read files that have not changed. And content that is already in the context window is cached tokens and doesn't add significant latency, what am I missing? Removing context from history invalidates KV cache.
4. Efficient turns. Batch independent investigation, make one surgical edit, then perform one focused verification. Internal measurement showed 16% fewer round trips and 27% lower cost.
Isn't this just a specific sub-agent strategy, also addressable with prompting?
I'm genuinely confused about what is mechanically different in this harness that could not be accomplished with a prompt/skill in another harness.
(Not the author but) To your last question, I was able to replicate some of the benefits of my custom harness in Claude by just adding a custom MCP, startup hooks etc.
The issue I ran into is that I was fighting Claude's system prompt, which told it to do things which negated most of the benefits of my setup...
For context my startup hook was "grep def", lol. (Now working in js I have grep function, grep class, interface etc.). Gives it a little outline for context, saves time poking around blindly. My repos are small though, this is still a big blob if you have very large repos.
Focusing on execution speed for coding agents is the right bottleneck to tackle. Exciting launch.
Thank you!
Does anyone think a harness is something that can generate money? I’ve got my own harness. I use it in preference to any of the others. I even turned its tools into an MCP so Claude could use it. It vastly improved Claude’s iteration speed but I still prefer my own UI. If I didn’t work at whatever we’re calling a FAANG these days it’d be on GitHub - and nobody would use it because they’d just point their own AI at it and clone it. It’s just not that hard. Learned a bunch about rust. Got a better harness. Time well spent.
Yes. People don’t want to build their own harness. They want to get stuff done. ‘Dropbox is just rsync’
> P.S: we hid a code on the website, see if you can unlock the secret page at the footer, all built with Bullet
Is it even hidden when your AI ends up tagging it with `aria-label="Hidden secret code"`? Lol. Fun mini game.
haha fair enough, surprisingly people still struggle to find it, glad you found it and liked the game!
Since I can't get this thing not to annotate its commits with itself as an author, I can't use it.
That should be an option, not forced.
This is a great point, we're actively working on a fix.
If you’re up for giving it another shot, would love to hear other feedback on the app you have.
I think this adds no value. I would stick to OpenCode.
Things I would value: high-fidelity visualization (bonus points for Figma-like visual edits), good tool use (don't force me to tell the model), token efficiency, resource efficiency. Things that are not problems:
* Routing: OpenCode predefines subagents that you can set to appropriate models. * Search: there are AST and embedding-based search MCPs. I use https://github.com/DeusData/codebase-memory-mcp
Thanks for the feedback, we do focus on good tool management, context efficiency, etc. As for routing, ideally it isn't the user who has to route themselves, but a layer that routes for them.
Thanks for the link to the repo! We have looked at things like https://github.com/Graphify-Labs/graphify but haven't had a chance to rigorously evaluate their speed boosts on our harness.
They shoot through walls!
does your harness support ACP?
No, we don’t support ACP today. Bullet uses its own internal harness and CLI integration. That said, we can definitely see it being something we work on in the future!
This is going to be so helpful!
Thanks!
It just works like magic!
Thank you!
Critical for the future of AI native products. Congrats on the launch!
Thank you so much!!
Are you freaking kidding me with YC throwing money at something like this? I guess I can fund raise just by having built https://maki.sh, and months ahead of other founders too...
I'm not sure why anyone would fund "creating an agent". OpenCode is competing with Codex and Claude already.
"The bullets" are not any different than other new agent projects. New agent projects pop up and die constantly and it's not from a lack of funding.
I think that if there are many players in the space, it's a problem worth working on! Like I said in the post, our main problem is speed and that's what we're trying to fix. It's been a problem, and it still is a problem. We have tried tools like OpenCode, Pi, etc. but for our speed issue, it did not fix it. If we go down dying on this boat, so be it, at least we went down dying on a problem we care about!
Meanwhile, Cerebras running Sol at 750 tokens per second, the harness "speed" becomes irrelevant compared to making better use of results from insta-Sol.
Yes, we saw this and it's really exciting, can’t wait to try it in Bullet. But faster inference only speeds up generation. In our own experience, testing, building, searching, and other tool work still dominate plenty of real tasks. We’ll have to test it in practice, but it’s a great development for everyone building agents.
YCombinator's investments are unfortunately very questionable nowadays.
People were saying that about YC in 2009, when Airbnb and Stripe were funded. YC’s philosophy has always been to invest in a great many companies, accepting that you can’t know in advance which will succeed, most will fail, but the ones that succeed will be successful enough to pay for all the losses.
That's not just YC's philosophy. That's how seed level funding works in the industry. Spray and Pray.
Your landing page is very hard to read. The font size is literally 10px for some content, while animations distract the reader.
Dear YC, please force the startups to dedicate some of the 500k funding for standard web design.
++1 Your comment was the solely reason why I clicked on their page! :-D
Looks like "Techno music design of the 90s" or similar :-D
We'll get on that :)
Website looks great FWIW.
Same. I love this type of design
I recently switched over to using primarily Bullet for my projects and the speed of it makes it very nice to get projects off the ground quickly and work properly. I also found that Adi and Alex make updates very regularly based on some of the feedback i've submitted to their feedback tab. Good work on this product guys! I'm excited to see how it develops in the future.
Thanks Lucas, appreciate the feedback as always!