Skip to main content
A trigger in the Komodor Agentic Operation Platform (KAOP) is a recurring cron schedule that starts an agent run. That is the whole of it, and the distinction matters: if you want an external system to start work by posting to a URL, that is an endpoint, it lives under Integrations, and it is not a trigger. This page covers creating and operating schedules, and points you at the right surface for the inbound case.
Triggers are cron schedules. Inbound webhook endpoints live under Integrations → Endpoints (inbound). They are a separate surface with separate authentication, and nothing in the trigger registry manages them. See Inbound endpoints.

Where triggers live

The trigger registry is account-wide, on the Triggers tab of Fleet. It lists every schedule in the workspace rather than only one agent’s, which is what makes it useful for answering “what runs overnight?” The registry describes itself the same way: recurring agent runs on a cron schedule.

Create a schedule

1

Open Fleet → Triggers

Press Create schedule.
2

Choose the agent

One schedule targets one agent. The agent cannot be changed afterwards — to move a schedule, make a new one and delete the old.
3

Write the cron expression

A standard five-field expression: minute, hour, day of month, month, day of week.
4

Set the timezone

The zone the schedule’s wall-clock time is read in. The dialog defaults to your browser’s zone; through the API the default is UTC.
5

Give it input

Input (JSON) is a JSON object handed to the agent on every fire. Leave it empty and the agent runs with no input.
6

Create it

The schedule appears in the registry, enabled.

Cron expressions

An expression KAOP cannot schedule is rejected when you save it, with the reason, rather than failing silently later.
Some cron shapes do not survive a timezone. KAOP runs schedules by converting your local expression into its UTC equivalent, so an expression with no single UTC equivalent — a date-specific schedule that would shift across a day boundary, for instance — is refused at save time. Write the schedule in UTC if you need one of those shapes.

Timezones and daylight saving

Set the timezone to the zone your team thinks in. A schedule written as 09:00 in Europe/Berlin is converted to the equivalent UTC schedule, and that conversion is re-derived as the offset changes — so the run stays at 09:00 local across a daylight-saving transition rather than drifting by an hour.

What the run receives

The Input (JSON) object is passed to the agent verbatim on every fire. Two shapes are common:
For an agent that takes a natural-language instruction, use the prompt key:
A scheduled run is marked as having come from a schedule, and records which trigger fired it, so you can trace any run back to the schedule responsible.

Operate a schedule

The registry shows each schedule’s Trigger ID, its agent, its cron expression, when it last fired, and whether it is enabled, alongside counts of how many schedules are enabled and disabled.

Two independent switches

A schedule fires only when both it and its agent are enabled. That gives you two levers with different reach:
  • Disable the schedule to stop one recurring job.
  • Disable the agent to stop all of its triggers at once, while leaving manual runs and chat working. See Manage a deployed agent.
There is no minimum interval. A schedule can run every minute — which also means nothing stops you from scheduling an expensive agent far more often than you meant to. Check Agent spend after adding a frequent schedule.

Schedules an agent declares for itself

An agent can declare its own schedules in its agent-spec.yaml, and those register automatically when the worker connects:
These appear in the registry marked YAML-managed and are read-only there: the switch and the delete control are disabled. That is deliberate — the schedule’s source of truth is the agent’s repository, so change it there and redeploy. An edit made in the console would be overwritten on the agent’s next heartbeat.
Declare a schedule in the spec when it is part of what the agent is — a nightly digest agent that makes no sense without its nightly run. Create it in the registry when it is an operational choice you may want to change without a deploy.
The registry also lists the Slack channels an agent subscribes to through its spec, read-only, for the same reason. Channel routing itself is configured under Channels.

Inbound endpoints are not triggers

If something outside KAOP should start a run by making an HTTP request, you want an endpoint. Endpoints live under Integrations → Endpoints (inbound) and are a genuinely different object: they authenticate the sender, they can capture payloads before they route anywhere, and their URL is stable independently of what they point at. Creating one walks through the sender and its name, then Authentication, then a Test & mapping step where you can fire a real request and see what arrives, and finally Routing — which agent or workflow it starts.
Routing is the last step and it is optional. An endpoint with no target accepts deliveries and captures them without running anything, which is the right way to confirm a sender’s payload shape before you point it at an agent. You can attach the target later without the URL changing.
An endpoint’s token is shown once, when it is created or rotated. A GitHub endpoint validates every delivery against a signing secret, so an endpoint created without one rejects everything while looking configured — set the secret as part of creating it.
For KAOP posting events out to a URL of yours, see Outbound webhooks.

Everything else that can start a run

Schedules and endpoints are two of several. For the full picture — chat, channels, workflow steps, modules, agent-to-agent invocation, and manual runs — see Run — how it works.

Next steps

Manage a deployed agent

The agent-level switch that stops every trigger at once.

Runs & evidence

What a scheduled run leaves behind.

Built-in integrations

Where endpoints and outbound webhooks live.

Orchestration

Starting several agents in sequence rather than one on a timer.