Skip to content
Skill

traul

by dandaka

AI Summary

CLI tool that watches communication streams (Slack, Telegram, Discord, Linear, Gmail, Claude Code sessions, Markdown files, WhatsApp), indexes messages, detects patterns via signals, and surfaces actionable insights. Sync messages from communication sources incrementally. Hybrid search combining vec

Install

Copy this and paste it into Claude Code, Cursor, or any AI assistant:

I want to install the "traul" skill in my project.

Please run this command in my terminal:
# Install skill into your project
mkdir -p .claude/skills/traul && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/traul/SKILL.md "https://raw.githubusercontent.com/dandaka/traul/main/skill.md"

Then restart Claude Code (or reload the window in Cursor) so the skill is picked up.

Description

Personal Intelligence Engine CLI for syncing, searching, and monitoring messages from Slack, Telegram, Discord, Linear, Gmail, Claude Code sessions, Markdown files, and WhatsApp. Use when working with traul commands, message sync, search, signals, briefings, or browsing chat history.

Traul — Personal Intelligence Engine

CLI tool that watches communication streams (Slack, Telegram, Discord, Linear, Gmail, Claude Code sessions, Markdown files, WhatsApp), indexes messages, detects patterns via signals, and surfaces actionable insights. Runtime: Bun + TypeScript | DB: SQLite (WAL mode, FTS5, sqlite-vec) | Embeddings: node-llama-cpp (Qwen3-Embedding-0.6B), Ollama fallback | Version: 0.2.0 Project: /Users/dandaka/projects/traul ---

`traul sync [source]`

Sync messages from communication sources incrementally. | Argument | Description | |----------|-------------| | source | Optional. slack, telegram, discord, linear, gmail, claudecode, markdown, or whatsapp. Omit to sync all. | • Uses cursor-based incremental sync (only fetches new messages) • Slack: syncs channels + thread replies, caches user profiles, stores reactions/reply_count in metadata • Telegram: syncs via tg.py (Telethon), 1-hour cooldown skip per chat, progress reporting every 10s • Claude Code: reads all JSONL sessions from ~/.claude/projects/, extracts user+assistant messages • Markdown: walks configured dirs for .md files, tracks changes by content hash • Reports messages added + contacts discovered per source

`traul search <query>`

Hybrid search combining vector similarity (semantic) and FTS5 keyword matching with Reciprocal Rank Fusion. Falls back to FTS-only if embedding is unavailable. Search modes: • Hybrid (default) — best for multi-word and exploratory queries. Finds semantically related messages even when exact keywords don't appear. Uses node-llama-cpp with Qwen3-Embedding-0.6B (auto-downloads ~639MB model on first use). Falls back to Ollama, then FTS-only. Prints coverage ratio to stderr (e.g. 88% vector, 12% FTS). • FTS-only (--fts) — keyword matching with BM25 ranking. Faster, but requires ALL terms to match (implicit AND). Brittle with multi-word queries, especially combined with source/channel filters. • OR mode (--or) — joins search terms with OR instead of AND. Works with both --fts and hybrid. Use for broad exploratory queries where any term is relevant. • Substring (--like) — bypasses FTS entirely, uses SQL LIKE. Useful for exact phrases that FTS tokenization breaks (e.g. "how do I"). Tip: Prefer hybrid (default) for broad queries like "metrics mixpanel registration". Use --fts --or for exploratory keyword searches matching ANY term. Use --like for exact phrase matching. | Option | Description | |--------|-------------| | -s, --source <source> | Filter by source | | -c, --channel <channel> | Filter by channel name | | -a, --after <date> | Messages after ISO date (aliases: --from, --start) | | -b, --before <date> | Messages before ISO date (aliases: --to, --end) | | -l, --limit <n> | Max results (default: 20) | | --json | Output as JSON | | --fts | Keyword-only search (skip vector search) | | --or | Join terms with OR instead of AND (works with --fts and hybrid) | | --like | Substring match (LIKE) — bypasses FTS, useful for exact phrases |

`traul get [thread-id]`

Retrieve a full conversation thread by its thread ID, or list all threads from a given date. Search results display thread IDs in the output so you can copy them for use with get. | Option | Description | |--------|-------------| | thread-id (positional) | Thread ID (e.g. Claude Code session UUID) | | -d, --date <date> | Get all threads from a date (ISO 8601) | | --json | Output as JSON | `bash

Discussion

0/2000
Loading comments...

Health Signals

MaintenanceCommitted 2d ago
Active
Adoption100+ stars on GitHub
101 ★ · Growing
DocsREADME + description
Well-documented

GitHub Signals

Stars101
Forks8
Issues4
Updated2d ago
View on GitHub
AGPL-3.0 License

My Fox Den

Community Rating

Sign in to rate this booster

Works With

Claude Code
Cursor
traul — Skill | ImAiFox | ImAiFox