Skip to content

feat: align command surface with the latest exe.dev docs - #22

Open
lollipopkit wants to merge 20 commits into
mainfrom
feat/exedev-docs-sync
Open

feat: align command surface with the latest exe.dev docs#22
lollipopkit wants to merge 20 commits into
mainfrom
feat/exedev-docs-sync

Conversation

@lollipopkit

@lollipopkit lollipopkit commented Aug 10, 2026

Copy link
Copy Markdown
Owner

Checked against https://exe.dev/llms-full.txt on 2026-08-10.

exedev-ctl: commands upstream documents that only exec could reach

  • pool new/list/delete and new --pool — team reserved capacity
  • share add/remove --root, share receive-email --reply-policy
  • integrations test, integrations catalog, list --usage, --readonly, and the time-boxed --for/--until grants on attach
  • team settings auto-join, tax-ID fields on team billing update
  • billing credits usage/transactions/buy, billing payment, billing update, billing statement

Two documented commands are deliberately left to exec: billing provider link --token=... and exe0-to-exe1 <token>. Both take a token as an argument, and a typed wrapper would only make it easier to leak one into shell history and the process list.

new --command is removed. It is no longer in the upstream option list for new, so forwarding it only produced a server-side error.

Confirmation prompts

The dangerous-command guard now also covers pool delete, billing credits buy, billing payment remove, share access allow, team settings auto-join on, and share add --root — which grants SSH, Terminal, and Shelley access rather than the web-only share it resembles.

Server-side --yes forwarding (team disable, billing credits buy) moves from two hardcoded call sites to one declaration; exec is excluded so raw passthrough stays verbatim. --json and --yes also gained help text, which was previously blank.

exedev-k8s: SSH destination

Bootstrap reached every node at a hardcoded <vm>.exe.xyz. Upstream now documents that ssh_dest may carry a username prefix such as vm+bloggy@exe.dev when a VM hostname cannot route SSH directly, so bootstrap dialled the wrong destination for those VMs. It now reads the destination from the ls response (falling back to the hostname) and re-reads the list after creating VMs so new ones contribute theirs.

Release tooling (separate commit)

clap's #[command(version)] reads CARGO_PKG_VERSION, baked in at compile time, so --version reported whatever the crates were last set to rather than the tag the binary shipped under. scripts/release/set-version.sh rewrites the workspace members, the exedev-core path-dependency requirement, and Cargo.lock, and the release workflow runs it before the build. scripts/release/sync-homebrew-tap.sh regenerates the tap formula from published assets.

Docs

docs/exe-dev-api-reference.md (CLI reference section 10 → 11, check date, ssh_host/ssh_user, the llms-full.txt entry point), docs/exedev-automation.md, both cli/README coverage lists, both k8s_cli/README files — the old text described bootstrap as using ssh exe.dev ssh <vm>, which the code has never done — and the exedev-ctl skill.

Test

cargo test: 61 passed, 0 failed. cargo fmt --check clean, no new clippy warnings.

Summary by CodeRabbit

  • New Features

    • Added pool management, billing, payment, statement, tax details, team auto-join, and enhanced sharing commands.
    • Added integration read-only mode, credential testing, catalogs, and attachment expiry options.
    • Added global --yes support for eligible confirmation prompts.
  • Bug Fixes

    • Improved Kubernetes bootstrap, SSH routing, command safety, timeouts, secret protection, and readiness checks.
    • Added HTTPS endpoint validation and safer VM-name handling.
  • Documentation

    • Expanded CLI, billing, pool, integration, SSH, automation, and safety guidance in English and Chinese.
  • Chores

    • Improved release validation, version synchronization, publication verification, and Homebrew package generation.

Summary

Changes

  • Fleet configuration expansion, validation, and Kubernetes metadata reconciliation: Fleet YAML now expands control-plane, worker, and spare pools with inherited resources/tags, generated labels/taints, name and label validation, duplicate detection, and reconciliation of stale tool-owned node metadata.
  • Bootstrap lifecycle, cluster targeting, and generated credential state: Bootstrap now validates existing-cluster endpoint identity, provisions from an inventory with creation-response SSH destinations, installs new or existing k3s clusters, waits for API/node readiness, and persists generated tokens and kubeconfigs with migration and hardened filesystem handling.
  • VM inventory parsing and authoritative SSH destination selection: exe.dev listing parsing now handles nested and output-wrapped JSON/table payloads, prefers authoritative VM identity fields, filters malformed/error content, and maps safe SSH destinations with hostname fallback.
  • Remote SSH execution, retries, and bootstrap shell scripts: Remote execution gained bounded command lifetimes, constrained retry behavior, target-host verification, exit-status framing, output redaction, and scripts for Tailscale/k3s installation across supervisor and non-supervisor images.
  • exedev-ctl command model, transport selection, and dangerous-operation authorization: The general CLI adds/extends command parsing and command construction for VM, sharing, team, pool, integration, billing, invite, SSH-key, and related operations, with HTTP/SSH transport selection and local/server confirmation handling.
  • HTTPS /exec client transport: The core HTTP client now constructs a no-redirect client and validates HTTPS before sending bearer-authenticated exe.dev commands.
  • Release versioning, reproducible artifacts, and Homebrew publication: Release automation resolves and verifies annotated tags, builds pinned commits, synchronizes crate versions before compiling, publishes platform archives, confirms tag stability, and provides guarded version/formula update scripts.
  • Documentation, examples, and automation skill contract: User-facing READMEs, API/automation documentation, fleet examples, and the exedev-ctl skill reference were updated for the expanded CLI, fleet bootstrap, transport, and release behavior.

Loading
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.

1 participant