# Changelog ## Unreleased ### Removed - Drop the retired Celesto Cloud endpoints from the bundled private API client: the agent builder, managed agents and their runs, sessions, end users, credentials, MCP servers and settings, conversation threads, Telegram bots, model providers, traces and agent deployments. The service no longer serves them. The public `Computer` interface is unchanged. ### Fixed - Stop sandbox creates failing with "database is locked" when many start at once on a busy disk. Celesto's saved VM data now uses SQLite write-ahead logging, so reads no longer wait for writes and commits no longer wait on several disk flushes each. ## 0.1.13 — 2026-11-06 ### Security - Require the fixed `openssh-server` in Alpine images built on your machine, so a rebuild can't reuse a package open to the password bypass CVE-2026-123158. Cached Alpine images rebuild once the next time they're used, which needs Docker and network access. Published images use Ubuntu and aren't affected. ### Fixed - Keep the existing image when a rebuild fails, so saved shared-disk sandboxes can still start. A failed rebuild used to delete it. - Handle email invitations when adding an organization member through the bundled client. Adding someone who gets an invitation used to raise `KeyError` after the invitation had already been sent. ## 0.1.10 — 2026-10-25 ### Security - Make Celesto 0.1.10 require `celesto-core 2026.10.25` so new installs and upgrades receive the native hardening for disk-image staging, bounded decompression and Firecracker responses, and sysctl key validation. ### Fixed - Restore dashboard builds after the Tailwind 4 dependency update by using its separate PostCSS plugin and retaining the dashboard's custom theme configuration. ## 0.1.9 — 2026-10-25 ### Security - Release the security hardening for local APIs, guest connections, SSH host-key verification, archive and image handling, and privileged setup. - Restrict supported browser sessions to public websites and replace raw VNC access with authenticated capability URLs. - Publish rebuilt kernels, root filesystems, and standalone guest-agent binaries for AMD64 and ARM64 with verified SHA-256 pins. ## 0.1.8 — 2026-10-22 ### Fixed - Cloud creates send an `X-Celesto-Client` header, `cli` from the `celesto` command and `sdk` from Python code, so Celesto Cloud can tell CLI-created computers apart from SDK-created ones. Until Celesto Cloud supports the `cli` value, CLI-created computers are still recorded as `sdk`; creates succeed either way. ## 0.1.7 — 2026-10-21 ### Fixed - Free-trial sandbox limits explain that stopped sandboxes still count, with options to reuse the sandbox, delete it, or add prepaid credit. Running-sandbox limits report the allowed count when available. - Stop/resume errors tell you to inspect the computer's state rather than delete it or check published ports. - Browser and display connection errors retain recognized permission guidance while keeping connection credentials private. - Unreadable creation responses warn that creation may have succeeded and include the creation request's support reference. - Validation errors identify safe field names and recognized constraints instead of discarding them behind a generic HTTP 422. ### Added - Cloud HTTP errors expose stable codes, operation and computer context, safe request references, and recovery fields. `CloudOperationError` identifies transport, unreadable-response, and lifecycle-timeout failures and remains catchable as `CelestoError`. Existing `CloudAPIError` and HTTP status handling remain compatible. - Document structured error handling and operation-specific recovery. State-changing requests are never automatically replayed. ## 0.1.6 — 2026-10-21 ### Fixed - Cloud API errors explain missing API key permissions, organization access, and recognized billing restrictions instead of showing the same message for every HTTP 403. - Document the named API key permissions needed to create, use, and clean up cloud computers. ### Added - Build custom templates for Celesto Cloud with `Template`. Create one from a built-in template and a setup script with `Template.create()`, follow its build with `wait(on_log=print)`, and start computers from it with `create_computer()`. `Template.get()`, `Template.list()`, `Template.lint()`, `edit()`, `rebuild()`, `logs()` and `delete()` manage templates. A failed build raises `TemplateBuildError`, which names the failing script line and its exit code. ### Changed - Refreshed the Celesto Cloud API snapshot that the SDK's private client is generated from. ## 0.1.5 — 2026-10-17 ### Added - Show CPU and memory sizes in cloud computer list output. ### Changed - CLI help, output, and errors say "computer" instead of "sandbox", "VM", or "instance", matching the new [glossary](GLOSSARY.md). Browser sessions keep their name, and `celesto sandbox ...` still works. - The `next.*_command` values in `--json` output from `create` and agent preset `start` now print `celesto computer ...` instead of `celesto sandbox ...`. The keys are unchanged. - `celesto computer open` and `celesto computer desktop` name the right command when you pass the other kind of computer. ### Fixed - `celesto browser stop`, `open`, and `logs` say when a browser session does not exist and point to `celesto browser list`, instead of suggesting a retry. ## 0.1.4 — 2026-10-06 ### Added - Start and manage ephemeral GitHub Actions runners from the SDK. - Run Docker with CPU limits and virtual networks inside sandboxes with the updated guest kernel. - `celesto doctor` warns when the e2fsprogs tools are missing. ### Fixed - Paste multiline commands from Ghostty and Kitty into sandbox SSH sessions using a compatible terminal profile. Direct sandbox shells use the same profile fallback. - Reject invalid inputs earlier with clearer messages: disk sizes below the minimum, out-of-range ports, empty image directory paths, non-positive log tail counts, and allowed-domain entries without a hostname. - Report timeouts, aborted commands, oversized files and computer create failures with their own error codes, and carry recovery guidance into JSON output. - Keep custom image builds inside the custom cache directory. - Stop the swtpm helper process when it fails to start. - Improve browser search-field detection and stale-reference recovery. ## 0.1.3.post1 — 2026-09-28 - Re-publish the 0.1.3 package after PyPI omitted its files from the installer index. Runtime behavior and image pins are unchanged. ## 0.1.3 — 2026-09-28 ### Added - Run user-installed Docker inside Ubuntu sandboxes with the updated guest kernel and agent. - Use up to 32 GiB of memory with QEMU sandboxes. - Resolve cloud computer locations with GeoIP. ### Fixed - Resolve the sandbox's own hostname so `sudo` no longer warns about `celesto`. - Align cloud command events with the compute pool API. - Reject incomplete preset images before they are published. ## 0.1.2 — 2026-09-25 ### Added - Stop and resume the same cloud computer from Python, including after reconnecting. - Control local CLI and SDK telemetry capture. ### Fixed - Create cloud computers on compute pools by sending the required idempotency key. - Wait for package publication before running the installer smoke check. ## 0.1.1 — 2026-09-23 ### Added - Choose a fixed execution location with `LocalComputer` or `CloudComputer`, while keeping the same computer API. - Create local desktop computers with `celesto computer create` and open their terminals with `celesto computer terminal ID`. Use `--cloud` explicitly for cloud create, list, terminal, and delete operations. - Connect automation tools to the browser and viewers to the screen of the same local or cloud `Computer` with `browser()` and `display()`. Display connections default to read-only; see [connection usage](docs/python-cloud.md#connect-to-the-browser-or-screen). ### Changed - `Computer()` and `Computer.get(id)` now run locally by default. Cloud applications must use `provider="cloud"` or `CloudComputer`; explicit `local=True` and `local=False` remain supported. See the [migration guide](docs/local-first.md). ### Fixed - Keep sandbox creation output clear when several SSH ports are busy; record one summary after choosing a free port. - Find Homebrew's disk preparation tools automatically when growing sandbox disks on macOS. ## 0.0.15a0 — 2026-09-19 ### Added - Run commands on a local computer or Celesto Cloud with `from celesto import Computer`. - Stream command output with `Computer.run_stream()`. - Keep computers across Python sessions with `lifetime="persistent"` and reconnect with `Computer.get()`. ### Changed - Publish the Python package as `celesto`. Install this alpha with `pip install 'celesto==0.0.15a0'`. - Use `celesto` for all CLI commands, installation, updates, and shell completion. - Use `CELESTO_RUNTIME` to override the local executable used by the TypeScript SDK. - Update installation guides, examples, and release checks for the new package name. - Rename the native package to `celesto-core`, the TypeScript package to `@celestoai/celesto`, and the guest agent to `celesto-guest-agent`. - New state and configuration use `~/.celesto` and `CELESTO_*`; legacy `~/.smolvm` state and `SMOLVM_*` variables are read during the transition. ### Removed - The `smolvm` executable alias and old Python import path. This is a breaking release. - An obsolete OpenAI Agents example that depended on an unavailable integration. Published images from before this release retain their SmolVM guest protocol and should be rebuilt before using the renamed guest agent.