Claw Skeleton AI Agent
πͺΌ A personal AI assistant that lives in Telegram β every topic is its own isolated Claude Code agent with layered persistent memory and proactive cron heartbeats. Open skeleton of a real, running system.
Claw Skeleton is an open-source ai agent by LuKresXD, written mainly in TypeScript, with 24 GitHub stars and the MIT license. Its code was last updated Aug 24, 2026.
Claw πͺΌ
A personal AI chief-of-staff that lives in Telegram
Every chat topic is its own isolated Claude Code agent β with a persona, persistent memory, and a web of cron jobs that quietly keep an eye on your inbox, calendar, and life.
Free skeleton β a June 2026 snapshot of the core engine. The living, complete system is Claw Pro Β· private repo Β· paid.
</div>β οΈ Read this first β this is the old, free version
This repo is a frozen mid-2026 snapshot of Claw's core engine, with roughly half the upgrades the real system has today. It builds, it runs, and it's a genuinely good base to study or hack on β but it is not maintained, some edges are rough by design, and every integration that makes Claw an actual chief-of-staff (inbox, calendar, health, voice calls, Mac control, financeβ¦) was stripped out.
Test it freely. If you want the real thing β Claw Pro.
What it actually is
Not a wrapper around a chat completion. Claw turns a Telegram supergroup into a team of agents: each forum topic spawns a long-lived, resumable Claude Code session with its own persona, its own memory file, and its own model tier. "Coding", "Coach" and "General" are genuinely different assistants that never bleed into each other β and because they're Claude Code sessions, they can read files, run commands, edit their own source, and ship a fix to themselves while you watch.
A normal exchange looks like this:
You β "why is the deploy timer not firing?"
Claw Β· π reads the unit file, checks systemctl, greps the logs β live work-log
Β· β³ 40% Β· checking timer state β self-updating progress
β "OnCalendar was UTC, your box is CDT β fixed and reloaded.
Next run 04:15 in 3h." β native rich text
Β· reacts π«‘ to your message, logs the fix to today's daily note
Architecture

The turn lifecycle β what happens between your message and the reply:

The memory pipeline β why it remembers you tomorrow:

π Deeper dive: ARCHITECTURE.md β turn lifecycle, session isolation, the memory pipeline, the rich-output path, and the CLI toolbelt, with more diagrams.
What's in this free snapshot
| Feature | |
|---|---|
| π§ | Per-topic isolated agents β each forum topic is its own persistent Claude Code session, persona and memory file. Sub-topics in a supergroup get their own session too, keyed by thread. |
| π | Memory that survives restarts β append-only daily notes, promoted by a nightly LLM rollup into a lean MEMORY.md plus per-topic files, re-injected at session start. |
| β° | Proactive, not just reactive β a shared cron runner fires scheduled Claude jobs and routes results to the right topic. |
| π¬ | Native rich Telegram output β tables, task lists, fenced code, $LaTeX$, spoilers, <details> collapsibles, timezone-aware live date entities, maps, inline media β with automatic HTML fallback. |
| π§° | A CLI toolbelt the bot wields itself β post/edit a live progress line, drop a reaction, send media mid-turn. |
| π | Personas & guest mode β per-topic personas, prefix routing, and a stub-then-edit guest mode you can @mention from a chat the bot isn't even in. |
| β»οΈ | Self-maintenance β Claw reads and edits its own source, rebuilds, restarts; smart auto-clear summarizes idle sessions into memory instead of nuking them mid-thought. |
| πΆ | Incognito β a DM outside any topic runs on an ephemeral persona with no memory writes, and its messages delete themselves after a period of inactivity. |
| π‘ | Cross-topic live feed β every finished turn appends one line that other topics see as [Live] context, so agents know what just happened elsewhere without waiting for the nightly rollup. |
| π₯ | Group chats β a rolling per-group transcript so the bot can follow a conversation it only occasionally gets mentioned in. |
| π§ | Production patterns β model-alias indirection, periodic context re-injection, streaming message edits, per-topic queueing, systemd units with reliability drop-ins. |
Quick start
You need: a Linux box (or any machine that stays on), Node 22+, a Claude Code subscription with the CLI logged in, and a Telegram account.
# 1 Β· Create the bot
# @BotFather β /newbot β copy the token
# @BotFather β /mybots β Bot Settings β Group Privacy β OFF
#
# 2 Β· Create your UI: a Telegram supergroup, then enable Topics in its settings.
# Add your bot as an admin. Make a topic per agent: Coding, Coach, Generalβ¦
#
# 3 Β· Install
git clone https://github.com/LuKresXD/claw-skeleton.git claw-bot && cd claw-bot
npm install
cp .env.example .env # fill BOT_TOKEN, CHAT_ID, OWNER_USER_ID
# 4 Β· Point it at your topics
# edit src/config.ts β topic ids, personas, memory files, model tiers
# write personas/*.md and cron-prompts/*.txt for your own life
# 5 Β· Run
npm run build && npm start
Finding the ids you need: message your group, then open
https://api.telegram.org/bot<TOKEN>/getUpdates β chat.id is your CHAT_ID,
from.id is your OWNER_USER_ID, and message_thread_id is the topic id for each thread.
Then read CLAUDE.md. It's the spec that defines what the assistant is,
how it remembers, and how it behaves. The TypeScript is the engine; CLAUDE.md is the soul β
adapt it and you've adapted the assistant.
# review the paths inside first β the units use absolute paths
sudo cp systemd/claw-bot.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now claw-bot
journalctl -u claw-bot -f # watch it come up
The .service.d/ drop-ins carry the restart/reliability policy; systemd/README.md
explains the pattern, and claw-cron-*.{service,timer} is the template for a scheduled job.
claw-skeleton/
βββ CLAUDE.md # the blueprint β what the assistant is and how it remembers
βββ .env.example # environment variables you fill in
βββ src/
β βββ bot/ # grammY router, middleware, commands, guest mode
β βββ claude/ # session lifecycle: runner, auto-clear, checkpoints, prompt builder
β βββ telegram/ # sender β rich output, streaming edits, HTML fallback
β βββ tools/ # the CLI toolbelt the bot shells out to
β βββ config.ts # topics, personas, models, constants
β βββ index.ts # entry point
βββ cron-scripts/ # shared cron runner framework
βββ cron-prompts/ # example scheduled-job prompts
βββ systemd/ # unit + timer patterns
βββ personas/ # example personas
</details>
π Claw Pro β the full system
The private repo is the complete, current, production system, sanitized for you to deploy. Every subsystem below ran for months in the real daily-driver deployment, and the docs keep the operational lessons that explain why each piece is built the way it is.

Free vs Pro
| π This snapshot | π Claw Pro | |
|---|---|---|
| Per-topic isolated agents | β | β |
| Layered memory + nightly rollup | β | β + memory search, incremental flush |
| Rich Telegram output | β | β + collages, cards, diagrams, charts |
| CLI toolbelt | 2 tools | 15+ tools (polls, watchers, delegation, diagrams, hosting) |
| Personas & guest mode | β | β + partner mode (isolated 2nd user) |
| Session lifecycle | auto-clear | + /rewind, structured /compact, checkpoints |
| Model routing | single account | multi-account pool, wall detection, usage cards |
| Email + calendar pipeline | β | β deterministic, ledger-backed |
| Package tracking Β· finance | β | β |
| Health / wearables | β | β with statistical insights |
| Phone calls | β | β realtime voice, IVR navigation |
| Browser agent | β | β persistent, survives turns |
| Mac remote control | β | β fail-closed physical approval gate |
| Hardware keypad | β | β |
| Idea engine | β | β |
| Your own Telegram account | β | β
read dialogs, history, search (claw-tg) |
| Custom slash commands | β | β
authored as vault .md files from your phone |
| Canvas Β· location Β· lunch watcher | β | β |
| Docs | this README | README + SETUP + CLI reference + operations runbook + per-subsystem guides |
| Maintained | frozen June 2026 | β current |
What Pro's subsystems actually do
<details> <summary><b>π¬ heartbeat-v2 β your inbox and calendar, handled</b></summary>Deterministic pipeline (not an agent guessing): SQLite ledger, one batched LLM classify per sync, per-topic alert routing, quiet hours, a code-rendered morning brief, open-loop tracking (an email still in your inbox = still needs you), reply-to-archive from chat, calendar auto-add with dedup + duplicate-twin cleanup, a live situation header injected into every session so every agent knows what's going on in your life, and an evening debrief that closes your day.
</details> <details> <summary><b>β€οΈ health-v2 β the read your wearable app won't give you</b></summary>Wearable / food / scale / sleep / water / journal ledger with idempotent any-date re-sync, a wake-triggered daily digest, weekly review, and cross-signal insights with FDR-gated statistics (so it reports correlations that survive multiple-comparison correction, not noise). Rendered as designed cards, not walls of numbers.
</details> <details> <summary><b>βοΈ voice β it makes the call for you</b></summary>Twilio + realtime speech-to-speech: the assistant dials real phone numbers, navigates IVR menus with synthesized keypresses, waits through hold music silently, pulls you into the call when a human picks up, and respects per-call/per-day budgets. Ships with a local simulator so you can test the whole flow without dialing anyone.
</details> <details> <summary><b>π» Mac control β with a physical off-switch</b></summary>Tailscale SSH behind a fail-closed Allow/Deny gate: every command the bot runs on your Mac pops a physical approval on that machine (asleep/locked/timeout = denied), with a phone prompt, piped-stdin visibility, optional time-boxed tap-free windows, and a keychain-context exec bridge for CLIs whose tokens live in the macOS keychain.
</details> <details> <summary><b>π΅ finance Β· π school Β· βοΈ location Β· π₯ͺ lunchdrop β the smaller ones</b></summary>finance keeps a balance and subscription ledger with deterministic new subscription / price change / cancelled alerts, plus daily asset snapshots (crypto wallets, BTC xpub walks, TON numbers, Steam skins) consolidated into a net-worth line every session can see. school syncs Canvas enrolments to the current term and pulls module files into your vault. location works out where you are from flight events on your calendar β no GPS β and feeds the timezone your agents reason in. lunchdrop watches an office lunch menu with zero model calls; it's really a worked example of the deterministic-scraper pattern you'd copy for your own site.
Each ships with setup, credentials, smoke tests and an honest list of what's broken.
</details> <details> <summary><b>π Engine upgrades this snapshot doesn't have</b></summary>Multi-account subscription routing with per-model wall detection and automatic fallback Β·
mid-turn steering (messages sent while a turn runs get injected into it) Β· multi-agent
work-log rendering Β· /rewind snapshot ring Β· structured /compact handoffs Β· incremental
mid-session memory flush Β· hybrid semantic+keyword memory search Β· usage/cost analytics cards Β·
partner mode Β· months of hardening this snapshot predates.
Get it
Email β me@lukres.dev (or open an issue here and I'll reach out).
You get an invite to the private repo β both tiers (main = clean core, full =
every subsystem), the full documentation set, and my setup notes.
FAQ
<details> <summary><b>Do I need a Claude API key?</b></summary>No β it drives the Claude Code CLI, so a Claude subscription with claude logged in on the
box is what it uses. Pro adds routing across several accounts.
This snapshot is single-owner by default (auth is an allowlist). Pro ships partner mode β a fully isolated second user with their own topics, personas, crons and workspace who can never see the owner's data β plus sealed group-chat workspaces.
</details> <details> <summary><b>What does it cost to run?</b></summary>A small VPS (2 GB RAM is enough) plus your Claude subscription. The heavy cost lever is session size, which is exactly why auto-clear, checkpoints and context-size-aware clearing exist.
</details> <details> <summary><b>Is my data going anywhere?</b></summary>It runs on your box. Memory is plain markdown in your filesystem (and optionally your own git repo / Obsidian vault). Nothing phones home.
</details>License
This snapshot: MIT β see LICENSE. Claw Pro is licensed separately (proprietary).
<div align="center"> <sub>Built by <a href="https://github.com/LuKresXD">@LuKresXD</a> Β· powered by Claude Code πͺΌ</sub> </div>Claw Skeleton alternatives
View more βSimilar ai agents in Communication, ranked by GitHub stars. Compare licence, recent activity and scan status before you choose.
| Name | Stars | Licence | Last updated | Scan |
|---|---|---|---|---|
| Claw Skeleton (this page) LuKresXD | 24 | MIT | Aug 24, 2026 | Scanned, no flagged issues |
| ChatTTS 2noise | 40k | AGPL-3.0 | Apr 10, 2026 | Scanned, no flagged issues |
| Nanoclaw nanocoai | 31k | MIT | Oct 30, 2026 | Scanned, no flagged issues |
| AgenticSeek Fosowl | 28k | GPL-3.0 | Oct 22, 2026 | Scanned, no flagged issues |
| Leon leon-ai | 18k | MIT | Oct 31, 2026 | Scanned, no flagged issues |
| SurfSense MODSetter | 17k | Apache-2.0 | Oct 30, 2026 | Scanned, no flagged issues |