~/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.

Solo Engineer · Personal Project · 2025 - present

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.
gnoma · request path

Evidence

Provider backends
6

Anthropic, OpenAI, Google, Mistral, Ollama, llama.cpp

LSP integrations
14

Language-server grounding

Distribution
Static binary

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 study

Highlights

  • 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.