ell  by simonmysun

CLI tool for interacting with LLMs, written in Bash

created 1 year ago
435 stars

Top 69.5% on sourcepulse

GitHubView on GitHub
Project Summary

This project provides a lightweight, pipe-friendly command-line interface (CLI) for interacting with various Large Language Models (LLMs) directly from the terminal. Written in Bash, it targets developers and power users who want to integrate LLM capabilities into their existing shell workflows, enabling context-aware querying and automation.

How It Works

ell leverages standard Unix utilities like curl and jq to communicate with LLM APIs. Its core design emphasizes composability through shell piping, allowing users to seamlessly feed terminal output or file content as context to LLMs. It supports features like interactive chat, terminal recording for context, and template-based prompt engineering for specific LLM providers.

Quick Start & Requirements

  • Install: git clone --depth 1 https://github.com/simonmysun/ell.git ~/.ellrc.d followed by adding export PATH="${HOME}/.ellrc.d:${PATH}" to ~/.bashrc.
  • Requirements: bash-4.1+, coreutils, jq, curl, and optionally perl and util-linux for advanced features.
  • Configuration: Set ELL_API_STYLE, ELL_LLM_MODEL, ELL_TEMPLATE, ELL_API_KEY, and ELL_API_URL in ~/.ellrc.
  • Documentation: Templates, Styling, Plugins.

Highlighted Details

  • Bash-native implementation for minimal dependencies and ease of modification.
  • Supports multiple LLM providers via configurable templates (e.g., Gemini, OpenAI).
  • Features terminal recording (-r) to capture context for LLM queries.
  • Interactive chat mode (-i) with automatic context recording.

Maintenance & Community

The project is actively maintained by simonmysun. Contributions are welcome via issues and pull requests.

Licensing & Compatibility

  • License: MIT License.
  • Compatibility: Permissive MIT license allows for commercial use and integration into closed-source projects.

Limitations & Caveats

The project relies heavily on Bash scripting, which may have portability issues across different Unix-like shells or operating systems. Advanced features like record mode require specific utilities (perl, util-linux) that might not be universally installed.

Health Check
Last commit

5 months ago

Responsiveness

1 day

Pull Requests (30d)
0
Issues (30d)
0
Star History
4 stars in the last 90 days

Explore Similar Projects

Feedback? Help us improve.