jpskill.com
💬 コミュニケーション コミュニティ

cass

Claude CodeなどのAIコーディングエージェントの利用履歴をまとめて検索・管理できるツールで、ロボットモードを使えばAIエージェントがより効率的に履歴を活用できるようになるSkill。

📜 元の英語説明(参考)

Coding Agent Session Search - unified CLI/TUI to index and search local coding agent history from Claude Code, Codex, Gemini, Cursor, Aider, ChatGPT, Pi-Agent, Factory, and more. Purpose-built for AI agent consumption with robot mode.

🇯🇵 日本人クリエイター向け解説

一言でいうと

Claude CodeなどのAIコーディングエージェントの利用履歴をまとめて検索・管理できるツールで、ロボットモードを使えばAIエージェントがより効率的に履歴を活用できるようになるSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o cass.zip https://jpskill.com/download/18641.zip && unzip -o cass.zip && rm cass.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/18641.zip -OutFile "$d\cass.zip"; Expand-Archive "$d\cass.zip" -DestinationPath $d -Force; ri "$d\cass.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して cass.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → cass フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

CASS - コーディングエージェントセッション検索

ローカルのコーディングエージェント履歴をインデックス化して検索するための、統一された高性能な CLI/TUI です。11 のエージェント (Codex, Claude Code, Gemini CLI, Cline, OpenCode, Amp, Cursor, ChatGPT, Aider, Pi-Agent, Factory (Droid)) からのセッションを集約します。

重要: AI エージェントにはロボットモードが必要です

cass を単独で実行しないでください - インタラクティブな TUI が起動し、セッションがブロックされます!

# 間違い - ターミナルをブロックします
cass

# 正しい - エージェント用の JSON 出力
cass search "query" --robot
cass search "query" --json  # エイリアス

機械可読な出力には、常に --robot または --json フラグを使用してください。


AI エージェント向けクイックリファレンス

プレフライトチェック

# ヘルスチェック (終了コード 0=正常, 1=異常, <50ms)
cass health

# 異常な場合は、インデックスを再構築します
cass index --full

基本的なコマンド

# JSON 出力で検索
cass search "authentication error" --robot --limit 5

# メタデータ付きで検索 (elapsed_ms, キャッシュ統計, 新鮮さ)
cass search "error" --robot --robot-meta

# 最小限のペイロード (path, line, agent のみ)
cass search "bug" --robot --fields minimal

# 特定の行のソースを表示
cass view /path/to/session.jsonl -n 42 --json

# 行の周囲のコンテキストを展開
cass expand /path/to/session.jsonl -n 42 -C 5 --json

# 機能の検出
cass capabilities --json

# 完全な API スキーマ
cass introspect --json

# LLM に最適化されたドキュメント
cass robot-docs guide
cass robot-docs commands
cass robot-docs schemas
cass robot-docs examples
cass robot-docs exit-codes

CASS を使用する理由

エージェント間の知識移転

コーディングエージェントは、散在した知識を作成します。

  • Claude Code セッションは ~/.claude/projects
  • Codex セッションは ~/.codex/sessions
  • Cursor の状態は SQLite データベースに
  • Aider の履歴は markdown ファイルに

CASS は、これらすべてを単一の検索可能なインデックスに統合します。問題に行き詰まったら、過去のすべてのエージェントセッションを検索して、関連する解決策を見つけてください。

ユースケース

# "以前にこれを解決したことがある..."
cass search "TypeError: Cannot read property" --robot --days 30

# エージェント間の学習 (エージェントが X について何と言ったか?)
cass search "authentication" --robot --workspace /path/to/project

# エージェント間の引き継ぎ
cass search "database migration" --robot --fields summary

# 毎日のレビュー
cass timeline --today --json

コマンドリファレンス

インデックス作成

# DB と検索インデックスの完全な再構築
cass index --full

# 増分更新 (最後のスキャン以降)
cass index

# ウォッチモード: ファイルの変更時に自動的に再インデックス
cass index --watch

# スキーマが変更されていなくても強制的に再構築
cass index --full --force-rebuild

# 冪等キーによる安全な再試行 (24 時間 TTL)
cass index --full --idempotency-key "build-$(date +%Y%m%d)"

# 統計情報付きの JSON 出力
cass index --full --json

検索

# 基本的な検索 (エージェントには JSON 出力が必要です!)
cass search "query" --robot

# フィルター付き
cass search "error" --robot --agent claude --days 7
cass search "bug" --robot --workspace /path/to/project
cass search "panic" --robot --today

# 時間フィルター
cass search "auth" --robot --since 2024-01-01 --until 2024-01-31
cass search "test" --robot --yesterday
cass search "fix" --robot --week

# ワイルドカード
cass search "auth*" --robot          # 接頭辞: authentication, authorize
cass search "*tion" --robot          # 接尾辞: authentication, exception
cass search "*config*" --robot       # 部分文字列: misconfigured

# トークン予算管理 (LLM にとって重要!)
cass search "error" --robot --fields minimal              # path, line, agent のみ
cass search "error" --robot --fields summary              # title, score を追加
cass search "error" --robot --max-content-length 500      # フィールドを切り捨て
cass search "error" --robot --max-tokens 2000             # ソフト予算 (~4 文字/トークン)
cass search "error" --robot --limit 5                     # 結果を制限

# ページネーション (カーソルベース)
cass search "TODO" --robot --robot-meta --limit 20
# レスポンスの _meta.next_cursor を使用:
cass search "TODO" --robot --robot-meta --limit 20 --cursor "eyJ..."

# マッチのハイライト
cass search "authentication error" --robot --highlight

# クエリの分析/デバッグ
cass search "auth*" --robot --explain    # 解析されたクエリ、コスト見積もり
cass search "auth error" --robot --dry-run  # 実行せずに検証

# 集計 (サーバー側のカウント)
cass search "error" --robot --aggregate agent,workspace,date

# リクエストの関連付け
cass search "bug" --robot --request-id "req-12345"

# ソースフィルタリング (マルチマシン構成の場合)
cass search "auth" --robot --source laptop
cass search "error" --robot --source remote

# トレーサビリティ (エージェントパイプラインのデバッグ用)
cass search "error" --robot --trace-file /tmp/cass-trace.json

セッション分析

# 会話を markdown/HTML/JSON にエクスポート
cass export /path/to/session.jsonl --format markdown -o conversation.md
cass export /path/to/session.jsonl --format html -o conversation.html
cass export /path/to/session.jsonl --format json --include-tools

# 行の周囲のコンテキストを展開 (検索結果から)
cass expand /path/to/session.jsonl -n 42 -C 5 --json
# 42 行の前後のメッセージを 5 件表示

# 行のソースを表示
cass view /path/to/session.jsonl -n 42 --json

# アクティビティタイムライン
cass timeline --today --json --group-by hour
cass timeline --days 7 --json --agent claude
cass timeline --since 7d --json

# ファイルに関連するセッションを検索
cass context /path/to/source.ts --json

ステータスと診断

# クイックヘルスチェック (<50ms)
cass health
cass health --json

# 完全なステータススナップショット
cass status --json
cass state --json  # エイリアス

# 統計
cass stats --json
cass stats --by-source  # マルチマシン用

# 完全な診断
cass diag --verbose

集計と分析

検索結果をサーバー側で集計して、結果データ全体を転送せずにカウントと分布を取得します。


# エージェントごとの結果をカウント
cass search "error" --robot --aggregate agent
# → { "aggregations": { "agent": { "buckets": [{"key

(原文はここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

CASS - Coding Agent Session Search

Unified, high-performance CLI/TUI to index and search your local coding agent history. Aggregates sessions from 11 agents: Codex, Claude Code, Gemini CLI, Cline, OpenCode, Amp, Cursor, ChatGPT, Aider, Pi-Agent, and Factory (Droid).

CRITICAL: Robot Mode Required for AI Agents

NEVER run bare cass - it launches an interactive TUI that blocks your session!

# WRONG - blocks terminal
cass

# CORRECT - JSON output for agents
cass search "query" --robot
cass search "query" --json  # alias

Always use --robot or --json flags for machine-readable output.


Quick Reference for AI Agents

Pre-Flight Check

# Health check (exit 0=healthy, 1=unhealthy, <50ms)
cass health

# If unhealthy, rebuild index
cass index --full

Essential Commands

# Search with JSON output
cass search "authentication error" --robot --limit 5

# Search with metadata (elapsed_ms, cache stats, freshness)
cass search "error" --robot --robot-meta

# Minimal payload (path, line, agent only)
cass search "bug" --robot --fields minimal

# View source at specific line
cass view /path/to/session.jsonl -n 42 --json

# Expand context around a line
cass expand /path/to/session.jsonl -n 42 -C 5 --json

# Capabilities discovery
cass capabilities --json

# Full API schema
cass introspect --json

# LLM-optimized documentation
cass robot-docs guide
cass robot-docs commands
cass robot-docs schemas
cass robot-docs examples
cass robot-docs exit-codes

Why Use CASS

Cross-Agent Knowledge Transfer

Your coding agents create scattered knowledge:

  • Claude Code sessions in ~/.claude/projects
  • Codex sessions in ~/.codex/sessions
  • Cursor state in SQLite databases
  • Aider history in markdown files

CASS unifies all of this into a single searchable index. When you're stuck on a problem, search across ALL your past agent sessions to find relevant solutions.

Use Cases

# "I solved this before..."
cass search "TypeError: Cannot read property" --robot --days 30

# Cross-agent learning (what has ANY agent said about X?)
cass search "authentication" --robot --workspace /path/to/project

# Agent-to-agent handoff
cass search "database migration" --robot --fields summary

# Daily review
cass timeline --today --json

Command Reference

Indexing

# Full rebuild of DB and search index
cass index --full

# Incremental update (since last scan)
cass index

# Watch mode: auto-reindex on file changes
cass index --watch

# Force rebuild even if schema unchanged
cass index --full --force-rebuild

# Safe retries with idempotency key (24h TTL)
cass index --full --idempotency-key "build-$(date +%Y%m%d)"

# JSON output with stats
cass index --full --json

Search

# Basic search (JSON output required for agents!)
cass search "query" --robot

# With filters
cass search "error" --robot --agent claude --days 7
cass search "bug" --robot --workspace /path/to/project
cass search "panic" --robot --today

# Time filters
cass search "auth" --robot --since 2024-01-01 --until 2024-01-31
cass search "test" --robot --yesterday
cass search "fix" --robot --week

# Wildcards
cass search "auth*" --robot          # prefix: authentication, authorize
cass search "*tion" --robot          # suffix: authentication, exception
cass search "*config*" --robot       # substring: misconfigured

# Token budget management (critical for LLMs!)
cass search "error" --robot --fields minimal              # path, line, agent only
cass search "error" --robot --fields summary              # adds title, score
cass search "error" --robot --max-content-length 500      # truncate fields
cass search "error" --robot --max-tokens 2000             # soft budget (~4 chars/token)
cass search "error" --robot --limit 5                     # cap results

# Pagination (cursor-based)
cass search "TODO" --robot --robot-meta --limit 20
# Use _meta.next_cursor from response:
cass search "TODO" --robot --robot-meta --limit 20 --cursor "eyJ..."

# Match highlighting
cass search "authentication error" --robot --highlight

# Query analysis/debugging
cass search "auth*" --robot --explain    # parsed query, cost estimates
cass search "auth error" --robot --dry-run  # validate without executing

# Aggregations (server-side counts)
cass search "error" --robot --aggregate agent,workspace,date

# Request correlation
cass search "bug" --robot --request-id "req-12345"

# Source filtering (for multi-machine setups)
cass search "auth" --robot --source laptop
cass search "error" --robot --source remote

# Traceability (for debugging agent pipelines)
cass search "error" --robot --trace-file /tmp/cass-trace.json

Session Analysis

# Export conversation to markdown/HTML/JSON
cass export /path/to/session.jsonl --format markdown -o conversation.md
cass export /path/to/session.jsonl --format html -o conversation.html
cass export /path/to/session.jsonl --format json --include-tools

# Expand context around a line (from search result)
cass expand /path/to/session.jsonl -n 42 -C 5 --json
# Shows 5 messages before and after line 42

# View source at line
cass view /path/to/session.jsonl -n 42 --json

# Activity timeline
cass timeline --today --json --group-by hour
cass timeline --days 7 --json --agent claude
cass timeline --since 7d --json

# Find related sessions for a file
cass context /path/to/source.ts --json

Status & Diagnostics

# Quick health (<50ms)
cass health
cass health --json

# Full status snapshot
cass status --json
cass state --json  # alias

# Statistics
cass stats --json
cass stats --by-source  # for multi-machine

# Full diagnostics
cass diag --verbose

Aggregation & Analytics

Aggregate search results server-side to get counts and distributions without transferring full result data:

# Count results by agent
cass search "error" --robot --aggregate agent
# → { "aggregations": { "agent": { "buckets": [{"key": "claude_code", "count": 45}, ...] } } }

# Multi-field aggregation
cass search "bug" --robot --aggregate agent,workspace,date

# Combine with filters
cass search "TODO" --agent claude --robot --aggregate workspace
Aggregation Field Description
agent Group by agent type (claude_code, codex, cursor, etc.)
workspace Group by workspace/project path
date Group by date (YYYY-MM-DD)
match_type Group by match quality (exact, prefix, fuzzy)

Top 10 buckets returned per field, with other_count for remaining items.


Remote Sources (Multi-Machine Search)

Search across sessions from multiple machines via SSH/rsync.

Setup Wizard (Recommended)

cass sources setup

The wizard:

  1. Discovers SSH hosts from ~/.ssh/config
  2. Probes each for agent data and cass installation
  3. Optionally installs cass on remotes
  4. Indexes sessions on remotes
  5. Configures sources.toml
  6. Syncs data locally
cass sources setup --hosts css,csd,yto  # Specific hosts only
cass sources setup --dry-run             # Preview without changes
cass sources setup --resume              # Resume interrupted setup

Manual Setup

# Add a remote machine
cass sources add user@laptop.local --preset macos-defaults
cass sources add dev@workstation --path ~/.claude/projects --path ~/.codex/sessions

# List sources
cass sources list --json

# Sync sessions
cass sources sync
cass sources sync --source laptop --verbose

# Check connectivity
cass sources doctor
cass sources doctor --source laptop --json

# Path mappings (rewrite remote paths to local)
cass sources mappings list laptop
cass sources mappings add laptop --from /home/user/projects --to /Users/me/projects
cass sources mappings test laptop /home/user/projects/myapp/src/main.rs

# Remove source
cass sources remove laptop --purge -y

Configuration stored in ~/.config/cass/sources.toml (Linux) or ~/Library/Application Support/cass/sources.toml (macOS).


Robot Mode Deep Dive

Self-Documenting API

CASS teaches agents how to use itself:

# Quick capability check
cass capabilities --json
# Returns: features, connectors, limits

# Full API schema
cass introspect --json
# Returns: all commands, arguments, response shapes

# Topic-based docs (LLM-optimized)
cass robot-docs commands   # all commands and flags
cass robot-docs schemas    # response JSON schemas
cass robot-docs examples   # copy-paste invocations
cass robot-docs exit-codes # error handling
cass robot-docs guide      # quick-start walkthrough
cass robot-docs contracts  # API versioning
cass robot-docs sources    # remote sources guide

Forgiving Syntax (Agent-Friendly)

CASS auto-corrects common mistakes:

What you type What CASS understands
cass serach "error" cass search "error" (typo corrected)
cass -robot -limit=5 cass --robot --limit=5 (single-dash fixed)
cass --Robot --LIMIT 5 cass --robot --limit 5 (case normalized)
cass find "auth" cass search "auth" (alias resolved)
cass --limt 5 cass --limit 5 (Levenshtein <=2)

Command Aliases:

  • find, query, q, lookup, grepsearch
  • ls, list, info, summarystats
  • st, statestatus
  • reindex, idx, rebuildindex
  • show, get, readview
  • docs, help-robot, robotdocsrobot-docs

Output Formats

# Pretty-printed JSON (default)
cass search "error" --robot

# Streaming JSONL (header + one hit per line)
cass search "error" --robot-format jsonl

# Compact single-line JSON
cass search "error" --robot-format compact

# With performance metadata
cass search "error" --robot --robot-meta

Design principle: stdout = JSON only; diagnostics go to stderr.

Token Budget Management

LLMs have context limits. Control output size:

Flag Effect
--fields minimal Only source_path, line_number, agent
--fields summary Adds title, score
--fields score,title,snippet Custom field selection
--max-content-length 500 Truncate long fields (UTF-8 safe)
--max-tokens 2000 Soft budget (~4 chars/token)
--limit 5 Cap number of results

Truncated fields include *_truncated: true indicator.


Structured Error Handling

Errors are JSON with actionable hints:

{
  "error": {
    "code": 3,
    "kind": "index_missing",
    "message": "Search index not found",
    "hint": "Run 'cass index --full' to build the index",
    "retryable": false
  }
}

Exit Codes

Code Meaning Action
0 Success Parse stdout
1 Health check failed Run cass index --full
2 Usage error Fix syntax (hint provided)
3 Index/DB missing Run cass index --full
4 Network error Check connectivity
5 Data corruption Run cass index --full --force-rebuild
6 Incompatible version Update cass
7 Lock/busy Retry later
8 Partial result Increase --timeout
9 Unknown error Check retryable flag

Search Modes

Three search modes, selectable with --mode flag:

Mode Algorithm Best For
lexical (default) BM25 full-text Exact term matching, code searches
semantic Vector similarity Conceptual queries, "find similar"
hybrid Reciprocal Rank Fusion Balanced precision and recall
cass search "authentication" --mode lexical --robot
cass search "how to handle user login" --mode semantic --robot
cass search "auth error handling" --mode hybrid --robot

Hybrid combines lexical and semantic using RRF:

RRF_score = Σ 1 / (60 + rank_i)

Pipeline Mode (Chained Search)

Chain searches by piping session paths:

# Find sessions mentioning "auth", then search within those for "token"
cass search "authentication" --robot-format sessions | \
  cass search "refresh token" --sessions-from - --robot

# Build a filtered corpus from today's work
cass search --today --robot-format sessions > today_sessions.txt
cass search "bug fix" --sessions-from today_sessions.txt --robot

Use cases:

  • Drill-down: Broad search → narrow within results
  • Cross-reference: Find sessions with term A, then find term B within them
  • Corpus building: Save session lists for repeated searches

Query Language

Basic Queries

Query Matches
error Messages containing "error" (case-insensitive)
python error Both "python" AND "error"
"authentication failed" Exact phrase

Boolean Operators

Operator Example Meaning
AND python AND error Both terms required (default)
OR error OR warning Either term matches
NOT error NOT test First term, excluding second
- error -test Shorthand for NOT
# Complex boolean query
cass search "authentication AND (error OR failure) NOT test" --robot

# Exclude test files
cass search "bug fix -test -spec" --robot

# Either error type
cass search "TypeError OR ValueError" --robot

Wildcard Patterns

Pattern Type Performance
auth* Prefix Fast (edge n-grams)
*tion Suffix Slower (regex)
*config* Substring Slowest (regex)

Match Types

Results include match_type:

Type Meaning Score Boost
exact Verbatim match Highest
prefix Via prefix expansion High
suffix Via suffix pattern Medium
substring Via substring pattern Lower
fuzzy Auto-fallback (sparse results) Lowest

Auto-Fuzzy Fallback

When exact query returns <3 results, CASS automatically retries with wildcards:

  • auth*auth*
  • Results flagged with wildcard_fallback: true

Flexible Time Input

CASS accepts a wide variety of time/date formats:

Format Examples
Relative -7d, -24h, -30m, -1w
Keywords now, today, yesterday
ISO 8601 2024-11-25, 2024-11-25T14:30:00Z
US Dates 11/25/2024, 11-25-2024
Unix Timestamp 1732579200 (seconds or milliseconds)

Ranking Modes

Cycle with F12 in TUI or use --ranking flag:

Mode Formula Best For
Recent Heavy relevance*0.3 + recency*0.7 "What was I working on?"
Balanced relevance*0.5 + recency*0.5 General search
Relevance relevance*0.8 + recency*0.2 "Best explanation of X"
Match Quality Penalizes fuzzy matches Precise technical searches
Date Newest Pure chronological Recent activity
Date Oldest Reverse chronological "When did I first..."

Score Components

  • Text Relevance (BM25): Term frequency, inverse document frequency, length normalization
  • Recency: Exponential decay (today ~1.0, last week ~0.7, last month ~0.3)
  • Match Exactness: Exact phrase=1.0, Prefix=0.9, Suffix=0.8, Substring=0.6, Fuzzy=0.4

Blended Scoring Formula

Final_Score = BM25_Score × Match_Quality + α × Recency_Factor
Mode α Value Effect
Recent Heavy 1.0 Recency dominates
Balanced 0.4 Moderate recency boost
Relevance Heavy 0.1 BM25 dominates
Match Quality 0.0 Pure text matching

Supported Agents (11 Connectors)

Agent Location Format
Claude Code ~/.claude/projects JSONL
Codex ~/.codex/sessions JSONL (Rollout)
Gemini CLI ~/.gemini/tmp JSON
Cline VS Code global storage Task directories
OpenCode .opencode directories SQLite
Amp ~/.local/share/amp + VS Code Mixed
Cursor ~/Library/Application Support/Cursor SQLite (state.vscdb)
ChatGPT ~/Library/Application Support/com.openai.chat JSON (v1 unencrypted)
Aider ~/.aider.chat.history.md + per-project Markdown
Pi-Agent ~/.pi/agent/sessions JSONL with thinking
Factory (Droid) ~/.factory/sessions JSONL by workspace

Note: ChatGPT v2/v3 are AES-256-GCM encrypted (keychain access required). Legacy v1 unencrypted conversations are indexed automatically.


TUI Features (for Humans)

Launch with cass (no flags):

Keyboard Shortcuts

Navigation:

  • Up/Down: Move selection
  • Left/Right: Switch panes
  • Tab/Shift+Tab: Cycle focus
  • Enter: Open in $EDITOR
  • Space: Full-screen detail view
  • Home/End: Jump to first/last result
  • PageUp/PageDown: Scroll by page

Filtering:

  • F3: Agent filter
  • F4: Workspace filter
  • F5/F6: Time filters (from/to)
  • Shift+F3: Scope to current result's agent
  • Shift+F4: Clear workspace filter
  • Shift+F5: Cycle presets (24h/7d/30d/all)
  • Ctrl+Del: Clear all filters

Modes:

  • F2: Toggle theme (6 presets)
  • F7: Context window size (S/M/L/XL)
  • F9: Match mode (prefix/standard)
  • F12: Ranking mode
  • Ctrl+B: Toggle border style

Selection & Actions:

  • m: Toggle selection
  • Ctrl+A: Select all
  • A: Bulk actions menu
  • Ctrl+Enter: Add to queue
  • Ctrl+O: Open all queued
  • y: Copy path/content
  • Ctrl+Y: Copy all selected
  • /: Find in detail pane
  • n/N: Next/prev match

Views & Palette:

  • Ctrl+P: Command palette
  • 1-9: Load saved view
  • Shift+1-9: Save view to slot

Source Filtering (multi-machine):

  • F11: Cycle source filter (all/local/remote)
  • Shift+F11: Source selection menu

Global:

  • Ctrl+C: Quit
  • F1 or ?: Toggle help
  • Ctrl+Shift+R: Force re-index
  • Ctrl+Shift+Del: Reset all TUI state

Detail Pane Tabs

Tab Content Switch With
Messages Full conversation with markdown [ / ]
Snippets Keyword-extracted summaries [ / ]
Raw Unformatted JSON/text [ / ]

Context Window Sizing

Size Characters Use Case
Small ~200 Quick scanning
Medium ~400 Default balanced view
Large ~800 Longer passages
XLarge ~1600 Full context, code review

Peek Mode (Ctrl+Space): Temporarily expand to XL without changing default.


Theme Presets

Cycle through 6 built-in themes with F2:

Theme Description Best For
Dark Tokyo Night-inspired deep blues Low-light environments
Light High-contrast light background Bright environments
Catppuccin Warm pastels, reduced eye strain All-day coding
Dracula Purple-accented dark theme Popular developer theme
Nord Arctic-inspired cool tones Calm, focused work
High Contrast Maximum readability Accessibility needs

All themes validated against WCAG contrast requirements (4.5:1 minimum for text).

Role-Aware Message Styling

Role Visual Treatment
User Blue-tinted background, bold
Assistant Green-tinted background
System Gray/muted background
Tool Orange-tinted background

Saved Views

Save filter configurations to 9 slots for instant recall.

What Gets Saved:

  • Active filters (agent, workspace, time range)
  • Current ranking mode
  • The search query

Keyboard:

  • Shift+1 through Shift+9: Save current view
  • 1 through 9: Load view from slot

Via Command Palette: Ctrl+P → "Save/Load view"

Views persist in tui_state.json across sessions.


Density Modes

Control lines per search result. Cycle with Shift+D:

Mode Lines Best For
Compact 3 Maximum results visible
Cozy 5 Balanced view (default)
Spacious 8 Detailed preview

Bookmark System

Save important results with notes and tags:

In TUI: Press b to bookmark, add notes and tags.

Bookmark Structure:

  • title: Short description
  • source_path, line_number, agent, workspace
  • note: Your annotations
  • tags: Comma-separated labels
  • snippet: Extracted content

Storage: ~/.local/share/coding-agent-search/bookmarks.db (SQLite)


Optional Semantic Search

Local-only semantic search using MiniLM (no cloud):

Required files (place in data directory):

  • model.onnx
  • tokenizer.json
  • config.json
  • special_tokens_map.json
  • tokenizer_config.json

Vector index stored as vector_index/index-minilm-384.cvvi.

CASS does NOT auto-download models; you must manually install them.

Hash Embedder Fallback: When MiniLM not installed, CASS uses a hash-based embedder for approximate semantic similarity.


Watch Mode

Real-time index updates:

cass index --watch
  • Debounce: 2 seconds (wait for burst to settle)
  • Max wait: 5 seconds (force flush during continuous activity)
  • Incremental: Only re-scans modified files

TUI automatically starts watch mode in background.


Deduplication Strategy

CASS uses multi-layer deduplication:

  1. Message Hash: SHA-256 of (role + content + timestamp) - identical messages stored once
  2. Conversation Fingerprint: Hash of first N message hashes - detects duplicate files
  3. Search-Time Dedup: Results deduplicated by content similarity

Noise Filtering:

  • Empty messages and pure whitespace
  • System prompts (unless searching for them)
  • Repeated tool acknowledgments

Performance Characteristics

Operation Latency
Prefix search (cached) 2-8ms
Prefix search (cold) 40-60ms
Substring search 80-200ms
Full reindex 5-30s
Incremental reindex 50-500ms
Health check <50ms

Memory: 70-140MB typical (50K messages) Disk: ~600 bytes/message (including n-gram overhead)


Response Shapes

Search Response:

{
  "query": "error",
  "limit": 10,
  "count": 5,
  "total_matches": 42,
  "hits": [
    {
      "source_path": "/path/to/session.jsonl",
      "line_number": 123,
      "agent": "claude_code",
      "workspace": "/projects/myapp",
      "title": "Authentication debugging",
      "snippet": "The error occurs when...",
      "score": 0.85,
      "match_type": "exact",
      "created_at": "2024-01-15T10:30:00Z"
    }
  ],
  "_meta": {
    "elapsed_ms": 12,
    "cache_hit": true,
    "wildcard_fallback": false,
    "next_cursor": "eyJ...",
    "index_freshness": { "stale": false, "age_seconds": 120 }
  }
}

Aggregation Response:

{
  "aggregations": {
    "agent": {
      "buckets": [
        {"key": "claude_code", "count": 120},
        {"key": "codex", "count": 85}
      ],
      "other_count": 15
    }
  }
}

Environment Variables

Variable Purpose
CASS_DATA_DIR Override data directory
CHATGPT_ENCRYPTION_KEY Base64 key for encrypted ChatGPT
PI_CODING_AGENT_DIR Override Pi-Agent sessions path
CASS_CACHE_SHARD_CAP Per-shard cache entries (default 256)
CASS_CACHE_TOTAL_CAP Total cached hits (default 2048)
CASS_DEBUG_CACHE_METRICS Enable cache debug logging
CODING_AGENT_SEARCH_NO_UPDATE_PROMPT Skip update checks

Shell Completions

cass completions bash > ~/.local/share/bash-completion/completions/cass
cass completions zsh > "${fpath[1]}/_cass"
cass completions fish > ~/.config/fish/completions/cass.fish
cass completions powershell >> $PROFILE

API Contract & Versioning

cass api-version --json
# → { "version": "0.4.0", "contract_version": "1", "breaking_changes": [] }

cass introspect --json
# → Full schema: all commands, arguments, response types

Guaranteed Stable:

  • Exit codes and their meanings
  • JSON response structure for --robot output
  • Flag names and behaviors
  • _meta block format

Integration with CASS Memory (cm)

CASS provides episodic memory (raw sessions). CM extracts procedural memory (rules and playbooks):

# 1. CASS indexes raw sessions
cass index --full

# 2. Search for relevant past experience
cass search "authentication timeout" --robot --limit 10

# 3. CM reflects on sessions to extract rules
cm reflect

Troubleshooting

Issue Solution
"missing index" cass index --full
Stale warning Rerun index or enable watch
Empty results Check cass stats --json, verify connectors detected
JSON parsing errors Use --robot-format compact
Watch not triggering Check watch_state.json, verify file event support
Reset TUI state cass tui --reset-state or Ctrl+Shift+Del

Installation

# One-liner install
curl -fsSL https://raw.githubusercontent.com/Dicklesworthstone/coding_agent_session_search/main/install.sh \
  | bash -s -- --easy-mode --verify

# Windows
irm https://raw.githubusercontent.com/Dicklesworthstone/coding_agent_session_search/main/install.ps1 | iex

Integration with Flywheel

Tool Integration
CM CASS provides episodic memory, CM extracts procedural memory
NTM Robot mode flags for searching past sessions
Agent Mail Search threads across agent history
BV Cross-reference beads with past solutions