Skip to content

Releases: shipyard/shipyard-cli

v1.10.0

Choose a tag to compare

@akshaykalia akshaykalia released this 22 Oct 20:30
b3f89d4

Highlights

  • shipyard upgrade (alias shipyard update): installs the latest release and shows its release notes. A Homebrew install runs brew upgrade shipyard; any other install downloads the binary, checks it against the release's checksums.txt and replaces itself. Add --prerelease or --force as needed. (#71)
  • New-version notice: after a command finishes, at most once a day, the CLI says when a newer release is out. It only prints to a terminal's stderr and never in CI or inside AI coding agents. Turn it off with SHIPYARD_NO_UPDATE_CHECK=1 or update_check: false. (#71)
  • Find out why a build failed from your AI assistant: new MCP tools get_failure_details and get_build_logs, plus crashed-container logs from get_logs with previous: true. (#77, #80)
  • Signed, verifiable releases: every binary now ships with a build provenance attestation and an SPDX SBOM. See Verifying a download. (#79)

Upgrading from 1.9.0 or earlier: shipyard update in those versions compares versions as text and reports 1.10.0 as older. Upgrade once the way you installed (curl https://www.shipyard.sh/install.sh | bash, brew upgrade shipyard, or the Windows executable from this page); shipyard upgrade works from then on.

MCP server

New tools

  • get_failure_details(environment_id, build_id?): the failure phase and reason, the failing services, Shipyard's description of config or branch errors, and excerpts from the failing build or crash logs, in one call. It says when a rebuild should help. (#77)
  • get_build_logs(environment_id, service_name?, build_id?, kind?): full build or crash logs, for one service or all failing ones. (#77)
  • get_build_history now includes a failure summary for failed builds, and get_logs takes previous: true for a container that keeps restarting. (#77)

Changes

  • The verify prompt uses the failure tools: when the pushed commit's build failed, it stops polling, asks get_failure_details why, and fixes the cause rather than rebuilding blindly. (#80)
  • Every tool now has a title and readOnlyHint / destructiveHint / idempotentHint / openWorldHint annotations, so clients that gate approvals on them (such as Codex in writes mode) no longer treat read-only tools as writes. (#76)
  • When the CLI is out of date, the server tells the assistant, so a missing or failing tool leads to a shipyard upgrade suggestion. (#75)

Fixes

  • Server instructions now fit within Claude Code's 2048-character limit; the end of them, including the rule against printing bypass tokens, was being cut off. (#74)

Fixes

  • shipyard login, set token and set org work on the run that creates ~/.shipyard/config.yaml. They used to fail once, pointing at a shipyard config init command that doesn't exist. (#72)

Docs

  • MCP docs moved to docs/mcp.md, with a quick start, example requests and a configuration reference. (#70)
  • Setup for Kiro, tested client versions, least-privilege recipes per client, and how to update, uninstall or roll back. (#78, #82)
  • SECURITY.md: how to report a vulnerability and handle credentials. (#81)

Full changelog: v1.9.0...v1.10.0

v1.9.0

Choose a tag to compare

@akshaykalia akshaykalia released this 25 Sep 13:13
73de7fe

Highlights

  • shipyard api: authenticated gh api-style calls to Shipyard's /api/v1 and /api/v2 endpoints. Responses are size-capped and secrets such as bypass_token and kubeconfig credentials are redacted. (#65)
  • shipyard detached deploy <application-build-uuid>: create a detached environment from an existing build, with --name, per-repo --branch repo=branch overrides, and --build-on-commit / --build-on-commit-for. (#56)
  • shipyard get environment <id> --bypass-token: print just the environment's bypass token, for scripts such as SHIPYARD_TOKEN=$(shipyard get environment 12345 --bypass-token) ./check.sh. (#68)
  • A much more capable MCP server (shipyard mcp serve): new typed tools, a working exec_service, and a verify prompt that checks a pushed change against its environment. Details below.

MCP server

New tools

  • get_build_history, get_env_vars, put_env_vars, delete_env_var, restart_service, deploy_detached, update_branches. (#65)
  • exec_service now runs non-interactive commands in a service container and returns stdout, stderr and the exit code. It is off by default because it runs arbitrary commands. Turn it on with mcp.allow_exec: true in ~/.shipyard/config.yaml, or SHIPYARD_MCP_ALLOW_EXEC=true. While it's off, the tool returns the equivalent shipyard exec command instead. (#63)

Protocol

  • Prompts are now implemented (prompts/list, prompts/get) instead of only being advertised. (#59)
  • initialize sends server instructions to the client, so clients get guidance without a separate rules file. (#59)
  • The server negotiates the MCP protocol version with the client. (#59)

verify prompt

The prompt walks an agent through confirming that the environment is serving the pushed commit, then checking the change itself against it.

  • It plans first: before running anything, it proposes a test plan covering the change and its blast radius, and waits for you to approve, edit or reject it. (#68)
  • It checks coverage: it maps each changed behavior in the diff to a test that actually exercises it, and reports gaps instead of calling a green suite "verified". (#67)
  • The acceptance check is optional. Pass acceptance (a command such as npm run test:e2e, or a plain description of the expected behavior), or let the prompt use one the repository documents. With neither, it reports what it confirmed and doesn't stop to ask. (#62)
  • When the token fetch fails, the report names the right fix (upgrade, install, or log in). PowerShell is supported too. (#69)

Fixes

  • Fixed a race in the stdio transport where a request arriving just before EOF could be dropped. (#59, #64)

Security

  • Upgraded Go dependencies to fix 11 HIGH CVEs, including in docker/cli, moby/spdystream, logrus and golang.org/x/net. (#57)
  • Upgraded golang.org/x/net to v0.59.0 for GO-2026-5942, a reachable DNS-parsing panic. (#60)
  • Releases are now blocked if govulncheck finds a vulnerability in the shipped binaries. (#61)
  • CI now scans for secrets with gitleaks. (#58)

Full changelog: v1.8.1...v1.9.0

v1.8.1

Choose a tag to compare

@akshaykalia akshaykalia released this 08 Jun 19:40
fix: let goreleaser auto-generate formula install block

Custom install block referenced wrong binary name. GoReleaser
auto-generates the correct platform-specific rename.

v1.8.0

Choose a tag to compare

@maxsokolovsky maxsokolovsky released this 18 Oct 22:55
1b9671c

Major additions

  • This release adds initial support for using natural language to perform various tasks with the CLI. The new mcp serve command starts an MCP server and allows to connect with any LLM application that knows how to communicate over MCP (Model Context Protocol).
  • There is a new update command for updating the CLI binary in-place when a new version is available.

v1.7.0

Choose a tag to compare

@maxsokolovsky maxsokolovsky released this 11 Apr 20:46
5deb6bd

Major additions

  • This release adds a new telepresence connect command, which allows to start the telepresence service quickly. Note that the telepresence binary must be in the PATH.

v1.6.0

Choose a tag to compare

@maxsokolovsky maxsokolovsky released this 26 Feb 14:32
ef557f1

Major additions

  • This release adds autocomplete for environment IDs. Now, you can not only use autocomplete to complete commands and arguments but also environment IDs (where applicable) by hitting and getting a list of available environment IDs. You can also type the first few characters and let the CLI complete the ID for you.

Other changes

  • The CLI now properly handles the org value provided by custom config files or as a flag to most commands.

v1.5.0

Choose a tag to compare

@maxsokolovsky maxsokolovsky released this 17 Jan 21:44
62dc8c9

Major additions

  • This release adds volume and snapshot support. Refer to the README for documentation on what you can do with volumes and snapshots.

Other changes

  • The CLI now properly handles config values provided by custom config files

v1.4.0

Choose a tag to compare

@maxsokolovsky maxsokolovsky released this 31 Oct 21:03
c69495b

Major addition

This release introduces the login command for a quick browser-based authentication flow.

Smaller changes

When there is more than one page in a table of resources, such as environments, the CLI informs the user which page is next.
Some status messages have been adjusted (when environments get queued for restart and rebuild).
The CLI now prints the stack trace on any panics.
Users may run some general help commands without having authenticated to the CLI.
The Dockerfile now has instructions to inject the version and Git commit into the binary in the container.
Some third-party dependencies have been updated.

Full Changelog: v1.3.1...v1.4.0

v1.3.1

Choose a tag to compare

@maxsokolovsky maxsokolovsky released this 19 Apr 22:34

This release fixes an issue where the CLI incorrectly looked up a pod name when given a service name that was
different from how it is defined in the Compose file. Now the CLI properly checks if the service exists and suggests a similarly named existing service in case of a typo.

v1.3.0

Choose a tag to compare

@maxsokolovsky maxsokolovsky released this 22 Mar 00:50
  • Added a new visit subcommand that looks up an environment by ID and opens a web browser at its URL
  • Fixed a regression with the API token lookup - the SHIPYARD_API_TOKEN environment variable works again (its priority is higher that the config's value)
  • The CLI no longer drops a user into a sh shell when users don't provide command arguments to exec
  • Renamed all packages to allow third parties to import packages from the CLI into external code
  • Minor UI, error message, and help text improvements