OpenClaw Context Meter Plugin Shows Telegram Token Usage Percentage

What It Does
The openclaw-context-meter plugin automatically shows token usage percentage after every Telegram bot response. After each response, it sends a small footer like: 📊 45k / 200k (22%). When compaction happens (tokens drop significantly), it shows: 📊 30k / 200k (15%) — compacted from 150k.
The Problem It Solves
Previously, there was no easy way to see how full the context window is without constantly typing /status. The plugin provides automatic visibility into token consumption.
Development Journey
v1 — The OOM Disaster: Initially used execSync("openclaw models list --json") to dynamically discover model context windows. This spawned a full OpenClaw process (~2GB RAM) every time the plugin loaded. With the plugin loading 4-5 times at startup (once per agent/runtime), this caused: 2GB gateway + 5 × 2GB subprocesses = 12GB → instant OOM. The OOM killer took out sshd and NetworkManager, making servers completely unreachable, creating an infinite restart loop.
v2 — The Lightweight Fix: Hardcoded context windows for 40+ models. Zero subprocesses, zero memory overhead. Key realization: never use execSync in OpenClaw plugins, as even a simple CLI query spawns the entire runtime with all plugins and TypeScript compilation.
Why No Fork Needed
The plugin originally forked OpenClaw to patch before_compaction/after_compaction hooks, but upstream changes made this unnecessary:
- v2026.3.13+ — upstream now passes
sessionId+agentId+sessionKeyin compaction hook context - v2026.3.22+ — built-in
🧹 Compacting context...notifications (issue #38805) made their compaction code unnecessary - v2026.3.22+ — built-in
/usage tokens|full|costcommand for basic token display
The plugin now focuses on what's still missing: context window percentage display.
Features
- Zero-cost — uses
agent_end+message_senthooks only, no extra API calls - No subprocesses — model context windows are hardcoded (no
execSyncOOM risk) - Smart filtering — skips
tool_useturns, only sends footer after final text response - Debounced — waits 1.5s after last message to avoid footer mid-stream
- Multi-agent — works with multiple agents and Telegram accounts
- Compaction detection — detects token drops and shows before/after stats
Known Limitations
- Some providers (like Qwen) return
totalTokens: 0— footer won't show for those models - Hardcoded context windows might be wrong for newer models — pulled from v2026.3.22 source
- Telegram only for now (sends footer via Bot API)
Installation
cd ~/.openclaw/extensions
npm pack openclaw-context-meter
tar xzf openclaw-context-meter-*.tgz
mv package context-meter
rm openclaw-context-meter-*.tgzAdd to openclaw.json:
{
"plugins": {
"allow": ["context-meter"],
"entries": {
"context-meter": {
"enabled": true
}
}
}
}Requires OpenClaw >= 2026.3.22.
📖 Read the full source: r/openclaw
👀 See Also

Two Free Claude Code Skills: Tutorial Generator and Prompt Fixer
Two new free Claude Code skills: create-tutorial generates code reading tutorials from your actual project files, and prompter rewrites typo-filled prompts into actionable instructions. Both are MIT licensed and install via GitHub.

Auto Router vs Sonnet: Cost Savings vs Response Quality
Open Router's Auto Router feature dynamically selects LLMs based on context complexity, offering significant cost savings (0.8 cents vs 0.00071 cents per request), but users report degraded response quality compared to Sonnet 4.6.

Benchmark Shows CLI Tool Reduces Claude Code Token Costs by 32% Through Structural Navigation
A developer built a Rust CLI tool that gives Claude Code agents structural navigation commands like 'show me a 180-token summary of this 6,000-token class.' Benchmarking on Sonnet 4.6 across 54 automated runs showed 32% lower cost per task and 67% more code edits per session.

Phaselock: An AI Agent Control System Inspired by Parenting Techniques
Phaselock is an open-source Agent Skill that implements four control mechanisms for AI agents: explicit gates before action, immediate feedback on mistakes, constrained choices, and mechanical rule enforcement. It works with Claude Code, Cursor, Windsurf, and tools supporting hooks.