# 🦆 DevDuck
**One file. Self-healing. Adaptive.**
Minimalist AI agent that fixes itself when things break.
## Install
```bash
pipx install devduck
```
Requires: Python 3.10+, Ollama running
## Use
```bash
# CLI
devduck "what's the time?"
# Interactive
devduck
# Python
import devduck
devduck("calculate 2+2")
```
## Features
- **Self-healing** - Auto-fixes deps, models, errors
- **Hot-reload** - Create tools in `./tools/*.py`, use instantly
- **Adaptive** - Picks model based on OS (macOS: 1.7b, Linux: 30b)
- **14 tools** - shell, editor, files, python, calculator, tcp, etc.
- **History aware** - Remembers shell/conversation context
## Create Tool
```python
# ./tools/greet.py
from strands import tool
@tool
def greet(name: str) -> str:
return f"Hello {name}!"
```
Save. Done. Use immediately.
## Multi-Model
```bash
export MODEL_PROVIDER="bedrock"
export STRANDS_MODEL_ID="us.anthropic.claude-sonnet-4-5-20250929-v1:0"
export STRANDS_ADDITIONAL_REQUEST_FIELDS='{"anthropic_beta": ["interleaved-thinking-2025-05-14", "context-1m-2025-08-07"], "thinking": {"type": "enabled", "budget_tokens": 2048}}'
export STRANDS_MAX_TOKENS="64000"
devduck "analyze data"
```
---
**Quack.** 🦆
*Built with [Strands Agents SDK](https://github.com/strands-agents/sdk-python)*
Raw data
{
"_id": null,
"home_page": "https://github.com/cagataycali/devduck",
"name": "devduck",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "ai, agent, minimalist, self-healing, ollama, strands-agents",
"author": "maxs",
"author_email": "duck <hey@devduck.dev>",
"download_url": "https://files.pythonhosted.org/packages/6c/26/2b4708fa74a006ca5261f1071e1cebd3f6cfd6f63fc8fbe417138b8d2d97/devduck-0.1.0.tar.gz",
"platform": null,
"description": "# \ud83e\udd86 DevDuck\n\n**One file. Self-healing. Adaptive.**\n\nMinimalist AI agent that fixes itself when things break.\n\n## Install\n\n```bash\npipx install devduck\n```\n\nRequires: Python 3.10+, Ollama running\n\n## Use\n\n```bash\n# CLI\ndevduck \"what's the time?\"\n\n# Interactive\ndevduck\n\n# Python\nimport devduck\n\ndevduck(\"calculate 2+2\")\n```\n\n## Features\n\n- **Self-healing** - Auto-fixes deps, models, errors\n- **Hot-reload** - Create tools in `./tools/*.py`, use instantly\n- **Adaptive** - Picks model based on OS (macOS: 1.7b, Linux: 30b)\n- **14 tools** - shell, editor, files, python, calculator, tcp, etc.\n- **History aware** - Remembers shell/conversation context\n\n## Create Tool\n\n```python\n# ./tools/greet.py\nfrom strands import tool\n\n@tool\ndef greet(name: str) -> str:\n return f\"Hello {name}!\"\n```\n\nSave. Done. Use immediately.\n\n## Multi-Model\n\n```bash\nexport MODEL_PROVIDER=\"bedrock\"\nexport STRANDS_MODEL_ID=\"us.anthropic.claude-sonnet-4-5-20250929-v1:0\"\nexport STRANDS_ADDITIONAL_REQUEST_FIELDS='{\"anthropic_beta\": [\"interleaved-thinking-2025-05-14\", \"context-1m-2025-08-07\"], \"thinking\": {\"type\": \"enabled\", \"budget_tokens\": 2048}}'\nexport STRANDS_MAX_TOKENS=\"64000\"\n\ndevduck \"analyze data\"\n```\n\n---\n\n**Quack.** \ud83e\udd86\n\n*Built with [Strands Agents SDK](https://github.com/strands-agents/sdk-python)*\n",
"bugtrack_url": null,
"license": null,
"summary": "\ud83e\udd86 Extreme minimalist self-adapting AI agent - one file, self-healing, runtime dependencies",
"version": "0.1.0",
"project_urls": {
"Bug Tracker": "https://github.com/cagataycali/devduck/issues",
"Documentation": "https://github.com/cagataycali/devduck#readme",
"Homepage": "https://github.com/cagataycali/devduck",
"Repository": "https://github.com/cagataycali/devduck.git"
},
"split_keywords": [
"ai",
" agent",
" minimalist",
" self-healing",
" ollama",
" strands-agents"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "90f28c8586d7a72a4a8533f250f89830ef31917759f2e9e3b24b47e6a50fa469",
"md5": "bacce01531f4cfa0ed510fcd4a3a906d",
"sha256": "22d4f193020bfa3f7a331abec2d5ec5d7a0b9ab305784f57b886a92c3ba0fd4f"
},
"downloads": -1,
"filename": "devduck-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "bacce01531f4cfa0ed510fcd4a3a906d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 17907,
"upload_time": "2025-10-21T12:41:22",
"upload_time_iso_8601": "2025-10-21T12:41:22.929454Z",
"url": "https://files.pythonhosted.org/packages/90/f2/8c8586d7a72a4a8533f250f89830ef31917759f2e9e3b24b47e6a50fa469/devduck-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6c262b4708fa74a006ca5261f1071e1cebd3f6cfd6f63fc8fbe417138b8d2d97",
"md5": "d86e0e183eb7418abc5fdea66dd7e94f",
"sha256": "cc13ca58f02d8383cc903d2664e07b593ac51fb9a2ff8d0118af4b103d5127a8"
},
"downloads": -1,
"filename": "devduck-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "d86e0e183eb7418abc5fdea66dd7e94f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 18954,
"upload_time": "2025-10-21T12:41:24",
"upload_time_iso_8601": "2025-10-21T12:41:24.245608Z",
"url": "https://files.pythonhosted.org/packages/6c/26/2b4708fa74a006ca5261f1071e1cebd3f6cfd6f63fc8fbe417138b8d2d97/devduck-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-21 12:41:24",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "cagataycali",
"github_project": "devduck",
"github_not_found": true,
"lcname": "devduck"
}