/privy

An open-source alternative to GitHub copilot that runs locally.

Primary LanguageTypeScriptMIT LicenseMIT

💬 Privy

An open-source alternative to GitHub copilot that runs locally.

License: MIT GitHub: Releases GitHub Issues GitHub Stars Twitter: @getprivydev Discord

👀 See it in action

Real time code completion

Chat with AI about your code

🛠️ Pre-requisites

If you haven't done already, please pick one of the following platforms to run LLM of your choice on your system locally.

👍 LLM Recommendations

Please note that you need to configure LLM for code completion and chat feature separately. Some of the popular LLMs that we recommend are as follows. Please pick the size (i.e. 1.3b, 7b, 13b or 34b) of the model based on your hardware capabilities.

Code Completion Chat Links
deepseek-coder:{1.3b or 6.7b or 33b }-base deepseek-coder:{1.3b or 6.7b or 33b}-instruct Ollama Tags, Home
codellama:{7b or 13b or 34b}-code codellama:{7b or 13b or 34b}-instruct Ollama Tags, Home
mistral:{7b}-instruct Ollama Tags, Home

You can also pick a model by evaluating your local LLMs using Benchllama.

🚀 Quick Install

You can install Privy extension from the Visual Studio Code Marketplace or from the Open VSX Registry.

⚙️ Configuration Options

Please set the following options in the settings for Privy extension.

  • privy.provider(required): Pick the platform that is being used for running LLMs locally. There is support for using OpenAI, but this will affect the privacy aspects of the solution. The default is Ollama.
  • privy.providerUrl(required): The URL of the platform that is being used for running LLMs locally. The default is http://localhost:11434.
  • privy.autocomplete.mode: Use this setting for enabling/disabling autocompletion feature.
  • privy.autocomplete.model: Input the name of local Ollama model that you want to use for autocompletion. Supported formats are DeepSeek Coder, LLama & Stable Code. We have chosen deepseek-coder:1.3b-base as it requires least amount of VRAM. You can customize based on your hardware setup.
  • privy.autocomplete.debounceWait: Use this for setting the time gap before triggering the next completion in milliseconds. Default is 300 ms.
  • privy.model: Select the LLM that you want to chat with. Currently, supports DeepSeek, Mistral and CodeLLama. If you want to use other LLMs, please select custom and configure privy.customModel accordingly.
  • privy.customModel: If you want to pick any other models running on your Ollama, please input their name.

✨ Key Features

  • 👍 Open Source
  • 🔐 Privacy first
  • 🚀 Auto code completion
  • 🤖 Copilot style chat
  • 💬 Threaded conversations
  • 💻 Support for code explanation, unit tests, finding bugs, diagnosing errors etc

⌨️ Keyboard shortcuts

Shortcut (Mac) Description
Alt + \ (for Windows/Linux) or Cmd + \ (for Mac) Trigger inline code completion
Ctrl + Alt + c (for Windows/Linux) or Ctrl + Cmd + c(for Mac) Start Chat

💡 Tips and Tricks

Understanding these concepts will help you get the most out of Privy.

  • Be specific. When you ask for, e.g., code changes, include concrete names and describe the desired outcome. Avoid vague references.
  • Provide context. You can include the programming language ("in Rust") or other relevant contexts for basic questions. You can select a meaningful code snippet for code explanations and error diagnosis.
  • Do not trust answers blindly. It's a big step for Privy to be able to respond to your questions. It might respond with inaccurate answers, especially when talking about less well-known topics or when the conversation gets too detailed.
  • Use different chat threads for different topics. Shorter threads with specific topics will help Privy respond more accurately.

🤝 Credits

  • RubberDuck AI - This project is heavily inspired by RubberDuck AI's work, and we're indebted to them for building on top of it. The following is the list of contributors to this project and we extend our sincere gratitude to all of them.
Lars Grammel
Lars Grammel

🤔 💻 📖 👀 💬 🐛
Iain Majer
Iain Majer

🐛 💻
Nicolas Carlo
Nicolas Carlo

💻 📖 🐛
RatoGBM
RatoGBM

🐛
Lionel Okpeicha
Lionel Okpeicha

🐛
MercerK
MercerK

🐛
Lundeen.Bryan
Lundeen.Bryan

🤔
DucoG
DucoG

🤔
sbstn87
sbstn87

🤔
Manuel
Manuel

🤔
alessandro-newzoo
alessandro-newzoo

🤔
Void&Null
Void&Null

🤔
WittyDingo
WittyDingo

🤔
Eva
Eva

🤔
AlexeyLavrentev
AlexeyLavrentev

🤔
linshu123
linshu123

📖
Michael Adams
Michael Adams

💻 🐛
restlessronin
restlessronin

💻

🎉 Code Contributions

Read our contributing guide to learn about our development process, how to propose bugfixes and improvements, and how to build and test your changes.

To help you get your feet wet and become familiar with our contribution process, we have a list of good first issues that contains things with a relatively limited scope. This is a great place to get started!

⭐ Star History

Star History Chart