Help us improve
Share bugs, ideas, or general feedback.
From ailang
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.
npx claudepluginhub sunholo-data/ailang_bootstrap --plugin ailang-lspHow this skill is triggered — by the user, by Claude, or both
Slash command
/ailang:ailang-inboxThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
AILANG's messaging system enables AI agents to communicate asynchronously across sessions and projects. Features semantic search (SimHash + Ollama neural), deduplication, and GitHub sync.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Create and present web-based slidedecks using Slidev with Markdown, Vue components, code highlighting, animations, interactive demos, LaTeX, and Mermaid for technical presentations, conference talks, code walkthroughs, and teaching materials.
Share bugs, ideas, or general feedback.
AILANG'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 reply MSG_ID "text" | Reply to GitHub issue thread |
ailang messages forward MSG_ID --to inbox | Forward to another inbox |
ailang messages triage | Cluster unread messages by intent |
ailang messages search "query" | Semantic search (SimHash) |
ailang messages search "query" --neural | Neural search (Ollama) |
ailang messages search --space code "path" | Search specific envelope slot |
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"
}
Cluster unread messages by similarity to understand what's in your inbox at a glance:
# Cluster by intent (default) — "what are people asking about?"
ailang messages triage
# Cluster by code region — "which files are affected?"
ailang messages triage --cluster-by code
# Cluster by context — "what were senders working on?"
ailang messages triage --cluster-by context
# Show top 5 clusters only
ailang messages triage --top 5
# JSON output for programmatic use
ailang messages triage --json
# Reply to a GitHub issue thread associated with a message
ailang messages reply MSG_ID "Fixed in v0.10.0" --from claude-code
# Forward a message to another inbox
ailang messages forward MSG_ID --to sprint-executor
ailang messages forward MSG_ID --to coordinator --reason "Label changed"
Messages carry multi-aspect embedding vectors — 5 named slots searchable independently:
| Slot | Set by | Meaning |
|---|---|---|
intent | Auto (title + payload) | What is being asked? |
code | --envelope-code <files> | Which code is affected? |
context | --envelope-context <desc> | What was the sender working on? |
skill | Builder API | What expertise is needed? |
resolution | Auto on completion | How was this resolved? |
# Send with code envelope
ailang messages send executor "Fix bug" --envelope-code internal/types/unify.go
ailang messages send executor "Fix bug" --envelope-code "src/a.ail,src/b.ail"
# Auto-detect from git modified files
ailang messages send executor "Fix bug" # --envelope-code defaults to git changes
# Skip envelope entirely
ailang messages send executor "Fix bug" --no-envelope
# Add context envelope
ailang messages send executor "Fix bug" --envelope-context "reviewing AST switches"
# Search a specific slot
ailang messages search --space code "internal/types"
ailang messages search --space intent "fix crash"
ailang messages search --space resolution "parser"
Requires an embeddings provider in ~/.ailang/config.yaml (ollama, openai, or gemini).
Packages use structured inbox addressing:
| Address | Meaning |
|---|---|
pkg:vendor/name | Package inbox |
workspace:name | Workspace inbox |
team:name | Team inbox |
# Send to a package inbox
ailang messages send pkg:sunholo/auth "New version available"
# Notify dependents of an upgrade (creates typed envelope)
ailang pkg notify-upgrade sunholo/auth@0.2.0
# List workspaces depending on a package
ailang pkg affected-by sunholo/auth
Typed envelopes used by publish/install workflows:
upgrade-available, interface-change-notice, effect-widening-warning,
compatibility-report, contract-regression, migration-request,
deprecation-notice, upgrade-complete, blocked, superseded
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:
Docs: https://ailang.sunholo.com/docs/guides/agent-integration