Skip to content
Trigora
Start building →

Limits

  • TypeScript (ts.subset.v1): one default-export async function. A missing or undefined argument uses a call-time default, otherwise it is undefined. Extra arguments are ignored. Explicit null stays null. The program id is the named export, or the file stem when the export is anonymous.
  • Python (py.subset.v1): one @program async function. Extra arguments are a start error. An omitted argument uses a compile-time constant default when one exists, otherwise it is a start error. The program id is the file stem.
  • Rust (rust.subset.v1): one pub async fn main. Exact arity, no defaults. A missing argument is a start error. Rust Program ids use the source file stem. For lib.rs and main.rs, the Cargo package name is used instead.
  • Durable operations: effect, waitForEvent / wait_for_event, sleep, invoke. Rust also has join and race. They stay in the program entry.
  • Effect keys and event names are string literals.
  • Between durable operations, ordinary computation includes arithmetic, objects, arrays, structs, enums, helpers, closures, and loops. A helper or closure frame cannot perform a durable operation. See Supported language semantics.
  • Structured concurrency uses TypeScript await Promise.all / await Promise.race, Python await gather / await race, and Rust join / race. The engine supports groups of 1–32 branches, while the Rust frontend accepts exactly two. See Structured concurrency.
  • Python asyncio concurrency primitives are not supported. TypeScript Promise.any and Promise.allSettled are also unsupported.
  • invoke passes the same ordered argument vector a fresh start binds. Resume does not bind again.

Unsupported constructs fail at compile time (compiler_failed or a CLI compile error).

  • Authenticate Trigora Cloud commands with TRIGORA_TOKEN; the CLI does not provide a trigora login command.
  • Trigora does not provide generated typed clients.
  • Webhook bodies are capped at 1 MiB. Cron schedules are 5-field. A webhook trigger has no static input. See Triggers.
  • Waiting Executions do not move to a newly deployed artifact.

Waiting wall-clock time is not billed separately. Trigora Cloud meters CPU time, durable operations, and durable storage. See Pricing for published rates. No separate payload byte limit is published here.

Recovery resumes from a committed continuation rather than replaying history. It does not provide exactly-once external I/O or guarantee constant-time recovery. See How recovery works and Production considerations.