{"id":49197364,"url":"https://github.com/jondot/picocode","last_synced_at":"2026-05-02T08:35:16.374Z","repository":{"id":332970111,"uuid":"1135769670","full_name":"jondot/picocode","owner":"jondot","description":"a minimal, Rust-based implementation similar to Claude Code","archived":false,"fork":false,"pushed_at":"2026-01-16T18:56:09.000Z","size":874,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-17T04:53:39.817Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jondot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-16T15:10:05.000Z","updated_at":"2026-01-17T01:31:37.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jondot/picocode","commit_stats":null,"previous_names":["jondot/picocode"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/jondot/picocode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jondot%2Fpicocode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jondot%2Fpicocode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jondot%2Fpicocode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jondot%2Fpicocode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jondot","download_url":"https://codeload.github.com/jondot/picocode/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jondot%2Fpicocode/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32528452,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T01:12:54.858Z","status":"online","status_checked_at":"2026-05-02T02:00:05.923Z","response_time":132,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-23T12:00:27.535Z","updated_at":"2026-05-02T08:35:16.368Z","avatar_url":"https://github.com/jondot.png","language":"Rust","funding_links":[],"categories":["Terminal-native coding agents"],"sub_categories":["Open Source"],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"picocode.gif\" width=\"600\"/\u003e\n  \u003cbr/\u003e\n  \u003cbr/\u003e\n  \u003ch1\u003e⚡️ picocode\u003c/h1\u003e\n  \u003cp\u003e\u003cb\u003eThe tiny coding agent that speaks every LLM.\u003c/b\u003e\u003c/p\u003e\n  \u003cbr/\u003e\n\u003c/div\u003e\n\n**picocode** is a minimal, high-performance Rust-based coding agent. It's a small, robust tool designed for developers who want a lightweight assistant that is easy to reason about, safe to use, and highly hackable.\n\n## 🚀 Quick Start\n\nGet up and running in seconds:\n\n```bash\n# 1. Install\ncurl -sSfL https://raw.githubusercontent.com/jondot/picocode/main/install.sh | sh\n\n# 2. Set your API Key (pick your provider)\nexport ANTHROPIC_API_KEY=your_key_here # For Claude\n# or\nexport OPENAI_API_KEY=your_key_here    # For GPT-4o\n# or\nexport GOOGLE_API_KEY=your_key_here    # For Gemini\n# or\nexport DEEPSEEK_API_KEY=your_key_here  # For DeepSeek\n\n# 3. Start coding\npicocode \"Analyze this project and suggest improvements\"\n```\n\nOr, download directly from [releases](https://github.com/jondot/picocode/releases)\n\n---\n\n## 🦀 Why picocode?\n\n- **Tiny \u0026 Fast**: A single, compact binary written in Rust. No heavy dependencies, no bloat.\n- **Multi-LLM Sovereignty**: Works with Anthropic, OpenAI, DeepSeek, Google (Gemini), Ollama, and many more via [Rig](https://github.com/0xPlayground/rig).\n- **Interactive \u0026 Scriptable**: Use it as an interactive CLI, pipe it into scripts, or run automated **Recipes**.\n- **Persona-driven**: Switch between different expert personalities (Architect, Security, Zen Master, etc.) to change how the agent thinks and speaks.\n- **Safety First**: Destructive actions (like deleting files or running shell commands) require manual confirmation by default.\n- **Extensible**: Use it as a CLI tool or integrate it as a Rust library in your own projects.\n\n## 🎭 The Persona Gallery\n\nPicocode isn't just a tool; it has character. Use `--persona` to change the agent's expertise and \"vibe\":\n\n| Persona      | Description                           | \"Voice\"                                                        |\n| :----------- | :------------------------------------ | :------------------------------------------------------------- |\n| `architect`  | High-level software architect.        | _\"This abstraction needs more Cowbell. Let's refactor.\"_       |\n| `strict`     | Swiss-clock precision engineer.       | _\"Zero tolerance for fluff. Applying optimal logic.\"_          |\n| `security`   | Bruce Schneier fan, paranoid analyst. | _\"Searching for vulnerabilities... trust nothing.\"_            |\n| `zen`        | Minimalist, focused on simplicity.    | _\"Code is a form of meditation. Let's find the path.\"_         |\n| `hacker`     | Chaotic good, assembly dreamer.       | _\"I found a 2ms optimization. Applying now.\"_                  |\n| `guru`       | Visionary Silicon Valley disruptor.   | _\"Let's move the needle and scale this to infinity.\"_          |\n| `sysadmin`   | Grumpy, old-school server legend.     | _\"Back in my day, we didn't need these fancy LLMs...\"_         |\n| `academic`   | Formal professor, theory first.       | _\"As per the 1974 paper by Knuth, this is suboptimal.\"_        |\n| `hustler`    | MVP-focused startup survivor.         | _\"Ship it! We'll fix the debt after the Series A.\"_            |\n| `craftsman`  | Accessibility \u0026 semantic HTML purist. | _\"Semantic HTML is the foundation of a healthy web.\"_          |\n| `sre`        | Reliability and observability ninja.  | _\"But how will we monitor this in production?\"_                |\n| `maintainer` | Patient, docs-loving OSS saint.       | _\"Could you add a test case and update the README?\"_           |\n| `tester`     | Destructive edge-case finder.         | _\"I'm going to try passing a null to this and watch it burn.\"_ |\n\n\u003e [!TIP]\n\u003e You can even add a local `AGENTS.md` file to give the agent custom codebase-specific instructions!\n\n## ⚙️ Recipes \u0026 Automation\n\nPicocode supports named **Recipes** in a `picocode.yaml` file for non-interactive execution (CI/CD, automation).\n\n```yaml\n# picocode.yaml\nrecipes:\n  review-security:\n    prompt: \"Review the codebase for security issues.\"\n    persona: \"security\"\n    model: \"claude-3-5-sonnet-latest\"\n\n  review-from-file:\n    prompt_file: \"prompts/security_review.txt\"\n    persona: \"security\"\n```\n\nRun it with:\n\n```bash\npicocode recipe review-security\n```\n\n## ⚙️ CLI Modes \u0026 Flags\n\nPicocode is designed to be flexible, whether you're using it for a quick question or a complex automation task.\n\n### Main Commands\n\n- **Interactive Chat**: `picocode` or `picocode chat` (Default)\n- **Single Prompt**: `picocode \"your prompt\"` or `picocode input \"your prompt\"`\n- **Recipes**: `picocode recipe \u003cname\u003e` (Runs a pre-defined task from `picocode.yaml`)\n\n### Common Flags\n\n- `-p, --provider \u003cPROVIDER\u003e`: Override the default LLM provider (e.g., `openai`, `anthropic`, `ollama`).\n- `-m, --model \u003cMODEL\u003e`: Specify a specific model (e.g., `claude-3-5-sonnet-latest`, `gpt-4o`).\n- `--yolo`: Disable all confirmation prompts. **Use with caution.**\n- `-q, --quiet`: Minimal output, useful for piping into other tools.\n- `--persona \u003cNAME\u003e`: Launch with a specific expert persona.\n- `--tool-call-limit \u003cN\u003e`: Maximum number of tool calls allowed per turn (Default: 50).\n\n## 🛠 Available Tools\n\nPicocode gives the AI a comprehensive set of tools to interact with your environment:\n\n- **Filesystem**: `read_file`, `write_file`, `edit_file` (atomic search-replace), `list_dir`, `make_dir`, `remove`, `move_file`, `copy_file`.\n- **Search**: `grep_text` (regex search), `glob_files` (find files by pattern).\n- **System**: `bash` (run any shell command).\n- **Web**: `agent_browser` (full browser automation via [agent-browser](https://github.com/jondot/agent-browser) if installed).\n\n## 🛠 Hacking on picocode\n\nPicocode is built with Rust and the [Rig](https://github.com/0xPlayground/rig) library. It's designed to be extremely easy to extend.\n\n### Prerequisites\n\n- [Rust](https://rustup.rs/) (latest stable)\n- API Keys for your preferred provider (e.g., `ANTHROPIC_API_KEY`)\n\n### Local Setup\n\n```bash\n# 1. Clone the repo\ngit clone https://github.com/jondot/picocode.git\ncd picocode\n\n# 2. Build and run\ncargo run -- \"Analyze src/main.rs\"\n```\n\n### Adding a New Tool\n\n1. Open `src/tools.rs`.\n2. Use the `#[rig_tool]` macro to define your function.\n3. Register the tool in `src/agent.rs` within the `build_rig_agent` function.\n\n### Project Structure\n\n- `src/main.rs`: CLI entry point and argument parsing.\n- `src/agent.rs`: Agent creation and system prompt logic.\n- `src/tools.rs`: Implementation of all AI-accessible tools.\n- `src/output.rs`: Terminal UI and progress indicators.\n\n## 📚 Use as a Library\n\nPicocode is structured as a library (`lib.rs`) and a binary (`main.rs`).\n\nExample usage:\n\n```rust\nuse picocode::{create_agent, AgentConfig, ConsoleOutput};\nuse std::sync::Arc;\n\n#[tokio::main]\nasync fn main() -\u003e Result\u003c(), Box\u003cdyn std::error::Error\u003e\u003e {\n    let output = Arc::new(ConsoleOutput::new());\n\n    let agent = create_agent(AgentConfig {\n        provider: \"anthropic\".into(),\n        model: \"claude-3-5-sonnet-latest\".into(),\n        output,\n        yolo: false,\n        tool_call_limit: 50,\n        system_message_extension: None,\n        persona_prompt: None,\n        persona_name: None,\n        bash_auto_allow: None,\n        agent_prompt: None,\n    }).await?;\n\n    let response = agent.run_once(\"Analyze the current project\".into()).await?;\n    println!(\"Response: {}\", response);\n    Ok(())\n}\n```\n\n---\n\nBuilt for speed, safety, and simplicity. MIT Licensed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjondot%2Fpicocode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjondot%2Fpicocode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjondot%2Fpicocode/lists"}