Show HN: Exo – the electron app that’s helping to build itself
Hi HN folks!

I’m the creator of Exo and wanted to share my progress with the HN community.

Exo is an electron app that uses a chat interface and open Ai to write code directly to your file system/repos.

Exo is a work in progress - its very new and has many rough edges. I was hoping to get some early feedback from HN folks and hopefully some early users. Once you create an account the universal electron installer link is on the dashboard.

Here is a quick explainer video: https://www.loom.com/share/5f34499ccfb54bfdae32ee50f454b365

Exo started as a thin wrapper around my file system. I built a bunch of functions that let me use open Ai to write/refactor code directly in my repos. I wanted to build some simple tools to help increase my programming productivity.

At one point I realized this app could be useful to other engineers so I started using it to build itself… hence the clickbait title. Don’t hate me :).

Here’s how it works:

All of the chat functionality (including message classification and processing) uses GPT-3.5 turbo so it’s pretty fast.

There is a bunch of logic that uses OpenAI to classify and adapt the incoming user messages to route them to the correct place (search, write code, ask for clarification, etc). I’ve experimented with an “agent"(https://python.langchain.com/en/latest/modules/agents/agents...) model for this but it didn’t work as well as the classification layer.

Exo uses GPT-4 to write code. I’ve found a pretty big difference in code quality and “correctness” between GPT-3.5 and GPT-4. It doesn’t fall back to 3.5 but if 4 stays flakey I may have to build a fall back mechanism.

You can index a (small) repo or subset of a repo (components section for example) for search. I recommend starting with a directory with 10-50 files to start. This will take 2-3 min to index. After it runs you can search based on the code functionality. For example “find the component that renders the login page…”.

The indexing process uses tree sitter to parse the files. It then uses GPT-3.5 turbo to summarize what the code does. It then embeds the code itself with the explanation. When you search, it embeds your search phrase and matches based on the code explanation.

I’m using supabase for the db. I’m using the pgvector postgres add on to store the embeddings. This is very useful as the code explanation and all the metadata sits right next to the embedding so returning the search list is super fast. Its also simple to render given it doesn’t need to pull data from multiple places.

I plan on adding the functionality to add your own OpenAI api code soon. For now the app uses my personal OpenAI account. So you get to use GPT, including GPT-4, for free :). Don’t go crazy.

GPT-4 can be pretty flakey. There are some days when 50% or more api requests get throttled. I’ve added a basic throttling function but the OpenAI api still throws a 429 with nontrivial consistency. I suspect if a bunch of people are using Exo at the same time most of the calls will fail making it nonfunctional. I’ll post an update and likely cap signups if that happens.

I’d love feedback on the Exo app itself. Mostly if you’d use something like this to increase your programming throughput. The static site was just thrown together and needs a bunch of work so don’t judge me on that :). Also a lot styling/layout in the app is pretty poor. I’ve basically focused exclusively on functionality at the expense of looking nice.

I’ve been posting videos of my progress and how it works to my Twitter feed which you can find here: https://twitter.com/KevinGrassi

If you have any feedback or questions you can email me at my hn handle at gmail. I’d love to hear from you!

Thanks for reading this far!