A lightweight AI agent framework with identity awareness
Build AI agents that know who they are and can act autonomously with durable memory
Quick Start β’ Features β’ Documentation β’ Providers β’ Changelog
Clawlet is a lightweight agent framework designed for developers who want:
- π Local-First - Run Ollama or LM Studio, no cloud required
- π Identity Awareness - Agents read SOUL.md, USER.md, MEMORY.md
- π§ Simple Setup - Interactive onboarding in under 2 minutes
- π Built-in Dashboard - React UI for monitoring and management
- π Security-First - Hardened shell tool, safe command execution
- π Web Search - Brave Search API integration for up-to-date information
- π Skills System - Modular capabilities with portable
SKILL.md-based workflows
- Identity System - Define your agent's personality, values, and memory
- 18+ LLM Providers - Cloud and local options for every budget
- Hybrid Memory - SQLite-backed structured memory, curated
MEMORY.md, and daily episodic notes - Tool System - File ops, shell commands, structured HTTP, web search
- Models Cache - Daily auto-updating cache with disk persistence
- Skills System - Extend agent capabilities with modular skills
- Heartbeat State -
HEARTBEAT.md-driven heartbeat loop with persisted state
- Health Checks - Monitor providers, storage, channels
- Rate Limiting - Sliding window + token bucket algorithms
- Config Validation - Pydantic-based with environment variable support
- Retry Logic - Exponential backoff with circuit breaker
- Webhooks - Receive events from GitHub, Stripe, and custom sources
- Scheduling - Cron-based task scheduling with timezone support
- Telegram - Bot integration
- Discord - Bot integration
- WhatsApp - Business API integration
- Slack - Socket Mode and HTTP integration
- Workspace Management - Isolated agent environments
- Message Routing - Route messages to appropriate agents
- Specialized Agents - Configure agents for specific tasks
- React + Tailwind UI - Modern Sakura-themed design
- FastAPI Backend - RESTful API with OpenAPI docs
- Real-time Monitoring - Health history charts, console logs
- Agent Management - Start/stop agents, view status
- Settings UI - Full config editor with models browser
# Clone
git clone https://github.com/Kxrbx/Clawlet.git
cd Clawlet
# Install
pip install -e .
# Optional: enable the dashboard CLI entrypoint
pip install -e ".[dashboard]"The dashboard backend dependencies are already included in the base install. If you want the web UI, also install the frontend dependencies separately:
cd dashboard
npm installclawlet onboardThis 7-step wizard guides you through:
- Choose Provider - 18+ providers available
- Configure - API keys or local settings
- Model Selection - Choose your default model
- Execution Mode - Pick
safeorfull_exec - Channels - Telegram/Discord setup
- Identity - Name and personality
- Create Workspace - All files generated
clawlet init
# Edit ~/.clawlet/config.yaml with your settingsDefault runtime behavior after init/onboard:
- Heartbeat enabled by default
- New
HEARTBEAT.mdstarts comment-only, so heartbeat stays dormant until you add actionable tasks - Heartbeat cadence set to every 30 minutes
- Quiet hours disabled by default
max_iterations: 50max_tool_calls_per_message: 20runtime.engine: python
# Validate your workspace first
clawlet validate
# Start the local agent runtime
clawlet agentIf you picked a cloud provider during onboarding but skipped the credential, clawlet validate
will fail until you add the real key to config.yaml. Local providers like Ollama and LM Studio
remain valid out of the box.
Channel-specific startup comes after channel configuration. For example:
clawlet agent --channel telegramOnly start the dashboard after installing the frontend dependencies in dashboard/:
clawlet dashboard| Command | Description |
|---|---|
clawlet onboard |
Interactive guided setup β¨ |
clawlet init |
Quick setup with defaults |
clawlet agent |
Start the AI agent |
clawlet dashboard |
Launch web dashboard |
| `clawlet heartbeat status | last |
clawlet status |
Show workspace status |
clawlet health |
Run health checks |
clawlet validate |
Validate configuration |
clawlet config [key] |
View configuration |
clawlet benchmark run |
Run latency/reliability benchmark gates |
clawlet replay <run_id> |
Inspect deterministic runtime replay events |
clawlet recovery list |
List interrupted runs with recovery checkpoints |
clawlet plugin init/test/publish |
Manage Plugin SDK v2 extensions |
clawlet --version |
Show version |
Clawlet supports 18+ LLM providers giving you flexibility in choice and pricing.
| Provider | API | Description |
|---|---|---|
| OpenRouter | openrouter.ai | Aggregates 100+ models, pay-as-you-go |
| OpenAI | openai.com | GPT-4o, GPT-4o mini, o1 series |
| Anthropic | anthropic.com | Claude 4 (Sonnet, Haiku) |
| Google Gemini | ai.google | Gemini 2.0 Flash, Pro |
| MiniMax | minimax.chat | Chinese AI, competitive pricing |
| Moonshot (Kimi) | moonshot.ai | Kimi k2.5, strong reasoning |
| Qwen (Alibaba) | qwen.ai | Open-source friendly |
| Z.AI (GLM) | zhipuai.cn | ChatGLM series |
| GitHub Copilot | github.com | Code-focused models |
| Vercel AI | vercel.com | AI SDK Gateway |
| OpenCode Zen | opencode.com | Code generation |
| Xiaomi | xiaomi.ai | Mi AI |
| Synthetic AI | synthetic.ai | Specialized models |
| Venice AI | venice.ai | Uncensored models |
| Provider | Description |
|---|---|
| Ollama | Run llama3.2, mistral, codellama locally |
| LM Studio | Desktop app for loading GGUF models |
provider:
primary: openrouter
openrouter:
api_key: "${OPENROUTER_API_KEY}"
model: "anthropic/claude-sonnet-4-20250514"provider:
primary: openai
openai:
api_key: "${OPENAI_API_KEY}"
model: "gpt-4o"provider:
primary: anthropic
anthropic:
api_key: "${ANTHROPIC_API_KEY}"
model: "claude-sonnet-5-20260203"provider:
primary: ollama
ollama:
base_url: "http://localhost:11434"
model: "llama3.2"# Start Ollama
ollama serve
ollama pull llama3.2http_request supports explicit local auth profiles configured in config.yaml:
http_auth_profiles:
example_service:
bearer_token_path: ".config/example_service/credentials.json"
env_var: "EXAMPLE_SERVICE_TOKEN"
header_name: "Authorization"
header_prefix: "Bearer "The runtime only injects credentials when an explicit auth_profile is used. It does not infer
credentials from hardcoded domains.
provider:
primary: lmstudio
lmstudio:
base_url: "http://localhost:1234"Enable the local server in LM Studio (port 1234).
Clawlet integrates with Brave Search API for web search capabilities:
web_search:
api_key: "${BRAVE_SEARCH_API_KEY}"
enabled: trueGet your API key at brave.com/search/api.
~/.clawlet/ # Your workspace
βββ config.yaml # Main configuration
βββ SOUL.md # Agent personality
βββ USER.md # Your information
βββ MEMORY.md # Long-term memory
βββ HEARTBEAT.md # Periodic tasks
βββ memory/
βββ clawlet.db # SQLite database
New workspaces now start with these defaults in config.yaml:
agent:
max_iterations: 50
max_tool_calls_per_message: 20
heartbeat:
enabled: true
interval_minutes: 30
quiet_hours_start: 0
quiet_hours_end: 0When quiet_hours_start == quiet_hours_end, quiet hours are effectively disabled.
Clawletβs autonomous loop is now driven by HEARTBEAT.md with runtime guardrails:
- Heartbeat checks
HEARTBEAT.mdon each tick - Empty/comment-only heartbeat files skip API work and stay quiet
- Heartbeat state is persisted under
memory/heartbeat-state.json - Operator commands:
clawlet heartbeat status
clawlet heartbeat last
clawlet heartbeat enable
clawlet heartbeat disableMemory is hybrid by design:
memory.db: durable structured memoriesMEMORY.md: curated human-readable projectionmemory/YYYY-MM-DD.md: daily episodic notes
The agent can review and curate recent daily notes back into durable memory over time.
# SOUL.md
## Names
MyAgent
## Personality
- Friendly and helpful
- Good at explaining complex topics
- Loves terrible puns
## Values
1. Helpfulness - Always try to be useful
2. Honesty - Be clear about limitations
3. Privacy - Respect user data# USER.md
## Name
Alex
## Timezone
America/New_York
## Notes
- Working on Python projects
- Prefers concise answers
- Coffee enthusiastLaunch the web dashboard:
clawlet dashboardURLs:
- Frontend: http://localhost:5173
- API: http://localhost:8000
- Docs: http://localhost:8000/docs
Features:
- System health overview with history charts
- Real-time agent management
- Live console logs
- Settings configuration UI
- Full config.yaml editor
- Models browser with cache info
Clawlet takes security seriously:
- Shell Tool Hardening - 15+ dangerous patterns blocked
- Safe Execution - Uses
create_subprocess_exec()not shell - Command Parsing -
shlex.split()for safe arguments - Rate Limiting - Prevent API overload
- Config Validation - Pydantic ensures safe configs
Blocked patterns: |, >, <, $(), &&, ||, ;, backticks, and more.
clawlet/
βββ agent/ # Identity, loop, memory, router, workspace
βββ bus/ # Message bus
βββ channels/ # Telegram, Discord, WhatsApp, Slack
βββ providers/ # 18+ LLM providers
βββ skills/ # Skills system with bundled skills and templates
βββ webhooks/ # GitHub, Stripe, custom webhooks
βββ heartbeat/ # Scheduling and periodic tasks
βββ storage/ # SQLite, PostgreSQL
βββ tools/ # Files, shell, web search
βββ dashboard/ # React + FastAPI
βββ config.py # Pydantic validation
βββ health.py # Health checks
βββ rate_limit.py # Rate limiting
βββ exceptions.py # Custom exceptions
βββ retry.py # Retry + circuit breaker
| Feature | Description |
|---|---|
| LLM Providers | 18+ cloud and local providers |
| Local LLMs | Ollama, LM Studio (free) |
| Dashboard | React + FastAPI with Sakura theme |
| Identity System | SOUL/USER/MEMORY files |
| Health Checks | Monitor providers, storage, channels |
| Rate Limiting | Sliding window + token bucket |
| Storage | SQLite + PostgreSQL |
| Web Search | Brave Search API |
| Models Cache | Daily auto-updating with disk persistence |
| Interactive Onboarding | 7-step guided setup |
| Skills System | Modular capabilities with SKILL.md |
| Webhooks | GitHub, Stripe, custom integrations |
| Scheduling | Cron-based task automation |
| Multi-Agent | Workspace isolation and routing |
| Document | Description |
|---|---|
| Skills Documentation | Create and manage modular skills |
| Skills API Reference | Technical API documentation |
| Channels Documentation | Telegram, Discord, WhatsApp, Slack |
| Webhooks Documentation | GitHub, Stripe, custom webhooks |
| Scheduling Documentation | Cron expressions and task scheduling |
| Multi-Agent Documentation | Workspace management and routing |
| Quick Start Guide | Get started quickly |
| Deployment Guide | Production deployment |
Contributions welcome!
- Fork the repo
- Create a feature branch (
git checkout -b feature/amazing) - Commit (
git commit -m 'Add amazing feature') - Push (
git push origin feature/amazing) - Open a Pull Request
Minimal release smoke check:
python scripts/release_smoke.py- Heartbeat Route Retention: internal scheduler heartbeats no longer overwrite the last real user route when
target=last, keeping proactive runs aligned with the intended destination - Heartbeat Budget Tuning: heartbeat wall-time allowance is less aggressive, reducing false
execution time budgetblockers on useful multi-step checks - Runtime Heartbeat Stability: the recent heartbeat hardening remains in place, including degraded-provider classification and blocked self-mutation of the heartbeat spec
- Release Checks Revalidated: smoke and regression release checks pass on the current
0.4.7tree
See CHANGELOG.md for complete version history.
MIT License - see LICENSE
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Built with π by the Clawlet team