Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Known limitations

Xianyun is a work in progress, and some of what looks supported isn’t. This page lists what doesn’t work yet, so you and your agent don’t spend time on it. Each item has an identifier in the specification, with the evidence.

The built-in overlays haven’t been deployed end to end

helm, kustomize, and namespace deployers work. A NixOS VM test (e2e-deploy) runs xianyun up against a real k3d cluster, installs one of each in dependency order, repeats the deploy, deploys a single deployer with --repo, and checks that a broken chart fails the run and names the deployer. Before 2026-10-14 none of this worked, because no deployer was registered at startup (GAP-001, now closed).

What that test doesn’t cover is path: builtin:dev-ca and path: builtin:traefik-tlsstore. They need cert-manager’s CRDs and a Traefik, which the test VM can’t pull. Treat them as unverified. The workloads in the test are ConfigMaps for the same reason: a deployer that needs a new container image can’t start in that environment, so what’s tested is Xianyun driving Helm, Kustomize, and kubectl, not what the workloads do.

Slow on a cluster that can’t pull images (GAP-009)

Before anything else, up, deploy, and ca inspect try to confirm the cluster’s DNS domain by running a small busybox:1.36 Job and reading its /etc/resolv.conf. If the cluster can’t pull that image (an air-gapped machine, a registry rate limit), each command waits out the probe’s 120-second timeout and carries on with the domain you configured. Measured in the test VMs: up on a running cluster took 122 seconds. Setting cluster.network.cluster_domain doesn’t skip the probe. It only decides what happens when the probe can’t confirm it.

Edit mode is partial (GAP-002, GAP-006)

xianyun run starts reloaders and shuts them down cleanly, but the process supervisor that runs your edit_mode_processes under mirrord stops after its preflight checks. xianyun status returns an error when the cluster is Ready and reloaders are configured. run also doesn’t prepare or clean up mirror deployment copies, or check preconditions.

doctor runs two diagnostics (GAP-003)

The Go tool ran five: cluster domain, orphaned mirror copies, disk space, macOS firewall, and node health. Xianyun runs the first two. A clean doctor result doesn’t rule out the other three.

--no-cache does nothing (GAP-005)

The flag and XIANYUN_NO_CACHE are read and then ignored, because the remote-fragment cache isn’t wired in.

up doesn’t check /etc/hosts (GAP-007)

The Go tool validated the hosts file during up. This one doesn’t.

Names and output (GAP-008)

Many strings still say Caproni, and ca inspect prints raw Rust debug output for its dates.

Over MCP

Gated tools need a client that supports elicitation at protocol 2026-07-28 or newer, and the confirmation can be bypassed by a client that supplies an answer on the first call. run, kubectl, k9s, stern, and tool aren’t exposed. See Confirmation and gated tools.

Open security findings

The threat model lists 35 findings, 12 of them High, and none has been mitigated yet. Security summarises the ones that affect day-to-day use.

Documentation for Caproni

Caproni’s own documentation describes the Go tool and its names, not this one. Where a page you find elsewhere disagrees with this book, this book describes xianyun.