v1.2.0
Memclaw 1.2.0
Two big additions on top of 1.1.2: reminders across all bots, and a
ground-up migration of the agent layer onto claude-agent-sdk with a
pluggable backend abstraction.
✨ Reminders (all bots)
Ask any Memclaw bot to remind you about something — one-shot or recurring.
▎ Remind me tomorrow at 9am to call Alex
▎ Reminder #4 scheduled for 2026-05-21T09:00.
▎ Remind me every 5 hours to drink water
▎ Reminder #5 scheduled, repeating every 18000s.
▎ Show my reminders
▎ #4 at 2026-05-21T09:00: call Alex
▎ #5 at 2026-05-20T15:00: drink water (every 18000s)
- New tools:
reminder_create,reminder_list,reminder_cancel. - Reminders persist in the existing SQLite database; a background poll
loop (60 s) fires them and delivers them back to the originating
Telegram / Slack / WhatsApp chat. - Delivery failures retry up to 5 times before being marked
failed— a
blocked bot or deleted channel can't spam errors forever. - Fired reminders are appended to the agent's conversation history so a
reply to a reminder ("done", "snooze 10 minutes") has context. - The Telegram handler reads
reply_to_messageso replying to any
earlier message — not just a reminder — gives the agent that quoted
text as context.
⚡ Migrated to claude-agent-sdk + pluggable backends
The agent no longer talks to the raw Anthropic API. It now runs through
claude-agent-sdk (which
drives the claude CLI subprocess) behind a neutral AgentBackend
protocol — so future SDKs (Cursor, OpenAI Agents) can plug in by
implementing the same surface.
Two ways to authenticate Claude
The setup wizard now asks which mode you want:
- Claude subscription (Pro / Max / Team) — generate a long-lived
token withclaude setup-tokenand Memclaw saves it as
CLAUDE_CODE_OAUTH_TOKEN. Requests are billed against your plan and
the per-message cost line is omitted from logs. - Anthropic API key (pay-as-you-go) — set
ANTHROPIC_API_KEYto an
sk-ant-…key. Cost is logged per turn.
Only one is set at a time; switching modes via memclaw configure
scrubs the other from both .env and the live process env so a stale
token can't shadow the selection.
Pluggable backends
AGENT_BACKEND (env var) selects which agent SDK to use; defaults to
claude. The wizard auto-shows a selector panel once a second backend
is registered. Adding a new backend is a self-contained file in
memclaw/backends/ that implements the AgentBackend protocol — no
changes to the agent core, tools, or bot handlers required.
🎨 Wizard polish
- ANSI Shadow wordmark banner ("mem" white, "claw" cyan) above the
welcome panel. - Secret prompts now mask after the first 4 characters — pasted tokens
don't sit in the scrollback in clear. ALLOWED_USER_IDSis required duringmemclaw telegramsetup;
without it the bot rejected every message (calling it optional was
misleading).
🛠 Telegram resilience
A new error handler downgrades NetworkError / TimedOut from the
polling socket (laptop sleep/wake, transient connectivity drops) to a
single warning line and lets python-telegram-bot retry quietly,
instead of dumping a full traceback on every reconnect.
📚 Docs
- README rewritten: badge → Claude Agent SDK; new Claude
authentication subsection explains the two modes; variables table
restructured around the OR between OAuth/API key;AGENT_BACKEND
row added; filesystem-guardrail bullet updated (the path check now
lives in the tool executor, not the SDK).
⬆️ Upgrade notes
pip install --upgrade memclaw # or `pipx upgrade memclaw`
Existing users will need to run memclaw configure once so the
wizard can pick the auth mode and write AGENT_BACKEND=claude. The old
ANTHROPIC_API_KEY continues to work — just pick "Anthropic API key" in
the wizard and Memclaw will read your existing value.
▎ ⚠️ Heads-up about AGENTS.md: if you set up Memclaw before 1.2.0,
▎ your ~/.memclaw/AGENTS.md is preserved as-is on upgrade and won't
▎ pick up the new reminders/SDK instructions. The reminders tools still
▎ work (they're loaded from the agent's tool catalog, not AGENTS.md),
▎ but if you want the latest instruction text, delete the file — the
▎ next `memclaw` command will regenerate it from defaults.
📦 Dependencies
- Dropped anthropic (>= 0.40.0).
- Added claude-agent-sdk (>= 0.1.59, < 0.2).