Crew is one Gateway with many ways to reach it. Work from the desktop app, web dashboard, or CLI, then continue the same conversation through Slack, Discord, Telegram, Teams, Webex, WeCom, WeChat (Weixin), WhatsApp, iMessage, or Feishu (Lark). Every session shares the same memory, skills, lessons, and cron jobs.
The diagram shows a representative set of surfaces; see the table below for the full list.
| Interface | Best for | Notes |
|---|---|---|
| Desktop app | Simplest local experience. Bundled Gateway, multi-tab connections to local or remote Gateways. | macOS, Windows, and Linux |
| Web dashboard | Parallel conversations, files, approvals, memory, schedules, apps, settings, and system status | Requires a browser and network to the host |
| Slack | Continue work from DMs and threads with streaming replies, approvals, and session links | Setup guide → |
| Telegram | Reach your agent from private DMs on phone or laptop | Setup guide → |
| Discord | DMs with streaming replies and approvals delivered as message buttons | Setup guide → |
| Teams | Reach your agent from Microsoft Teams chats | Setup guide → |
| Webex | Work from Webex direct messages | Setup guide → |
| WeCom | Outbound-connected WeCom AI bot | Setup guide → |
| WeChat (Weixin) | Reach your agent from WeChat | Setup guide → |
| Reach your agent from direct chats and configured groups by linking a personal account | Link by QR code; the operator can approve tools by typing a number; groups accept only the linked account and numbers in Allowed WhatsApp IDs; on the Kiro backend, admitted non-operators use separate sessions without tools; other agent backends refuse their turns | |
| iMessage | Reach your agent from Messages on macOS | Routed through your own Messages.app via a local bridge; macOS only, deny-by-default with an explicit handle allowlist |
| Feishu (Lark) | Reach your agent from Feishu (Lark) | Allowlist of authorized users |
| CLI | Quick one-shots, scripting, headless environments, security commands | CLI reference → |
All surfaces connect to the same Gateway. A dashboard tab and a Slack thread are independent sessions with independent context — but they share memory across the board. Messaging channels connect outbound from the Gateway, so you don't need to expose the dashboard port publicly.
Per-session controls apply across channels: /yolo and per-session Trust work on Teams, Webex, WeCom, WeChat, and iMessage alongside the channels that already supported them.
Slack, Discord, Telegram, Teams, Webex, WeChat, and WeCom can hand otherwise-unrecognized attachments to the agent as local files with the original name, type, and size. Shared per-file defaults are 10 MB for images, 512 KB for text, 20 MB for documents, 25 MB for audio, and 50 MB for opaque files such as archives or video. Each channel and format can impose a lower platform limit on top of these defaults, and one message processes at most 10 attachments.
A rejected file is reported to the sender rather than silently dropped.
If a message arrives while the Gateway is restarting and cannot be processed, the next start replies in the same conversation with the original text and asks the sender to resend it. Crew does not replay the message as a turn automatically. Incognito and Temporary conversations, plus WhatsApp group messages, do not persist this recovery notice.
The dashboard is a React SPA served from the gateway at http://localhost:5476. It's the primary interface — most features (artifact library, memory graph, MCP panel, app store, task runner UI) live only here.
kirocrew gateway # starts the server # open http://localhost:5476 in your browser
For remote access, mint a token and follow the printed link:
kirocrew token --ttl 2h
Every request requires a valid token — cookie or minted link. Three deliberate exceptions serve no secrets: liveness probes, SPA static assets, and loopback-only bootstrap endpoints. See Security for the auth model.
Two features connect the surfaces:
Every dashboard chat tab has a 💬 button. Click it to link the current session to a Slack thread:
Useful for handing off a conversation you started on your laptop to Slack so you can continue on mobile.
Both surfaces expose a sessions command that lists recent sessions with ▶️ Resume buttons. Resume from any surface — the session picks up where it left off.
| Port | What it is | Configurable |
|---|---|---|
5476 | Dashboard + API | KIROCREW_PORT env var, or --port <n> |
The dashboard binds loopback only by default (localhost:5476). For LAN or remote access:
dashboard.url to the DNS name where the dashboard will be reached from
Interfaces