Changelog

What has been tested and published, newest first.

Plan limits count only live services, with a standby limit

Plan limits now count only live services (active and standby). A new max_standby limit applies: Free 1, Developer 3, Pro 10. Checked on the live platform with a Free account: a second standby create was refused with a 429.

Command line, console and upgrade buttons

The command line tool gained extend, metrics, tokens rotate and profile commands. The console shows a health pill on each service and has plan upgrade buttons, but checkout answers not open until payments exist, so nothing can be bought yet. Tested against a test API; a full signed-in walk-through is still to do.

Run-once services are deleted after they exit

A run-once service is deleted after it exits, and its logs stay readable for 10 minutes. Verified on a throwaway control plane with a 60 second log window. The case where a service exits while it is still running has not been verified.

More images measured, still planned

Measured on the microVM runtime but not available to tenants: Lightpanda, fake-gcs-server, Dex, Jaeger, OpenTelemetry Collector, Gitleaks, Syft, OSV-Scanner and OPA. Known gap in OPA: policies can call out to the network. Grype could not be measured because of its volume size. The Buildkite agent has not been tested with a real token. The GitLab runner boots and exits cleanly on a bad token; no job has run on it yet.

Base image pinned after a drift was found

The base runtime image had drifted between builds, so rebuilt service images needed more memory than measured. Pinning the base image fixed it: rebuilt images boot at their measured memory again.

Batch metrics, crash-loop fields and a CI runner on the way

One call, GET /v1/services/metrics, now returns metrics for all your running services (up to 20), and a service shows its restart count and a crash-loop flag. Checked on the live platform with a Free account; whether the crash-loop flag turns on under real crashes has not been tested. A process-spawning test on the microVM runtime passed (child shells, git, pipes), which is the first step toward a one-job GitLab CI runner service. The runner itself is not built or available yet.

Service names, health and a signed-in console upgrade

You can now give a service a name when you create it (names are unique per account, and a taken name is refused). A service shows a health value and its metrics, checked on the live platform with a Free account. The console shows a new service's credentials once after create, has a logs and metrics panel, and a create form with memory and settings. The console changes have been tested against a test API and not yet in a full signed-in walk-through.

Production control plane updated, with a per-service metrics endpoint

The live control plane now runs the latest build, tested first on a copy of production data. New: GET /v1/services/{id}/metrics (CPU time, memory, network bytes, run time), GET /v1/keys to list your keys without secrets, and msaas metrics and msaas extend in the command line tool and MCP server. Format, lint and all 319 control-plane tests pass on a remote build host.

Gateway-only access for webhook services is not enabled yet

The control plane part is verified on the live platform: it reads a new service's private address and restricts the service to the gateway address. The rebuilt webhook image that enforces it did not start reliably at its published memory size, so production keeps the previous image and no service has the filter. Network isolation between services stays partial.

Network isolation between services is partial

Tested a source-address filter that lets a service accept traffic only through the public gateway. It blocked a neighbouring service on the private network and kept the public address working, but the allowed address is per service and not documented by the platform, so it is not a guarantee. Isolation of accounts, keys and the API is verified; isolation on the private network still relies on per-service authentication.

Capacity limit and log redaction checked on the live platform

With the platform at its running-service limit, a further create is refused with a 503 capacity_exhausted answer and a Retry-After of 5 seconds, and deleting services frees the slots again. A secret written to a service log came back redacted from the logs endpoint.

Free plan acceptance run on the live platform

A Free account created a service that was running in about 12 seconds, stopped and restarted it, then deleted it with no instance or volume left behind. Metered running time was within 0.2 percent of the platform counters and metered storage matched exactly.

Console sign-in with GitHub works

Sign-in with GitHub completes on the live console and the control plane records the session. Sign-in is by invitation. The rest of the signed-in console pages have been checked against a test API with 97 automated flow tests and a browser pass; a full signed-in walk-through is still in progress.

All 20 service images start on the production runtime

Each of the 20 catalogue images was built, pushed and smoke-tested on the production microVM runtime. Memory floors were not re-measured on the rebuilt binaries.

Command line tool, MCP server and REST API built and tested

The msaas command line tool and the msaas-mcp server were tested end to end against the control plane. The REST API is at https://api.microsaas.app, with a generated OpenAPI document.

Website restructured for search and answers

Added a page per measured service, three use-case pages, a glossary, this changelog and a methodology page. All figures come from the product test notes.

Hosting platform capabilities validated

Tested the hosting platform API, scheduled and idle deletion, scale-to-zero wake timing, storage, custom domains and quotas. Found that services on the platform share a flat private network.

Memory floors probed for 14 services

Ran 13 services to a measured memory floor on the production microVM runtime; a 14th, DNS, booted but stays planned. Crash tests and disk-full tests ran for several of them.

Last updated