Peren documentation
Error reference
Errors operators and Workers see, grouped by surface, with the next action.
This page lists errors you see at the CLI, in config validation, or from a Worker, and the next action for each.
CLI and process start
| What you see | Cause | Next action |
|---|---|---|
error: … on stderr, exit 1 |
The command failed after it accepted the arguments | Read the message. Fix config, credentials, paths, or fleet state, then retry. |
Usage text on stderr, exit 2 |
Invalid invocation | Fix flags and arguments. See Exit codes. |
d1 restore requires D1 time-travel snapshots and bookmarks, which are not available in the current native storage model |
peren d1 restore |
Do not rely on D1 time travel. Restore from your own backups. See Unsupported behavior. |
required environment variable "NAME" is not set |
A binding or provider names an environment variable that is missing before listeners open | Export the named variable in the process environment, then start again. |
Config validation problems naming otlp or logpush |
Those tables are present in the fleet file | Remove the tables. Use /metrics, peren logs, and peren tail. See Observability. |
| Compatibility flag unavailable or unknown during provider build | compatibility_flags failed runtime resolution |
Clear unsupported flags. See Compatibility dates and flags. |
Worker host and bindings
| What you see | Cause | Next action |
|---|---|---|
runtime host operation failed |
A node operation failed: network, signing, or storage | Check the binding, credentials, allowed hosts, and the upstream. Retry after that dependency answers. |
TypeError: outbound host … is not allowed by this binding |
env.NAME.fetch targeted a host outside allowed_hosts |
Add the host to the outbound binding or call a permitted host. Redirect targets are not re-checked. See Outbound fetch. |
KV compareAndSet is only supported by native KV |
compareAndSet on Redis or bucket KV |
Use native KV for conditional writes, or use put when a conditional write is not required. See KV. |
TypeError: fetch must return a Response |
The Worker fetch handler returned a non-Response value |
Return a Response or a promise that resolves to one. See Workers. |
TypeError: Container.<operation> requires a managed sandbox provider; this binding currently supports fetch() through the configured local port |
Container exec, start, stop, destroy, readFile, writeFile, or related control methods |
Use fetch against the local port only. See Containers. |
binding "NAME" does not use an operator-supported D1 backend |
Operator D1 command or query against an external D1 backend | Switch the binding to native_sqlite or turso. See D1. |
HTTP admission and readiness
| What you see | Cause | Next action |
|---|---|---|
HTTP 503 on new work after peer drain |
Peer listener received POST /control/v1/node/drain |
Expected while draining. Finish in-flight work, then remove or replace the node. See Drain a node. |
/readyz returns 503 |
Listener readiness is false | Inspect peer control status and admission. Do not send traffic to that listener. |