Capability before confidence
Tool access, task kind, complexity, context, disabled models, and cost ceilings remove unfit candidates first.
Public beta · Go CLI · multi-provider
Veto filters AI models by capability, task complexity, and estimated cost, then asks each viable model to explicitly accept the task before routing or execution.
brew install oleg-koval/tap/veto
$ veto route "review this pull request" --kind review
── filtering candidates ───────────
luna pass
terra pass
sol pass
── asking models ─────────────────
luna rejected
terra accepted · 91%
→ selected: terra
Routing contract
Veto filters candidates first, before any model judges the task. Every admission result stays structured and scriptable.
Tool access, task kind, complexity, context, disabled models, and cost ceilings remove unfit candidates first.
Surviving candidates return an accept/reject decision, confidence, estimated usage, and reasons your scripts can read.
Use route for selection, run for one task, or exec for a multi-step plan.
Requested criteria do not pass when the review is unavailable, malformed, incomplete, or inconsistent.
How it works
Illustrative route: Veto narrows the roster, asks the survivors, and only then hands execution to the selected model.
run or exec starts the separate task.Provider roster
Each model connection keeps its real boundaries: API and local HTTP models are text-only; executable tools are never advertised where they are unavailable.
Next: run veto verify-models, then follow the quick start with your own provider.