Skip to content
Trigora
Start building →

Production considerations

Review these considerations before deploying a production workload to Trigora Cloud.

After an effect outcome is committed, recovery reuses that outcome. If the process fails after the effect starts but before its outcome commits, the effect may run again. For external APIs that are not inherently idempotent, provide an idempotency key to fn and store it in a system that survives retries. Trigora does not provide exactly-once delivery to external systems.

Waiting Executions stay on the artifact they started with. Deploying a new version does not migrate them. Cancel and start again if you need the new code. See Artifact pinning.

trigora cancel stops that Execution. It does not undo a committed effect. Compensate in your own system if you need to.

Trigora does not expose a separate retry-policy object. Re-execution of an uncommitted effect follows the failure behavior described above rather than a configured retry count.

Store TRIGORA_TOKEN in the environment or a .env file, never in source control. Event payloads and Program constants may be stored with the Execution, so do not use them for credentials or other sensitive values.

Trigora Cloud stores project secrets encrypted at rest. Effect code reads the current values from the runtime environment when the effect runs. A replace or delete applies on the next effect attempt. An attempt that has already started keeps the environment it started with. Secret values are not pinned to a Program version.

A Program deployed before secrets support must be redeployed once before its effects can see managed secrets. After that deploy, changing a value does not require another deploy.

trigora dev does not use Cloud secrets. It uses the environment of the local process, including a project .env file. See Secrets.

Inputs, event payloads, and results are stored as JSON on the Execution record and count toward durable storage. Trigora does not publish a separate byte limit for these payloads. Keep them small, and use external object storage rather than event payloads for large files.

Constructs outside the supported language profiles fail at compile time. See Unsupported constructs. Promise.all, Promise.race, gather, race, and Rust join / race compile only in the forms documented under Structured concurrency. Unsupported forms cannot be deployed and never run under an alternate recovery model.

Cloud meters durable operations, measured execution CPU, and durable storage. Waiting is free. Free includes $5 of monthly usage and has no overages. When that credit is exhausted, new top-level starts are refused. Executions that already exist continue, including timers, events, child executions, and recovery. Pro is a $60/month minimum and includes $60 of usage. Details: Usage & billing.

Recovery restores a continuation instead of replaying the completed prefix. This does not eliminate failures in external systems called by effects. The measurements in the technical report describe the tested workloads and should not be interpreted as a general latency guarantee. See How recovery works.