Select the types of activity you want to include in your feed.
Rename `packages` to `plugins`
Naming the dirctory for the standard plugins `plugins` instead of packages makes naming consistent and repo navigation easier. It removes any mental mapping between program concepts and source names
···185185186186**Ctrl-C**: always force-quits, even while the agent is busy.
187187188188-### WASM plugin interface (`packages/`)
188188+### WASM plugin interface (`plugins/`)
189189190190-**Tool plugins** implement the `ToolPlugin` trait from `packages/ein_tool/` and declare their name, description, and JSON parameter schema via `ToolDef`. They are compiled to `wasm32-wasip2`.
190190+**Tool plugins** implement the `ToolPlugin` trait from `plugins/ein_tool/` and declare their name, description, and JSON parameter schema via `ToolDef`. They are compiled to `wasm32-wasip2`.
191191192192| Package | Tool name | Description |
193193|---------|-----------|-------------|
···196196| `ein_write` | `Write` | Writes content to a file |
197197| `ein_edit` | `Edit` | Replaces an exact string in a file with new content; returns `metadata` with `start_line`, `old_lines`, and `new_lines` for the TUI diff view |
198198199199-To add a new tool, create a package under `packages/` implementing `ToolPlugin`, add it to `build_install_plugins.sh`, and rebuild.
199199+To add a new tool, create a package under `plugins/` implementing `ToolPlugin`, add it to `build_install_plugins.sh`, and rebuild.
200200201201**Model client plugins** implement the `ModelClient` WIT interface (`wit/model_client/`). The server compiles each plugin once at startup via `ModelClientSessionManager` and instantiates it per session with the session's credentials. The active plugin is selected by `model_client_name` in `SessionConfig`; if omitted the first available plugin is used.
202202
···261261262262### Adding a tool
263263264264-1. Create a new package under `packages/` implementing the `ToolPlugin` trait from `packages/ein_tool/`
264264+1. Create a new package under `plugins/` implementing the `ToolPlugin` trait from `plugins/ein_tool/`
2652652. Add it to `scripts/build_install_plugins.sh`
2662663. Rebuild — the server picks it up automatically on next start
267267···269269270270```
271271crates/
272272- ein_proto/ Protocol Buffer definitions (gRPC service + message types)
273273-ein/ Terminal UI client
274274-eind/ gRPC server — agent loop, WASM plugin host, session persistence
275275-packages/
276276- ein_tool/ WASM tool plugin interface (ToolPlugin trait, ToolDef, syscalls)
272272+ ein_agent/ Agent component (agent loop, tool call logic, extension interface)
273273+ ein_core/ Shared types and utilities between plugins and the harness
274274+ ein_http/ WASM-native HTTP client (used by model client plugins)
275275+ ein_plugin/ WASM plugin interface
276276+ ein_proto/ Protocol Buffer definitions (gRPC service + message types)
277277+ein/ Terminal UI client
278278+eind/ gRPC server — WASM plugin host, session persistence
279279+plugins/
280280+ ein_anthropic/ Anthropic model client plugin
277281 ein_bash/ Bash tool plugin
282282+ ein_edit/ Edit tool plugin
283283+ ein_ollama/ Ollama model client plugin
284284+ ein_openai/ OpenAI model client plugin
285285+ ein_openrouter/ OpenRouter model client plugin
278286 ein_read/ Read tool plugin
279287 ein_write/ Write tool plugin
280280- ein_edit/ Edit tool plugin
281281- ein_model_client/ Shared model client types and WIT bindings
282282- ein_http/ WASM-native HTTP client (used by model client plugins)
283283- ein_openrouter/ OpenRouter model client plugin
284284- ein_anthropic/ Anthropic model client plugin
285285- ein_openai/ OpenAI model client plugin
286286- ein_ollama/ Ollama model client plugin
287288```
288289289290### Protocol
+1-1
notes/mcp-server-roadmap.md
···216216 .await?;
217217```
218218219219-Each `.wasm` file is a WASM component implementing the `ToolPlugin` WIT interface (already defined in `packages/ein_tool/`). The filename stem is the tool's config identity.
219219+Each `.wasm` file is a WASM component implementing the `ToolPlugin` WIT interface (already defined in `crates/ein_plugin/`). The filename stem is the tool's config identity.
220220221221**Per-tool capability config**
222222