Plugins
Plugins
Everything beyond the agent loop is a gem. Install the ones you need.
Providers connect a model and are chosen with -p NAME: elelem requires
elelem/NAME for you. Tool and interface plugins load from a one-line Ruby
file in ~/.agents/plugins/ (everywhere) or .agents/plugins/ (this
project):
# ~/.agents/plugins/tools.rb
require "elelem/tools"elelem-builtins is the exception. The elelem command loads it
automatically when it is installed.
Each plugin is marked with how far along it is:
- Ready works today and is used daily.
- Alpha works, with known gaps. Check its known issues first.
- Lab is an experiment in how inference works. Read it to learn.
Core
elelemReady
The agent loop. Nothing else.
The core gem: the agent loop, the plugin registry, and the elelem command. Tools, slash commands, and model providers all come from plugins.
elelem-builtinsReady
Read, write, run.
The default tools and slash commands: read and write files, run shell commands, and manage the session. Loaded automatically by the elelem command when installed.
elelem-toolsReady
More tools. Permission prompts.
Adds search, edit, git, sub-agent, and verification tools, three slash commands, and a permissions hook that asks before a tool runs.
Providers
elelem-anthropicReady
Claude, through the Anthropic API.
Connects elelem to Claude through the Anthropic Messages API, or through Google Cloud Vertex AI. One gem, two providers.
elelem-openaiAlpha
OpenAI chat completions.
Connects elelem to OpenAI models through the Chat Completions API, with streaming and tool calls.
elelem-ollamaReady
Local models through Ollama.
Connects elelem to a running Ollama server through its native /api/chat endpoint, with streaming, tool calls, and thinking output.
elelem-llamaReady
llama.cpp, in-process.
Runs GGUF models inside the elelem process through llama.cpp. No server, no network call.
Integrations & interfaces
elelem-mcpReady
MCP servers as tools.
Connects elelem to Model Context Protocol servers over stdio or HTTP and adds every tool they list to the agent. Handles OAuth for HTTP servers that ask for it.
elelem-skillsReady
Agent skills, on demand.
Loads SKILL.md files from .agents/skills and exposes them to the agent through a skill tool and a /skills command. Can install skills published by a website.
elelem-serverAlpha
elelem in a browser tab.
Serves a chat page and runs an elelem session behind it, so you can drive the agent from a browser or a phone. It has no authentication and listens on every network interface.
elelem-ratatuiAlpha
A Rust terminal UI.
Replaces elelem's line-based terminal with a full-screen ratatui interface, drawn by a small Rust binary that talks to Ruby over JSON lines. Early, and not published to RubyGems.
elelem-evalsAlpha
Test the agent, not the model.
Runs scripted coding tasks against any elelem provider in throwaway directories and checks the results with shell commands, file contents, and the final reply. Not published to RubyGems.
Lab
Experiments in how inference works. Read them to learn; don't build on them yet.
elelem-ggmlLab
A transformer you can read.
A Qwen2 forward pass built by hand on ggml, with the tokenizer in Ruby. 466 lines of C and about 300 lines of Ruby from prompt to tensor ops.
elelem-llama2Lab
llama2.c, wired into elelem.
Runs Andrej Karpathy's llama2.c inside elelem. One C file does the whole forward pass; a 161-line C++ shim streams tokens back to Ruby.
elelem-candleLab
Rust in-process. Inference not yet.
A skeleton provider that calls Rust from Ruby through rb_sys and magnus. The FFI and token streaming work; the model is a stub that echoes your prompt.
elelem-diffusionLab
Images from the agent, locally.
Adds image, video, and upscale tools backed by stable-diffusion.cpp, compiled into the elelem process and called through Fiddle.