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

OpenClaw PARA Skill Automatically Organizes Files Using Tiago Forte's Method
A developer created an OpenClaw skill that enforces the PARA method (Projects, Areas, Resources, Archives) for automatic file organization, moving files from a messy root directory into structured folders.

OpenClaw plugin adds persistent memory with Engram server
A developer built a TypeScript plugin connecting OpenClaw agents to Engram, a Go-based memory server using SQLite with FTS5 search. The plugin provides 11 tools, 4 lifecycle hooks, and automatic recall that injects relevant memories into prompts before each agent turn.

srclight: Fully Local Code Indexing MCP Server with Ollama Embeddings
srclight is an MCP server for deep code indexing that runs 100% locally with no API keys or cloud calls. It uses tree-sitter AST parsing for 11 languages, SQLite FTS5 for keyword search, Ollama for embeddings, and GPU-accelerated cosine similarity via cupy.

Claude Ops: Browser Dashboard for Claude Code Live Status and Subagent Tracking
A free, local macOS browser dashboard that tracks Claude Code session live status, current tool, spawned subagents, and sends OS push notifications when input is needed.