Skip to content

v1.2.0

Choose a tag to compare

@emanuilo emanuilo released this 20 May 09:20
· 11 commits to main since this release

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_message so 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 with claude setup-token and 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_KEY to 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_IDS is required during memclaw telegram setup;
    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).