Skip to content

srikanth235/privy

Repository files navigation

πŸ’¬ 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