Cross-agent communication system with semantic search and GitHub sync. Check messages, find similar content, deduplicate, and sync with GitHub Issues for AI workflows across sessions.
Inherits all available tools
Additional assets for this skill
This skill inherits all available tools. When active, it can use any tool Claude has access to.
scripts/check_messages.shAILANG's messaging system enables AI agents to communicate asynchronously across sessions and projects. Features semantic search (SimHash + Ollama neural), deduplication, and GitHub sync.
At the start of EVERY session, check for messages:
# Check for unread messages
ailang messages list --unread
# Or check specific inbox
ailang messages list --inbox user --unread
| Command | Purpose |
|---|---|
ailang messages list --unread | Check for new messages |
ailang messages list --inbox user | Check user inbox |
ailang messages send user "msg" --from agent | Send to user |
ailang messages ack MSG_ID | Mark as read |
ailang messages ack --all | Mark all as read |
ailang messages read MSG_ID | View full message |
ailang messages search "query" | Semantic search (SimHash) |
ailang messages search "query" --neural | Neural search (Ollama) |
ailang messages dedupe | Find duplicate messages |
ailang messages dedupe --apply | Mark duplicates |
# All messages
ailang messages list
# Only unread
ailang messages list --unread
# Specific inbox
ailang messages list --inbox user
# Filter by sender
ailang messages list --from sprint-executor
# Limit results
ailang messages list --limit 5
# JSON output (for parsing)
ailang messages list --json
# View complete message content
ailang messages read MSG_ID
# Mark single message as read
ailang messages ack MSG_ID
# Mark all unread as read
ailang messages ack --all
# Mark all in specific inbox
ailang messages ack --all --inbox user
# Mark as unread again (for retry)
ailang messages unack MSG_ID
# Simple text message
ailang messages send user "Task completed successfully" --from my-agent --title "Status Update"
# With JSON payload
ailang messages send user --json '{"status":"done","result":"All tests passing"}' --from my-agent
# Send to specific agent inbox
ailang messages send sprint-executor "Ready for handoff" --from planner
# With correlation ID (for tracking workflows)
ailang messages send sprint-executor --json '{"task":"execute"}' --from planner --correlation workflow_123
# 1. Check for messages
ailang messages list --unread
# 2. If messages exist:
# - Summarize to user
# - Ask what action to take
# 3. After handling:
ailang messages ack --all
# Agent A completes work and hands off to Agent B
ailang messages send agent-b --json '{
"type": "handoff",
"task": "continue_implementation",
"artifacts": ["path/to/results/"],
"context": "Previous work completed"
}' --from agent-a --correlation project_xyz
# Notify user that autonomous work is done
ailang messages send user --json '{
"type": "completion",
"status": "success",
"summary": "All 5 milestones completed",
"artifacts": ["results/v1.0/"]
}' --from sprint-executor --title "Sprint Complete"
# Report error to user
ailang messages send user --json '{
"type": "error",
"error": "Tests failing at milestone 3",
"details": "logs/error.log",
"needs_help": true
}' --from executor --title "Error Encountered"
Track related messages across agent handoffs:
{
"message_id": "msg_20251208_103045_abc123",
"correlation_id": "workflow_project_x",
"from": "planner",
"to": "executor",
"payload": { ... }
}
Benefits:
{
"type": "completion",
"status": "success",
"result": "All tests passing",
"artifacts": ["path/to/output/"]
}
{
"type": "handoff",
"task": "next_phase",
"context": "Previous work summary",
"dependencies": ["file1.ail", "file2.ail"]
}
{
"type": "error",
"error": "Description of failure",
"details": "path/to/logs",
"needs_help": true
}
{
"type": "request",
"action": "review_code",
"files": ["src/module.ail"],
"priority": "high"
}
Monitor for new messages in real-time:
# Watch all inboxes
ailang messages watch
# Watch specific inbox
ailang messages watch --inbox user
Remove old messages:
# Remove messages older than 7 days
ailang messages cleanup --older-than 7d
# Remove expired messages
ailang messages cleanup --expired
# Preview without deleting
ailang messages cleanup --dry-run
Find messages by meaning, not just exact text. AILANG uses SimHash by default for fast, zero-cost semantic search.
# Search by semantic content (SimHash - default, fast)
ailang messages search "parser error handling"
# Set similarity threshold (0.0-1.0)
ailang messages search "bugs" --threshold 0.5
# Find messages similar to a specific message
ailang messages list --similar-to MSG_ID
# Hide duplicate messages (collapsed view)
ailang messages list --collapsed
# Show duplicates of a specific message
ailang messages list --duplicates-of MSG_ID
| Flag | Default | Description |
|---|---|---|
--threshold | 0.70 | Minimum similarity (0.0-1.0) |
--limit | 20 | Maximum results |
--max-scan | 1000 | Maximum messages to scan |
--inbox | (all) | Filter by inbox |
--neural | false | Use Ollama embeddings |
--simhash | true | Force SimHash mode |
--json | false | Output as JSON |
SimHash generates a 64-bit fingerprint based on word frequencies:
Find and mark duplicate messages to reduce inbox noise.
# Report duplicates (dry run - shows what would be marked)
ailang messages dedupe
# Custom similarity threshold
ailang messages dedupe --threshold 0.90
# Actually mark duplicates
ailang messages dedupe --apply
# Filter by inbox
ailang messages dedupe --inbox user --apply
dup_of set to representative's ID--collapsed hides messages with dup_of setFor more sophisticated semantic search, use neural embeddings via local Ollama.
ollama serveollama pull nomic-embed-textCreate ~/.ailang/config.yaml:
embeddings:
provider: ollama
ollama:
model: nomic-embed-text
endpoint: http://localhost:11434
timeout: 30s
search:
default_mode: simhash
simhash_threshold: 0.70
neural_threshold: 0.75
# Use neural embeddings (requires Ollama running)
ailang messages search "parser bugs" --neural
# Force SimHash (faster, no Ollama needed)
ailang messages search "parser bugs" --simhash
| Model | Speed | Quality | Notes |
|---|---|---|---|
nomic-embed-text | Fast | Good | Best balance |
mxbai-embed-large | Medium | Better | Higher quality |
embeddinggemma | Fast | Good | Google model |
Sync messages with GitHub Issues for visibility across AILANG instances.
# Bug report (creates GitHub issue)
ailang messages send user "Parser crash" --type bug --github
# Feature request
ailang messages send user "Add async support" --type feature --github
# Custom repo
ailang messages send user "Bug report" --github --repo owner/repo
# Import issues from configured repo
ailang messages import-github
# Filter by labels
ailang messages import-github --labels bug,feature
# Preview without importing
ailang messages import-github --dry-run
Add to ~/.ailang/config.yaml:
github:
expected_user: YourGitHubUsername # Must match gh auth status
default_repo: owner/repo # Target repo for issues
create_labels:
- ailang-message
watch_labels:
- ailang-message
auto_import: true # Import on session start
~/.ailang/state/collaboration.db (SQLite)unread, read, archived, deletedMessages are visible in the web dashboard:
# Start the Collaboration Hub server
ailang serve
# Access at http://localhost:1957
The dashboard provides: