/lexido

A terminal assistant, powered by Gemini

Primary LanguageGoGNU Affero General Public License v3.0AGPL-3.0

lexidoLogo get things done_

Introduction

Lexido is an innovative assistant for the Linux command line, designed to boost your productivity and efficiency. Powered by Gemini Pro 1.0 and utilizing the free API, Lexido offers smart suggestions for commands based on your prompts and importantly your current environment. Whether you're installing software, managing files, or configuring system settings, Lexido streamlines the process, making it faster and more intuitive.

Examples

First GIF Second GIF

Features

  • Command Suggestions: Simply type lexido [prompt] to get actionable command suggestions.
  • Cross-Platform: Support for both Linux and macOS
  • Continued Conversations: Use lexido -c [prompt] to continue a previous conversation, allowing for context-aware suggestions.
  • Piping Support: Pipe commands into Lexido (e.g., ls | lexido [prompt]) for enhanced command list suggestions.
  • Efficiency: Designed with efficiency in mind, Lexido helps you get things done NOW.

Installation

Head to the releases tab to pick up a binary!

To install the binary file, place it into your path and run

chmod +x ./lexido

Also, rename the binary to lexido for easier access. Such as:

mv /path/to/downladed/binary /bin/lexido

Currently, lexido is not on any package managers but if you would like that to change please contribute!

Compile from source

Ensure you have Go installed on your system. Follow these steps to install Lexido:

  1. Clone the Lexido repository:
git clone https://github.com/micr0-dev/lexido.git
  1. Navigate to the Lexido directory:
cd lexido
  1. Build the project:
go build
  1. Optionally, move the Lexido binary to a location in your PATH for easy access.

Usage

  • To get command suggestions:
lexido "install teamspeak via docker"
  • To continue with a previous prompt:
lexido -c "add more details or follow-up"
  • To use with piping commands:
ls | lexido "what should I do with these files?"

FAQ

Why is the binary so big?

The binary's size mainly consists of the built-in networking and encryption libraries of Go. A quick inspection showcases this:

> goweight
   12 MB runtime
  8.1 MB net/http
  5.3 MB google.golang.org/protobuf/internal/impl
  4.1 MB net
  4.1 MB golang.org/x/net/http2
  3.9 MB golang.org/x/sys/unix
  3.7 MB crypto/tls
  3.3 MB google.golang.org/grpc

How does it know what system I am running?

Before requesting the LLM the program does what is known as prompt building or contextualization, it collects different data about your system and your current scenario to help the LLM more accurately answer. Giving the LLM context about your situation allows it to better understand what you are asking or how to reply.

If you have any more questions feel free to reach out and ask

Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the GNU Affero General Public License v3.0. See LICENSE for more information.

Acknowledgements

Made with 💚 by Micr0byte