Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
A command-line interface for LLMs written in Bash.
| Date | Stars |
|---|---|
| 2026-07-31 | 431 |
| 2026-08-06 | 431 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
35.0
growth rate 0.00%/day
# ell
A command-line interface for LLMs written in Bash.
## Features
<video src="https://github.com/user-attachments/assets/dce8ce33-c948-4db3-83db-8f8e2f1cb6a1"></video>
*Basic usage of ell (webm, 1,6MiB)*
- Ask LLMs from your terminal
- Pipe friendly
- Bring your terminal context to the LLMs and ask questions
- Chat with LLMs in your terminal
- Function calling and more supported via templates
- Sensitive information redaction ([#14](https://github.com/simonmysun/ell/issues/14))
## Requirements
To use ell, you need the following:
- `bash-4.1` or later
- `coreutils` / OS X utilities and `awk` and `sed`
- `curl` (For sending HTTPS requests)
- `util-linux` (Not necessary if you don't use record mode. For `script` command to record terminal input and output)
## Install
```bash
git clone --depth 1 https://github.com/simonmysun/ell.git \
"${XDG_DATA_HOME:-$HOME/.local/share}/ell"
echo 'export PATH="${XDG_DATA_HOME:-$HOME/.local/share}/ell:$PATH"' >> ~/.bashrc
```
This clones the repository into `${XDG_DATA_HOME:-$HOME/.local/share}/ell`
(following the [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html))
and adds it to your `PATH`. You may clone it anywhere you like; only the
directory on your `PATH` matters.
Alternatively, if `~/.local/bin` is already on your `PATH` (as it is on many
modern distributions), you can leave the repository directory off your `PATH`
and instead symlink the launcher into it:
```bash
mkdir -p ~/.local/bin
ln -s "${XDG_DATA_HOME:-$HOME/.local/share}/ell/ell" ~/.local/bin/ell
```
Link the `ell` launcher (not `ell.sh`): it resolves the symlink back to the
clone so the bundled helpers, templates and plugins are always found.
> **Upgrading from an older install?** The previous layout
> (`git clone ... ~/.ellrc.d` with configuration in `~/.ellrc`) still works:
> `~/.ellrc` is still read, and templates and plugins under `~/.ellrc.d` are
> still picked up. No migration is required.
### Windows
ell is a Bash program, so run it from a Bash environment such as **Git Bash**,
**MSYS2**, **Cygwin** or **WSL**.
The `ell` command is a plain wrapper script (not a symbolic link), so it works
even when git does not create symlinks on checkout — the default on Windows
unless Developer Mode or administrator rights are available. No extra setup is
required; clone the repository and add its directory to your `PATH` as shown
above. You invoke it the same way, e.g. `ell "your prompt"`.
**Environment differences and limitations.** The Bash environments differ in how
faithfully they emulate a POSIX system, and a few features degrade accordingly:
- **WSL** behaves like Linux; everything works.
- **MSYS2** and **Cygwin** provide a fairly complete POSIX layer (ACL-backed
file permissions, real symbolic links, `script(1)`), so the whole feature set
works.
- **Git Bash** is intentionally minimal. Over NTFS it cannot create genuinely
group/world-writable files, so the config-file permission check in
`load_config` (which refuses to source a world-writable `.ellrc`) and the
`chmod 600` on the temporary auth-header file **cannot be enforced**; it also
lacks `script(1)` (record mode) and, by default, real symlinks. ell still
runs, but on a multi-user machine treat these as **security limitations** —
see [Configuration → Windows](docs/Configuration.md#windows) for details and
the safer alternatives (MSYS2 / WSL).
For the most complete experience on Windows, prefer **WSL** or **MSYS2** over
Git Bash.
## Configuration
See [Configuration](docs/Configuration.md).
Here's an example configuration to use `gemini-1.5-flash` from Google. You need to set these variables in your config file, `${XDG_CONFIG_HOME:-$HOME/.config}/ell/config` (the legacy `~/.ellrc` also still works):
```ini
ELL_API_STYLE=gemini
ELL_LLM_MODEL=gemini-1.5-flash
ELL_TEMPLATE=default-gemini
ELL_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ELL_API_URL=https://generativelangExcerpt of 9,713 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:dc2321a87c6129a5, topic:llm, topic:gpt