Skip to main content

Powerful AI โ€” built for you, built with you, built securely. Local-first personal AI assistant.

Project description

๐Ÿฆ†๐Ÿค– DuckClaw

Powerful AI โ€” built for you, built with you, built securely. Local-first personal AI assistant with a 4-tier permission engine.

License: MIT Python 3.11+ Status: Alpha


The Problem

Local AI assistants are powerful โ€” but most of them are built to be capable first and safe second.

  • ๐Ÿ”“ Broad permissions by default โ€” agents act before asking
  • ๐Ÿฆ  No skill verification โ€” third-party extensions run with full process privileges
  • ๐Ÿ’ธ $30โ€“150/month in API costs with no controls
  • ๐Ÿงฉ Complex setup โ€” Node.js, build tools, platform-specific dependencies
  • ๐Ÿ•ต๏ธ No audit trail โ€” you can't see what it did or why
  • ๐Ÿ’‰ Prompt injection โ€” web pages and emails can manipulate your assistant

The Solution

pip install duckclaw
duckclaw setup   # 2-minute guided wizard
duckclaw start   # opens localhost:8741

That's it. No Node.js. No WSL2. No build tools.


What's Different

Common Problem DuckClaw Solution
Agents act without asking 4-tier Permission Engine (SAFE / NOTIFY / ASK / BLOCK)
No preview before actions Action Preview Mode โ€” see exactly what happens before it happens
No audit trail Full audit log โ€” every action logged, searchable, exportable
Unverified third-party skills Sandboxed skill execution + SHA-256 integrity verification
Prompt injection vulnerable Context isolation โ€” trusted instructions vs untrusted data
Complex multi-tool setup Pure Python โ€” pip install and done
No cost controls Cost tracking per conversation, budget alerts

Feature Coverage

14 fully implemented ยท 6 partial ยท 6 post-MVP

๐Ÿ‘๏ธ Vision & Screen

Feature Status Notes File
Screenshot Capture โœ… ASK-tier approval + LLM vision analysis skills/screen_capture.py
Camera Capture โš ๏ธ Photo only โ€” video capture not yet supported skills/camera.py
Media Understanding (Vision) โš ๏ธ Images sent to cloud LLM โ€” no local PII scan or LLaVA yet skills/screen_capture.py

๐ŸŒ Browser & Web

Feature Status Notes File
Browser Automation โœ… Playwright: navigate, click, fill forms, extract text, screenshot skills/web_browser.py
Web Search โš ๏ธ DuckDuckGo (free) โ€” Brave Search / SearXNG not yet added skills/web_search.py

๐Ÿ’ฌ Messaging

Feature Status Notes File
Telegram โœ… Full + inline approve/deny buttons bridges/telegram_bridge.py
Discord โœ… Slash commands + button components for approvals bridges/discord_bridge.py
WhatsApp โŒ Post-MVP (Month 2) โ€”
Slack / Signal / iMessage / Teams โŒ Post-MVP โ€”

๐Ÿง  Intelligence & Memory

Feature Status Notes File
Persistent Memory โœ… SQLite facts + ChromaDB semantic search, viewable/deletable in dashboard memory/store.py
Multi-Model Support โš ๏ธ 100+ models via LiteLLM, cost tracking โ€” smart routing by task complexity not yet added llm/router.py
Context Engine (Plugin Interface) โŒ Lifecycle hooks (bootstrap, ingest, compact) โ€” Post-MVP (Month 2) โ€”

โš™๏ธ Automation & Skills

Feature Status Notes File
Shell Execution โœ… Blocklist for dangerous commands + NOTIFY/ASK tiers skills/shell_runner.py
File System Access โœ… Scoped allowlist + hardcoded credential blocklist skills/file_manager.py
Proactive Background Tasks โœ… APScheduler: cron, reminders, morning briefs โ€” defaults to NOTIFY skills/scheduler.py
Skill & Plugin System โš ๏ธ SHA-256 verify + permission declarations โ€” no external marketplace yet skills/registry.py
Code Sandbox (Python/JS exec) โŒ Sprint 4 candidate โ€”
Self-Improving / Skill Creation โŒ Post-MVP (Month 2) โ€” draft-state review flow planned โ€”

๐ŸŽ™๏ธ Voice

Feature Status Notes File
Voice Mode โŒ Post-MVP (Month 3) โ€” Whisper STT + Piper TTS planned โ€”

๐Ÿ›ก๏ธ Security & Trust

Feature Status Notes File
Permission Engine (4-tier) โœ… SAFE/NOTIFY/ASK/BLOCK โ€” per-skill, configurable, conservative defaults permissions/engine.py
Audit Preview Mode โœ… ActionPreview before every ASK action โ€” approve/deny on all platforms permissions/engine.py
Full Audit Log โœ… Every action logged, searchable, filterable, exportable JSON/CSV permissions/engine.py
Prompt Injection Defense โœ… Context isolation + dual-pass output scanning + audit logging of signals security/context_isolation.py
Sandboxed Skill Execution โš ๏ธ SHA-256 + permissions declared โ€” OS-level subprocess isolation not yet enforced skills/base.py
Web Dashboard โœ… Chat, memory, audit log, settings @ localhost:8741 dashboard/
One Command Install โœ… pip install duckclaw && duckclaw start โ€” pure Python, no Node.js pyproject.toml

Coming in Sprint 4

  • ๐Ÿ“ฆ PyPI publish (pip install duckclaw)
  • ๐Ÿงช Test suite (pytest โ€” permissions, memory, skills)
  • ๐Ÿ“– Full documentation
  • ๐ŸŽฌ Demo video
  • ๐Ÿ”’ OS-level subprocess sandboxing (enforced CPU/memory limits)

Permission System

Every action DuckClaw takes is classified into one of four tiers:

Tier Color Examples Behavior
SAFE ๐ŸŸข Answer questions, read memory Auto-approved, silent
NOTIFY ๐Ÿ”ต Browse web, read files Auto-approved, user informed
ASK ๐ŸŸก Screenshots, send messages, run commands Requires explicit approval
BLOCK ๐Ÿ”ด Delete system files, access credentials Never allowed
You: "Take a screenshot and analyze it"

DuckClaw: โš ๏ธ Permission Required
  Action: Take a screenshot of your screen
  Risk: ๐ŸŸข Low  |  โœ“ Reversible
  [โœ— Deny]  [โœ“ Approve]

Quick Start

# Install
pip install duckclaw

# Configure (guided wizard)
duckclaw setup

# Start
duckclaw start

# Or just chat in terminal
duckclaw chat

Requirements: Python 3.11+. That's it.


Architecture

Message โ†’ Orchestrator โ†’ Permission Engine โ†’ Action
              โ†•               โ†•
          LLM Router      Audit Log
              โ†•
         Memory Store
         (SQLite + ChromaDB)

Dashboard at localhost:8741 โ€” Chat, Memory, Audit Log, Settings.


Config

DuckClaw uses ~/.duckclaw/duckclaw.yaml. See duckclaw.yaml.example for all options.

Default model: Claude Haiku (fast, cheap). Free alternative: Gemini 2.0 Flash (set during duckclaw setup).


Roadmap

See ROADMAP.md for the full 30-day plan.

30 days โ†’ 27 features โ†’ GitHub launch.


Contributing

DuckClaw is MIT licensed and built in public. Issues, PRs, and ideas welcome.

AI assistance you can actually trust โ€” because it works with you, not around you.


โญ Star this repo if you believe AI assistants should ask before they act.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

duckclaw-0.1.2.tar.gz (77.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

duckclaw-0.1.2-py3-none-any.whl (73.7 kB view details)

Uploaded Python 3

File details

Details for the file duckclaw-0.1.2.tar.gz.

File metadata

  • Download URL: duckclaw-0.1.2.tar.gz
  • Upload date:
  • Size: 77.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for duckclaw-0.1.2.tar.gz
Algorithm Hash digest
SHA256 705e1fe3ec25eea7922b82119425bf559f9382c359c42545c7795b3cf535f9a4
MD5 1e2c2b312453b361131e155e075c053c
BLAKE2b-256 ca6e864da9f7171524097236365de6109b0cf23ef37a418a96951af70f0ae6d3

See more details on using hashes here.

File details

Details for the file duckclaw-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: duckclaw-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 73.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for duckclaw-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5619e0c3f5dc90295c6268d812474c914de66f50800f2f9a29ba18140c4ab743
MD5 df5748bb37af5f1f1df2278d1dc6d889
BLAKE2b-256 cf05bea102e86115eac41bffa8a5955ecfc20bed0cb6f4642f69c2e625cdc2ec

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page