Documentation Index
Fetch the complete documentation index at: https://docs.zavu.dev/llms.txt
Use this file to discover all available pages before exploring further.
Runtime versions
Each Zavu Function is built against a specific runtime layer — a sealed bundle containing@zavu/functions, our SDK, and a small set of curated
libraries. Layer versions are immutable: once a function is deployed against
zavu-functions-runtime:7, it keeps using that exact version forever, even
if we publish newer ones.
This means your function is stable. We can iterate the runtime without
breaking what’s already live.
How pinning works
- First deploy: function is pinned to whatever the latest runtime layer was at deploy time.
- Subsequent deploys (
zavu deploy): keep the same pin. The runtime doesn’t change even if newer versions are available. - Opt-in upgrade (
zavu deploy --update-runtime): bump to the latest.
Checking your pin
:7 is the version number. Same ARN across deploys means same
runtime.
Auditing per-deployment
Every deployment record stores which runtime ran:Upgrading
v8 and you were pinned to v7:
- New Lambda layer ARN written to your function.
- All subsequent
zavu deploy(without the flag) keep you onv8.
When you should upgrade
Most of the time, never. Stay pinned. Upgrade only when:| Reason | Action |
|---|---|
| Security advisory for your current runtime | Upgrade immediately. We’ll email you. |
New feature you want (defineFlow, new SDK methods, etc.) | Upgrade when convenient. |
| Curated dep version bump that fixes a bug affecting you | Upgrade. |
| Performance improvements in cold-start, bundle size | Upgrade when convenient. |
| Nothing changed and the new version is just a refactor | Don’t bother. |
When you should NOT upgrade
- Breaking change in the framework that touches a method you use. Read the changelog first. Upgrade after fixing your code.
- Dependency bump in a curated lib (zod, hono, etc) — if your code depends on specific behavior, test first.
Support policy
| Status | Receives security patches | Accepts new deploys | Functions keep running |
|---|---|---|---|
active (latest) | ✅ | ✅ | ✅ |
deprecated | ✅ for 6 months | ✅ | ✅ |
eol | ❌ | ❌ (deploy fails) | ✅ existing only |
deprecated or eol, we email project owners 60 days
before the transition with the affected function list.
“EOL” never means “AWS deletes the layer”. We use
skip_destroy in our
infrastructure so deployed functions keep their runtime indefinitely. EOL
only blocks new deploys — existing functions on EOL layers run forever.Bulk upgrade
When a security patch lands, you can sweep all your functions:What’s actually in a runtime layer
The current layer (~3 MB) contains:| Package | Version range | Purpose |
|---|---|---|
@zavu/functions | platform-bundled | defineFunction, defineAgent, defineTool, verifyWebhook |
@zavudev/sdk | latest stable | Call Zavu APIs |
zod | ^3.22 | Schema validation |
hono | ^4 | HTTP-friendly utilities |
dayjs | ^1 | Date manipulation |
| Lambda built-ins | — | fetch, crypto, Buffer, etc. |
import one of these in your function source code, esbuild marks it
as external and the runtime resolves it from the layer — no npm install
needed, no bundle bloat.
To use a package NOT in the layer, declare it in package.json and the
build worker installs it during zavu deploy:
Rolling back
We don’t have a--runtime <arn> flag yet for explicit version pinning. If
an upgrade breaks you and the previous runtime is still active/deprecated
(not yet EOL), the workaround is to deploy from a previous source commit
without --update-runtime:
