Show HN: Viewfinder – Virtualized browsers for your web app
github.com
github.com
The no-frills, "just the browser" product, is normally called "remote browser isolation"[0] (or, RBI), but ViewFinder lets you build custom browsing extensions on top of this. So you can embed such a remote browser in your web app to encapsulate some off-site 3rd-party functionality that you nevertheless want to include in whatever process is part of that user story or task, for example, submitting a document that you just generated with the embedding web app, useful in the case where the 3rd-party provides no API to do so, making it more fluent than giving someone a list of instructions to then go off-site to follow, or doing it yourself "manually".
You can also use this interface to plug in to some existing headless browser, such as one running an automation job you have set up with puppeteer for observability and intervention if this bot gets stuck--for example, on a CAPTCHA.
One of the browsing extensions I built atop the basic RBI is "co-browsing" so you can have multiple people connect to the same cloud-based browser, from anywhere around the world, and view and interact with it simultaneously. Maybe two friends can watch a podcast at the same time and chat with the built-in chat? But mostly people are interested in this kind of thing for delivering live, real-time customer support to people who are using their app, while they interact with the client over the chat or a telephone. Ditto for training.
From a more meta level, it's a way to craft any programmable experience atop a browser, with somewhat more power that browser extensions (tho offset by the fact that my API is not well documented and can be improved for this purpose).
probably a way to do it would be just with a remote desktop that you could sort of create to have the same you know isolation and clean slate security properties that remote browsing you know also has.
I sincerely hope though I can find a solution to all this which doesn't sacrifice the business but enables people to work on it and use it and incorporate it ... Without having to pay because I think they'll still be enough paying customers who want the pro version even if the community edition was completely free and open.
and I'm not sure how right now...but even though I'm not very good at thinking about this stuff right now... maybe one solution is to really separate the open source version and the paid pro version and make the open source version completely sort of free and open and sort of give it to the community to own it. but I really haven't thought that much about it and like I said I'm not that good at considering these type of things right now for whatever reason. I'm kind of reluctant to do that for now but I think this is something I need to consider, sorry.
it's AGPLv3 isn't it? Copyleft _is_ considered to be true open source by most people AFAIK!
I know there's a lot of tools out there but none of them really worked in the way that I wanted them to if I had to do this work everyday... so I set about building that tool and what I'm showing here today is a layer of that tool. It doesn't include any web scraping or automation related capabilities beyond a limited ability to run puppeteer scripts but what it is is a way to deliver a browser experience through a web app in a way that's customizable and programmable where you can change the user interface and everything like that.
The reason I chose this is because I just wanted to have one code base where I could build this web scraping product and deliver it on mobile devices on desktops on tablets and not have to worry about you know separate code bases for all those different things.... so it's sort of a platform for me to build more apps on top of.
And while I was building this I realized this layer was a pretty significant like amount of code which took me around 1 year to get to sort of an MVP and then another year to get to a more complete set of features. After putting in so much time I thought I should try to factor this layer out so that people can use it because it seems like this sort of thing is somehow useful. It's hard to pin down exactly what the niche use case is but people seem to want it for visibility into their automation in other words giving a head onto the headless browsers... As well as for delivering live training and customer support using co-browsing and just for straight up remote isolated browsing for security purposes. some people also use it for integrating third-party app processes right into their web app without their customers needing to go off site. Like a souped-up iframe or a browser view for the open web.
I never intended any of these things to be the point but I tried to roll with it as people were interested in using it in these ways.
to try to protect the work that I've done I have a public open source version with a limited feature set that nevertheless works as a remote browser that you can build on top of but I've licensed it under a fairly restrictive GPL 3 so that probably limits the use cases of people using that open source one.... and I have a proprietary you know secret version which has a better variable rate streaming of the viewport for better performance om a range of bandwidths and co-browsing built-in so multiple clients can connect and and use the browser at the same time as well as a bunch of control software for you know running multiple instances on a machine in a scalable and resource safe and secure manner.
I thoroughly enjoyed building this project because it was sort of the area that I could do a lot of damage you know working with the web and working with browsers as well as kind of touching the back end without going into areas that I didn't know so much about such as databases and things like that... but it was nonetheless a very very interesting project. I guess I'm talking in the past tense because the main phase of building that has passed and now my focus is trying to you know revamp my marketing website which I haven't done yet, change the prices that I have for the pro version and focus more on business applications. right now I basically negotiate each contract in an ad hoc manner, rather than having a standard process or prices. But I don't know how to say that on a marketing site because they all seem to have like three different plans or in a contact us for Enterprise so I don't know where I fit in on how to do that. I'll figure it out I suppose.
At some point when I recover my programming mojo after this epic marathon of 2 years of coding I want to get back to the web scraping idea. Along the way I tried to keep myself perked up with dreams and goals of startup up super success and so on and applied to YC around about 12 times with this idea and copped 12 anonymous rejections so that's been great. I think it was good though seriously because I discovered this whole subcommunity called bootstrapped indie founders who don't focus on trying to get VC money and thinking about it more that's probably more of the lifestyle that I actually want rather than chasing the giant hamster wheel, I suppose, as good as having all that cash would be, having something smaller and more manageable where I get to set the direction rather than running around at the beck and call of investors as I imagine you might have to do if you're funded...I think this different way works better for me.
But it's not like I would have chosen that at the start it's more like I didn't get the other thing so I'm making this thing work for me. Really well is my goal... right now I feel it's reasonably okay and I'm happy with it but it's also a struggle to sustain belief in the long term success of something when you're the only one driving that and when apart from people who use your product there's not really anyone around you to champion you on.
I find it makes me compensate by having an irrational amount of self belief.. I'm okay with that but it's just how it works for me to handle it, I suppose it comes with the territory. I'm sharing it here because other developers and engineers out there if they haven't seen this sort of thing before they might be interested in incorporating it into their own work and it's my hope that you're able to do that without having to worry about you know a license or paying to do so but I understand that could be difficult because of the restrictive license I've had...I wish there was some other way that I could make it more accessible for people to use without feeling like I'm compromising the business side of it.
It's sort of similar to the space that companies like browserless and diffbot and that some remote browser isolation companies are into but it's also a little bit different and to be honest I'm not really super clear on all the intricacies of the market and how will that works but my feeling is that it makes sense for me to have some sort of paid for license or for managed versions you know pay per seat or per use per month model.... anyway I'm just taking it one step at a time I'm doing okay for now and my focus I suppose is on building things on top of it as well as helping people to use it and making me
more money with that. So I really appreciate all the support that this community has given me directly or indirectly you know over the years where I've been kind of developing this and the useful feedback and the insightful discussions where I got ideas for ways that I could use it or things people wanted. I tried to follow the launch hn guidelines by dang here and.... and I'm not sure how well that's going to succeed. I'm not trying to do a big launch here or anything... like I said I haven't even revamped the marketing site yet I'd just be happy to get you know 30 or even less and you know maybe some insight comments... I think I'm posting it today because it's just part of that process where I'm working toward doing a revamp of the marketing site which I intend to post on producthunt you know when that's ready.
Seriously, you don’t have to worry, the project is GPL’ed, so the community can take care of it when you’re not around anymore
You can build a marketing page using a static site generator or a CMS like WordPress
I’m also wondering, how much are you charging (on average) for a license?
Actually the above was mostly voice typing that I then punctuated and corrected...so, anyway I noticed you switched to sentence case for this comment but you're normally in lower case, no need to be so formal :)
I checked out your work on the web and you have a bunch of different personalities across your sites from a design / approach / content / voice point of view. Really diverse!
I'm gonna be here forever, and on this project too, also the copyright is with my corporation, so you're only wasting your own time if you care about that or waiting for that... what I meant was--and I know I spent a lot of words and I guess I didn't make it clear--I hope people can use it right now without having to pay. But honestly I think the easiest way to do that is just for them to write it themselves, or just rip me off in secret, haha, they can "try" I'm sure.
Seriously, tho I really would like to think I can just open it up to the community to use in a full free and open-source way, and gather a bunch of contributions and so on, without worrying I'm compromising the business side of it. Like I said above, the licenses are basically individually negotiated...because I'm an amateur I suppose...so for managed where I run it for them in the cloud it ranges from ~ 1500 to over 10K a month with my main cost being bandwidth. And on the hosted side, from ~3K a month to yearly licenses above 100K. The self-hosted ones are mostly perpetual for the version, re-upped to the latest version on the next payment, with maintenance and support contracts either included (existing for as long as license fees are paid) or separate. One of the most challenging things is contract negotiation. I discovered startups with VCs can be extremely frightened of IP clauses where they don't own everything absolutely ostensibly because their legal advisors see it as a risk to future raises.
I'm sort of glad I'm bootstrapped and don't have to worry about VC!
i think this could become an open-source BrowserStack and Cloudflare Browser Isolation alternative
generally, i’d trust a product more if it has an open source version and business-wise it makes easier to market to the developers, because they can try the product at home with no risk of getting a huge cloud provider bill
but as you pointed out, not any org can self-host and that gives you a opportunity to offer a subscription-based service
the technical difficulty here is in figuring out how to run at scale
right now, as i understand you are hosting each instance manually, which is fine for bigger clients, but makes the service for smaller developers like myself unaffordable
you could solve this by packaging the software in a Docker container and then use a orchestrator like Kubernetes to supply a copy to each client, automatically
you can then monitor the usage and issue a bill with payment provider like Stripe
generally, i’d recommend having a limited free tier, but if not possible a free trial
for paying customers, you could charge per second spent in the browser window, instead of seats
the reasoning for it, is some customers would cause more traffic than others and traffic is not inexpensive, therefor you should make a pricing model, which is linear with traffic
hope this helps
if you need further support, you can email me at mish at ushakov.co
thanks
The open-source version is just the browser software, enough for a single person to run a single instance, but the pro "closed source" version includes a bunch of extra control software for running as many instances as will fit on a machine, in a scalable, secure and resource-safe way, as well as souped-up features like co-browsing, better viewport streaming, and built-in secure document viewing.
The open-source version actually comes with a docker image [1], but for the paid deployments I haven't seen the need for k8s. That might be because I don't understand k8s, but I just haven't seen the advantage over the way I'm currently doing it. And no-one has asked for k8s, either.
But I think what you were trying to tell me was a good way to set up a SaaS version of this. And I admit I've struggled with that in the past. I think infrastructure has been a part of this failure, but even when I've had workable SaaS offerings, I think my marketing, pricing, design and the "trust factor" -- of doing your browsing in a 3rd-party in a new category (RBI vs, say, a VPN), and also of doing so with a tiny company -- were the big things.
as to:
> you can then monitor the usage and issue a bill with payment provider like Stripe
> generally, i’d recommend having a limited free tier, but if not possible a free trial
> for paying customers, you could charge per second spent in the browser window, instead of seats
> the reasoning for it, is some customers would cause more traffic than others and traffic is not inexpensive, therefor you should make a pricing model, which is linear with traffic
I really like your very solid sounding ideas for a SaaS setup tho. Thank you very much!
but honestly I think mine is way more rambling and incoherent than GPT-3 haha