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.
Core
elelemRubyGems
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-builtinsRubyGems
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-toolsRubyGems
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-anthropicRubyGems
Claude, direct or on Vertex.
Connects elelem to Claude through the Anthropic Messages API, or through Google Cloud Vertex AI. One gem, two providers.
elelem-openaiRubyGems
OpenAI chat completions.
Connects elelem to OpenAI models through the Chat Completions API, with streaming and tool calls.
elelem-ollamaRubyGems
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-llamaRubyGems
llama.cpp, in-process.
Runs GGUF models inside the elelem process through llama.cpp. No server, no network call.
Integrations & interfaces
elelem-mcpRubyGems
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-skillsRubyGems
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-serverRubyGems
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-ratatuiSource only
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-evalsSource only
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-ggmlExperimental
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-llama2Experimental
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-candleExperimental
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-diffusionExperimental
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.