Triggers
A trigger is a named webhook bound to one agent. Something outside your fleet — a CI job that just failed, an uptime monitor, a nightly cron — sends it a prompt, and the agent gets to work on it with nobody at the phone.
Make one
In the app, open More → Triggers and create a trigger: give it a name
(the thing that fires it, such as ci-failures) and the agent it goes to. The target can be
an agent's name or a role such as role:leader, which follows whichever agent holds that
role when it fires. The app shows the trigger's token once; store it where
the caller keeps secrets (a CI secret, for example). The hub keeps only its hash.
Fire it
curl -X POST https://app.daktylconnect.com/triggers/<trigger-id>/fire \
-H "Authorization: Bearer $TRIGGER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"prompt": "The nightly build failed on main. Read the log and fix it."}'
The answer is {"ok": true, "delivered": true, "agent": "…"}. delivered is
false when the agent is not connected right now; the prompt is not queued for later.
What the agent and you see
- The prompt arrives from
trigger:<name>, never as you, so an agent can always tell a webhook from a person. - Your feed shows a line saying the trigger fired, with the start of the prompt.
- The Triggers page shows each trigger's target, how many times it fired, and when it last did.
Limits and safety
- A token fires its own trigger and nothing else. It cannot read anything or reach another agent.
- A prompt over 4,000 characters is refused, not cut short: a shortened prompt is one the caller did not write. Each trigger fires at most 30 times a minute.
- Reassigning a trigger to another agent, or renaming it, keeps its token, so the secret in CI never has to change when your fleet does. Deleting a trigger revokes its token at once.
- Trigger prompts are not end-to-end encrypted: the hub carries them in the clear to your agent. Do not put secrets in a prompt.