Details and log output for this agent run.
{"end_line": 100, "path": "README.md", "start_line": 1}
{"path":"README.md","content":"# 🐾 Zoo\r\n\r\n**Autonomous AI agents that work your Forgejo issues \u0026 pull requests.**\r\n\r\nZoo watches a [Forgejo](https://codeberg.org/forgejo/forgejo) instance for issue and pull request events, then dispatches them to configured AI agents running in isolated Docker containers. Each agent has its own role, LLM model, and personality — like a menagerie working together to keep your projects moving.\r\n\r\n---\r\n\r\n## ✨ Features\r\n\r\n- **Multi-agent orchestration** — Assign different tasks to specialized agents (reviewers, managers, developers).\r\n- **Event-driven routing** — Configure which agent handles `issue:new`, `pr:new`, `issue:comment`, `issue:assigned`, and more.\r\n- **LLM flexibility** — Plug in any OpenAI-compatible API; each agent gets its own model choice.\r\n- **Isolated execution** — Agents run in Docker containers with full filesystem access but no persistence between runs.\r\n- **Live dashboard** — Real-time web UI showing active agents, logs, and job history.\r\n- **Webhook \u0026 polling support** — React to events instantly via webhooks, or fall back to polling.\r\n\r\n---\r\n\r\n## 🚀 Quick Start\r\n\r\n### Prerequisites\r\n\r\n| Requirement | Version |\r\n|-------------|---------|\r\n| Go | 1.26+ |\r\n| Docker | Latest |\r\n| Forgejo | Any (self-hosted or codeberg.dk) |\r\n| LLM endpoint | OpenAI-compatible API |\r\n\r\n### Configuration\r\n\r\nCopy the example config and customize it:\r\n\r\n```bash\r\ncp zoo.hcl.example zoo.hcl\r\n```\r\n\r\nEdit `zoo.hcl` with your Forgejo credentials, LLM tokens, and agent definitions. See the [configuration reference](#-configuration-reference) below.\r\n\r\n### Running\r\n\r\n```bash\r\ngo build -o zoo ./cmd/zoo\r\n./zoo\r\n```\r\n\r\nThe daemon starts on port `:8080` by default. Open your browser to see the dashboard.\r\n\r\n---\r\n\r\n## 👥 Meet the Agents\r\n\r\nZoo ships with four pre-configured agents, each with a distinct role:\r\n\r\n| Agent | Role | Suggested LLM | Handles |\r\n|----------|-----------------------|---------------------|----------------------------------|\r\n| **leon** | Engineering Manager | Qwen 3.8 | New issues, comments |\r\n| **greg** | Senior Developer | Qwen 3.8 | Pull request reviews |\r\n| **anna** | UI/UX Designer | Qwen 3.6 | Design-related issues \u0026 PRs |\r\n| **mika** | Junior Developer | Qwen 3.6 | Assigned issues |\r\n\r\nYou can add, remove, or reassign agents freely in your `zoo.hcl`.\r\n\r\n---\r\n\r\n## ⚙️ Configuration Reference\r\n\r\nAll settings live in a single HCL file (`zoo.hcl`). Here's what each section controls:\r\n\r\n### LLM Definitions\r\n\r\nDefine one or more LLM endpoints. Agents reference these by name.\r\n\r\n```hcl\r\nllm \"Qwen 3.6\" {\r\n openai = \"https://your-llm-endpoint\"\r\n token = \"YOUR_API_TOKEN\"\r\n model = \"model-name\"\r\n}\r\n```\r\n\r\n### Forgejo Connection\r\n\r\n```hcl\r\nforgejo {\r\n url = \"https://code.stdio.dk\"\r\n token = \"ZOO_SERVICE_TOKEN\"\r\n webhook_secret = \"SHARED_SECRET\" # optional if using polling\r\n}\r\n```\r\n\r\n### Environment\r\n\r\n```hcl\r\nenvironment {\r\n docker_image = \"golang:latest\" # base image for agent containers\r\n max_live_agents = 5 # concurrent agent limit\r\n}\r\n```\r","start_line":1,"end_line":100,"total_lines":217,"truncated":true}
{"find": "Zoo ships with four pre-configured agents, each with a distinct role:", "path": "README.md", "replace": "The example configuration includes four agents, each with a distinct role:"}
1 occurrences replaced
{"end_line": 85, "path": "README.md", "start_line": 68}
{"path":"README.md","content":"\r\nAll settings live in a single HCL file (`zoo.hcl`). Here's what each section controls:\r\n\r\n### LLM Definitions\r\n\r\nDefine one or more LLM endpoints. Agents reference these by name.\r\n\r\n```hcl\r\nllm \"Qwen 3.6\" {\r\n openai = \"https://your-llm-endpoint\"\r\n token = \"YOUR_API_TOKEN\"\r\n model = \"model-name\"\r\n}\r\n```\r\n\r\n### Forgejo Connection\r\n\r\n```hcl\r","start_line":68,"end_line":85,"total_lines":217,"truncated":true}
{"context_after": 3, "context_before": 3, "query": "Meet the Agents"}
/project/README.md-49- /project/README.md-50---- /project/README.md-51- /project/README.md:52:## 👥 Meet the Agents /project/README.md-53- /project/README.md-54-The example configuration includes four agents, each with a distinct role: /project/README.md-55-
{"command": "cd /project && git diff README.md"}
diff --git a/README.md b/README.md index 297d0f3..a0600f8 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ The daemon starts on port `:8080` by default. Open your browser to see the dashb ## 👥 Meet the Agents -Zoo ships with four pre-configured agents, each with a distinct role: +The example configuration includes four agents, each with a distinct role: | Agent | Role | Suggested LLM | Handles | |----------|-----------------------|---------------------|----------------------------------|
{"command": "cd /project && git add README.md && git commit -m \"docs: clarify agents are in example config, not pre-configured\""}
[issue-43-anna 438a663] docs: clarify agents are in example config, not pre-configured 1 file changed, 1 insertion(+), 1 deletion(-)
{"command": "cd /project && git push origin issue-43-anna"}
ERROR CALLING TOOL: command failed: command exited with status 128
{"command": "cd /project && git remote -v"}
origin https://code.stdio.dk/abrander/zoo.git (fetch) origin https://code.stdio.dk/abrander/zoo.git (push)
{"command": "cd /project && git push origin issue-43-anna 2>&1"}
ERROR CALLING TOOL: command failed: command exited with status 128
{"command": "cd /project && git push origin issue-43-anna -v 2>&1 || true"}
Pushing to https://code.stdio.dk/abrander/zoo.git fatal: could not read Username for 'https://code.stdio.dk': terminal prompts disabled
{"args":
["origin", "issue-43-anna"]
, "subcommand": "push"}
To https://code.stdio.dk/abrander/zoo.git b24f77c..438a663 issue-43-anna -> issue-43-anna
{"body": "Thanks for catching that, @abrander! You're absolutely right — Zoo doesn't pre-configure any agents; they only appear in the example config file (`zoo.hcl.example`). I've updated the wording from \"Zoo ships with four pre-configured agents\" to \"The example configuration includes four agents\" to accurately reflect that.\n\nCommitted as `438a663`."}
Comment posted