CLAWDIS now ships with a single coding agent: Pi (the Tau CLI). Legacy Claude/Codex/Gemini/Opencode paths have been removed.
Pi is bundled as a dependency of clawdis, so a fresh pnpm install gives you the pi/tau binaries automatically.
The recommended (and only) agent for CLAWDIS. Built by Mario Zechner, forked with love.
{
"reply": {
"mode": "command",
"agent": {
"kind": "pi",
"format": "json",
"model": "claude-opus-4-5" // default if omitted
},
"command": [
"node",
"/path/to/pi-mono/packages/coding-agent/dist/cli.js",
"-p",
"--mode", "json",
""
]
}
}
For streaming tool output and better integration:
{
"command": [
"tau",
"--mode", "rpc",
"--session", "/path/to/sessions/.jsonl"
]
}
RPC mode is enforced by CLAWDIS (we rewrite --mode to rpc for Pi invocations). It gives you:
If the agent does not report a model, CLAWDIS assumes claude-opus-4-5 with ~200k context tokens (pi-ai defaults) for usage summaries.
Each phone number gets its own conversation history:
{
"session": {
"scope": "per-sender",
"sessionArgNew": ["--session", ".jsonl"],
"sessionArgResume": ["--session", ".jsonl", "--continue"]
}
}
By default CLAWDIS stores sessions under ~/.clawdis/sessions and will create the folder automatically.
Everyone shares the same context (useful for team bots):
{
"session": {
"scope": "global"
}
}
Users can start fresh with trigger words:
{
"session": {
"resetTriggers": ["/new", "/reset", "/clear"]
}
}
Give your agent personality:
{
"session": {
"sessionIntro": "You are Clawd, a space lobster AI assistant. Be helpful, be funny, use 🦞 liberally. Read /path/to/AGENTS.md for your instructions.",
"sendSystemOnce": true
}
}
Keep your agent alive and doing background tasks:
{
"reply": {
"heartbeatMinutes": 10,
"heartbeatBody": "HEARTBEAT"
}
}
The agent receives “HEARTBEAT” and can:
HEARTBEAT_OK to skipWhen using RPC mode, CLAWDIS shows tool usage in real-time:
💻 ls -la ~/Projects
📄 Reading README.md
✍️ Writing config.json
📝 Editing main.ts
📎 Attaching image.jpg
🛠️ Running custom tool
Configure the display:
{
"agent": {
"kind": "pi",
"format": "json",
"toolEmoji": {
"bash": "💻",
"read": "📄",
"write": "✍️",
"edit": "📝",
"attach": "📎"
}
}
}
Long-running tasks need appropriate timeouts:
{
"reply": {
"timeoutSeconds": 1800
}
}
For background tasks, the agent can yield and continue later using the process tool.
When the agent fails:
{
"reply": {
"errorMessage": "🦞 Oops! Something went wrong. Try again?"
}
}
Run different agents for different numbers:
{
"inbound": {
"routes": [
{
"from": "+1234567890",
"command": ["work-agent", ""]
},
{
"from": "+0987654321",
"command": ["fun-agent", ""]
}
]
}
}
Next: Group Chats 🦞