A persistent workspace for development work that self-improves and continues beyond one session.
Kiro Crew is an open source development workspace that runs locally or remotely on your hardware. It is persistent, self-learning, and self-evolving. Work with it from the desktop app, web dashboard, and CLI, or continue the same work through connection tools like Slack and Discord. Your multi-step tasks can run unattended, recurring jobs run on your schedule, and heartbeats monitor systems until something needs attention. Kiro Crew Apps tailor that experience to a specific job, combining a purpose-built interface with agents, skills, schedules, integrations, and backend services.
Quick start · Build from source · Why Kiro Crew · Capabilities · How it works · Security · Install · Telemetry · Docs
You choose how to run Kiro Crew: the desktop app with automatic updates, a
one-line install on your machine or a remote host, the Docker image for
always-on servers, or a build from source. Every path runs on kiro-cli
underneath, so the first launch installs it if needed and guides Kiro
device-code sign-in.
The desktop app starts a bundled Gateway when no local Gateway is already running, updates itself on the channel you download, and can connect to a remote Gateway over an SSH tunnel. See the desktop app guide.
- macOS: Stable | Insider | Nightly
- Linux: Stable | Insider | Nightly
- Windows: no desktop build yet, so run the Gateway from a source install and open the dashboard in your browser
Install the prebuilt, SHA-256-verified wheel from the release CDN without
cloning the repository or running npm and a local build.
Stable, the default:
curl -fsSL https://download.crew.kiro.dev/cli.sh | shTrack a faster channel, insider or nightly:
curl -fsSL https://download.crew.kiro.dev/cli.sh | sh -s -- --channel insiderPin an exact version:
curl -fsSL https://download.crew.kiro.dev/cli.sh | sh -s -- --version 0.1.0Open http://localhost:5476 and start a conversation. The web dashboard works
without messaging credentials. Add Slack,
Telegram, or
WeCom when you want to continue
working with the same agent away from the dashboard. These channels connect
outbound, so you do not need to expose the dashboard port publicly.
For always-on servers, the Gateway ships as a public multi-arch image on GHCR:
docker run -d --name kirocrew \
-p 127.0.0.1:5476:5476 \
-v kirocrew-home:/home/kirocrew \
ghcr.io/kirodotdev/kirocrew:stableSee the Docker guide for first-run login, channel tags, and the container security model.
macOS and Linux require Python 3.10+, Node.js 18+, npm, and
kiro-cli. The first desktop or dashboard launch
can install Kiro CLI on the Gateway host and guide device-code sign-in before
chat opens. Windows is supported through a native source install; follow the
Windows guide instead of the shell steps below.
# 1. Clone and build Kiro Crew
git clone https://github.com/kirodotdev/KiroCrew.git
cd KiroCrew
make build
source .venv/bin/activate
# 2. Configure, verify, and start
kirocrew setup
kirocrew doctor
kirocrew gatewayMost agent sessions end when the chat closes. Kiro Crew runs continuously on hardware you control and keeps working between conversations.
Persistent. Sessions, memory, schedules, and task checkpoints survive Gateway restarts, and scheduled or reactive work continues without someone at the terminal.
Self-learning. Corrections and task failures become durable lessons. Preferences and project context carry into new sessions.
Self-evolving. Repeated patterns become reusable skills. Memory, lessons, and skills stay visible and editable, so each Kiro Crew grows more tailored to the person and work around it.
Runs where you choose. Your Mac, a local container, or a remote machine you control.
One Gateway, many surfaces. Work directly in the desktop app or web dashboard, or continue the same work from the CLI and messaging surfaces like Slack and Discord.
| Capability | What it gives you |
|---|---|
| Persistent sessions | Run concurrent, isolated conversations, resume them after Gateway restarts, search prior sessions, and carry recent context into new work. |
| Self-learning | Turn corrections and task failures into durable lessons that change later behavior. Keep preferences, active-project context, and history scoped to the relevant workspace. Say "no, always run the frontend checks before calling a change done" and it becomes a workspace-scoped lesson applied in future sessions. |
| Self-evolving skills | Synthesize reusable skills from repeated patterns, then inspect, refine, or remove them as your work changes. |
| Long-running tasks | Give Kiro Crew a task spec and walk away. It plans steps, executes them, validates results, retries failures, and resumes from checkpoints. "Implement this migration plan and stop if the tests fail" runs as a checkpointed task with validation at each step. |
| Unattended autonomy | Run scheduled agent work or deterministic scripts and commands without a model call. Monitor work until it is done, or react to messaging events and authenticated webhooks without someone at the terminal. "Every weekday at 9, summarize the open work I should review" becomes a timezone-aware recurring job delivered to the surface you choose. |
| Delegation | Spawn isolated subagents for parallel work and bring their results back into the parent conversation. "Research these three options in parallel and recommend one" fans out to isolated subagents and synthesizes the tradeoffs. |
| Work where you choose | Work directly in the desktop app or web dashboard, or continue through the CLI and any connected messaging surface without moving the agent runtime or its state. |
| Installable Apps | Add focused interfaces and domain workflows through dashboard pages, scoped Gateway APIs, events, and lifecycle hooks. |
| Extensible tools | Add MCP servers, markdown skills, and hooks without changing the core runtime. |
| Visible execution | Watch tool calls, subagent progress, context usage, approvals, schedules, memory, and logs from the dashboard. |
| Defense in depth | Combine tool approvals, OS sandboxing, sensitive-path checks, credential redaction, deny rules, audit events, and governance profiles. |
You can also paste a screenshot and ask what is causing an error. Kiro Crew sends the image to the active Kiro model and keeps the diagnosis in the conversation history.
The complete inventory is in Features and What's New.
flowchart TD
S["Desktop app · Web dashboard · Slack · Telegram · WeCom · CLI"]
G["Gateway<br/>access · sessions · memory · schedules · approvals · apps"]
A["Agent sessions<br/>ACP runtime · kiro-cli · MCP tools · models"]
S --> G --> A
The Gateway separates where the agent runs from where you work with it. In the desktop app or web dashboard, you can work directly through parallel conversations, files, task runs, approvals, memory, and apps. From Slack, Telegram, WeCom, or the CLI, the Gateway routes your work to managed agent sessions under the same memory, tool, approval, and policy services. Apps extend the dashboard and Gateway APIs with focused workflows.
Each active conversation or background task uses an agent session. Its session
provider drives kiro-cli over ACP, streams model and tool events, and preserves
conversation state. Depending on the workload, a session is backed by its own
ACP process or by a session handle on a shared multiplexed ACP runtime. The
Gateway manages these sessions along with scheduling, approvals, memory,
security policy, messaging connections, and the dashboard.
The current runtime places the Gateway, agent sessions, ACP processes, and state
on the same host. Run Kiro Crew on your Mac, inside a container on your machine,
or on a remote Linux host you control. Conversation history, memory, and
knowledge indexes remain on that host. Model requests are handled by kiro-cli
and follow the account and model configuration you use there.
Gateway. The Gateway is the long-running Kiro Crew process. It routes messages from the desktop app, web, CLI, and the messaging surfaces listed below. It persists session state, injects memory and skills, starts scheduled work, coordinates subagents, brokers approvals, enforces runtime policy, and exposes activity in the dashboard.
Agent sessions. A dashboard conversation or Slack thread maps to an isolated agent session. Scheduled jobs, task runs, Telegram and WeCom conversations, and subagents also use managed sessions. These sessions preserve conversation context and can run concurrently before returning results to a parent session or configured surface.
ACP runtime and turns. Kiro Crew supports both a dedicated kiro-cli ACP
process for a session and a shared ACP runtime that multiplexes multiple session
handles. During each turn, the session sends a prompt, streams model and tool
events, resolves approvals, and returns the final result. An agent session is a
logical isolation boundary, not necessarily one OS process.
Use the surface that fits the moment.
| Surface | Best for |
|---|---|
| Desktop app | The simplest local experience, with a bundled Gateway plus multi-tab connections to local or remote Gateways. |
| Web dashboard | Parallel conversations, files, approvals, activity, memory, schedules, apps, settings, and system status at localhost:5476. |
| Slack | Work from DMs and threads with streaming replies, approvals, notifications, and session links back to the dashboard. |
| Telegram | Reach your agent from private DMs on your phone or laptop, with streaming replies, inline approvals, and commands. |
| Discord | Work from DMs with streaming replies and approvals delivered as message buttons. |
| Teams | Reach your agent from Microsoft Teams chats with streaming replies and approvals. |
| Webex | Work from Webex direct messages with streaming replies and inline approvals. |
| WeCom | Chat through an outbound-connected WeCom AI bot with configured user access and streaming replies. |
| WeChat (Weixin) | Reach your agent from WeChat with configured user access and streaming replies. |
| CLI | Fast interactive chat and direct automation with kirocrew chat, run, cron, spawn, and security. |
Choose how work starts.
| Mode | Use it for | Entry point |
|---|---|---|
| Scheduled | Briefings, audits, backups, and recurring maintenance | kirocrew cron or a natural-language request |
| Proactive | Goals that need another pass without waiting for a new user message | AutoNudge and goal-loop skills |
| Reactive | CI alerts, external automation, Slack activity, and other events | Authenticated agent webhooks and messaging events |
| Task runner | Bounded projects with explicit steps, tests, review, and checkpoint resume | kirocrew run TASK.md |
| Subagents | Independent workstreams that can run concurrently | kirocrew spawn run "task" |
Memory, learning, and evolution. Kiro Crew maintains preferences, active project context, decaying history summaries, and durable lessons. Corrections and task failures can change later behavior, while repeated patterns can become reusable skills. In-process embeddings add semantic retrieval for memory and the knowledge library. The stored state remains inspectable and editable from the dashboard. Incognito and temporary session modes let you opt out when a conversation should not persist.
Skills, MCP, and apps. Markdown skills supply reusable workflows and can be
loaded only when relevant. The built-in kirocrew-core and kirocrew-cron MCP
servers expose task, subagent, learning, messaging, and scheduling tools. You
can discover additional MCP servers from Kiro or Kiro Crew configuration. The
App Kit adds installable interfaces and domain workflows. Apps can add dashboard
pages, use scoped Gateway APIs, subscribe to events, and register lifecycle
hooks.
Kiro Crew gives an AI agent real tool access, so the controls are enforced at the runtime boundary instead of relying only on prompt instructions.
- Local by default. The dashboard binds to loopback unless you explicitly configure a network URL. Remote dashboards require token authentication.
- Interactive approvals. Review tool requests in the dashboard, Slack, or Telegram. Session-scoped trust can reduce repeated prompts without changing the underlying deny and sensitive-path controls.
- OS sandbox. On Linux and macOS,
kiro-clican run inside namespace or Seatbelt isolation. Standard, strict, and off modes make the tradeoff explicit. Windows offers no equivalent OS-level layer, so Kiro Crew fails closed there: agent subprocesses are refused rather than run unconfined, until you declare thesandbox_allow_unsandboxed_execopt-in. - Sensitive data guards. Kiro Crew blocks direct access to protected paths, strips sensitive environment variables, and redacts credential patterns from output before it reaches a chat surface.
- Denied operations. 137 bundled deny patterns block destructive commands and common exfiltration paths even when a session has broad approval.
- Auditability. Security events and tool activity are recorded for review.
Use
kirocrew security events,audit, andverifyto inspect them. - Governance ceiling. Optional policy and profile files compose with a
tightest-wins model. A running app or agent can narrow the allowed scope but
cannot loosen the enterprise ceiling. Inspect it with
kirocrew policy show,validate, andexplain.
No agent security layer removes the need to protect credentials and review high-impact actions. Avoid pasting secrets or sensitive personal data into a chat. Read the security architecture and use SECURITY.md for private vulnerability reporting.
Installer details. The installer resolves the channel feed, verifies the wheel's SHA-256 against
the published manifest, installs through pipx when available or a managed
virtual environment at ~/.kiro/crew/venv, and records the channel in
~/.kiro/crew/channel. The channels are stable, insider, and nightly, and
KIROCREW_CHANNEL sets the default.
Pin an exact wheel. You can also install one exact wheel directly and pin it to its published
SHA-256. Every version directory publishes a SHA256SUMS file next to the
wheel, so take the hash for your wheel from there and put it in the URL
fragment. pip verifies the hash and does not consult a package index for
Kiro Crew itself:
pip install "https://download.crew.kiro.dev/cli/stable/<version>/kirocrew-<version>-py3-none-any.whl#sha256=<sha256>"Semantic memory. Semantic memory needs no setup. Embeddings run in-process, and the Gateway
downloads its embedding model in the background on first start, verifies it,
and stores it under ~/.kiro/crew/models. Until the model lands, memory search
falls back to keyword search and picks up embeddings automatically without a
restart. Set KIROCREW_EMBED_MODEL_URL to point at a mirror for airgapped
installs.
See Installing and Building for wheels, desktop builds, Windows, optional voice dependencies, and manual setup.
Choose where Kiro Crew runs. The current deployment model keeps the Gateway, agent session runtime, ACP processes, and state together on one host. Your Apps and chat surfaces connect to that Gateway.
| Deployment | How to run it | Where Kiro Crew and its state live |
|---|---|---|
| Mac app, local | Install or build the desktop app with make desktop |
The app starts its bundled Gateway. Agent sessions, ACP processes, and ~/.kiro/crew stay on your Mac. |
| Native local | make build, or install a wheel from make wheel |
The Gateway and agent runtime run directly on your macOS, Linux, or Windows machine. |
| Local container | Run ghcr.io/kirodotdev/kirocrew and persist /home/kirocrew |
The Gateway and agent runtime run inside the official multi-arch container on your machine. |
| Remote hardware | Follow the remote host guide and install the service | The Gateway, agent sessions, and state run continuously on your Linux server, home lab, or cloud instance. Connect the desktop app or browser through an SSH tunnel. |
| Windows source install | Follow the Windows guide | The Gateway, agent sessions, chat, cron, and dashboard run natively with documented feature limits. |
For containers, mount the directory selected by KIROCREW_HOME so sessions,
configuration, memory, and credentials survive replacement. Keep the Gateway
port bound to loopback unless you intentionally configure authenticated remote
access. Container isolation and the Kiro Crew OS sandbox are separate layers
and depend on the host runtime configuration. See the
Docker guide for the published image and deployment details.
Keep it running. Install a systemd service on Linux or a launchd agent on macOS:
kirocrew service install
kirocrew service status
kirocrew logsThe desktop app can use this local Gateway or connect to a remote one. For an always-on VPS, home server, or cloud VM in your account, follow the remote host guide. Kiro Crew does not require a Kiro Crew-hosted control plane.
Configure it. User data lives under ~/.kiro/crew by default. Manage the
main configuration with kirocrew config get, set, and edit.
{
"agent": {
"provider": "acp",
"approval_mode": "interactive",
"sandbox": "auto"
},
"session": {
"timeout_secs": 1800,
"pool_size": 2
},
"dashboard": {
"bot_name": "Kiro Crew"
}
}agent.provider is fixed to acp. Kiro Crew drives kiro-cli over the Agent
Client Protocol. Set the dashboard port with KIROCREW_PORT or
kirocrew gateway --port <n>. Slack credentials live in ~/.kiro/crew/.env
rather than the JSON config.
Troubleshoot quickly. Start with kirocrew doctor. For an ACP timeout,
confirm kiro-cli is on PATH and logged in, then allow extra time for the
first MCP startup. For memory search, check that the embedding
model finished downloading under ~/.kiro/crew/models. For a stale MCP configuration, run
kirocrew setup --agent-only, or add --clean to rebuild it.
Find the logs. When you need to debug, the fastest path is
kirocrew logs (tail the most recent gateway output) or kirocrew logs -f to
follow it live; kirocrew logs -n 200 prints more history. kirocrew logs
reads the right source automatically — the systemd journal when the Linux
service is installed, the launchd stdout file on macOS, or the foreground
gateway log otherwise. Raise verbosity with kirocrew gateway -v (INFO:
session lifecycle and context usage) or -vv (DEBUG: full ACP events and
message traces); set the persistent default with
kirocrew config set agent.log_level, or change it at runtime from the
dashboard Logs page. Under ~/.kiro/crew (or your KIROCREW_HOME) you can
also read the raw files directly:
| File | What it holds |
|---|---|
~/.kiro/crew/gateway.log |
Main gateway log when running in the foreground. |
~/.kiro/crew/security_events.jsonl |
Append-only security and tool-access events. Inspect with kirocrew security events, audit, and verify. |
~/.kiro/crew/audit.log |
Human-readable audit trail of privileged operations. |
~/.kiro/crew/subagents/<agent_id>/result.txt |
Full transcript of a completed subagent, kept for a grace window after it finishes. |
See the Troubleshooting guide for the full log-level reference and emergency recovery steps.
Kiro Crew sends one anonymous heartbeat per day so maintainers can see how many copies are actively running, which versions are in use, and which platforms and install channels to support. After a successful install or update from the official app catalog, it also sends one anonymous per-app receipt. Both signals are on by default and use the same controls below.
To turn it off, flip Settings → Privacy → Send anonymous usage heartbeat in the dashboard (the same switch appears on the last step of first-run onboarding). Or from a terminal:
kirocrew telemetry disable # persists to config.json
export KIROCREW_TELEMETRY_DISABLED=1 # or per-shell / per-container
kirocrew telemetry status # print exactly what would be sentThe toggle and kirocrew telemetry disable write the same setting, so either
one sticks across restarts and upgrades. KIROCREW_TELEMETRY_DISABLED overrides
both — when it is set, the dashboard toggle is disabled and says so.
Exactly these five fields are sent, at most once per day, and nothing else:
| Field | Example | Why |
|---|---|---|
| Random instance id | 9c75560d… (UUID4) |
Lets us count how many copies ran on a given day. Generated once on first run and derived from nothing — not your hostname, username, MAC, IP, or any account. It identifies an installed copy, never a person. |
| App version | 0.1.2 |
Which releases are still in use. Release number only — build stamps like -nightly.20260731t065756 are stripped before sending, because a per-build timestamp is near-unique and would help identify a specific machine. |
| Python minor version | 3.12 |
When the minimum can move up |
| Install channel | dmg |
Which install path people actually use |
| First-run flag | 1 / 0 |
New installs vs returning |
Official-app install receipts are separate and event-based. After a
successful official-catalog install or update, Kiro Crew sends one GET to
/b/1/install/<app-slug>?t=<token>&k=<fresh|update>&v=<release> on the same
telemetry host. The slug is the public catalog identifier. t is the first 32
hex characters of HMAC-SHA256 keyed by the local beacon install id over
app-install:<slug>; the raw install id is never sent, and tokens for different
apps cannot be linked to assemble an installed-app profile. k separates fresh
installs from updates, and v is the same release-only Kiro Crew version clamp
used by the heartbeat.
Receipts are emitted only for bundled or edition-provided official catalog entries. Apps from user-configured registries, local-directory installs, and self-registered apps emit nothing, so private app names never leave the machine. If no persistent beacon install id exists yet, the receipt is skipped.
This list used to be nine fields. Release channel, OS, CPU architecture and governance posture were removed — each was coarse on its own, but the instance id is stable, so those attributes all describe the same copy and together they narrowed the group any one install blends into far more than any single field suggests.
We report this as Daily Active Crews rather than "users": Kiro Crew has
no account system of its own, and the Kiro sign-in that kiro-cli uses for
model access is never read or sent. There is no way to resolve a copy to a
person, so one person running Kiro Crew on three machines counts as three
Crews.
Never sent: your prompts, model responses, file contents, file paths, repo or branch names, credentials, environment variables, hostname, username, or IP address. The receiving CDN is configured not to log client IP addresses — the log delivery does not include that field, so no IP is stored at all.
Automatically off in CI, and whenever KIROCREW_HOME points somewhere other
than ~/.kiro/crew (dev instances and pods are never counted).
Enterprise administrators can pin it off entirely. A capabilities.telemetry
entry in the security policy blocks both outbound signals regardless of the local
setting, and the dashboard toggle then says so instead of offering a change that
would not take effect:
{"version": 1, "boot": {"fail_closed": true},
"capabilities": {"telemetry": {"enabled": false}}}See docs/system-specs/modules/governance.md.
This is separate from telemetry.enabled, which controls local-only
performance metrics that never leave your machine. See
docs/system-specs/modules/metrics.md.
| Topic | Start here |
|---|---|
| Install and packaging | Install and build, Windows, Docker, Desktop, Remote host, Release process |
| Product capabilities | Features, Skills, All user docs |
| All documentation | docs/ for contributor and architecture docs |
| Channels | Slack, Discord, Telegram, Teams, Webex, WeCom, WeChat (Weixin) |
| Architecture | System architecture, Memory, MCP, App Kit |
| Trust and dependencies | Security, Security policy |
| Project work | Contributing, Tenets, Governance, Maintainers, AI assistant rules, Changelog |
Contributions are welcome. Create a branch from main, keep changes focused,
and run the relevant checks before opening a pull request:
# Backend
pip install -e ".[voice]" --group dev
pytest
# Frontend
cd website
npm ci
npm run check
npm run buildUse GitHub Issues for bugs and feature requests. Do not file security vulnerabilities publicly.
Kiro Crew was made possible by its internal community, the people who supported the project and shipped its code, together with everyone who has since opened a pull request in the open. This is that founding group; as Kiro Crew grows in the open, we look forward to many more contributors joining them. Thank you to everyone who helped make this tool possible:
Listed alphabetically by GitHub username. Internal contributors appear here if they consented to public recognition in the contributor survey; open-source contributors are included from this repository's pull request history. If you contributed and would like to be added, corrected, or removed, please open an issue or a pull request.
Kiro Crew is licensed under the Apache License 2.0. See NOTICE for attribution information.
































































































































































































































































































































