Commit bc6bc11

mo khan <mo@mokhan.ca>
2026-08-28 14:57:34
docs: cleanup readme
Changed files (1)
README.md
@@ -21,12 +21,6 @@ set of built-in tools that give the LLM access to the local file system.
 
 ## System Assumptions
 
-* Linux host with Alacritty, tmux, Bash, Vim.
-* Runs inside a Git repository.
-* Git is available and functional.
-
-## Dependencies
-
 Elelem relies on several external tools. Install the ones you need:
 
 | Tool | Purpose | Install |
@@ -40,26 +34,6 @@ Elelem relies on several external tools. Install the ones you need:
 | [ollama](https://ollama.ai/) | Default LLM provider | https://ollama.ai/download |
 | [ripgrep](https://github.com/BurntSushi/ripgrep) | Text search (`rg`) | `brew install ripgrep` / `apt install ripgrep` |
 
-**Required:** Git, Ollama (or another LLM provider)
-
-**Recommended:** glow, jq, ctags, ripgrep, fd
-
-**Optional:** ast-grep (for structural code search)
-
-## Scope
-
-Only plain-text and source-code files are supported. No binary handling,
-sandboxing, or permission checks are performed - the LLM has full access.
-
-## Configuration
-
-Prefer convention over configuration. Add environment variables only after
-repeated use proves their usefulness.
-
-## UI Expectations
-
-Keyboard-driven, minimal TUI. No mouse support or complex widgets.
-
 ## Coding Standards for the LLM
 
 * No extra error handling unless essential.
@@ -67,12 +41,6 @@ Keyboard-driven, minimal TUI. No mouse support or complex widgets.
 * Descriptive, conventional names.
 * Use Ruby standard library where possible.
 
-## Helpful Links
-
-* https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents
-* https://www.anthropic.com/engineering/writing-tools-for-agents
-* https://simonwillison.net/2025/Sep/30/designing-agentic-loops/
-
 ## Installation
 
 Install the gem directly:
@@ -89,40 +57,6 @@ Start an interactive chat session:
 elelem chat
 ```
 
-### Options
-
-* `--provider` – LLM provider: `ollama`, `anthropic`, `openai`, or `vertex` (default: `ollama`).
-
-The model is chosen per provider via environment variables (`OLLAMA_MODEL`,
-`ANTHROPIC_MODEL`, `OPENAI_MODEL`, `VERTEX_MODEL`), not a CLI flag.
-
-### Examples
-
-```bash
-# Default (Ollama)
-elelem chat
-
-# Anthropic Claude
-ANTHROPIC_API_KEY=sk-... elelem chat --provider anthropic
-
-# OpenAI
-OPENAI_API_KEY=sk-... elelem chat --provider openai
-
-# VertexAI (uses gcloud ADC)
-VERTEX_MODEL=claude-sonnet-4@20250514 elelem chat --provider vertex
-```
-
-### Provider Configuration
-
-Each provider reads its configuration from environment variables:
-
-| Provider    | Environment Variables                              |
-|-------------|---------------------------------------------------|
-| ollama      | `OLLAMA_HOST` (default: localhost:11434)          |
-| anthropic   | `ANTHROPIC_API_KEY`                               |
-| openai      | `OPENAI_API_KEY`, `OPENAI_BASE_URL`               |
-| vertex      | `GOOGLE_CLOUD_PROJECT`, `GOOGLE_CLOUD_REGION`     |
-
 ## Features
 
 * **Interactive REPL** – clean, streaming chat.
@@ -139,63 +73,16 @@ Built-in tools available to the LLM:
 | --------- | -------------------------- | ------------------------- |
 | `read`    | Read file contents         | `path`                    |
 | `write`   | Write file                 | `path`, `content`         |
-| `edit`    | Replace text in file       | `path`, `old`, `new`      |
 | `execute` | Run shell command          | `command`                 |
-| `eval`    | Execute Ruby code          | `ruby`                    |
-| `glob`    | Find files by pattern      | `pattern`, `path`         |
-| `grep`    | Search file contents       | `pattern`, `path`, `glob` |
-| `list`    | List directory             | `path`, `recursive`       |
-| `git`     | Run git command            | `command`, `args`         |
-| `task`    | Delegate to sub-agent      | `prompt`                  |
-| `verify`  | Check syntax and run tests | `path`                    |
-
-Aliases: `bash`, `sh`, `exec` → `execute`; `open` → `read`; `ls` → `list`
 
 ## Plugins
 
 Plugins extend elelem with custom tools and commands. They are loaded from:
+
 - `lib/elelem/plugins/` (built-in)
 - `~/.elelem/plugins/` (user global)
 - `.elelem/plugins/` (project local)
 
-### Writing a Plugin
-
-```ruby
-# ~/.elelem/plugins/hello.rb
-Elelem::Plugins.register(:hello) do |agent|
-  # Add a tool
-  agent.toolbox.add("hello",
-    description: "Say hello",
-    params: { name: { type: "string" } },
-    required: ["name"]
-  ) do |args|
-    { message: "Hello, #{args["name"]}!" }
-  end
-
-  # Add a command
-  agent.commands.register("greet", description: "Greet the user") do
-    agent.terminal.say "Hello!"
-  end
-
-  # Add hooks
-  agent.toolbox.before("execute") { |args| puts "Running: #{args["command"]}" }
-  agent.toolbox.after("execute") { |args, result| puts "Exit: #{result[:exit_status]}" }
-
-  # Global hook (runs for all tools)
-  agent.toolbox.before { |args, tool_name:| puts "Calling #{tool_name}" }
-end
-```
-
-### Plugin API
-
-Plugins receive an `agent` object with access to:
-- `agent.toolbox` - add tools, register hooks
-- `agent.terminal` - output to the user (`say`, `ask`, `markdown`)
-- `agent.commands` - register slash commands
-- `agent.conversation` - access message history
-- `agent.client` - the LLM client
-- `agent.fork(system_prompt:)` - create a sub-agent
-
 ## MCP Configuration
 
 Configure MCP servers in `~/.elelem/mcp.json` or `.elelem/mcp.json`:
@@ -217,34 +104,6 @@ Configure MCP servers in `~/.elelem/mcp.json` or `.elelem/mcp.json`:
 }
 ```
 
-HTTP servers support OAuth authentication automatically.
-
-## Tuning the system prompt (evals)
-
-The system prompt is tuned empirically. `spec/evals/cases/*.yml` are eval cases
-(YAML: `fixture`, `turns`, `expect`) run against the real agent and model.
-
-```bash
-bin/evals        # tune the champion prompt against the eval cases
-bin/evals 5      # ...for 5 rounds (default 3)
-```
-
-Each round an LLM improver adds prompt lines to pass failing cases, and a
-challenger is promoted only if it passes strictly more cases with no regression,
-under a ~1KB budget. Cases in the `holdout` group are hidden from the improver
-but their regressions still block a promotion.
-
-Point `EVAL_MODEL` at the strongest coding model your machine runs locally
-(default `gpt-oss:latest`). Less common operations are plain rake tasks:
-`rake evals` (score once), `rake evals:minimize` (drop lines that defend no
-case), `rake evals:regenerate` (grow a fresh prompt from the seed).
-
-## Known Limitations
-
-* Assumes the current directory is a Git repository.
-* No sandboxing – the LLM can run arbitrary commands.
-* Error handling is minimal; exceptions are returned as an `error` field.
-
 ## Contributing
 
 ```bash