{"slug":"code-puppy","name":"Code Puppy","vendor":"mpfaffenberger","tagline":"Python terminal coding agent built on Pydantic AI, with MCP tools and a model list spanning OpenAI, Anthropic, Gemini, xAI, Mistral and Qwen","url":"https://agentboards.org/agent/code-puppy","website":"https://pypi.org/project/code-puppy/","docs":null,"repo":"https://github.com/mpfaffenberger/code_puppy","category":"cli","execution":["local"],"license":"MIT","open_source":true,"pricing":{"model":"byok","summary":"Free and open source under MIT; you pay whichever model provider you configure","from_usd":0,"free_tier":true,"byok":true},"models":{"backbone":["OpenAI","Anthropic","Gemini","xAI","Mistral","Qwen","OpenRouter","Ollama"],"bring_your_own_model":true,"local_models":true},"protocols":{"mcp_client":true,"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":null,"platforms":["macos","linux","windows"],"install":[{"label":"pip","command":"pip install code-puppy"}],"benchmarks":[],"tags":["open-source","python","terminal","pydantic-ai","mcp","byok"],"github_stars":837,"metrics":{"stars":837,"pushed_at":"2026-10-02T00:40:37Z","archived":false,"open_issues":199,"latest_version":"0.0.890","latest_version_at":"2026-10-02T00:40:31.605540Z","latest_version_url":"https://pypi.org/project/code-puppy/","version_source":"pypi","checked_at":"2026-10-02T05:05:06.064Z"},"sources":{"overview":"https://github.com/mpfaffenberger/code_puppy","install":"https://pypi.org/project/code-puppy/","capabilities":"https://github.com/mpfaffenberger/code_puppy","protocols":"https://github.com/mpfaffenberger/code_puppy","models":"https://github.com/mpfaffenberger/code_puppy","license":"https://github.com/mpfaffenberger/code_puppy/blob/main/LICENSE"},"verified_at":"2026-09-04","adoption":{"score":3.4,"signals":{"pypi_weekly":4769,"github_stars":826,"hn_mentions_1y":1},"measured_at":"2026-09-28"},"scores":{"panel":6.6,"adoption":3.4,"spread":1.5,"facts":8.3,"board":6.4,"dimensions":{"reliability":6,"usefulness":6,"cost":8.8,"longevity":5.5},"per_persona":{"amigo":6.5,"critico":6,"profesor":7,"inversora":6.5,"jefa":6,"hacker":7.5},"community":null},"rank":63,"category_rank":27,"panel_reviews":[{"persona":"juez","persona_name":"El Juez","ai_generated":true,"verdict":"El Crítico wants a boundary the tool does not draw and El Hacker does not miss it, which tells you exactly who each of them is answering.","scores":null,"evidence":[]},{"persona":"amigo","persona_name":"El Amigo","ai_generated":true,"verdict":"Pick it if you want a terminal agent that installs like any other Python package; pick Aider when you want the edit loop to be the star.","scores":{"reliability":6,"usefulness":6,"cost":9,"longevity":5},"evidence":["https://pypi.org/project/code-puppy/","https://github.com/mpfaffenberger/code_puppy"]},{"persona":"critico","persona_name":"El Crítico","ai_generated":true,"verdict":"It edits across many files and the row records no git operations, so there is no commit boundary and nothing in the tool to undo a bad run.","scores":{"reliability":5,"usefulness":6,"cost":8,"longevity":5},"evidence":["https://github.com/mpfaffenberger/code_puppy","https://github.com/mpfaffenberger/code_puppy"]},{"persona":"profesor","persona_name":"El Profesor","ai_generated":true,"verdict":"Tool calls go through Pydantic AI, so arguments are validated by a typed library rather than recovered from prose, which removes a whole error class.","scores":{"reliability":7,"usefulness":6,"cost":8,"longevity":7},"evidence":["https://github.com/mpfaffenberger/code_puppy","https://github.com/mpfaffenberger/code_puppy"]},{"persona":"inversora","persona_name":"La Inversora","ai_generated":true,"verdict":"806 stars, one maintainer and a package index listing: real reach, zero capture, and no mechanism by which the second ever becomes revenue.","scores":{"reliability":6,"usefulness":6,"cost":9,"longevity":5},"evidence":["https://github.com/mpfaffenberger/code_puppy","https://pypi.org/project/code-puppy/"]},{"persona":"jefa","persona_name":"La Jefa","ai_generated":true,"verdict":"It states that it makes no calls beyond the provider you configure, which is a claim I like and not a policy I can hold anyone to.","scores":{"reliability":5,"usefulness":5,"cost":9,"longevity":5},"evidence":["https://github.com/mpfaffenberger/code_puppy","https://github.com/mpfaffenberger/code_puppy"]},{"persona":"hacker","persona_name":"El Hacker","ai_generated":true,"verdict":"MIT, MCP for tools, and an Ollama endpoint alongside six vendors, so the model can be mine and the tools can be the ones I already run.","scores":{"reliability":7,"usefulness":7,"cost":10,"longevity":6},"evidence":["https://github.com/mpfaffenberger/code_puppy/blob/main/LICENSE","https://github.com/mpfaffenberger/code_puppy"]},{"persona":"comediante","persona_name":"El Comediante","ai_generated":true,"verdict":"It runs in the terminal instead of an IDE, which is one way to end the argument about which IDE.","scores":null,"evidence":[]}]}