maleme is a local-first Rust toolkit for collecting user-authored prompt history from coding agents, extracting profanity usage signals, and producing a compact visual analytics report.
The CLI is already published to npm, so you can run it directly without a global install:
npx maleme
bunx maleme
vpx maleme
The project is designed around three practical requirements:
Run maleme directly from the published npm package:
npx maleme
bunx maleme
vpx maleme
Or install it globally:
npm install -g maleme
maleme reads local chat history from supported coding agents, normalizes user-authored text input, computes profanity frequency metrics, and renders a standalone HTML report.
The current implementation supports:
The generated report includes:
SBAI)The repository is organized into a small set of focused modules:
src/agent_adapter/
Adapter implementations for each supported coding agent. Each adapter is responsible for:token usage extraction
src/fuck_detector.rs
Profanity lexicon loading and text matching logic.
src/report.rs
Report data aggregation, HTML rendering, and local browser launch.
data/profanity_lexicon.txt
Editable profanity lexicon embedded into the compiled binary at build time.
maleme operates against local files and databases already present on the host system. It does not require a remote service for analysis.
Current canonical sources:
~/.codex/sessions/~/.codex/archived_sessions/~/.codex/state_5.sqlite
Claude Code:
~/.claude/transcripts/~/.claude/projects/~/.claude/stats-cache.json
OpenCode:
~/.local/share/opencode/opencode.dbThe profanity lexicon is stored in:
Format:
term one
term two
term three
Rules:
Running the binary will:
~/DownloadsBuild:
cargo build
Run:
cargo run
Test:
cargo test
Install the published CLI from npm:
npm install -g maleme
The npm distribution follows the same general pattern used by Codex CLI:
maleme is the lightweight wrapper packagemaleme-<platform>-<arch> packages carry the native binariesCurrent npm targets wired in this repository:
darwin-arm64darwin-x64linux-arm64linux-x64win32-x64The repository includes a GitHub Actions workflow at .github/workflows/publish-npm.yml.
For the repeatable release checklist, see:
Release steps:
version in Cargo.tomlnode scripts/npm/sync-packages.mjsv0.1.0maleme packageLocal validation on the current machine:
node scripts/npm/sync-packages.mjs
cargo build --release
node scripts/npm/stage-binary.mjs aarch64-apple-darwin target/release/maleme
npm pack ./npm/platforms/darwin-arm64
npm pack ./npm/main
This repository is intentionally local, explicit, and file-oriented. It is not intended to be a hosted analytics platform, a moderation service, or a generalized telemetry pipeline.
This project is distributed under the terms of the WTFPL.
$ claude mcp add maleme \
-- python -m otcore.mcp_server <graph>