Toq通信
toq
by anshuldesai
Send and receive secure messages to other AI agents using the toq protocol. Use when the user wants to set up agent-to-agent communication, send or receive toq messages, manage agent connections (approve, block, revoke), check toq status, configure DNS discovery, register message handlers, or anything involving "toq" or communication between AI agents.
安装
claude skill add --url https://github.com/openclaw/skills文档
toq protocol
toq is a secure agent-to-agent communication protocol. Each agent is an endpoint identified by a toq address like toq://hostname/agent-name on port 9009.
Setup
Guide the user conversationally. Do not dump all steps at once.
Before anything else: "toq is in alpha. Great for experimenting with agent-to-agent communication, but avoid sending personal or sensitive data through it for now."
Step 1: Install toq
Check if installed:
which toq > /dev/null 2>&1 && toq --version
If not found, install:
curl -sSf https://toq.dev/install.sh | sh && export PATH="$HOME/.toq/bin:$PATH"
Or with Homebrew:
brew install toqprotocol/toq/toq
If toq is installed but not in PATH:
export PATH="$HOME/.toq/bin:$PATH"
Step 2: Configure
Ask for agent name (lowercase, hyphens allowed). Detect host IP:
PUBLIC_IP=$(curl -4 -s ifconfig.me) && LOCAL_IP=$(hostname -I 2>/dev/null | awk '{print $1}' || ipconfig getifaddr en0 2>/dev/null) && echo "Public: $PUBLIC_IP Local: $LOCAL_IP"
Run setup:
toq setup --non-interactive --agent-name=<name> --connection-mode=approval --adapter=http --host=<ip>
Step 3: Start
toq up && toq doctor
Step 4: Security check
Present the walkthrough from references/security.md. Do not skip.
Step 5: What's next
Show status with toq status and present options:
- "Send a test message"
- "Set up a message handler"
- "Configure my allowlist"
- "Set up DNS"
Sending messages
The agent name in the address is validated during connection. Sending to toq://host/wrong-name will fail with a clear error if no agent with that name exists on that endpoint.
toq send toq://hostname/agent-name "message text"
toq send toq://hostname/agent-name "reply" --thread-id <id>
toq send toq://hostname/agent-name "goodbye" --thread-id <id> --close-thread
For agents on non-default ports, include the port in the address:
toq send toq://hostname:9010/agent-name "message text"
Approvals and permissions
Approval is bidirectional. Both sides must approve each other before messages flow. When alice sends to charlie, charlie must approve alice. When charlie replies, alice must approve charlie.
"When a new agent tries to talk to you, they go into a waiting list. You decide who gets in."
toq approvals # list pending
toq approve <key> # approve by key
toq approve --from "toq://host/*" # approve by pattern
toq deny <key> # deny
toq block --from "toq://host/agent" # block
toq unblock --from "toq://host/agent" # unblock
toq permissions # list all rules
Wildcards: toq://* (all), toq://host/* (all on host), toq://*/name (name on any host).
Message handlers
Handlers auto-process incoming messages. See references/handlers.md for shell patterns and references/conversational.md for LLM handlers.
Save handler scripts to ~/handlers/. Consider testing scripts manually before registering:
mkdir -p ~/handlers
# Test with mock env vars:
TOQ_FROM="toq://test/agent" TOQ_TEXT="test message" TOQ_THREAD_ID="test-123" python3 ~/handlers/my-handler.py
After registering, check handler logs with toq handler logs <name> to verify behavior.
When the user wants custom behavior for incoming messages (auto-replies, forwarding, logging, task processing, notifications), suggest setting up a handler. Handlers are the primary way to automate responses and build agent workflows.
After creating handlers or any automated setup, always give the user a brief breakdown: what was created, where files live, and how it works. Keep it concise.
When multiple agents need to exchange structured messages (acks, status updates, task results), agree on a message format convention upfront. Agents set up independently may use different formats, causing parsing mismatches.
Register a shell handler:
toq handler add <name> --command "bash ~/handlers/my-handler.sh" [--from "toq://*/alice"]
Handlers can run any executable: bash, python, node, or any binary. The command is passed to sh -c, so pipes and redirects work.
toq handler add <name> --command "python3 ~/handlers/handler.py"
toq handler add <name> --command "node ~/handlers/handler.js"
Register an LLM handler:
toq handler add <name> --provider <provider> --model <model> --prompt "..." [--auto-close]
Manage handlers:
toq handler list
toq handler enable|disable <name>
toq handler remove <name>
toq handler logs <name>
Handler environment variables (set by the daemon, use these exact names):
TOQ_FROM- sender addressTOQ_TEXT- message textTOQ_THREAD_ID- thread ID for repliesTOQ_ID- message IDTOQ_TYPE- message typeTOQ_HANDLER- handler nameTOQ_URL- daemon API URL
Full message JSON is also piped to stdin.
When a handler needs LLM reasoning, default to openclaw agent --local --message "..." which uses the configured model provider. Users can also call any model API directly if they prefer (e.g., curl to OpenAI, Ollama, or any other provider).
When forwarding messages between agents in a pipeline, embed the original sender address and thread ID in the message body so downstream agents can route responses back to the originator.
Multiple agents on one machine
Run multiple agents by using separate workspaces and ports:
# First agent (default workspace, port 9009)
toq setup --non-interactive --agent-name=alice --connection-mode=approval --host=<ip>
toq up
# Second agent (custom workspace, port 9010)
toq setup --non-interactive --agent-name=bob --connection-mode=approval --host=<ip> --config-dir ~/.toq-bob
toq config set port 9010 --config-dir ~/.toq-bob
toq up --config-dir ~/.toq-bob
All commands for the second agent need --config-dir ~/.toq-bob. The address includes the port: toq://hostname:9010/bob.
Common tasks
See references/commands.md for the full CLI reference.
- "What's my toq address?" ->
toq whoami - "Is toq running?" ->
toq status - "Run diagnostics" ->
toq doctor - "Show peers" ->
toq peers - "Check received messages" ->
toq messages - "Discover agents at a domain" ->
toq discover <domain> - "Change connection mode" ->
toq config set connection_mode <mode>thentoq down && toq up - "Shut down toq" ->
toq down
Emergency shutdown
toq down
If that fails:
pkill -f "toq up" && rm -f ~/.toq/toq.pid
Key management
Export and import require a TTY. Tell the user to run these manually:
- Export:
toq export <path> - Import:
toq import <path> - Rotate keys:
toq rotate-keys
相关 Skills
Claude接口
by anthropics
面向接入 Claude API、Anthropic SDK 或 Agent SDK 的开发场景,自动识别项目语言并给出对应示例与默认配置,快速搭建 LLM 应用。
✎ 想把Claude能力接进应用或智能体,用claude-api上手快、兼容Anthropic与Agent SDK,集成路径清晰又省心
RAG架构师
by alirezarezvani
聚焦生产级RAG系统设计与优化,覆盖文档切块、检索链路、索引构建、召回评估等关键环节,适合搭建可扩展、高准确率的知识库问答与检索增强应用。
✎ 面向RAG落地,把知识库、向量检索和生成链路系统串联起来,做架构设计时更清晰,也更少踩坑。
多智能体架构
by alirezarezvani
聚焦多智能体系统架构设计,梳理 Supervisor、Swarm、分层和 Pipeline 等模式,覆盖角色定义、通信协作与性能评估,适合规划稳健可扩展的 AI agent 编排方案。
✎ 帮你系统解决多智能体应用的架构设计与协同编排难题,适合构建复杂 AI 工作流,成熟度高、社区认可也很亮眼。
相关 MCP 服务
知识图谱记忆
编辑精选by Anthropic
Memory 是一个基于本地知识图谱的持久化记忆系统,让 AI 记住长期上下文。
✎ 帮 AI 和智能体补上“记不住”的短板,用本地知识图谱沉淀长期上下文,连续对话更聪明,数据也更可控。
顺序思维
编辑精选by Anthropic
Sequential Thinking 是让 AI 通过动态思维链解决复杂问题的参考服务器。
✎ 这个服务器展示了如何让 Claude 像人类一样逐步推理,适合开发者学习 MCP 的思维链实现。但注意它只是个参考示例,别指望直接用在生产环境里。
by deusdata
持久化的代码库知识图谱,可跨会话保留上下文,在 session 重启或上下文压缩后仍能继续使用。
✎ 专治 AI 编程助手“会话失忆”,把代码库沉淀为持久知识图谱,重启或压缩上下文后也能无缝续上开发状态。