Skip to content

docs(kilo): identify cloud agent consumers (#14425) - #14758

Merged
fpliger merged 6 commits into
kilo-v2from
14425-cloud-agent-consumers
Oct 7, 2026
Merged

fpliger merged 6 commits into
kilo-v2from
14425-cloud-agent-consumers

Conversation

@fpliger

@fpliger fpliger commented Oct 2, 2026

Copy link
Copy Markdown

Issue

Fixes #14425

Context

Adds migration-tracking/technical-notes/baseline/cloud-agent-consumers.md, the discovery
deliverable 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 at origin/main
622ed1f5ae5af2d864908a0bb759b0c9121d406c and kilo-v2
a2e6c1f69b36a0215c30a80f9d13da9f530073df.

Why it matters: the v1 and v2 CLI both publish as @kilocode/cli, so cloud consumers that float on
@latest receive a v2 release automatically, while pinned consumers cut over on their own bump. That
distinction 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:

  • Searched the cloud repo for runtime embedding rather than product usage: @kilocode/cli,
    @kilocode/sdk, @kilocode/sdk/v2, createKilo, kilo serve, kilo run, and package installs
    in Dockerfiles and workflows.
  • Classified matches into direct runtime consumers, indirect tRPC callers, and non-runtime services.

Findings:

Tradeoffs / points to review:

  • The cloud clone has no CODEOWNERS, so all owners are recorded as unassigned rather than
    guessed; resolving owners is an explicit unknown.
  • Scope is marked "proposed, pending owner approval" because it belongs to the cloud repo owners.
  • Evidence is cited as cloud@3de933dd <path>:<line> and repo-local path:line; a few deployed
    values (e.g. the exact auto-routing-benchmark image build) are recorded as unverified rather than
    assumed.

Screenshots / Video

N/A — documentation-only change, no visual surface.

before after

How to Test

Manual/local verification

  • Committed only the new document as c6d36ecaef6169ca9c68c4096623677a35c772e7; git show --stat
    confirms one file and no source changes.
  • Verified every evidence citation by re-reading the pinned sources: git show origin/main:<path> /
    git show kilo-v2:<path> in this repo, and grep -n in the read-only cloud clone at 3de933dd.
  • Confirmed the plan file migration-tracking/plans/kilo-opencode-v2-plan-progress.md is untouched;
    row changes are proposed in-document only (N7 applies them).
  • Confirmed the Markdown tables are compact and no formatter (e.g. prettier) was run, per the
    v2-fork-conventions.md table rule.

Reviewer test steps

  1. git show c6d36ecaef --stat — confirm the single-file diff.
  2. Open migration-tracking/technical-notes/baseline/cloud-agent-consumers.md and review the
    header SHAs, the inventory table, and the "proposed, pending owner approval" scope section.
  3. Spot-check evidence against the sources, e.g.:
    cd /Users/fpliger/dev/kiloverse/cloud && grep -n 'KILOCODE_CLI_VERSION' services/cloud-agent-next/Dockerfile
    and grep -n '@kilocode/cli' services/auto-routing-benchmark/container/Dockerfile
    services/kiloclaw/Dockerfile; compare with the corresponding inventory rows.
  4. Confirm the gate column and the Implement confirmed cloud consumer adaptation gaps through public interfaces #14427/Validate cloud agent local contracts and hosted execution (external-gated) #14428 → G1 recommendation follow from "all consumers use
    the CLI runtime surface".
  5. Confirm the Remaining unknowns table names a resolver for each item and that the plan-row changes
    are proposed, not applied.

Blocked checks and substitute verification

  • No repo test suite was run: this is a documentation-only change with no code paths touched, and
    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).
  • Cloud operational checks (actual deployed dev/prod versions, per-service owners) could not be run:
    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

  • Issue linked above, or exception explained
  • Tests/verification described
  • Screenshots/video included for visual changes, or marked N/A
  • Changeset considered for user-facing changes
  • [] I personally reviewed the diff and can explain the changes, including any AI-assisted 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` |
| 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` |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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` |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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` |

@pandemicsyn pandemicsyn Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@fpliger

fpliger commented Oct 5, 2026

Copy link
Copy Markdown
Author

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 |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is message/API different between v1 and v2?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, both sdk and kilo should be the same version, otherwise it is a bug

@fpliger
fpliger marked this pull request as ready for review October 7, 2026 15:56
@kilo-code-bot

kilo-code-bot Bot commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Files Reviewed (1 file)
  • migration-tracking/technical-notes/baseline/cloud-agent-consumers.md
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 cbe8522dfb..a5f6e77d (docs-only). The rename of the section to EOL disposition signal is propagated consistently to all cross-references (lines 53, 110, 184); no stale EOL removal signal references remain. Gastown's unidirectional EOL disposition and the trimmed KiloClaw-only removal table are internally consistent with the inventory row, out-of-scope bullets, and progress-plan notes.

Files Reviewed (1 file)
  • migration-tracking/technical-notes/baseline/cloud-agent-consumers.md

Previous review (commit cbe8522)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (1 file)
  • migration-tracking/technical-notes/baseline/cloud-agent-consumers.md

Previous review (commit 00121ee)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (1 file)
  • migration-tracking/technical-notes/baseline/cloud-agent-consumers.md

Repo-local citations re-verified against the pinned SHAs (622ed1f5 v1, a2e6c1f6 v2): packages/opencode/package.json (@kilocode/cli@7.8.3), packages/sdk/js/package.json (@kilocode/sdk@7.8.3, src/v2 subpath), packages/kilo-cli/package.json (0.0.0-internal/private), packages/sdk/package.json (@opencode-ai/sdk@1.18.4), and the referenced plan section/row. Cloud-repo citations could not be re-verified from this checkout and are recorded as such in the document.


Reviewed by deepseek-v4.1-flash · Input: 42.9K · Output: 1.7K · Cached: 148K

@fpliger
fpliger merged commit 7232720 into kilo-v2 Oct 7, 2026
7 of 8 checks passed
@fpliger
fpliger deleted the 14425-cloud-agent-consumers branch October 7, 2026 21:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants