Skip to content

Features

Detailed feature documentation for CCCC.

IM-Style Messaging

Core Contracts

  • Messages are first-class citizens: once sent, they're committed to the ledger
  • Read receipts are explicit: agents call MCP to mark as read
  • Reply/quote are structured: reply_to + quote_text
  • @mention enables precise delivery

Sending Messages

bash
# CLI
cccc send "Hello" --to @all
cccc reply <event_id> "Reply text"

# MCP
cccc_message_send(text="Hello", to=["@all"])
cccc_message_reply(reply_to="evt_xxx", text="Reply")

Read Receipts

  • Agents call cccc_inbox_mark_read(event_id) to mark as read
  • Read is cumulative: marking X means X and all before are read
  • Cursors stored in state/read_cursors.json

Delivery Mechanism

Message written to ledger

Daemon parses the "to" field

For each target actor:
    ├─ PTY running → inject into terminal
    └─ Otherwise → leave in inbox

Wait for agent to call mark_read

Delivery format:

[cccc] user → peer-a: Please implement the login feature
[cccc] user → peer-a (reply to evt_abc): OK, please continue

IM Bridge

Design Principles

  • 1 Group = 1 Bot: Simple, isolated, easy to understand
  • Explicit subscription: Chat must /subscribe before receiving messages
  • Ports are thin: Only do message forwarding; daemon is the only state source

Supported Platforms

PlatformStatusToken Config
Telegram✅ Completetoken_env
Slack✅ Completebot_token_env + app_token_env
Discord✅ Completetoken_env
Feishu/Lark✅ Completefeishu_app_id_env + feishu_app_secret_env
DingTalk✅ Completedingtalk_app_key_env + dingtalk_app_secret_env (+ optional dingtalk_robot_code_env)

Configuration

yaml
# group.yaml
im:
  platform: telegram
  token_env: TELEGRAM_BOT_TOKEN

# Slack requires dual tokens
im:
  platform: slack
  bot_token_env: SLACK_BOT_TOKEN    # xoxb-... Web API
  app_token_env: SLACK_APP_TOKEN    # xapp-... Socket Mode

IM Commands

CommandDescription
/send <message>Send using group default (default: foreman)
/send @<agent> <message>Send to a specific agent
/send @all <message>Send to all agents
/send @peers <message>Send to non-foreman agents
/subscribeSubscribe, start receiving messages
/unsubscribeUnsubscribe
/verboseToggle verbose mode
/statusShow group status
/pause / /resumePause/resume message delivery
/helpShow help

Notes:

  • Messaging requires explicit /send. Plain chat is ignored.
  • In channels (Slack/Discord), mention the bot and then use /send (to avoid platform slash-commands).
  • You can configure the default recipient behavior in Web UI: Settings → Messaging → Default Recipient.

CLI Commands

bash
cccc im set telegram --token-env TELEGRAM_BOT_TOKEN
cccc im start
cccc im stop
cccc im status
cccc im logs -f

Agent Guidance

Information Hierarchy

System Prompt (thin layer)
├── Who you are: Actor ID, role
├── Where you are: Working Group, Scope
└── What you can do: MCP tool list + key reminders (see cccc_help)

MCP Tools (authoritative playbook + execution interface)
├── cccc_help: Operation guide (playbook)
├── cccc_project_info: Get PROJECT.md
├── cccc_inbox_list / cccc_inbox_mark_read: Inbox
└── cccc_message_send / cccc_message_reply: Send/reply

Ledger (complete memory)
└── All historical messages and events

Core Principles

  • Do: One authoritative playbook (cccc_help)
  • Do: Kernel enforcement (RBAC by daemon)
  • Do: Minimal startup handshake (Bootstrap)
  • Don't: Write three versions of the same copy

Agent Standard Workflow

1. Receive SYSTEM injection → Know who you are
2. Call cccc_inbox_list → Get unread messages
3. Process messages → Execute tasks
4. Call cccc_inbox_mark_read → Mark as read
5. Call cccc_message_reply → Reply with results
6. Wait for next message

Automation

Retained Mechanisms

MechanismConfigDefaultDescription
Nudgenudge_after_seconds300sUnread message timeout reminder
Actor idleactor_idle_timeout_seconds600sActor idle notification to foreman
Keepalivekeepalive_delay_seconds120sNext: reminder after declaration
Silencesilence_timeout_seconds600sGroup silence notification to foreman

Delivery Throttling

ConfigDefaultDescription
min_interval_seconds60sMinimum interval between consecutive deliveries

Web UI

Agent-as-Tab Mode

  • Each agent is a tab
  • Chat tab + Agent tabs
  • Click tab to switch view
  • Mobile: swipe to switch

Main Features

  • Group management (create/edit/delete)
  • Actor management (add/start/stop/edit/delete)
  • Message sending (@mention autocomplete)
  • Message reply (quote display)
  • Embedded terminal (xterm.js)
  • Context panel (vision/sketch/tasks)
  • Settings panel (automation config)
  • IM Bridge configuration

Theme System

  • Light / Dark / System
  • CSS variables define all colors
  • Terminal colors adapt automatically

Remote Access

Recommended options:

  • Cloudflare Tunnel + Cloudflare Access (Recommended)

    • Best experience: access directly from mobile browser
    • Strongly recommend Access for login protection
    • Quick (temporary URL): cloudflared tunnel --url http://127.0.0.1:8848
    • Stable (custom domain): Use cloudflared tunnel create/route/run
  • Tailscale (VPN)

    • Clear security boundary (Tailnet ACL)
    • Recommend binding to tailnet IP only: CCCC_WEB_HOST=$TAILSCALE_IP cccc

Multi-Runtime Support

Supported Runtimes

RuntimeCommandDescription
ampampAmp
auggieauggieAuggie (Augment CLI)
claudeclaudeClaude Code
codexcodexCodex CLI
cursorcursor-agentCursor CLI
droiddroidDroid
geminigeminiGemini CLI
kilocodekilocodeKilo Code CLI
neovateneovateNeovate Code
opencodeopencodeOpenCode
copilotcopilotGitHub Copilot CLI
customCustomAny command

Setup Commands

bash
cccc setup --runtime claude   # Configure MCP (auto)
cccc setup --runtime codex
cccc setup --runtime droid
cccc setup --runtime amp
cccc setup --runtime auggie
cccc setup --runtime neovate
cccc setup --runtime gemini
cccc setup --runtime cursor   # prints config guidance (manual)
cccc setup --runtime kilocode # prints config guidance (manual)
cccc setup --runtime opencode
cccc setup --runtime copilot
cccc setup --runtime custom

Runtime Detection

bash
cccc doctor        # Environment check + runtime detection
cccc runtime list  # List available runtimes (JSON)

Released under the Apache-2.0 License.