Eris is a local LLM agent that evolved through three iterations of tool selection: from grep-based text parsing, to keyword lists and embeddings, to a final approach using embeddings with a policy layer and GBNF grammar constraints. The system selects from ~50 tools for a 14B model by embedding user text, comparing against precomputed tool vectors, and feeding the filtered tool list to both the prompt and grammar to ensure consistency.