These docs are for a previous release (v1.8). See the latest release (v1.9)
Testing your application
Before you roll Architect out in production, validate your own application in a staging environment. The Quick start covers the mechanics of hibernating and waking a pod; this page is about confirming your workload comes through that cycle correctly.
Deploy under Architect
Add the runtime class and annotations to your workload and deploy it to staging. See Configuration for the full annotation reference.
spec:
template:
metadata:
annotations:
architect.loopholelabs.io/managed-containers: '["my-container"]'
architect.loopholelabs.io/scaledown-durations: '{"my-container":"60s"}'
spec:
runtimeClassName: runc-architectWhat to validate
Drive your app through a full hibernate and wake cycle (the Quick start has the exact commands) and confirm:
- It hibernates. After the idle timeout, the
status.architect.loopholelabs.io/<container>label readsSCALED_DOWN. - It wakes. A
kubectl exec, or incoming traffic whennetwork-monitoris set, returns the label toRUNNINGand the app responds normally. - In-memory state survives. Write a value, let the container hibernate, wake it, and read the value back; it should still be there.
- Health checks pass after wake. Liveness and readiness probes recover. If they keep the container awake or fail, enable the health-check proxy.
- Open work is not corrupted. Connections, transactions, and background jobs resume cleanly rather than erroring.
Check logs on failure
kubectl logs -n architect -l app.kubernetes.io/name=architectd | grep <pod>The Architect Console also shows per-pod events, timings, and checkpoint details.
Compatibility matrix
GPU workloads are not supported yet. These language and framework combinations have been tested:
| Language | Application | Hibernation | Migration |
|---|---|---|---|
| C | PostgreSQL | Yes | Yes |
| C | Valkey | Yes | Yes |
| Go | net/http | Yes | Yes |
| Java | Kafka | Yes | Yes |
| Java | Spring Boot | Yes | Yes |
| PHP | WordPress | Yes | Yes |
| Python | http.server | Yes | Yes |
| Ruby | TCPServer | Yes | Yes |
| Rust | miniserve | Yes | Yes |
| C# | ASP.NET | No | No |
| JS | Node.js | No | No |
Node.js and ASP.NET aren't supported yet: their runtimes rely on kernel
features CRIU cannot checkpoint. For Node.js this is io_uring, which libuv
enables by default in current releases.