A lightweight personal AI assistant framework
Project description
ShibaClaw 🐕
Security-first AI agent with built-in WebUI, native provider support, and hardened tools.
📢 Welcome to ShibaClaw v0.1.5! This patch fixes an issue where Telegram and other optional channels would not start in Docker. It also resolves a crash in memory consolidation and adds a SHIBACLAW_DEBUG env var. See the Changelog for details.
ShibaClaw is a security-first AI agent for your terminal and browser. Security isn't glue code — it's the foundation: CVE auditing at install time, prompt-injection wrapping on every tool result, SSRF/DNS-rebinding protection, shell hardening, workspace sandboxing, and bearer-token auth are all built into the core.
22 providers · 11 chat channels · built-in WebUI · long-term memory · cron · heartbeat · skills · MCP
Quick Start
Docker
git clone https://github.com/RikyZ90/ShibaClaw.git && cd ShibaClaw
docker compose up -d --build
docker exec -it shibaclaw-gateway shibaclaw print-token
Open http://localhost:3000, paste the token, and follow the onboard wizard.
pip
pip install shibaclaw
shibaclaw web --with-gateway # starts WebUI + agent engine on :3000
Open http://localhost:3000 and follow the onboard wizard.
Prefer the CLI? shibaclaw onboard runs the same guided setup from the terminal.
Security, Built In
Defenses that are normally scattered across app glue or external proxies — in ShibaClaw they ship in the core, on by default.
| Layer | What it does |
|---|---|
| 🔍 Install-time audit | Audits pip and npm before execution — blocks critical/high CVEs before they land |
| 🛡️ Prompt-injection wrapping | Wraps every tool result in a randomized <tool_output_...> boundary and sanitizes closing tags |
| 🔒 Shell hardening | 20+ deny patterns, escape normalization (\x.., \u....), internal URL detection |
| 🌐 Network guard | SSRF filtering, redirect revalidation, DNS-rebinding-safe resolution |
| 📁 Workspace sandbox | File tools and file browser locked to the configured workspace |
| 🔑 Access control | Bearer token auth, constant-time checks, channel allowlists, optional rate limiting |
| ⚡ Distributed engine | UI (≈128 MB) decoupled from agent brain (≈256 MB+) — minimal footprint per process |
Full disclosure policy and supported versions: SECURITY.md
WebUI
The WebUI is built-in — no separate frontend or Node.js required.
- Chat — multi-session conversations with live streaming of tool calls, thinking blocks, and elapsed time
- Agent Profiles — switch personas per session (Hacker, Builder, Planner, Reviewer) with dynamic avatars
- File browser — browse, view, and edit workspace files in-browser (sandboxed to workspace)
- Voice — speech-to-text via OpenAI-compatible audio APIs and browser-native TTS
- Settings — configure agent, provider, tools, MCP servers, channels, skills, and OAuth from a single panel
- Onboard wizard — guided first-time setup: pick a provider, enter API key or start OAuth, choose a model
- Context viewer — inspect the full system prompt and token usage breakdown
- Gateway monitor — health check and one-click restart
- Auto-update — checks GitHub releases every 12h, notifies in the UI and on all active channels
- Responsive — works on desktop and mobile
Agent Profiles
Switch the agent's personality on-the-fly without losing context. Each profile overrides the system prompt (SOUL.md) while keeping model, memory, and tools shared. Profiles are per-session — run a security audit in one tab and plan architecture in another.
Built-in profiles: Default · Builder · Planner · Reviewer · Hacker (elite security expert with 50+ tool recommendations, OWASP/MITRE/NIST methodologies, CVSS scoring, and a custom cyber-shiba avatar).
Create your own profiles interactively — the agent walks you through defining the persona and saves everything automatically.
Features
Memory & Workflow
- Three-level memory —
USER.md(personal profile),MEMORY.md(operational facts),HISTORY.md(timestamped session archive with TF-IDF + recency search) - Proactive learning — every N messages the agent silently consolidates new learnings into memory, without interrupting the conversation
- Focused background delegation — the
spawntool can offload a specific task and report back into the same session when done - Advanced reasoning — supports extended thinking (Anthropic), reasoning effort (OpenAI o-series), and DeepSeek-R1 chains
Tools
| Tool | What it does |
|---|---|
exec |
Shell commands with 20+ deny-pattern guards, encoding normalization, and CVE scanning |
read_file / write_file / edit_file |
Paginated reads, fuzzy find-and-replace, auto-created parent dirs |
web_search |
Brave, Tavily, SearXNG, Jina, or DuckDuckGo (fallback, no key needed) |
web_fetch |
HTTP fetch with SSRF protection, DNS rebinding defense, and redirect validation |
memory_search |
Ranked search over session history (TF-IDF + recency + importance scoring) |
message |
Cross-channel messaging with media attachments |
cron |
Schedule one-time or recurring jobs (cron expressions, intervals, ISO dates, timezone-aware) |
spawn |
Optional background worker for a focused task; reports back to the main session when done |
| MCP | Connect any MCP server (stdio, SSE, or streamable HTTP) — tools auto-registered as mcp_<server>_<tool> |
Channels
Telegram · Discord · Slack · WhatsApp · Matrix · Email · DingTalk · Feishu · QQ · WeCom · MoChat
All channels route through the same message bus. WhatsApp uses a Node.js bridge (Baileys) for QR-based linking.
Skills
8 built-in skills (GitHub, weather, summarize, tmux, cron reference, memory guide, skill-creator, ClawHub browser). Skills are Markdown files with YAML frontmatter and optional scripts — create your own or install from ClawHub. Pin frequently-used skills to load them on every conversation.
Automation
- Cron service — persistent, timezone-aware scheduled jobs stored in
jobs.json. Supportsevery,cron, andatschedules. Overdue jobs fire on startup. - Heartbeat — periodic wake-up reads
HEARTBEAT.md, uses its frontmatter for session/profile/targets, keeps enable/interval in global settings, skips the LLM entirely whenActive Tasksis empty, and only asks the model to decide when real active work exists.
If you are upgrading from an older release, it is recommended to reset your workspace HEARTBEAT.md once so you get the new frontmatter-based base template. Existing files still work, but they will not gain the new editable settings block automatically.
Supported Providers
ShibaClaw uses native SDKs (no LiteLLM proxy) and auto-detects the right provider from the model name.
API Key
| Provider | Env Variable |
|---|---|
| OpenAI | OPENAI_API_KEY |
| Anthropic | ANTHROPIC_API_KEY |
| DeepSeek | DEEPSEEK_API_KEY |
| Google Gemini | GEMINI_API_KEY ¹ |
| Groq | GROQ_API_KEY |
| Moonshot | MOONSHOT_API_KEY |
| MiniMax | MINIMAX_API_KEY |
| Zhipu AI | ZAI_API_KEY |
| DashScope | DASHSCOPE_API_KEY |
¹ Setting GEMINI_API_KEY in the environment is sufficient — no stored key required. The Google OpenAI-compatible endpoint is pre-configured.
Gateway / Proxy
OpenRouter · AiHubMix · SiliconFlow · VolcEngine · BytePlus — auto-detected by key prefix or api_base.
Local
Ollama (http://localhost:11434) · vLLM · any OpenAI-compatible endpoint.
OAuth
| Provider | Flow | Setup |
|---|---|---|
| GitHub Copilot | Device flow, auto token refresh | shibaclaw provider login github-copilot or WebUI Settings |
| OpenAI Codex | PKCE browser flow | shibaclaw provider login openai-codex or WebUI Settings |
🔌 MCP Ecosystem
ShibaClaw is fully compatible with the Model Context Protocol (MCP), transforming the agent from a standalone tool into a plug-and-play AI hub.
Instead of relying solely on built-in skills, ShibaClaw can connect to any MCP-compliant server, instantly granting your agent access to a vast universe of external data sources and professional tools without modifying a single line of core code.
Why this matters:
- Instant Extensibility: Plug in community-made MCP servers for Google Drive, Slack, GitHub, PostgreSQL, and more.
- Standardized Tooling: Leverage a universal protocol for AI-to-tool communication, ensuring stability and interoperability.
- Decoupled Architecture: Keep your agent lean while scaling its capabilities through a distributed network of MCP servers.
Configure your MCP servers directly in the Settings panel to start expanding ShibaClaw's horizons.
Architecture
Docker Compose
| Service | Role | Default Port |
|---|---|---|
shibaclaw-gateway |
Core agent loop, message bus, channel integrations | 19999 (HTTP) · 19998 (WS) |
shibaclaw-web |
WebUI (Starlette + native WebSocket), cron service | 3000 |
Both share the ~/.shibaclaw/ volume (config, workspace, memory, cron jobs, media cache).
Single-process mode
shibaclaw web runs agent + WebUI + cron in a single process — no gateway container needed.
Stack
| Layer | Technology |
|---|---|
| Server | Uvicorn → Starlette (ASGI) |
| Real-time | Native WebSocket (/ws on WebUI, port 19998 on gateway) |
| Frontend | Vanilla JS · Marked.js · Highlight.js |
| Sessions | JSONL append-only per session (cache-friendly for LLM prompt prefixes) |
Resource usage
| Component | Idle | Peak (install/compile) |
|---|---|---|
| Gateway | ~120 MB | ~350 MB |
| WebUI | ~120 MB | ~350 MB |
Docker Compose sets a 512 MB limit / 256 MB reservation per container. Tool output is streamed with bounded buffers, so long-running commands (apt, npm install) can't blow up memory.
CLI Reference
shibaclaw web # Start WebUI (agent + cron in-process)
shibaclaw gateway # Start gateway only (for Docker split)
shibaclaw onboard # CLI-based first-time setup wizard
shibaclaw agent -m "Hello" # One-shot message via terminal
shibaclaw agent # Interactive REPL with history
shibaclaw status # Provider, workspace, OAuth health check
shibaclaw print-token # Show WebUI auth token
shibaclaw channels status # List enabled channels
shibaclaw provider login <p> # OAuth login (github-copilot, openai-codex)
[0.1.5] - 2026-04-24
Fixed
- Telegram not starting in Docker — The Docker image now correctly installs the
[telegram]optional dependency, resolving an issue where the bot was configured but failed to start polling.
[0.1.4] - 2026-04-24
Fixed
AttributeError: 'list' object has no attribute 'strip'in memory consolidation for multi-part message content. (Thanks @itskun! — #18)shibaclaw channels statusnow shows channels with missing optional dependencies instead of silently hiding them.
Added
SHIBACLAW_DEBUG=trueenv var to enable debug logging without--verbose.
Troubleshooting
| Problem | Try |
|---|---|
| General status check | shibaclaw status |
| Container logs | docker logs shibaclaw-gateway / docker logs shibaclaw-web |
| WebUI won't connect | Check token with shibaclaw print-token, verify port binding |
| Provider errors | shibaclaw status shows API key and OAuth state |
| Security policy | SECURITY.md |
Contributing
See CONTRIBUTING.md — PRs welcome.
Channels are extensible via Python entry points (shibaclaw.integrations). Skill creation is documented in docs/CHANNEL_PLUGIN_GUIDE.md and the built-in skill-creator skill.
🌟 Support ShibaClaw
If you find this project useful or if it helps you build a more secure and powerful AI workflow, please consider giving it a Star!
Your support helps ShibaClaw grow, reach more developers, and stay updated with the latest AI advancements. Thank you for being part of the journey! ❤️
Inspired by NanoBot by HKUDS — MIT License.
⭐ Star the repo · 🐛 Open an issue · 🔧 Send a PR · 💬 Join the Discord
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file shibaclaw-0.1.5.tar.gz.
File metadata
- Download URL: shibaclaw-0.1.5.tar.gz
- Upload date:
- Size: 1.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e23742514e5080792cdeae614d059826d280e54e34b496ec3b4f5b50693015c9
|
|
| MD5 |
7f11335dd057d6f2073886614ecf37f4
|
|
| BLAKE2b-256 |
82b61540990d4d8146974a5ec57eb842b227abb6481f8370d0fb84999a775521
|
Provenance
The following attestation bundles were made for shibaclaw-0.1.5.tar.gz:
Publisher:
publish.yml on RikyZ90/ShibaClaw
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
shibaclaw-0.1.5.tar.gz -
Subject digest:
e23742514e5080792cdeae614d059826d280e54e34b496ec3b4f5b50693015c9 - Sigstore transparency entry: 1367963877
- Sigstore integration time:
-
Permalink:
RikyZ90/ShibaClaw@03e6596de2d67cf790d3aa35188ded6b3294fd4b -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/RikyZ90
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@03e6596de2d67cf790d3aa35188ded6b3294fd4b -
Trigger Event:
push
-
Statement type:
File details
Details for the file shibaclaw-0.1.5-py3-none-any.whl.
File metadata
- Download URL: shibaclaw-0.1.5-py3-none-any.whl
- Upload date:
- Size: 2.0 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18ac64bef0291dc7e0615c3ed369042e8c87d0b35f0ac365d45d849da8d020d0
|
|
| MD5 |
6f62f66ec6aa794690a5b2841151dd9f
|
|
| BLAKE2b-256 |
4ac3b11b283e21642f843fed598b763f7f52216966b5bd2142c50eda1f4b4442
|
Provenance
The following attestation bundles were made for shibaclaw-0.1.5-py3-none-any.whl:
Publisher:
publish.yml on RikyZ90/ShibaClaw
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
shibaclaw-0.1.5-py3-none-any.whl -
Subject digest:
18ac64bef0291dc7e0615c3ed369042e8c87d0b35f0ac365d45d849da8d020d0 - Sigstore transparency entry: 1367963956
- Sigstore integration time:
-
Permalink:
RikyZ90/ShibaClaw@03e6596de2d67cf790d3aa35188ded6b3294fd4b -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/RikyZ90
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@03e6596de2d67cf790d3aa35188ded6b3294fd4b -
Trigger Event:
push
-
Statement type: