Skip to content

editor-code-assistant/eca

Repository files navigation

License: Apache 2.0

ECA (Editor Code Assistant)

⚠️ The project is still alpha and experimental, with bugs and missing features, but being consistently improved.

Demo using eca-emacs demo


instalationconfigurationmodelsprotocol


Rationale

A Free and OpenSource editor-agnostic tool that aims to easily link LLMs <-> Editors, giving the best UX possible for AI pair programming using a well-defined protocol. The server is written in Clojure and heavily inspired by the LSP protocol which is a success case for this kind of integration.

  • Editor-agnostic protocol for any editor to integrate.
  • Single configuration: Configure eca making it work the same in any editor.
  • Chat interface: ask questions, review diffs, work together with an agent in your codebase.
  • Context support: giving more details about your code to the LLM.
  • Pluggable models: Ollama local models, OpenAI, Anthropic, more on the way.

Installation

Eca is written in Clojure and compiled into a native binary via graalvm. You can download the binaries from Github Releases or use the install script for convenience:

Stable release:

bash <(curl -s https://raw.githubusercontent.com/editor-code-assistant/eca/master/install)

nightly build:

bash <(curl -s https://raw.githubusercontent.com/editor-code-assistant/eca/master/install) --version nightly

Usage

Editors should spawn the server via eca server and communicate via stdin/stdout.

Supported editors

  • Emacs
  • VsCode: WIP
  • Intellij: Planned
  • Vim: Planned, help welcome

Protocol

The protocol can be found here, it follows the same standard of LSP documentation, defining how server and client communicate with each other.

Roadmap

Check the planned work here.

Troubleshooting

You can start eca with --log-level debug which should log helpful information in stderr buffer like what is being sent to LLMs.

Contributing

Contributions are very welcome, please open an issue for discussion or a pull request. For developer details, check this doc.