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.1.tar.gz (77.7 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.1-py3-none-any.whl (73.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: duckclaw-0.1.1.tar.gz
  • Upload date:
  • Size: 77.7 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.1.tar.gz
Algorithm Hash digest
SHA256 505af544a896b6ce6af3477266c7e5cd31e6be59637338260eaef298fe835958
MD5 b446db42017e559222003d539f4181e3
BLAKE2b-256 b084b3aa16030b83ce95e95351dac5903016f0116671ef61c962744462081451

See more details on using hashes here.

File details

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

File metadata

  • Download URL: duckclaw-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 73.6 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f2d4719d3ec2b37711e83669116030b8da490e32697c757ad6cda7d8c5ed9c14
MD5 527376fdbc079d4bbc5043d4b6b7d18d
BLAKE2b-256 3e5f4cda6781896aeb54444c0e24f5a88b9f97be3860045633a09160cfa9cdb1

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