Show HN: I made an app to use local AI as daily driver (recurse.chat)
Excited to share a macOS app I've been working on: https://recurse.chat/ for chatting with local AI. While it's amazing that you can run AI models locally quite easily these days (through llama.cpp / llamafile / ollama / llm CLI etc.), I missed feature complete chat interfaces. Tools like LMStudio are super powerful, but there's a learning curve to it. I'd like to hit a middleground of simplicity and customizability for advanced users.
Here's what separates RecurseChat out from similar apps:
- UX designed for you to use local AI as a daily driver. Zero config setup, supports multi-modal chat, chat with multiple models in the same session, link your own gguf file.
- Import ChatGPT history. This is probably my favorite feature. Import your hundreds of messages, search them and even continuing previous chats using local AI offline.
- Full text search. Search for hundreds of messages and see results instantly.
- Private and capable of working completely offline.
Thanks to the amazing work of @ggerganov on llama.cpp which made this possible. If there is anything that you wish to exist in an ideal local AI app, I'd love to hear about it.
245 comments
[ 3.9 ms ] story [ 269 ms ] threadPretty cool. Doesn't work on Firefox.
[1]: https://github.com/iansinnott/prompta
I use similar ones to get ChatGPT to be more thorough or diligent as well. From my limited experience with local models, this type of system prompting is even more important than with ChatGPT 4.
There isn't a singular system prompt. It really does matter!
Copy the OpenAI playground, you'll thank yourself later
It also allows you to interact with LLMs via multiple different interfaces: Chat UI, a context-aware called AI Command and an Inline mode.
[0]: https://boltai.com
Another tip, I try out a new chat interface to LLMs almost every week and they're free to use initially. There isn't a compelling reason for me to spend $10 from the get to for a use case that I'm not sure about yet.
I'm assuming I cannot block internet access to the app because it needs to verify App Store entitlement.
https://github.com/mckaywrigley/chatbot-ui
https://github.com/oobabooga/text-generation-webui
https://github.com/mudler/LocalAI
And then connecting them to off-line models servers:
- Ollama
- llama.cpp
And you should avoid closed source frontends:
- Recurse
- LM Studio
And closed source models
- ChatGPT
- Gemini
Decentralized AI will eventually become p2p and swarmed and then the true power of agents and collaboration will soar via AI.
Anyway, excuse the soap box, but there are zero valid reasons for supporting and paying centralized keepers of AI that rarely share, collaborate or give back to the community that made what they have possible.
Is this true? I've tried llama last year and it was not very helpful. GPT4 is already full of problems and I have to keep circumventing them, so using something less capable doesn't get me too excited.
nice.
Use all the resources you want if you save me brainpower
Help me plan for upcoming meetings whereby if I put something in calendar, it will build a little dossier for the event, and include relevant info based on the type of event or meeting, mostly scheduling reminders or prompting you with updates or changes to the event etc.
I'm not sure I can imagine a scenario in production where Google would, or should, allow API access to individual gmail accounts. What's that for? So you can read all your employees' mail without running your own email server?
> You will no longer use a password for access (with the exception of app passwords)
I'm not seeing anywhere that I'd need to pay money to use OAuth via an app like Thunderbird or another email client. That app would either need to support using OAuth to let the user auth and get credentials, or use an app password.
I manage both gmail and protonmail via thunderbird - where I have better search and sort using IMAP.
This is Gabe, the founder of Zenfetch. Thanks for sharing. We're putting together an export option where you can download all your saved data as a CSV and should get that out by end of week.
I want the ability to search all my downloaded files and organize them based on context within. Have it create a category table, and allow me to "put all pics of my cat in this folder, and upload them to a gallery on imgur."
We've been thinking of this as a "subscription" to the creator's folder. Similar to how you might subscribe to a Spotify playlist
https://github.com/jasonjmcghee/rem
Danswer
https://github.com/danswer-ai/danswer
Khoj
https://github.com/khoj-ai/khoj
So I don't really buy it and I have yet to see it work better than any rdbms search index.
Tell me I am wrong, I would like to see a local model based on my own docs being able to answer me quality answers based on quality prompts.
Basically if you have a database of three emails and ask when Biff wanted to meet for lunch, a RAG system would select the most relevant email based on any kind of search - embeddings are most fashionable, and create a prompt like
"""Given this document: <your email>, answer the question "When does Biff want to meet for lunch?"""
Sibling comment from discordance has a more accurate description of RAG. There's a longer description from Nvidia here: https://blogs.nvidia.com/blog/what-is-retrieval-augmented-ge...
> Given the prompt “When did the first mammal appear on Earth?” for instance, RAG might surface documents for “Mammal,” “History of Earth,” and “Evolution of Mammals.” These supporting documents are then concatenated as context with the original input and fed to the [...] model
Finding the relevant context to put in the prompt is a search problem, nearest neighbour search on embeddings is one basic way to do it but the singular focus on "vector databases" is a bit of hype phenomenon IMO - a real world product should factor a lot more than just pure textual content into the relevancy score. Or is your personal AI assistant going to treat emails from yesterday as equally relevant as emails from a year ago?
1. First you create embeddings from your documents
2. Store that in a vector db
3. Ask what the user wants and do a search in the vector db (cosine similarity etc)
4. Feed the relevant search results to your LLM and do the usual LLM stuff with the returned embeddings and chunks of the documents
Would you define RAG only as 'prompt optimisation that involves embeddings'?
[0]: https://openai.com/chatgpt/pricing#:~:text=8K-,32K,-32K
[1]: https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turb...
It doesn't look like it supports image generation unfortunately. If it did then I would definitely adopt this as my daily driver.
Was testing apps like this if anyone is interested:
Best / Easy to use:
- https://lmstudio.ai
- https://msty.app
- https://jan.ai
More complex / Unpolished UI:
- https://gpt4all.io
- https://pinokio.computer
- https://www.nvidia.com/en-us/ai-on-rtx/chat-with-rtx-generat...
- https://github.com/LostRuins/koboldcpp
Misc:
- https://faraday.dev (AI Characters):
No UI / Command line (not for me):
- https://ollama.com
- https://privategpt.dev
- https://serge.chat
- https://github.com/Mozilla-Ocho/llamafile
Pending to check:
- https://recurse.chat
Feel free to recommend more!
2) If you're privacy first, many would feel a lot more comfortable if this was released as an app in the app store so it will be sandboxed. This is important because it's not open source so we have no idea what is happening in the background. Alternatively open source it, which many here have requested.
Offline isn’t important for me, only that $20 is a lot of money, when I’d wager most months my usage is a lot less. However, I’d still want access to completion, DALL-E, etc.
Would Msty be a good option for me?
https://github.com/open-webui/open-webui
a well featured UI with very active team
It loads the LLM in the browser, using webgpu, so it works offline after the first load, it's also PWA you can install. It should work on chrome > 113 on desktop and chrome > 121 on mobile.
Incidentally, it currently runs Mixtral 8x7B Instruct[2] and Mistral[3] models faster than any other macOS app. The comparison videos are with Ollama, but it generalizes well to almost every other macOS app that I've seen uses llama.cpp for inference. :)
nb: Mixtral 8x7B Instruct requires an Apple Silicon Mac with at least 32GB of RAM.
[1]: https://privatellm.app/
[2]: https://www.youtube.com/watch?v=CdbxM3rkxtc
[3]: https://www.youtube.com/watch?v=UIKOjE9NJU4
[0] https://github.com/Mozilla-Ocho/llamafile
https://khoj.dev/
- https://github.com/nomic-ai/gpt4all
- https://github.com/imartinez/privateGPT
- https://github.com/oobabooga/text-generation-webui
- https://github.com/FlowiseAI/Flowise
- https://github.com/lobehub/lobe-chat
- https://github.com/PromtEngineer/localGPT
- https://github.com/h2oai/h2ogpt
- https://github.com/huggingface/chat-ui
- https://github.com/SillyTavern/SillyTavern
- https://github.com/ollama-webui/ollama-webui
- https://github.com/Chainlit/chainlit
- https://github.com/LostRuins/koboldcpp
- https://github.com/ParisNeo/lollms-webui/
Seems to have more features than all of them
Are you on Twitter, Threads, Farcast? Would like to tag you when I add you to my decentralized AI threads.
https://imgur.com/a/pz0kzJ1
It's clean, easy to use, and works really well! Easy local server hosting was cool, too. I've used the other LLM apps, and this feels like those, but simplified. It just feels good to use. I like it a lot!
I'm gonna test drive it for a while, and if I keep using it regularly, I'll definitely be sending in some feedback. Other users have made a lot of really great recommendations already, I'm excited to see how this evolves!
Feel free to send feedback, issues, feature suggestion as you use it more, I'm all ears. My twitter DM is also open: https://x.com/chxy.
https://github.com/chigkim/VOLlama/
[1] https://msty.app
* For apps like this, using live regions to speak updates may be helpful. either that or change the buttons, like from "download local AI" to "configuring." Maybe a live region would be best for that one since sighted people would probably be looking near the bottom for the status bar, but anyway... * Using live regions for chats is pretty important, because otherwise we don't know when a message is ready to read, and it makes reading those messages much simpler. The user types the message, presses Enter, and the screen reader reads the message to them. So, making a live region, and then sending the finished message, or a finished part of a message, to that live region would be really helpful. * Now on to the UI. At the top, we have "index /text-chat-sessions". I guess that should just say "chats"? Below that, we have a list, with a button saying the same thing. After that list with one item, is a button that says "index /local-ai". That should probably just be "local AI". Afterwards, there is "index /settings", which should just be "settings." Then, there is an unlabeled button. I'm guessing this is styled to look like a menu bar, across the top of the window, so it'd be the item on the right side. Now, there's a button below that that says "New Chat^N". I, being a technical user, am pretty sure the "^N" means "Control + N", but almost no one else knows that. So, maybe change that text label. Between that and the Recent Chats menu button are two unlabeled buttons. I'm not sure why a region landmark was used for the recent chats list, but after the chat name "hello" in this case, where I can rename the chat, there is an unlabeled button. The button after the model chooser is unlabeled as well. After the user input in the conversation, there are three unlabeled buttons. After the response, there is a menu button with (oh, that's cool) items to transform the response into bullets, a table, ETC. but that menu button was unlabeled so I had to open it to see what's inside. After that, all other buttons, like for adding instructions to refine this message, are also unlabeled.
So, live regions for speaking chat messages and state changes like "loading" or "ready" or whatever (keep them short), and label controls, and you should be good to go.
Live regions: https://developer.mozilla.org/en-US/docs/Web/Accessibility/A...
https://applevis.com/
If you have Android:
https://blindandroidusers.com/
I believe Hadley is still a good resource: https://hadleyhelps.org/welcome-hadley
I hope this helps get you started.
Please take this in a nice way: I can't see why I would use this over ChatbotUI+Ollama https://github.com/mckaywrigley/chatbot-ui
Seem the only advantage is having it as MacOS native app and only real distinction is maybe fast import and search - I've yet to try that though.
ChatbotUI (and other similar stuff) are cross-platform, customizable, private, debuggable. I'm easily able to see what it's trying to do.