The ast-grep + ripgrep combination for semantic context is the right architectural choice. Pure embedding-based retrieval tends to fail on codebases with non-trivial inheritance hierarchies or polymorphism, where structural search beats semantic similarity. I'd be curious how you're balancing the two: does ast-grep run first as a structural filter, with ripgrep for content matching, or are they used independently depending on the query type?
On the multi-provider abstraction: Anthropic, OpenAI, and Gemini have meaningfully different tool-calling schemas, and Codex (the CLI tool) adds another layer because it wraps OpenAI's API but with its own conventions. How are you handling the schema translation? Most "multi-provider" implementations I've seen end up with provider-specific code paths that defeat the abstraction.
ACP support is interesting. I haven't seen many agents implement it yet, mostly MCP. Is your read that ACP is going to gain adoption, or is including both more about hedging?
The local inference angle (LM Studio, Ollama) matters for use cases where source code can't leave the network. Have you benchmarked which open models hold up reasonably for tool-calling-heavy workflows? In my experience most local models below 70B struggle with multi-turn tool use even when their raw code generation is decent.
Rust + Ratatui is a strong DX choice. Will check out the DeepWiki.