Launch HN: Kampala (YC W26) – Reverse-Engineer Apps into APIs
Posted by alexblackwell_ 23 hours ago
Hey! I am Alex and together with my co-founder Tarun built Kampala (https://www.zatanna.ai/kampala). It’s a man-in-the-middle (MITM) style proxy that allows you to agentically reverse engineer existing workflows without brittle browser automation or computer use agents. It works for websites, mobile apps, desktop apps.
Demo: https://www.youtube.com/watch?v=z_PeostC-b4. Many people spend hours per day in legacy dashboards and on-prem solutions reconciling data across platforms. Current attempts at automation use browser automations or computer use agents which are brittle, slow, and nondeterministic. I come from a web reverse engineering background and spent the last 7-8 years building integrations by hand for sneaker/ticket releases, sportsbooks logins, and everything in\ between. During that time I consulted for several companies and brought them off of browser based infrastructure into the requests layer.
When we started Zatanna (that’s our company name) we worked in dental tech, which meant we had to deal with tons of insurance payer dashboards and legacy dental-practice solutions. Our superpower (as a fairly undifferentiated voice agent/front desk assistant company) was that we could integrate with nearly any system requested. During this time we built extensive tooling (including what we’re now calling Kampala) to allow us to spin up these integrations quickly. Existing MITM proxies and tooling didn’t work for a few reasons: (1) They manipulated the TLS and HTTP2 fingerprint over the wire which was detected by strict anti-bots. (2) They had bad MCPs which did not adequately expose necessary features like scripts/replay. (3) They did not allow for building workflows or actions given a sample or sequence of requests.
As the tools we built got more powerful, we began to use them internally to scrape conference attendees, connect to external PMS systems, and interact with slack apps. I even sent it to my property manager mom, who (with a lot of help from me lol), automated 2-3 hours of billing information entry in Yardi. At that point we realized that this wasn’t really about dentistry :)
Because Kampala is a MITM, it is able to leverage existing session tokens/anti-bot cookies and automate things deterministically in seconds. You can either use our agent harness that directly creates scripts/apis by prompting you with what actions to make, or our MCP by manually doing a workflow once, and asking your preferred coding agent to use Kampala to make a script/API to replicate it. Once you have an API/script, you can export, run, or even have us host it for you.
We think the future of automation does not consist of sending screenshots of webpages to LLMs, but instead using the layer below that computers actually understand. Excited to hear your thoughts/questions/feedback!
Comments
Comment by ksri 22 hours ago
We opened chrome, navigated the entire website, the downloaded the network tab as an har file. The asked claude to analyze and document the apis as an openapi json. Worked amazing.
Next step - we wrote a small python script. On one side, this script implements stdio mcp. On the other side, it calls the Internal apis exposed by the 3rd party app. Only thing missing is the auth headers..
This is the best part. When claude connects to the mcp, the mcp launches a playwright controlled browser and opens the target web apication. It detects if the user is logged in. Then it extracts the auth credentials using playwright, saves them to a local cache file and closes the browser. Then it accesses the apis directly - no browser needed thereafter.
In about an hour worth of tokens with claude, we get a mcp server that works locally with each users credentials in a fairly reliable manner. We have been able to get this working in otherwise locked down corporate environments.
Comment by alexblackwell_ 22 hours ago
Comment by jackjayd 14 hours ago
Comment by namanyayg 22 hours ago
Takes very little time and tokens and I get to plug into their platform in seconds.
Comment by IMTDb 22 hours ago
How do you handle SSL pinning ? Most of the apps I interact with have some sort of SSL pinning, which is the hard part to circumvent. I tried Kampala but got stuck at the usual place; as soon as I enable it, chatGPT stops working. Most of my iPhone apps stop responding etc.
I would love to try using this tool to build an agent that can simply subscribe me to my gym lessons instead of me having to go on the horrible app. But even that relatively simple (iOS) app stopped working as soon as I enabled the proxy.
Comment by alexblackwell_ 21 hours ago
I also think mitmproxy (open source) has an option to spin up a virtual Android device that can bypass pinning via AVD. I have not tested how reliable it is though.
FWIW, it could also be a cert trust issue. I would try a quick Safari search to confirm the cert is fully trusted. ChatGPT is pinned, but the gym app makes me think it might be a trust or config issue on your device.
Happy to take a look as well. Email me at alex at zatanna dot ai.
Comment by canarias_mate 20 hours ago
Comment by telecuda 22 hours ago
Comment by alexblackwell_ 21 hours ago
Comment by avaer 19 hours ago
Comment by aleksiy123 16 hours ago
I tried my hand at this once from har file, build a DAG of the requests and responses and how their parameters map into each other, and then try to build a spec.
But it was very brittle. I imagine now with LLMs its much more viable. I always thought generating clients and load tests would be a cool use case.
Comment by chakintosh 4 hours ago
Comment by laxpri 3 hours ago
just looking for what is USP(unique selling point) here
happy for you though if this actually works
Comment by madradavid 22 hours ago
Totally unrelated, I am just curious about why you chose the name, as someone who is Ugandan and was born in raised in Kampala (which is the Capital City of Uganda BTW).
Congratulations again.
Comment by alexblackwell_ 22 hours ago
Comment by JohnWabwire 11 hours ago
Comment by iconicBark 22 hours ago
Comment by dataviz1000 22 hours ago
I've tested it against YouTube, Twitch, Ticketmaster, and Yahoo Finance. It will detect any transport like JSON, WebSocket, GraphQL, SSE, Protbuf, UDP, WebRTC, ect.. It after 3 hours and some coaching succeeded in reverse engineering ChatGPT + Cloudflare Turnstile but I didn't merge that into it yet.
It works by Claude using the Chrome DevTools Protocol (CDP) intercepting all traffic.
[0] https://github.com/adam-s/intercept?tab=readme-ov-file#how-i...
Comment by alexblackwell_ 22 hours ago
Comment by dataviz1000 22 hours ago
You are welcome to send me an email at [my_username]@gmail.com if you want to talk about some of these things that I'm working on that are in your space.
`intercept` is just a proof-of-concept and at this point, if it added any value to what you are working on, that would be the best. Overall, people are pounding every website and your product will save billions in compute from AI inference to servers grinding and grinding getting pounded by these bots.
Comment by namanyayg 22 hours ago
I think just downloading all network traffic and giving it to claude code is the fastest and cheapest approach for 99% use cases.
Comment by arjunchint 7 hours ago
Compared to your our approach, we are doing this entirely within a browser extension so meeting users where they already doing their existing work.
Within the extension just record doing a task, we reverse engineer the APIs and write a script. Then execute the script from within the webpage so that auth/headers/tokens get automatically added.
You can just prompt to reuse the tools at zero token cost.
Comment by laxpri 4 hours ago
Comment by peterabbitcook 20 hours ago
Seems like a great product, potentially quite powerful for automated testing of SPAs.
Comment by alexblackwell_ 20 hours ago
Comment by 5701652400 20 hours ago
Comment by alexblackwell_ 19 hours ago
Comment by mkirsten 23 hours ago
Also not clear on the page if it is apps from the local machine or on the network. Maybe some clearer examples and use cases would help?
Comment by alexblackwell_ 22 hours ago
Comment by lchengify 9 hours ago
Comment by Sytten 23 hours ago
Fingerprinting is also a hard thing to match perfectly, I would be curious to know what your strategy is on that. My experience has been that unless you bundle multiple TLS lib it is almost impossible to do at 100% because none of the lib cover all the TLS extensions.
Comment by alexblackwell_ 22 hours ago
Comment by Sytten 16 hours ago
Comment by Barbing 22 hours ago
Kampala (had to double check it wasn’t Harris)
Just mulling these names over, how’d you come up with them?
PS: clear value prop!
Comment by alexblackwell_ 22 hours ago
Comment by kay_o 18 hours ago
Comment by 5701652400 19 hours ago
and if API is not published, and you MITM with self-compromised CAs, and then use it (commercially?) you ~100% breaking ToS.
this is just un-ethical. or YC does not have regard anymore for such things?
Comment by alexblackwell_ 19 hours ago
Comment by 5701652400 7 hours ago
what kind of moral gray areas you are walking in? how is this not clear?
theft and crime was for thousands of years. and the fact that there were horrific multi-million legal cases. this is why we have curts and legal system and ToS and Copyright laws. so people who break the law (or contracts like ToS protected by law) get reprecautions. FAFO.
Comment by ImPostingOnHN 18 hours ago
Comment by 5701652400 7 hours ago
"interoperability" is never the case in the agreements.
it is very stupid decision from business perspective. and unless legally required (like in agriculture or something, "right to repair"), no sane business will provide this to their customers.
Comment by ImPostingOnHN 1 hour ago
I will concede your observation that often businesses act unethically if it means they get more money.
But, ethics doesn't mean "obey the ToS", it means structure the ToS such that the ToS itself is ethical. In my opinion (which is equal in value to yours), banning interoperability in a ToS is even less ethical than violating such an unethical ToS.
For a clue as to why that is, ask why "right to repair" exists as a concept. What are the ethical principles underlying "right to repair"? After all: like you say, companies could make more money by forbidding it in their ToS (and have).
Comment by jasonlotito 19 hours ago
There is nothing unethical about this. You can technically do this with a browser and its dev tools.
You being here is far more unethical than this app.
Comment by 5701652400 7 hours ago
how am I being far more un-ethical again?
did I develop an AI tool to massively assit people breaking ToS and Copyright? (which is legaly punishable)
Comment by 5701652400 6 hours ago
Comment by rrr_oh_man 19 hours ago
Ehh…
Comment by 5701652400 7 hours ago
Comment by benagents 22 hours ago
Think this is really interesting especially for creating datasets. Proxyman was always hard to use for me, so connecting it to a MCP was something I have been waiting for.
Quick question: How do you handle session re-auth mid-script?
Congrats on the launch.. I need that conference script!
Comment by alexblackwell_ 21 hours ago
Comment by benagents 21 hours ago
Comment by lyime 22 hours ago
Comment by alexblackwell_ 21 hours ago
Comment by kang 20 hours ago
Comment by alexblackwell_ 18 hours ago
Comment by kang 8 hours ago
Comment by ghoshbishakh 20 hours ago
Comment by alexblackwell_ 19 hours ago
Comment by 5701652400 19 hours ago
(every app that is not hidden their networking)
Comment by theParadox42 15 hours ago
It’s pretty funny to see that in their demo video given it’s a blatant violation of their ToS.
Comment by 5701652400 20 hours ago
Comment by bbg2401 18 hours ago
If a web property has implemented anti-bot mechanisms, what ethical reasons do you have for providing evasion as a service?
Comment by alexblackwell_ 18 hours ago
Comment by bbg2401 18 hours ago
Indeed, it would likely be classed as a violation according to your own ToS.
It's a delicate matter as we all deploy personal automations that break ToS without us really giving it a second thought. But as a commercial endeavour, it feels brazen, I'm sorry to say.
Comment by doc_ick 20 hours ago
Comment by alexblackwell_ 20 hours ago
Comment by doc_ick 19 hours ago
If I’d make a mobile app and users simply use your automation service instead of my mobile app, I’d lose traffic/money/motivation to improve it.
If they run into issues from your service now it could make my app look bad while the error isn’t with the app.
See tailwind for an example tale.
Comment by alexblackwell_ 18 hours ago
Comment by adamsilvacons 47 minutes ago
Comment by huflungdung 20 hours ago
Comment by asxndu 20 hours ago
Comment by 5701652400 19 hours ago
side note, YC25/YC26 batches have multiple startups that blantly violate ToS and sitting on a timebomb just pending a lawsuite and Cease and Desist Letters.
Comment by alexblackwell_ 19 hours ago
I do have to push back on the ToS comments though. Automation is used daily by nearly all companies. RPA is a billion dollar industry. Browserbase raised at 300M valuation. Is using puppeteer to automate a form submission a violation of ToS? If so then why is using a screen reader not? Is it the intention? Why is hitting network requests directly different? I personally don't think that automation is unethical (as long as it is not affecting server capacity). I don't think the answer to the ethical problems in scraping is just not to automate at all. Open to disagreement here though.
Comment by teraflop 18 hours ago
Without taking a position on the ethics of automation, surely this isn't a serious question? Things that the ToS prohibits you from doing are ToS violations, and other things aren't.
For instance, from AirBnb's terms of service: "Do not use bots, crawlers, scrapers, or other automated means to access or collect data or other content from or otherwise interact with the Airbnb Platform."
There is no similar prohibition against using screen readers.
Comment by alexblackwell_ 18 hours ago
Comment by janalsncm 17 hours ago
Comment by mil22 15 hours ago
Comment by rexpop 9 hours ago
Comment by ImPostingOnHN 18 hours ago
> There is no similar prohibition against using screen readers.
A screen reader uses automated means to access or collect data or other content from or otherwise interact with a platform.
Comment by 5701652400 6 hours ago
FTX also raise lots of money. so did Terra/Luna. large valuation does not mean you cannot end up in life inprisonment for fraud.
> Why is hitting network requests directly different?
again. business publishes their official API. prohibit automatic and tool use in their ToC.
you go pass that and access what they do not release publicly.
this is borderline Copyright infringement, Trade Secrets theft, and violation of ToS.
> others do it
no they don't. "assisting screen reader" in ios. does not intercept MITM network traffic, attempts de-obfsucate, decrypt, bypass TLS and CAs with fake CA roots with intent to "udnerstand inner workings".
this is very far from the "assisting user". you do not need that level of breaking into internals.
and besides. if app really wants to assit user there are legitimate ways to do so, like accessibility labels in ios, exposed by app itself to OS. crucial point here - app already exposes it itself.
I mean, if you get legal permission from business owner to run this tool and expose their API. sure, run whatever you want (as long as your ad-hoc contract allows). and if you cannot get this contract, you are clearly breaching use and going directly agains what business intended.
you are not assisting any user here. you are trying to directly steal trade secrets to replicate their business.
Comment by jasonlotito 19 hours ago
Comment by 5701652400 6 hours ago
as in ios or android. this is in their name.