Skip to content

Atelier v0.19.0-beta

Polish release: smoother first-day experience, more reliable build path, and more honest defaults. Much of this was driven by feedback from running a real agent (Hermes, on this very platform) against the v0.18 build flow and watching where it tripped — the rough edges it hit are now sanded down.

Coming from v0.18.x? Straight upgrade — one command. One default changes: description-driven builds now default to the classic engine; see below.


Description builds default to classic

When you create an app from a description, Atelier now defaults to the classic build engine — a multi-stage pipeline that plans against what you asked for and builds to it. Use this when your description pins specifics that must be honoured: a named language/framework stack, an exact API contract, particular endpoints.

The orchestrator engine is still one click away and still the right choice for open-ended “make me a working X” asks where you don’t mind it choosing the stack — but it’s no longer the silent default that surprises a first-time user whose description gets reinterpreted.

You can change the platform default in Settings → Build & Deploy, and override per-build by passing pipeline_mode on POST /api/apps or in the UI’s new-app form.

Bring-your-own-code: smoother first push, agent-visible diagnostics

The push-to-build flow had a few “first time” papercuts when an agent (or you) was driving it:

  • Scaffold creates a truly empty repo. No seed README.md is committed, so your first git push doesn’t fight a stale main and the rebase dance it implied is gone.
  • The webhook tells you why nothing happened. If a push lands while the app’s still scaffolded (or in any state that defers a build), the event stream now emits a webhook_skipped event with the reason — agents watching the stream can correct course instead of waiting for a build that was never going to start.
  • The persistent /data mount is documented. Every app’s per-app PVC is auto-mounted at /data — write your SQLite file, uploads, cache, or log archive there and it survives rebuilds and pod rolls. The Build skill now covers what’s persistent and what’s ephemeral.
  • Token role clarified. git push through the proxy needs a Developer-role token (the same role as the REST authoring endpoints); Viewer tokens can clone/fetch but not push. The skill calls this out and the failure mode is no longer a mystery 403.

The orchestrator now honours your described stack

If you scaffolded an empty repo and asked the orchestrator to build (e.g. “a Python FastAPI app that does X”), it could pick the wrong language or framework — there was nothing in the empty repo to anchor on. It now reads the described stack on empty-repo builds and starts from there.

Stuck builds are recoverable

An app left orphaned in building state (rare — but possible if atelier-core restarted mid-build) used to need a kubectl-level intervention. Now:

  • A supervisor pass detects orphaned building rows and self-heals them on startup.
  • The UI shows a Cancel button on builds that have been running too long, so you can release the slot yourself without leaving the portal.

Per-app alert history

Alert history is now queryable per app: GET /api/alerts/history?app=<name> returns just the alerts attributed to that app, newest first. Useful for the “any alerts on app X lately?” question without scanning the whole platform feed.

Skills bundle

The atelier-build and atelier-operate skills shipped with v0.18 keep growing as the canonical agent docs:

  • Engine choicepipeline_mode is documented end-to-end, including how the fallback differs between create (platform default) and update (the app’s original engine).
  • Persistent /data — the BYO-code section spells out what survives rebuilds and what doesn’t.
  • Platform truths from the field — in-cluster Service ports (ingress-routed vs backend), the rebase-after-first-build pattern, and a few smaller fixes surfaced by running an agent against the real platform.

The skills bundle (latest/skills.tar.gz) is republished automatically on every change, separately from the platform release.

Under the hood

  • Git layer correctness: ensure_repo only treats an explicit 404 as “repo absent”, so a transient Gitea outage no longer risks shadowing an existing repo with a fresh one.
  • Redeploy dialog tidied: direct-mode apps no longer show the “regenerate with AI” radio (it doesn’t apply); the dialog mirrors the app’s actual build mode.
  • CI: the integration-test spike accepts an ATELIER_TOKEN directly alongside user/pass, fitting how the test harness actually authenticates in CI.

Upgrade

For everyone — one command:

Terminal window
curl -Lo upgrade.sh https://tryatelier.blob.core.windows.net/tryatelier/latest/upgrade.sh
chmod +x upgrade.sh
./upgrade.sh v0.19.0-beta

It rolls atelier-core, atelier-ui, and the MCP server pods. Your running app pods aren’t touched; folders, pins, alert channels, and MCP server deployments carry over unchanged.

Bug reports and feedback in the testers Discord channel. Thanks for testing.