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.5.tar.gz (113.1 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.5-py3-none-any.whl (114.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: duckclaw-0.1.5.tar.gz
  • Upload date:
  • Size: 113.1 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.5.tar.gz
Algorithm Hash digest
SHA256 2fd07ef4af32224da8639ff6a4db10d031af0d1cecd391a6a77957905de6833f
MD5 55371a2f45cd7143233fa50566fae691
BLAKE2b-256 ae516b74daa12d5b3d94b0d0581eb418b2793276e77770c2c1163d661450c0e2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: duckclaw-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 114.1 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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 b1b1fb70319d4d4115a0bd05d216b7156bda5d0c7c8466c3e48ab72dbddd53fd
MD5 6146ca45e5ac3d314d29a9065ee2de59
BLAKE2b-256 1e3339a454475f457f2ba48b0ef03a09e255aefa794062824565c074deb6129d

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