Count how often you swear at your AI agents.

Offline, read-only. Five apps. One terminal dashboard.

Last 30 days (per day)
2026-05-15 .. 2026-06-13
Last 14 days · per agent
claude 132
desktop 5
codex 0
codex-app 0
opencode 1
apps: [a]ll [1]claude [2]desktop [3]codex [4]codex-app [5]opencode [d]30 [9]90 [0]360 [r]refresh [s]settings [q]quit
https://github.com/maximgorbatyuk/swearing-on-ai-meter

Supported agents

Five sources. Three read by default; two best-effort until you point soaim at them.

Claude Code

~/.claude/projects/**/*.jsonl
JSONL prompt log, read directly.

Implemented

Codex CLI

~/.codex/history.jsonl + rollouts
JSONL history and session records.

Implemented

opencode

~/.local/share/opencode/opencode.db
SQLite, opened strictly read-only.

Implemented

Claude Desktop

~/Library/Application Support/Claude
Best-effort JSONL scan — run soaim discover to locate the store.

Best-effort

Codex App

~/Library/Application Support/Codex
Best-effort JSONL scan — run soaim discover to locate the store.

Best-effort

Bring your own

Override any source path in config.toml or via --config. A missing tool simply contributes zero — the rest keep working.

Configurable

Installation

Two ways to get started.

Homebrew (macOS)

$ brew install maximgorbatyuk/tap/soaim
# Ingest prompts, then open the dashboard
$ soaim

Build from source (cross-platform)

# Requires a recent stable Rust toolchain (1.74+)
$ cargo build --release
$ ./target/release/soaim

macOS, Linux, and Windows. SQLite is compiled in — no system dependency.

In active development

Latest release activity from GitHub.

Loading latest release info...