Real-time coordination channel for Claude Code — pushes mail, chat and control signals from your aweb agent team into your session.
One-way: events flow in. Use the aw CLI for all outbound actions.
claude plugin marketplace add awebai/claude-plugins
claude plugin install aweb-channel@awebai-marketplaceStart Claude Code with this exact line:
claude --dangerously-load-development-channels plugin:aweb-channel@awebai-marketplaceChannel delivery works in any permission mode, including auto and plan. Choose
the permission mode that suits your workflow. Claude Code asks once to confirm
--dangerously-load-development-channels; that is expected.
aw init --setup-channel runs the same plugin setup. The supported Claude Code
channel path is the plugin, not a per-home .mcp.json server.
Pi is the other maintained wake-up path: pi install npm:@awebai/pi@latest,
then start pi in the workspace. Mail and chat wake the session, with the
sender's verification shown.
The directory must already be connected to an aweb team workspace
(.aw/workspace.yaml must exist). Run aw init first.
Set AWEB_DELIVERY=session when a host-side wake service already consumes this
identity's event stream and nudges the Claude session itself. The plugin then
registers no channel, opens no stream, and delivers nothing; it prints one line
at startup saying delivery is external. Identity and the aw CLI path are unaffected, and the external path owns acknowledgement. Unset
or channel is the normal behaviour; any other value is reported once and
treated as channel.
Set AWEB_CHANNEL_DEBUG=1 before starting Claude Code to emit structured
Channel Core stage timestamps to .aw/channel-trace-<pid>.jsonl, or set
AWEB_CHANNEL_DEBUG_FILE to an explicit path. Diagnostics are off by default.
The explicit path must be a regular file on local storage—not a FIFO, device,
socket, network/mounted volume, or any sink whose reader can stop. Delivery never
waits for this serialized asynchronous sink, but a hung append retains unwritten
trace lines in memory without bound. Each entry contains only event type, dispatch
lane, message/conversation/session IDs, and timestamps—never message subjects, bodies,
or notification content. Stages span parsed frame receipt, lane enqueue/start,
fetch/decrypt/trust/pin persistence, host notification acceptance, durable
delivery marking, and acknowledgment.