{"slug":"cloi","name":"Cloi","vendor":"Gabriel Cha","tagline":"Local-first terminal coding agent on Ollama that picks models to fit your hardware and escalates to a bigger one when a turn goes wrong","url":"https://agentboards.org/agent/cloi","website":"http://www.cloi-ai.com","docs":"https://github.com/gabrielchasukjin/cloi/blob/main/docs/internals.md","repo":"https://github.com/gabrielchasukjin/cloi","category":"cli","execution":["local"],"license":"MIT","open_source":true,"pricing":{"model":"free","summary":"Free and MIT-licensed; models run locally through Ollama, so there is no API key and no per-token cost","from_usd":0,"free_tier":true,"byok":false},"models":{"backbone":["local models via Ollama (Qwen3, Nemotron and other tool-capable models)"],"bring_your_own_model":true,"local_models":true},"protocols":{"mcp_client":false,"mcp_server":false,"openapi":false},"capabilities":{"terminal_exec":true,"browser":false,"multi_file_edit":true,"git_ops":false,"docker_sandbox":false,"multi_agent":false,"headless_ci":false},"context_window":"model-dependent, with older history summarised rather than dropped","platforms":["macos","linux"],"install":[{"label":"npm","command":"npm install -g @cloi-ai/cloi && cloi"}],"benchmarks":[],"tags":["open-source","local-models","ollama","offline","terminal","model-routing","permissions"],"github_stars":407,"metrics":{"stars":407,"pushed_at":"2026-08-11T00:32:23Z","archived":false,"open_issues":9,"latest_version":"2.1.0","latest_version_at":"2026-08-10T23:27:21.698Z","latest_version_url":"https://www.npmjs.com/package/@cloi-ai/cloi","version_source":"npm","checked_at":"2026-10-02T05:05:03.511Z"},"sources":{"readme":"https://github.com/gabrielchasukjin/cloi","install":"https://github.com/gabrielchasukjin/cloi","models":"https://github.com/gabrielchasukjin/cloi/blob/main/docs/models.md","capabilities":"https://github.com/gabrielchasukjin/cloi/blob/main/docs/internals.md","license":"https://github.com/gabrielchasukjin/cloi/blob/main/LICENSE"},"verified_at":null,"adoption":{"score":0.4,"signals":{"npm_weekly":14,"github_stars":407},"measured_at":"2026-09-21"},"scores":{"panel":6.3,"adoption":0.4,"spread":2.5,"facts":4.7,"board":5.2,"dimensions":{"reliability":5.8,"usefulness":5.7,"cost":9.3,"longevity":4.5},"per_persona":{"amigo":6.5,"critico":5.5,"profesor":6.8,"inversora":5.5,"jefa":5.8,"hacker":8},"community":null},"rank":188,"category_rank":87,"panel_reviews":[{"persona":"juez","persona_name":"El Juez","ai_generated":true,"verdict":"El Hacker's 10 and El Crítico's 4 both come from the escalation design: the fallback only has to fit in RAM, which is why it is free and why it is slow.","scores":null,"evidence":[]},{"persona":"amigo","persona_name":"El Amigo","ai_generated":true,"verdict":"Pick Cloi if you have a capable machine and want coding help with no account at all; pick Aider when a frontier model behind a key would serve you better.","scores":{"reliability":6,"usefulness":6,"cost":10,"longevity":4},"evidence":["https://github.com/gabrielchasukjin/cloi","https://github.com/gabrielchasukjin/cloi/blob/main/docs/models.md"]},{"persona":"critico","persona_name":"El Crítico","ai_generated":true,"verdict":"The escalation model only has to fit in system memory rather than video memory, so the rescue path runs on the processor at exactly the moment a task is going badly.","scores":{"reliability":4,"usefulness":5,"cost":9,"longevity":4},"evidence":["https://github.com/gabrielchasukjin/cloi/blob/main/docs/internals.md","https://github.com/gabrielchasukjin/cloi"]},{"persona":"profesor","persona_name":"El Profesor","ai_generated":true,"verdict":"Six named signals detect a stuck turn and hand the conversation to the larger model mid-run, and answers are checked against the workspace before the user sees them.","scores":{"reliability":7,"usefulness":6,"cost":9,"longevity":5},"evidence":["https://github.com/gabrielchasukjin/cloi/blob/main/docs/internals.md","https://github.com/gabrielchasukjin/cloi"]},{"persona":"inversora","persona_name":"La Inversora","ai_generated":true,"verdict":"408 stars, one maintainer, a permissive licence and a product with no possible revenue line, because its entire promise is that nothing is charged.","scores":{"reliability":4,"usefulness":5,"cost":9,"longevity":4},"evidence":["https://github.com/gabrielchasukjin/cloi","https://github.com/gabrielchasukjin/cloi/blob/main/LICENSE"]},{"persona":"jefa","persona_name":"La Jefa","ai_generated":true,"verdict":"Nothing per seat, nothing leaves the host, and the hardware requirement means sixty developers need sixty workstations with real graphics memory.","scores":{"reliability":5,"usefulness":5,"cost":9,"longevity":4},"evidence":["https://github.com/gabrielchasukjin/cloi","https://github.com/gabrielchasukjin/cloi/blob/main/docs/models.md"]},{"persona":"hacker","persona_name":"El Hacker","ai_generated":true,"verdict":"MIT, a global npm install, everything runs against Ollama with no key anywhere, and subprocesses get a sanitised environment rather than inheriting my shell.","scores":{"reliability":9,"usefulness":7,"cost":10,"longevity":6},"evidence":["https://github.com/gabrielchasukjin/cloi/blob/main/docs/internals.md","https://github.com/gabrielchasukjin/cloi/blob/main/LICENSE"]},{"persona":"comediante","persona_name":"El Comediante","ai_generated":true,"verdict":"Tool results are saved under names you can use as variables in a session-long Python interpreter, so your chat now has a symbol table.","scores":null,"evidence":[]}]}