Hacker Newsnew | past | comments | ask | show | jobs | submit | more trungdq88's commentslogin

yes, that was one of the important features I wanted to build :)


I was annoyed by the default OpenAI ChatGPT slow-typing animation and logging me out every day, so I built a new UI client on top of its API.

It's a static web app, you can host it yourself, data is stored locally on your browser, API requests are made directly to OpenAI API without any middle server.

It has some more convenient features that make your that experience way better. Like search chat history, prompt library, integrations, etc.

Would love to hear all the feedback!


It's a static web app, you can host it yourself

Note for anybody else wondering, it's not open source, you have to download a binary. More FAQ by clicking the Gift (?) icon at the top and scrolling down.


If you're looking for an open source ChatGPT UI, I built one with React + Typescript:

https://github.com/cogentapps/chat-with-gpt

https://chatwithgpt.netlify.app/


why is the System Prompt reset after a few seconds!?


Just pushed a fix for this (refresh to get the update), let me know if it happens again!


Entrust your AI key to a closed binary? Bot what could possibly go wrong?


What could go wrong? It is static site and there is no backend, so the key is only in the browser.


I'm not defending anyone here but just strace the program if you're really worried about it. If you don't know what strace is: it exports every syscall the program has made, so you'd see if it's doing anything suspicious.


Or don't use it, and warn others of the issues and let them decide if they want to use it.


Well I don't see why not, also I don't see which issues if you're not using it as you couldn't encounter any to begin with. Being closed source is not an issue.


Careful with the sarcasm. Only positive vibes are allowed on showHN or the admin goes ballistic. I've seen it happen.


> Only positive vibes are allowed on showHN

Sarcasm?


No. It's real. According to dang, showHN is suppose to be a "safe space". You could make absolute crap, everyone is suppose to be positive about it. Dang will flag people who don't do this.

Nothing dang can do though is hundreds of people hate it though. Things with actual security issues for example he'll likely just be quiet about it.


That is unfortunate. You would think that the intent behind posting ShowHN is to get constructive feedback but based on what you described, it appears that the expectation is to make those creators feel good instead.


You still can, just have to be excessively nice about it. Huge emphasis on excessively.


It is open source. Your browser retrives all the JS and html sources. Even if it were somehow closed source, it doesn't really matter. You can view web requests and other, and see for yourself.


What Just because you can see HTML and JS that THE BACKEND SENT doesn't mean you can see the actual logic (code)


All logic is clientside in the downloaded JS and HTML. After the initial page load, it should send nothing to the backend of the website, only API calls to chatGPT API itself. There is no actual backend with logic, it only serves static HTML+JS+assets.

Theoretically, you should be able to block any outgoing connections to the website domain (after it loads all necessary HTML and JS), and it should still work fine. Saying "theoretically" because it might attempt delay-loading some static assets, but you get the idea. No idea how this specific website functions, as I haven't looked deep into it yet, but that's the principle behind "static websites" like this one.


This is a static website, no backend.


The ability to reverse engineer the source through the browser doesn't make something qualify as open source anymore than reverse engineering a binary with some other tool.

I can view web requests but let's say on the 365th web request it sends my API key to an unknown location. How would I know if this was closed source?


It's not similar to a binary file, since re a binary file is a pain in the ass and looking at JS with some obfuscation is much easier.

Your example is valid, but it's like asking "how can I know that my iPhone doesn't record me while I'm sleeping?"


I trust apple over some random person on the internet.


Forgive me if I’m just being naive but couldn’t you look at the source from the browser dev tools?


Sure, if you're checking the first 365 requests or you get really lucky and just happen to look that time. Quite unlikely though.


Moving on...


> I was annoyed by the default OpenAI ChatGPT slow-typing animation

I’d assumed ChatGPT’s slow-typing was actually the model’s real-time output, streamed to the browser token-by-token. When I’ve made GPT3 API calls it’s worked like this, with streaming switched off I might need to wait ~20 seconds for a long response back.

I just tried your UI, and it’s so much faster! Was my assumption about real-time output wrong?

Great project, looking forward to using it more :)


ChatGPTs paid version is extremely fast, and this is using the paid API. The paid API feels slower than the paid UI, but this may be the difference between streaming results and getting everything in one payload.


I think the slow responses are the real generation rate when you time share the GPU. If you are willing to let GPUs occasionally sit idle though, you can probably get a faster generation rate by dedicating more of the GPU time to that one client.


Yep, I was surprised I about the response time too. I'm not sure what's going on under the hood, maybe OpenAI did something with the stream output that causes the slowness.


Perhaps it is simply a way to limit the number of queries? If you force people to wait 10s for an answer they aren't writing new questions all the time.


For me it's been consistently the case that after 2-3 messages, the animation would start to visibly lag, and eventually (on 3rd or 4th reply) slow to a halt, sometimes mid-sentence, completely bricking the session. It's been like this since ChatGPT was first opened to public. I initially assumed it's just the usual case of a bloated SPA, but now I think maybe I'm being throttled on purpose?


It uses a different model. ChatGPT Plus is fast too.


Ohh man I wanted to publish my own electron app today :(

It's basically doing the same thing. I found that using API keys is also significantly cheaper than using the subscription with moderate usage.

Congrats on the release.


Don't worry there are only about 10,000 people working on similar apps right now ;)


I whipped up a quick cli script myself haha

https://gist.github.com/cohan/7d2abfa56b2dfdaae98bf70e84c622...

All of these UIs when there's a perfectly good command line right there! The CLI is always the best way for text.

> ai what is that song with moms spaghetti

"Lose Yourself" by Eminem

Sorted.


Nice, I'm curious though, does the API also remember context from earlier conversations or can it be made to?


I don't believe so, but that's not something I wanted/needed for this one. It's just for one off things for me.

Something like

> ai give me an index match formula to link between sheets New and Current

Then I'll tweak the output as needed to match reality. Context would probably get in the way more than it helps in this use case.

Don't expect perfection from an AI assistant, just expect it to be a little faster than tabbing to a browser or figuring it out yourself.

In Stellaris terms: https://img.imgy.org/D76l.png


yep CLI is the way

different flavours: 'fix' acts as `thefuck` replacement in 30 lines of python


CLI is a UI, too.


I know mate, haha. I imagine someone can do much better than I did in a few minutes, but yeah use the UI that already exists instead of sprinkling electron on something text based.

If anyone fancies a tinker I imagine future editions of a CLI AI having a --context to include former prompts*, --stfu|--concise to make it respond concisely (as I was originally just responding "I know mate, haha" I also need this flag adding), probably a --model= to override that bit too, maybe even a --preamble=./prompt.txt

... it definitely needs a --json flag to prompt and enforce "I only want json and I'll parse it out of the response myself if I need to"

* Not just keeping a buffer and re-sending it, I believe context asks GPT to summarise the conversation so far and then uses the output of that for context memory. It'd need some tinkering.

I'll get round to it myself eventually, for now being able to ask little things like "is it defence or defense" and "what company owns the coco pops brand" is doing me just fine

I did realise I can now potentially pipe things into and out of GPT too, but have yet to come up with a use other than outputting through TTS e.g.

> ./ai is it defence or defense | festival --tts


I'm also building a personal ChatGPT client for a similar reason as the OP, which is to address the issues of buggy and slow UX, among others. As you mentioned, many people are currently working on projects using ChatGPT API. In fact, in the past 24 hours, around 12 new apps that have been showcased on OpenAI Discord channel alone. Some of these apps are open source, which makes them a great source of learning and inspiration for me.


> Some of these apps are open source, which makes them a great source of learning and inspiration for me.

Do you then reference those open source apps?


Haha I felt better after reading this thread. I mean it was a fun weekend project!


Agree on both issues, specially the one logging you out daily. Congrats on the quick launch!

Can already see the whisper model makings its way through the product :)


thank you!


But why is it closed source? It makes no sense why you would obfuscate this.


I learned and implemented this in JS a while ago. It was a lot of fun! https://github.com/trungdq88/summer


Having the same question. I guess the “Community Chanpions” are rewarded somehow.


It's typically in the form of access to features that are reserved for higher paying "enterprise" customers. Cloudflare's MVP program does this for example.


Would you share more with us about the reason why you're not monetizing it?


I built a screenshot app for macOS and made ~$3k/mo from it :) https://xnapper.com

People like the app for its ability to turn a normal boring screenshot into a beautiful one that they can share on social media instantly.


What is the tech stack for this? I really want to build small apps like this and have a diversified portfolio but don't know where to start. Are you still earning 3K/month from this and what kind of on-going marketing are you doing?


This is an excellent landing page. They rarely explain what a product does this well and this fast.

How to you keep those mini videos up to date?


Thank you!

It's a pain in the ass, I have to re-record the videos every time. But I think it's worth it.

Usually I only update the videos if the app UI get too much different than the current version, which happens once every few months.


Someone made something precisely for that and posted it here last week. I forgot the name unfortunately, but I share the pain.


Plus. Self updating screenshots:

https://news.ycombinator.com/item?id=34416386


You might want to play around with the encoding on your videos. On a Windows machine with a i7-8770k (and dedicated GPU) with Firefox latest, the page was spiking up to 100% GPU usage, causing the browsing experience to slow to a crawl. It may be related due to me having a Twitch stream up on a second display.

Probably a Firefox bug, but it's preventing me from looking at this landing page that every one else seems to like :P


Wow this is interesting, you write "read like snapper" on the homepage. I made a screenshot tool for iOS which is actually called Snapper. I have been working on/maintaining it since 2014!

https://www.idownloadblog.com/2016/01/22/snapper-2-screensho... - video


Interesting! I guess "snap" is quite a desirable verb for a screenshot tool name, haha.

I couldn't get snapper.com, so I replace "s" with "x" instead.

One thing I didn't know is that people tend to read it like "ex-snapper" or "znapper", which is unexpected to me (English is not my first language)


Yes definitely, over the years I've seen a few names with 'snap' as a base. It makes sense. I also tried to get snapper.com some times (although in my niche audience a website is not required at all). For the name, I think read it as ex-napper.


I really like the design of your website. If you don't mind me asking, any tips on how did you create it?


I mostly use the premade components from Tailwind UI.


It's so good!

How did you market this app? How did you get the traction?


I really like your pricing model (i.e. use forever + 1 year of support).


I love this app and use it daily. (I think I got it through setapp). Awesome work.


I'm happy to hear that! Thank you!


what a beautiful landing page. From where do you get most of your users?


Mostly from my Twitter. I grew my account to ~70K followers by building this app and other products in public over the last 2 years.


GP has ten of thousand of followers on Twitter.


wow, that is really nice.

How long did it take you to develop the app to where it is today?


I've been working on it on and off since July 2022.


Brilliant


thanks!


Thank you for the link. It is such a good read.


Interesting. I built something similar a while ago :)

https://emojisai.com


offline?


Whoops, it's https://emojiai.com

My bad


I built this app to help me save ~15 seconds every time I have to go on Google to search for common commands like

- Check which process is listening from a port

- Open a port in ufw

- Show headers in a curl request

- etc.

I've been using it for a week and I love it. Would love to hear your thoughts/feedback. Cheers!


I really hate the fact that I can no longer save a simple request without putting it into a folder (or "collection" or whatever).


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: