trigora.toml
trigora.toml is the project deployment manifest. Programs stay discovered from globs. Triggers are declared beside them. A trigger is not part of a Program artifact.
[project]name = "acme-agents"programs = ["src/**/*.py"]
[[triggers]]name = "approval-webhook"type = "webhook"program = "approval"
[[triggers]]name = "nightly-research"type = "cron"program = "research-agent"schedule = "0 2 * * *"timezone = "UTC"
[triggers.input]scope = "daily"limit = 100
[triggers.input.filters]active = trueregions = ["us", "eu"][project].name is required. programs lives in that table. Unknown fields are errors. Key order does not matter. Platform ids are never written into the file.
Programs
Section titled “Programs”programs accepts one glob or an array of globs. Discovery names:
| Language | Program id |
|---|---|
| TypeScript | Named default export, otherwise the file stem |
| Python | The file stem |
| Rust | The source file stem. For lib.rs and main.rs, the Cargo package name |
An anonymous TypeScript default export compiles with artifact function name "default". That name is compiler metadata. The Program id is the file stem.
trigora deploy --program selects one of those ids. See Programs.
Triggers
Section titled “Triggers”[[triggers]] entries are project resources. name is unique in the project and is how deploy reconciles them. program must name a discovered program. A file with no [[triggers]] replaces the project’s triggers with an empty list.
| Type | Fields |
|---|---|
webhook | name, type, program. No schedule, no timezone, no input. The POST body is the program input. |
cron | schedule is required. timezone defaults to UTC. input is optional. |
Cron input decodes to JSON: strings, integers, floats, booleans, arrays, and tables. TOML datetimes are rejected.
Deploy replaces the project’s triggers with this list. Removing an entry removes that trigger. See Triggers.