Skip to content

Features#

Chat#

Chat is the main feature of ECA, allowing user to talk with LLM to behave like an agent, making changes using tools or just planning changes and next steps.

Behaviors#

behaviors

Behavior affect the prompt passed to LLM and the tools to include, ECA allow to override or create your owns behaviors, the built-in provider behaviors are:

  • agent: Make changes to code via file changing tools. (Default) Prompt here
  • plan: Useful to plan changes and define better LLM plan before changing code via agent mode, has ability to preview changes (Check below). Prompt here

Custom behaviors

To create and customize your own behaviors, check the config.

Tools#

ECA leverage tools to give more power to the LLM, this is the best way to make LLMs have more context about your codebase and behave like an agent. It supports both MCP server tools + ECA native tools.

Approval / permissions

By default, ECA ask to approve all non-read only tools or mcp tools, you can easily configure that, check toolCall approval config or try the plan behavior.

Native tools#

ECA support built-in tools to avoid user extra installation and configuration, these tools are always included on models requests that support tools and can be disabled via config disabledTools.

Provides access to the filesystem for listing, reading, writing, editing and moving files. Operates primarily on workspace files; paths outside the workspace require approval.

  • eca_directory_tree: list a directory as a tree (can be recursive).
  • eca_read_file: read a file content.
  • eca_write_file: write content to a new file.
  • eca_edit_file: replace lines of a file with a new content.
  • eca_preview_edit_file: Only used in plan mode, showing what changes will happen after user decides to execute the plan.
  • eca_move_file: move/rename a file.
  • eca_grep: ripgrep/grep for paths with specified content.

Provides access to run shell commands, useful to run build tools, tests, and other common commands, supports exclude/include commands.

  • eca_shell_command: run shell command. Command exclusion can be configured using toolCall approval configuration with regex patterns.

Provides access to get information from editor workspaces.

  • eca_editor_diagnostics: Ask client about the diagnostics (like LSP diagnostics).

Custom Tools

Besides the built-in native tools, ECA allows you to define your own tools by wrapping any command-line executable. This feature enables you to extend ECA's capabilities to match your specific workflows, such as running custom scripts, interacting with internal services, or using your favorite CLI tools.

Custom tools are configured in your config.json file. For a detailed guide on how to set them up, check the Custom Tools configuration documentation.

Contexts#

ECA supports contexts(@) including files, dirs, images, MCP resources, which can help LLM generate output with better quality/precision.

Here are the current supported contexts types:

  • file: a file in the workspace, server will pass its content to LLM (Supports optional line range) and images.
  • directory: a directory in the workspace, server will read all file contexts and pass to LLM.
  • cursor: Current file path + cursor position or selection.
  • mcpResource: resources provided by running MCPs servers.

Besides thoses, ECA supports filepaths(#) which are just file paths mentions in the user prompt.

So user can include those contexts in 3 different ways for different purposes:

  • # in user prompt: ECA will just mention the absolute file path in the user message, LLM may use tools to read the file. Useful for file path only mention in chat history.
  • @ in user prompt: ECA will append a user-message with the context full content. Useful for chat history context.
  • @ in system prompt (above user prompt): ECA will use it in the instructions/system prompt of LLM request. Useful for one-time only context.

AGENTS.md automatic context#

ECA will always include if found the AGENTS.md file as context, searching for both /project-root/AGENTS.md and ~/.config/eca/AGENTS.md, it will recursively check for any @some-file.md mention as well.

You can ask ECA to create/update this file via /init command. you can check/debug what goes to final prompt with /prompt-show as well.

Commands#

Eca supports commands that usually are triggered via shash (/) in the chat, completing in the chat will show the known commands which include ECA commands, MCP prompts and resources.

The built-in commands are:

  • /init: Create/update the AGENTS.md file with details about the workspace for best LLM output quality.
  • /login: Log into a provider. Ex: github-copilot, anthropic.
  • /compact: Compact/summarize conversation helping reduce context window.
  • /resume: Resume a chat from previous session of this workspace folder.
  • /costs: Show costs about current session.
  • /config: Show ECA config for troubleshooting.
  • /doctor: Show information about ECA, useful for troubleshooting.
  • /repo-map-show: Show the current repoMap context of the session.
  • /prompt-show: Show the final prompt sent to LLM with all contexts and ECA details.

Custom commands

It's possible to configure custom command prompts, for more details check its configuration

Login#

It's possible to login to some providers using /login command, ECA will ask and give instructions on how to authenticate in the chosen provider and save the login info globally in its cache ~/.cache/eca/db.transit.json.

Current supported providers with login:

  • anthropic: with options to login to Claude Max/Pro or create API keys.
  • github-copilot: via Github oauth.

Hooks#

Hooks are actions that can run before or after an specific event, useful to notify after prompt finished or to block a tool call doing some check in a script.

For more details, check hooks configuration.

Rewrite#

Rewrite allows user to select part of the text and ask ECA to rewrite it.

For rewrite configuration, check configuration.

Completion (alpha)#

Inline code completion

For mode details check configuration.

OpenTelemetry integration#

ECA has support for OpenTelemetry(otlp), if configured, server tasks, tool calls, and more will be metrified via otlp API.

For more details check its configuration.