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.3.tar.gz (89.3 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.3-py3-none-any.whl (87.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: duckclaw-0.1.3.tar.gz
  • Upload date:
  • Size: 89.3 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.3.tar.gz
Algorithm Hash digest
SHA256 63ff47f117fc09290abc62282ca5e7ba59f35430958586cc6102aec4a5fd0b1e
MD5 446689fa8a05c7e177dbcbc5c9e407ca
BLAKE2b-256 e7208fbaf5bcb4a6b89cc5e317d93cf0dd2a587cadaf7b75b0ce0992568616c5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: duckclaw-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 87.2 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ae17b3b9be275cdc8d304335e19bde822d7b46f252c6455debaf425144e88df4
MD5 6c3641c37fe6178d89b37ee1b20d9341
BLAKE2b-256 299fd82024ac107303ffdddc90832a47fadf1ddbc0d4f4b85de2663b4fa86297

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