~/work/gnomaActive
gnoma
Agentic coding assistant for the terminal, written in Go. A multi-armed bandit router picks the best model per prompt — cloud or local — and shows its choice on every turn. Extensible through hooks, skills, MCP servers, and plugins.
What it does
A provider-agnostic agentic coding assistant. gnoma routes each prompt to the best available model through a multi-armed bandit router that weighs capability gates, declared strengths, latency, and cost — and surfaces which arm it picked and why on every turn, no black box. It runs Anthropic, OpenAI, Google, Mistral, Ollama, and llama.cpp side by side, with a tier-0 small model that classifies prompts and handles trivial ones locally. Security is built in: every outgoing message and tool result passes a secret scanner and content boundary, paths are canonicalised TOCTOU-safe, Unicode is sanitized, and gnoma itself phones home to nothing. Language-server grounding across 14 LSP servers, end-to-end vision, and a single static binary with a multi-arch container image.
How it's built
- You type in the TUI.
- The agent loop receives the prompt; a safety layer scans every outgoing message and tool result.
- The bandit router picks the best provider arm per prompt and shows its choice.
- The prompt goes to one of six providers, or is answered locally by a small model.
- Tools extend the agent through LSP, MCP servers, and hooks.
Evidence
- Provider backends
- 6
- LSP integrations
- 14
- Distribution
- Static binary
Anthropic, OpenAI, Google, Mistral, Ollama, llama.cpp
Language-server grounding
Plus a multi-architecture container image
Related case study
The project page describes what exists. The case study follows the decisions, constraints, and trade-offs behind it.
Case studyHighlights
- Transparent model routing A multi-armed bandit router selects an arm per prompt from capability gates, declared strengths, latency, and cost — and surfaces the choice on every turn instead of hiding it.
- Security at the content boundary Outgoing messages and tool results are scanned for secrets, paths are canonicalised TOCTOU-safe, Unicode is sanitized, and gnoma sends nothing off-machine on its own.