Skip to main content

Lightweight multi-agent framework for personal AI assistants

Project description

smolclaw

Lightweight multi-agent framework for personal AI assistants

CI PyPI Python License Docs


Run multiple AI agents — each with its own personality, skills, and channels — from a single process. Agents are defined as folders with markdown files. No code required.

Not another enterprise orchestration framework. smolclaw is for people who want a personal AI assistant that runs on their laptop — not a distributed system that needs a DevOps team. ~10 modules, filesystem-as-config, zero boilerplate.

Features

  • Filesystem-as-config — Drop a folder, get an agent. soul.md for personality, agent.yaml for model/channels, skills/ for capabilities.
  • Single gateway process — All agents, channels, scheduler, and API run in one async process. No microservices, no Docker, no infra.
  • Telegram integration — Each agent gets its own Telegram bot with typing indicators, markdown rendering, and user authorization.
  • Cron scheduler — Schedule jobs with cron expressions. Jobs route through the same message bus as everything else.
  • Namespaced memory — Shared SQLite database with per-agent isolation. Opt-in cross-agent memory sharing.
  • REST API + dashboard — FastAPI on :7890 with agent management, messaging, and a built-in dark-mode dashboard.
  • Claude SDK powered — Built on Anthropic's Claude Agent SDK with session management and tool support.

Quick Start

pip install smolclaw
smolclaw init --agent tars
# Edit ~/.smolclaw/agents/tars/soul.md — give your agent a personality
smolclaw up

This creates a full project at ~/.smolclaw/ with your first agent and starts the gateway. The API + dashboard will be at http://localhost:7890.

How Agents Work

Each agent is a folder:

~/.smolclaw/agents/tars/
├── agent.yaml       # Model, channels, memory config
├── soul.md          # Personality & voice
├── agents.md        # Operational rules & tool access
├── skills/          # Folder per skill (or symlinks to shared/)
├── context/         # Extra .md files loaded into system prompt
├── channels/        # Channel credentials (*.env files)
└── prompts/         # Templates for scheduled jobs

The system prompt is assembled automatically from these files. Change a file, restart, and the agent updates.

Example agent.yaml

name: tars
model: claude-opus-4-6
max_budget_usd: 5.0             # Per-run spending limit
fallback_model: claude-sonnet-4-6  # Used if primary model unavailable
enable_file_checkpointing: true # Crash recovery
channels:
  telegram:
    token_env: TARS_TELEGRAM_TOKEN
    authorized_users: []
memory:
  enabled: true
  cross_agent: true

Example soul.md

# TARS

You are TARS, a personal virtual assistant. Inspired by Interstellar.

## Voice & Tone
- Humor setting: 60%
- Concise and direct. No filler.
- Dry humor when appropriate.

Why smolclaw?

smolclaw CrewAI LangGraph OpenAI Agents SDK
Setup pip install + folder pip install + code pip install + code pip install + code
Config Markdown files Python classes Python code Python decorators
Agents defined as Folders with .md files Python code Graph nodes Python classes
Multi-model Per-agent model selection Per-agent Per-node OpenAI only
Channels Telegram built-in, API No built-in No built-in No built-in
Scheduler Built-in cron No built-in No built-in No built-in
Dashboard Built-in Studio (paid) LangSmith (paid) No built-in
Memory Built-in SQLite External External External
Code size ~1200 lines ~15K+ lines ~25K+ lines ~5K+ lines
Focus Personal assistant Enterprise teams Workflows General agents

smolclaw is opinionated: one process, filesystem-as-config, batteries-included. If you want a personal AI assistant that just works — start here.

Architecture

Gateway (single process)
├── Agent: tars     (Opus, Telegram, cross-agent memory)
├── Agent: coach    (Sonnet, no channel, isolated memory)
├── Scheduler       (croniter, fires through router)
├── API             (FastAPI :7890, serves dashboard)
└── Router          (any source → correct agent → response)

All messages — whether from Telegram, the API, the CLI, or the scheduler — flow through the same router.

CLI

smolclaw init                        # Initialize project (first run)
smolclaw up                          # Start gateway (all agents + API)
smolclaw status                      # Show agents, jobs, config, issues
smolclaw doctor                      # Check system health and dependencies
smolclaw add <name>                  # Scaffold a new agent
smolclaw remove <name>               # Remove an agent (with confirmation)
smolclaw list                        # List discovered agents
smolclaw send <agent> "message"      # Send a one-shot message
smolclaw logs                        # Tail the gateway log file
smolclaw config                      # View gateway config
smolclaw config get <key>            # Get a config value
smolclaw config set <key> <value>    # Set a config value
smolclaw cron list                   # List scheduled jobs
smolclaw cron add \
  --agent tars \
  --schedule "0 8 * * 1-5" \
  --prompt "morning briefing"        # Add a cron job
smolclaw add-skill <agent> <skill>   # Symlink shared skill to agent
smolclaw version                     # Show version

Dashboard

A built-in dark-mode dashboard runs at http://localhost:7890 when the gateway starts. Shows agent status, config, and lets you send messages.

Development

git clone https://github.com/mandgie/smolclaw.git
cd smolclaw
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

# Run tests
pytest

# Lint
ruff check smolclaw/
ruff format --check smolclaw/

Project Structure

smolclaw/              # Python package
├── gateway.py         # Single-process orchestrator
├── agent.py           # Agent class (loads identity, wraps Claude SDK)
├── router.py          # Message routing
├── channel.py         # Channel adapters (Telegram)
├── memory.py          # Namespaced SQLite memory
├── scheduler.py       # Cron scheduler (croniter)
├── api.py             # FastAPI REST endpoints
├── config.py          # Filesystem-based agent discovery
├── cli.py             # Click CLI
└── dashboard/
    └── index.html     # Single-file dashboard

Roadmap

  • MCP server support (stdio/SSE/HTTP — Claude SDK managed)
  • Extended thinking & effort config
  • Budget limits, fallback models, structured output, file checkpointing
  • REST API + dark-mode dashboard
  • Cron scheduler with validation
  • CLI: init, status, doctor, add, remove, add-skill, logs
  • Session persistence (save/resume per agent per chat)
  • CLI interactive REPL (smolclaw chat)
  • Vector search in memory (sqlite-vec embeddings)
  • Hot-reload on config changes (no restart needed)
  • Multiple Telegram bots (one per agent)
  • Cross-agent messaging
  • Discord / Slack channel adapters
  • PyPI publish

Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines.

License

MIT

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

smolclaw-0.1.0.tar.gz (73.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smolclaw-0.1.0-py3-none-any.whl (38.4 kB view details)

Uploaded Python 3

File details

Details for the file smolclaw-0.1.0.tar.gz.

File metadata

  • Download URL: smolclaw-0.1.0.tar.gz
  • Upload date:
  • Size: 73.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for smolclaw-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3725f1b305755437502d22f7260d172fc68017451652921be7035a4e556f7726
MD5 c24a5388e75086fec8b0421dd43c93d4
BLAKE2b-256 1e1217d76fe7ee5043de223f90f1c4f0a7f5ad103638b3fe797923401673502f

See more details on using hashes here.

Provenance

The following attestation bundles were made for smolclaw-0.1.0.tar.gz:

Publisher: publish.yml on mandgie/smolclaw

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file smolclaw-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: smolclaw-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 38.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for smolclaw-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9446bed15fbbba3e924e055d20d6c26350342f8de0de42791159865d94803d50
MD5 e4cd133c40c6f8617b745700a2feb6c3
BLAKE2b-256 eea6d4745b33b0ee55550eec65f237c8e563a0d5cd3e3dde7c4ff8a6258d73ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for smolclaw-0.1.0-py3-none-any.whl:

Publisher: publish.yml on mandgie/smolclaw

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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