Exo is an experimental project that uses an electron app with access to the file system to support common software development tasks using LLMs.
In short, Exo is an app that can help you read, write and refactor code directly in your codebase. You can find a bunch of demos on my Twitter page above.
Exo server is the backend for the Exo electron app.
Here is the repo for the Exo electron app. This is the Exo server repo. You'll need to clone both to get the app to work locally.
Screen shot of the Exo app next to vscode:
Exo is under under construction!
I have released this into the wild far before it is production ready. Use at your own risk!
https://www.loom.com/share/5f34499ccfb54bfdae32ee50f454b365
The goal of the Exo app is to create Tony Stark's Jarvis/F.R.I.D.A.Y. - a chat or voice interface that you can interact with to write code and build things.
How this is different from other code generation tools? Exo is a freestanding app the lives on your desktop. We are far from it now, but in the future you could use Exo to build software (as opposed to an IDE).
Being a freestanding application, Exo embraces UI tools that are more aligned with coding practices in a post-LLM world.
ai_create_code
endpoint to pass the code back down the app where it will be written to your codebase.https://www.loom.com/share/d2ec3f01140746e6ae1d47507f24e5ec
git clone https://github.com/kmgrassi/exo-server
yarn install
You need two accounts to get started:
If you just want to start using Exo without these accounts you can sign up to use the app here: https://www.getexo.dev/auth/signup
Grab your credentials after creating your account and paste into the .env-example
file:
SUPABASE_ANON=Your-supabase-anon-here
SUPABASE_URL=Your-supabase-url-here
SUPABASE_DB_ID=Your-supabase-id-here
SUPABASE_DATABASE_PASSWORD=Your-supabase-password-here
OPENAI_API_KEY=Your-openai-api-key-here
Rename .env-example
to .env
After you've added your credentials run:
yarn run create-db-schema
This will update your Supabase database with the schema found in the schema.sql
file.
yarn run dev
Deployment details coming soon. I use Heroku. There is a Procfile so you should be able to easily deploy to Heroku. TODO - add "deploy to Heroku" button
Exo is a chat app. You interact with the UI via the chat interface. You can ask questions like: "Can you write a ts function that counts the letters in a string to the scratch pad?"
To index a repo:
Click on "Select repo"
Then "Save Repo"
Then click on the paper icon with the up arrow
This will send all the files in the repo to the server to be indexed. The server will use the LLM to get a code explanation, embed the code and the explanation and store everything in the db.
After you index a repo you can search for code in that repo. For example: "Find the component that renders the login component"
TODO - explain several ways to use the app to write code.
TODO - add road map
You can find a bunch of videos describing how this was built on my twitter feed.
Feel free to dm me on twitter or email: kmgrassi
with the usual email client