← Back to Projects
CLI Tool

A_OpenClaw

A lightweight, Python-based personal AI assistant with file-based memory, scheduled data gathering, and a pluggable skills system.

PythonAnthropicOpenAIOllamaDockerTelegram

Overview

A_OpenClaw is a local-first personal AI assistant inspired by OpenClaw, reimplemented as a lightweight Python stack tailored for single-user use. It runs from a terminal or Telegram, maintains persistent markdown-based memory, gathers data from APIs/files/RSS feeds on a schedule, and lets the LLM invoke auto-discovered Python skills. The goal: keep OpenClaw’s architectural ideas (adapter pattern, skill registry, heartbeat, memory injection) while dropping the WebSocket gateway, multi-device session model, and 23+ adapter monorepo overhead.

Key Features

  • Multi-provider LLM support — Anthropic, OpenAI, Ollama (local), and llama.cpp (local) via a single OpenAI-compatible client with retry and exponential backoff
  • File-based memory system — Human-readable markdown files (user.md, memory.md, skill.md, daily logs) with automatic context truncation and compaction
  • Heartbeat engine — Scheduled background thread that gathers data from REST APIs, local files, and RSS feeds, then routes it through the LLM
  • Channel adapters — CLI (default, zero dependencies) and Telegram (with sender allowlist) behind a factory pattern
  • Auto-discovering skills — Drop a Python file into skills/ or the mounted custom_skills/ volume and the LLM can invoke it via JSON blocks; built-ins cover web search, notes, and reminders
  • Production hardening — 88 passing tests, config validation, PII-scrubbing structured logs via Logger_Package, and Docker Compose deployment with hot-reloadable skills

Technical Decisions

Chose Python over the original TypeScript monorepo to simplify the data-gathering and LLM-integration surface, where Python’s ecosystem is stronger. File-based markdown memory won over a database because it is transparent, git-versionable, and directly LLM-friendly — no serialization layer needed. The adapter and skill systems both use factory + auto-discovery patterns so new channels and capabilities can be added without touching the core. Ollama and llama.cpp reuse the openai client via base_url overrides, avoiding extra dependencies for offline mode.