Iapetus is in beta — free to use on your own machine, no credit card. Get started free →
Iapetus

Changelog

What changed in each desktop release, newest first. To update, re-run the installer: curl -fsSL https://get.iapetus.dev | bash. The app also tells you when a newer version is out.

  1. v0.47.0 Free on your machine

    • Two plans: Local is free on your own machine, and Team is the headless engine for a team's servers and CI. Community and Pro licenses keep working until they expire; renewing either gives you a free Local license.
    • Exporting and importing environment files no longer needs a paid plan.
    • `iap verify` runs a failure drill without the desktop app: it applies an environment file, runs a scenario against real machines, and writes a JUnit report and a JSON report. Its exit code tells a failing system apart from a lab that could not be built. It runs on any license that includes the headless engine: Team, or a beta Pro until it expires.
    • Three ready-made failover drills ship with the command-line tools: NATS JetStream, Patroni (PostgreSQL) and k3s. Each comes with a broken variant that the drill catches, and there is an example GitHub Actions workflow.
    • Scenarios can assert on the logs a run recorded, and every fault records what the host showed after it was applied and healed.
    • The installer's `--cli` option sets up `iap` on a server or CI runner without the desktop app, and `iap image pull` downloads the guest images there.
    • An interrupted `iap verify` run, such as a cancelled CI job, is cleaned up by the next run of the same file, including the network faults it left behind.
    • A compose deployment whose containers did not stay up now fails the environment's start instead of counting as started.
    • Compose stacks deploy exactly as stored: multi-line values, quoted numbers, booleans and empty lists reach the machine unchanged. An environment entry written without a value (`KEY:` or `- KEY`) now passes the shell's value through, as compose does, instead of setting an empty string; a compose imported earlier with `- KEY` entries keeps the empty string until it is imported again.
    • Machines started together no longer sometimes refuse SSH with a changed host key.
    • Deleting a network is refused while a machine on it is still running.
  2. v0.45.1 One Iapetus at a time

    • Launching Iapetus while it is already running, for example hidden in the tray, brings the running app forward instead of starting a second copy with its own tray icon.
    • After an update, launching Iapetus restarts the running app into the new version.
    • Upgrading from 0.45.0: quit the running app once from its tray menu, then launch Iapetus again.
  3. v0.45.0 Ready for launch

    • A license that is about to expire, or has expired, says so in the app, with the way to renew.
    • The app no longer offers an update that your license doesn't cover.
    • On first launch, a checklist on the Map (also at /setup) checks KVM access, host networking and the guest image, and shows the fix for each.
    • Guest images download inside the app, checksum-verified and cancellable.
    • Runs show their progress everywhere: run strips on each environment, its latest run, a Provisioning state for new machines, and a boot log you can open from the machine.
    • Network partitions applied through the API or the MCP server show in the status center and on Networks.
    • A machine counts as stopped only once its process has really exited. If that can't be confirmed, the stop is refused and the machine keeps running.
    • AI agents (the MCP server and the HTTP API) no longer deploy compose stacks to the host itself: they deploy to machines, and the host target stays in the desktop app. Host files an agent copies or reads must be inside ~/.local/share/iapetus/exchange.
    • Ubuntu 20.04 LTS guest image.
    • Dialogs, drawers and notifications animate again, text colours meet WCAG AA contrast, deletes ask first, and more of the app works from the keyboard.
  4. v0.44.0 Nothing fails silently

    • The MCP server no longer restarts when a request arrives while a compose deploy is streaming its output.
    • The MCP server and the web agent find the environments agent where the desktop package installs it. When they cannot, the error says where they looked and how to install it.
    • Environment files with a key the schema does not know are rejected, naming the key and listing the accepted ones. Before, a misspelled key such as env for env_vars was silently ignored.
    • After a machine starts, the outcome of checking its compose deployments is recorded on the machine (pending, ok, failed with the reason, or none), so the API can tell "checked and stopped" from "never checked".
  5. v0.43.0 The seat shows up

    • Settings → Account re-checks with iapetus.dev which of your scopes can store environments, so a team seat issued after you signed in shows up without signing in again. A scope that cannot store environments says why.
    • When iapetus.dev cannot be reached, the last known status stands and the page says so.
    • Library › Composes: paging, sorting, a filter by name and bulk delete.
  6. v0.42.0 The key says what it is

    • Settings → License shows which key is installed (Pro license, Team seat or Community license) and who it was issued to.
    • Keys issued before this release keep working; their plan is read from the features they carry.
  7. v0.41.0 Environment sharing

    • Export an environment to a file you can commit or hand to someone. Before the file is written you see everything it carries, including environment values, and confirm.
    • Import an environment file. The import plans against this host first and asks about each conflict, such as a subnet that already exists under another name.
    • Sign in to iapetus.dev from Settings → Account to share environments to your personal or team catalog, and to import from it.
    • Export, import and sharing need a Pro or Team license.
  8. v0.40.0 Hardening

    • Security fixes.
    • Restoring or deleting a snapshot checks that it belongs to the machine first, so a malformed or mismatched snapshot can no longer leave a machine stuck.
    • An idle develop agent no longer uses a full CPU core.
  9. v0.39.0 Multi-site labs

    • L2 networks, a plain switch with no host address, no DHCP and no internet, so two sites can share one address plan.
    • Choose a machine's primary interface, and move a running machine's network card to another network. The guest sees the cable come out and go back in.
    • Network faults are set per network card and stay until you clear them. They survive stopping and starting the machine, and can be set while it is stopped.
    • Environment snapshots capture and restore every machine in an environment at one consistent point, fault state included.
    • Environment files gain file sets, deployment variables, readiness checks and a start order for deployments.
    • Scenario files, run over MCP, drive faults, heals, moves, snapshots and assertions across machines, with each step's result in the run timeline.
    • The image registry stays reachable from internet-blocked networks, so offline labs can still deploy.
  10. v0.38.0

    • Author composes over MCP and the HTTP API. Create and update composes and their services, then validate and render them.
  11. v0.37.0

    • Security fixes.
  12. v0.36.0

    • Rename a network.
    • Set one environment variable on a selection of machines at once.
    • The compose catalog shows where each compose is deployed.
    • A new network's gateway is derived from its subnet.
  13. v0.35.0

    • Faults and assertions get their own icons in the run timeline.
    • Accessibility improvements across the interface.
  14. v0.34.0 Machines all the way through

    • The machine page is reorganized into eight tabs, and the app says "machine" throughout.
    • Faults (offline, throttle, partition) appear in an environment run's timeline, next to the machines starting and stopping.
    • Over MCP and the HTTP API: network partitions between machines that keep SSH working, wait_for to block until a condition holds, apply_environment to converge the host to an environment file, and playbook authoring.
    • A machine's boot log (serial console) can be read over MCP and the HTTP API, and new machines get an IP address automatically when none is given.
    • Licenses can carry an "updates covered until" date. Versions released after it ask you to renew, while every version released before it keeps working. Beta licenses carry no such date.
  15. v0.33.0 Built around the environment

    • The sidebar follows the environment loop: Map, Machines, Networks, Runs, Scenarios and Library.
    • Runs. Every environment start is recorded, with a timeline and a merged log you can filter and export.
    • While an environment starts, the Map shows each machine's progress, and which machine failed and why.
    • New machines get the lab provisioning profile by default (Docker, WireGuard, nginx and developer tools). The slim profile is shown as Minimal.
    • Fixed starting several machines on one network at once, which could fail with "Address already assigned".
  16. v0.32.0

    • The app opens on the Map, with an environment switcher.
    • Denser pages, and the content pane scrolls instead of the whole window.
  17. v0.31.0 Environments

    • Environments group machines, networks and composes into one unit you start and stop together, with every start recorded. They work the same from the desktop app, MCP and the HTTP API.
    • Provisioning profiles choose what a machine gets at first boot, and the desktop app has an editor for them.
    • Start all and Stop all act on the machines the current filter shows.
  18. v0.30.0

    • Playbooks can inject faults. Cut a machine's network, restore it or throttle it as playbook steps.
    • The desktop package includes the system policy that the one-click host networking setup needs.
    • Speed and robustness fixes.

Every release and its downloads are on GitHub.