Repository navigation
docs(kilo): identify cloud agent consumers (#14425) - #14758
Conversation
| | cloud-agent-next (hosted cloud agent; all `agent_*`/`workspace_*` sessions, incl. PR-review/auto-fix bot sandboxes) | `Kilo-Org/cloud` `services/cloud-agent-next/` | unassigned | Binary + SDK + HTTP: wrapper spawns `kilo serve` and imports `@kilocode/sdk` and `@kilocode/sdk/v2` | `@kilocode/cli@7.8.1` npm-global in sandbox image (Dockerfile `ARG KILOCODE_CLI_VERSION`); `KILOCODE_CLI_VERSION` in `wrangler.jsonc` `image_vars`/`build_vars` for every container class; `@kilocode/sdk@7.8.1` in `package.json` and `wrapper/package.json`; single source `src/shared/kilo-cli-version.ts` | 7.8.1 | Bump `KILO_CLI_VERSION` + manifests; `wrangler deploy` rebuilds Cloudflare Containers (changed-worker matrix in `deploy-workers.yml`; `deploy-production.yml`/`deploy-staging.yml`); `rollout_active_grace_period 1800` | yes | Primary hosted runtime; embeds the v1 CLI server + SDK; every hosted agent flow executes here | G1 for adaptation; independent cutover (pinned, own go/no-go) | cloud@3de933dd `services/cloud-agent-next/Dockerfile:6,64`; `src/shared/kilo-cli-version.ts:1`; `wrangler.jsonc:182,277`; `wrapper/package.json:11`; `wrapper/src/control-plane/kilo-runtime.ts:184`; `wrapper/src/control/worktree-runtime.ts:379` | | ||
| | auto-routing-benchmark (decider benchmark runner) | `services/auto-routing-benchmark/container/` | unassigned | Binary: spawns `kilo run --format json` | `npm install -g @kilocode/cli@latest` resolved at image build; no version pin | latest at last image build (7.8.x as of the assessed SHA; exact build unverified) | `wrangler deploy` builds/pushes the container image; each deploy re-pins to that day's `latest` | yes | Floats on `@kilocode/cli@latest`, so a v2 `latest` reaches it automatically | G1 | cloud@3de933dd `services/auto-routing-benchmark/container/Dockerfile:12`; `container/server.mjs:64`; `wrangler.jsonc:32-39` | | ||
| | Gastown (agent orchestration via Durable Objects + container) | `services/gastown/container/` | unassigned | Binary + SDK: spawns `kilo serve` via `createKilo()`; ships `@kilocode/plugin` for plugin discovery | `@kilocode/cli@7.2.14` (+ `cli-linux-x64`, `cli-linux-x64-musl`, `@kilocode/plugin@7.2.14`) in Dockerfile; `@kilocode/sdk@7.2.14`, `@kilocode/plugin@7.2.52` in `container/package.json` | 7.2.14 | `pnpm --filter cloudflare-gastown deploy:prod` → `container:prepare` + container build + `wrangler deploy`; `max_instances 500` | yes | Hosted agent runner embedding the v1 CLI server; pinned, so migrates on its own bump | G1 for adaptation; independent cutover (pinned, own go/no-go) | cloud@3de933dd `services/gastown/container/Dockerfile:80-81`; `container/package.json:15-16`; `container/src/process-manager.ts:9,664` | | ||
| | KiloClaw (per-user OpenClaw runtimes on Fly.io) | `services/kiloclaw/` | unassigned | Binary: ships `@kilocode/cli` in the Fly image and spawns `kilo run --auto`; controller also configures the `kilo` provider | Baked `@kilocode/cli@7.2.31` in Dockerfile; controller runs background `npm install -g @kilocode/cli@latest` 3h after boot when `KILOCLAW_KILO_CLI=true` | baked 7.2.31, then per-instance self-upgrade to `latest` | `deploy-kiloclaw.yml` builds/pushes the Fly image; each machine self-upgrades at runtime | yes (cloud-side runtime; the plan's "KiloClaw not needed" applies to the client, not this service) | Executes the CLI and runtime-floats to `@latest`, so a v2 `latest` reaches machines without an image rebuild | G1 | cloud@3de933dd `services/kiloclaw/Dockerfile:93`; `controller/src/index.ts:638-646`; `controller/src/routes/kilo-cli-run.ts:120,159`; `docs/instance-features.md:29` | |
There was a problem hiding this comment.
yes (cloud-side runtime
Not entirely sure what cloud-side runtime means in the kilo claw context, but KiloClaw is EOL'd. KiloClaw should probably be wholly out of scope for v2 support if possible.
KiloClaw is a hosted openclaw product. Kilo comes into play only in so far that the cli is available for people to use from openclaw if they wish (which if people are doing should work fine with v2?), and through the rescue ui as a "kilo doctor" mechanic.
The fix with kilo doctor mechanic is the thing most likely to break.
There was a problem hiding this comment.
Damn it. I had a pending item to remove the Kiloclaw stuff (was confirmed after i ran this). TY, I'll fix this and sorry for the extra work
| |---|---|---|---|---|---|---|---|---|---|---| | ||
| | cloud-agent-next (hosted cloud agent; all `agent_*`/`workspace_*` sessions, incl. PR-review/auto-fix bot sandboxes) | `Kilo-Org/cloud` `services/cloud-agent-next/` | unassigned | Binary + SDK + HTTP: wrapper spawns `kilo serve` and imports `@kilocode/sdk` and `@kilocode/sdk/v2` | `@kilocode/cli@7.8.1` npm-global in sandbox image (Dockerfile `ARG KILOCODE_CLI_VERSION`); `KILOCODE_CLI_VERSION` in `wrangler.jsonc` `image_vars`/`build_vars` for every container class; `@kilocode/sdk@7.8.1` in `package.json` and `wrapper/package.json`; single source `src/shared/kilo-cli-version.ts` | 7.8.1 | Bump `KILO_CLI_VERSION` + manifests; `wrangler deploy` rebuilds Cloudflare Containers (changed-worker matrix in `deploy-workers.yml`; `deploy-production.yml`/`deploy-staging.yml`); `rollout_active_grace_period 1800` | yes | Primary hosted runtime; embeds the v1 CLI server + SDK; every hosted agent flow executes here | G1 for adaptation; independent cutover (pinned, own go/no-go) | cloud@3de933dd `services/cloud-agent-next/Dockerfile:6,64`; `src/shared/kilo-cli-version.ts:1`; `wrangler.jsonc:182,277`; `wrapper/package.json:11`; `wrapper/src/control-plane/kilo-runtime.ts:184`; `wrapper/src/control/worktree-runtime.ts:379` | | ||
| | auto-routing-benchmark (decider benchmark runner) | `services/auto-routing-benchmark/container/` | unassigned | Binary: spawns `kilo run --format json` | `npm install -g @kilocode/cli@latest` resolved at image build; no version pin | latest at last image build (7.8.x as of the assessed SHA; exact build unverified) | `wrangler deploy` builds/pushes the container image; each deploy re-pins to that day's `latest` | yes | Floats on `@kilocode/cli@latest`, so a v2 `latest` reaches it automatically | G1 | cloud@3de933dd `services/auto-routing-benchmark/container/Dockerfile:12`; `container/server.mjs:64`; `wrangler.jsonc:32-39` | | ||
| | Gastown (agent orchestration via Durable Objects + container) | `services/gastown/container/` | unassigned | Binary + SDK: spawns `kilo serve` via `createKilo()`; ships `@kilocode/plugin` for plugin discovery | `@kilocode/cli@7.2.14` (+ `cli-linux-x64`, `cli-linux-x64-musl`, `@kilocode/plugin@7.2.14`) in Dockerfile; `@kilocode/sdk@7.2.14`, `@kilocode/plugin@7.2.52` in `container/package.json` | 7.2.14 | `pnpm --filter cloudflare-gastown deploy:prod` → `container:prepare` + container build + `wrangler deploy`; `max_instances 500` | yes | Hosted agent runner embedding the v1 CLI server; pinned, so migrates on its own bump | G1 for adaptation; independent cutover (pinned, own go/no-go) | cloud@3de933dd `services/gastown/container/Dockerfile:80-81`; `container/package.json:15-16`; `container/src/process-manager.ts:9,664` | |
There was a problem hiding this comment.
Gastown is also EOL'd. I don't think we'd want to invest the effort to update it.
| | security-auto-analysis (remediation) | `services/security-auto-analysis/` | unassigned | HTTP only: calls cloud-agent-next `prepareSession`/`interruptSession` | n/a | n/a | n/a | no | Same as code-review-infra | n/a | cloud@3de933dd `services/security-auto-analysis/src/remediation.ts:1202,1091` | | ||
| | app-builder | `services/app-builder/` | unassigned | None: `cloudflare/sandbox` for app preview/build | n/a | n/a | n/a | no | Sandbox product with no Kilo CLI/SDK/server usage | n/a | cloud@3de933dd `services/app-builder/Dockerfile:1-2` | | ||
| | cloud-agent-sdk + web/mobile clients | `packages/cloud-agent-sdk/`, `apps/web`, `apps/mobile` | unassigned | HTTP/relay only: consumes cloud-agent-next tRPC and the `/remote` relay | n/a | n/a | n/a | no | Client-side SDK, already tracked in #14019 | n/a | cloud@3de933dd `packages/cloud-agent-sdk/src/cli-live-transport.ts:1-4`; `packages/cloud-agent-sdk/package.json:5` | | ||
| | session-ingest | `services/session-ingest/` | unassigned | None: receives CLI session events and backs `kilo import` | n/a | n/a | n/a | no | Adjacent service dependency of cloud-agent-next cold start, not a runtime consumer | n/a | cloud@3de933dd `services/session-ingest/src/remote-session-notifications.ts:82`; `services/cloud-agent-next/src/kilo/client.ts:112` | |
There was a problem hiding this comment.
just flagging that the session-ingest service and kilo cli are closely tied together. The cli itself ships to session-ingest, and cloud agents, the session feature, etc all tap in or use that.
|
went ahead and addressed comments. Can amend/revert based on follow-up comments |
| | Cloud repo owners for each service | `CODEOWNERS` or owner contacts; none exist in the clone | cloud repo owners / maintainers | | ||
| | Exact currently deployed versions in dev and prod (repo pins may lag deployed images; floating consumers unverified) | Query the deployed workers/containers or read deploy artifacts | cloud repo owners / release operators | | ||
| | v2 release package name and dist-tag; whether v2 replaces `@kilocode/cli@latest` or ships under a separate name/channel | Release-channel decision for the v2 CLI | Kilo release owner / plan coordinator | | ||
| | Whether v2 keeps the `kilo serve` HTTP API and `@kilocode/sdk` surface compatible (cloud-agent-next imports `@kilocode/sdk/v2`) | v2 SDK/server contract from #14426 | v2 core/server owner | |
There was a problem hiding this comment.
Is message/API different between v1 and v2?
There was a problem hiding this comment.
Yes, it's significantly different. Shared a quick overview doc with you
| | Whether v2 keeps the `kilo serve` HTTP API and `@kilocode/sdk` surface compatible (cloud-agent-next imports `@kilocode/sdk/v2`) | v2 SDK/server contract from #14426 | v2 core/server owner | | ||
| | EOL disposition and residual CLI exposure for Gastown/KiloClaw (e.g. KiloClaw's `@latest` self-upgrade reaching a v2 release) | Confirm no support obligation; decide whether to pin or disable the self-upgrade in EOL services | cloud repo owners | | ||
| | CLI↔session-ingest wire contract (session event/ingest payloads and `kilo import`) under v2 | Map the producer/consumer contract in #14426 against the v2 CLI | session-ingest owner / v2 CLI owner | | ||
| | Whether every cloud-agent-next container class rebuilds from the same repo SHA (Vercel Sandbox snapshot path installs the same pin separately) | Deploy configuration audit | cloud-agent-next owner | |
There was a problem hiding this comment.
When we deploy cloud agent, it builds containers from docker files and then cloudflare rollout the changes
| | EOL disposition and residual CLI exposure for Gastown/KiloClaw (e.g. KiloClaw's `@latest` self-upgrade reaching a v2 release) | Confirm no support obligation; decide whether to pin or disable the self-upgrade in EOL services | cloud repo owners | | ||
| | CLI↔session-ingest wire contract (session event/ingest payloads and `kilo import`) under v2 | Map the producer/consumer contract in #14426 against the v2 CLI | session-ingest owner / v2 CLI owner | | ||
| | Whether every cloud-agent-next container class rebuilds from the same repo SHA (Vercel Sandbox snapshot path installs the same pin separately) | Deploy configuration audit | cloud-agent-next owner | | ||
| | Whether `@kilocode/sdk` is versioned in lockstep with `@kilocode/cli` (both `7.8.1` here) or follows its own release train | SDK release policy | v2 SDK owner | |
There was a problem hiding this comment.
Yes, both sdk and kilo should be the same version, otherwise it is a bug
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (1 file)
Previous Review Summaries (3 snapshots, latest commit a5f6e77)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit a5f6e77)Status: No Issues Found | Recommendation: Merge Incremental review of Files Reviewed (1 file)
Previous review (commit cbe8522)Status: No Issues Found | Recommendation: Merge Files Reviewed (1 file)
Previous review (commit 00121ee)Status: No Issues Found | Recommendation: Merge Files Reviewed (1 file)
Repo-local citations re-verified against the pinned SHAs ( Reviewed by deepseek-v4.1-flash · Input: 42.9K · Output: 1.7K · Cached: 148K |
Issue
Fixes #14425
Context
Adds
migration-tracking/technical-notes/baseline/cloud-agent-consumers.md, the discoverydeliverable for #14425 under epic #14023. Its outcome is to identify every cloud-side consumer that
executes or embeds the Kilo runtime, with repository, owner, deployed runtime version and
pinning/rollout path, and to define which consumers are in migration scope and which gate
(#14427/#14428) follows from it.
Discovery only — no source changes in this repo or in the cloud repo. The cloud repo was inspected
read-only at
3de933dd85070e9d15c41d8ff3af6c91ca856fd4; this repo atorigin/main622ed1f5ae5af2d864908a0bb759b0c9121d406candkilo-v2a2e6c1f69b36a0215c30a80f9d13da9f530073df.Why it matters: the v1 and v2 CLI both publish as
@kilocode/cli, so cloud consumers that float on@latestreceive a v2 release automatically, while pinned consumers cut over on their own bump. Thatdistinction decides whether a consumer must be ready at a gate or migrates independently.
Implementation
The document records an inventory table, the proposed in/out migration scope, the remaining unknowns
with resolvers, and proposed progress-plan row changes for N7 (the plan file is intentionally not
edited).
Method:
@kilocode/cli,@kilocode/sdk,@kilocode/sdk/v2,createKilo,kilo serve,kilo run, and package installsin Dockerfiles and workflows.
Findings:
cloud-agent-next(spawnskilo serve, imports@kilocode/sdk, pinned7.8.1),gastown(pinned7.2.14),kiloclaw(bakes
7.2.31, runtimenpm install -g @kilocode/cli@latest),auto-routing-benchmark(image builds
@kilocode/cli@latest), and the MCP catalog CI job (unpinned@kilocode/cli).are HTTP-only callers of cloud-agent-next; app-builder, session-ingest and the misc services embed
no runtime; cloud-agent-sdk/web/mobile (Complete remote session consumer acceptance #14019) and VS Code Agent Manager (Complete original Kilo VS Code client parity #14016) are tracked
elsewhere.
to G1. The pinned consumers contribute cross-repo dependencies but cut over under their own
go/no-go.
Tradeoffs / points to review:
CODEOWNERS, so all owners are recorded asunassignedrather thanguessed; resolving owners is an explicit unknown.
cloud@3de933dd <path>:<line>and repo-localpath:line; a few deployedvalues (e.g. the exact
auto-routing-benchmarkimage build) are recorded as unverified rather thanassumed.
Screenshots / Video
N/A — documentation-only change, no visual surface.
How to Test
Manual/local verification
c6d36ecaef6169ca9c68c4096623677a35c772e7;git show --statconfirms one file and no source changes.
git show origin/main:<path>/git show kilo-v2:<path>in this repo, andgrep -nin the read-only cloud clone at3de933dd.migration-tracking/plans/kilo-opencode-v2-plan-progress.mdis untouched;row changes are proposed in-document only (N7 applies them).
v2-fork-conventions.mdtable rule.Reviewer test steps
git show c6d36ecaef --stat— confirm the single-file diff.migration-tracking/technical-notes/baseline/cloud-agent-consumers.mdand review theheader SHAs, the inventory table, and the "proposed, pending owner approval" scope section.
cd /Users/fpliger/dev/kiloverse/cloud && grep -n 'KILOCODE_CLI_VERSION' services/cloud-agent-next/Dockerfileand
grep -n '@kilocode/cli' services/auto-routing-benchmark/container/Dockerfileservices/kiloclaw/Dockerfile; compare with the corresponding inventory rows.the CLI runtime surface".
are proposed, not applied.
Blocked checks and substitute verification
this repo has no Markdown linter wired in. Substitute verification was a manual re-read of the
document and a line-level re-check of every citation against the pinned SHAs (
git show/grep).the cloud clone is read-only and no deploy/credential access was available. These are recorded as
explicit unknowns with named resolvers rather than inferred.
Checklist