/triage command anyone you allowed can send from a chat. You describe it in plain words, check the steps Kepler drafts, and press Go live.
Automations are different from watchers. A watcher belongs to one conversation and wakes it. An automation belongs to the whole app and starts a conversation only when it needs you.
Build one
1
Open Automations
Click Automations in the sidebar.
2
Describe it, or pick a template
Write what you want in the box, for example “Every weekday at 09:00, list pods that are not running in prod and send me a short summary”. Or start from one of 15 templates, such as Incident first responder, Deploy guard or Certificate expiry check. Each template card shows the services it touches, and picking one puts its full brief in the box for you to change.
3
Check the flow
Kepler drafts the automation as a flow of steps on a canvas. Open any step to change it, and press Try it to see what it returns. Reads run for real. Nothing is sent or changed.
4
Go live
Every edit, yours or Kepler’s, lands in a draft. What runs changes only when you press Go live.
The automation builder
Each automation has its own chat beside the canvas, answered by the automation builder, an agent of its own. Ask it to add a step, explain a failed run, or change the schedule. It starts in Assist and changes only the draft, never what is live. The builder tries each step before it adds it. Reads run for real, and anything that would change something is only previewed. It can look up an integration’s tools and their inputs, read what each step returned on the last run, and see which of your chats are connected, so it can catch a post that would never arrive. For a chat-triggered automation, it can try a step with a sample message. It cannot run, delete or take an automation live, approve a step, or grant a permission. Those stay with you. Pick its model in Settings > Customize, under Agents. By default it uses your chat model.Your automations

- Waiting on you opens the approval in the Feed.
- Point at a row for its actions. Latest opens its latest report in the Feed, and Run now runs the live version.
- The menu beside them has Open latest on canvas, and Pause or Resume.
Triggers
What a webhook or a chat message carries is treated as data, never as instructions.
Webhooks
Go live to get the webhook’s address and token. The sender posts JSON to the address, with the token in a header. Both have a copy button on the trigger, and Copy a curl command gives you a request to try from a terminal.- Send a test sends a test event and starts a real run, marked as a test. It shows under Runs.
- New token replaces the token. The old one stops working at once, so update your alert source after you press it.
- Only this machine can reach the address, so a sender elsewhere needs a tunnel or a relay.
${trigger.payload.<field>}, for example ${trigger.payload.status}. A step can also run only for some events, such as “only if the payload’s status is firing”.
Steps
Any step can run only when a condition holds, such as “only if the verdict is not healthy”. A step whose condition is false is shown as skipped, not failed, and a step that depends on a skipped step is skipped too. If a step fails, you choose whether the run stops, keeps going, or jumps ahead. A run that stops unexpectedly, or that a restart left open, is marked failed.
A decision step can judge a list item by item: every pod, every log line, up to 200 items in one step. Later steps can then check whether any item was flagged.
Run one from a chat
Add the trigger When a message arrives in a chat and give it a command, such as/triage. Then anyone on a channel’s allowed list can run it from that chat:
/help in a chat to see the automations it can run.
The same command works on the desktop. Type / in the composer and chat-triggered automations are listed under Automations. Sending one runs the automation, and its answer lands in the session you sent it from.
A chat trigger hears commands only. Chat apps deliver Kepler direct messages and @mentions from people you allowed, not every message in a room, so alerts posted in a room by a bot never reach it. Feed alerts in through the alert source’s webhook instead.
A command cannot use one of the chat’s own names, such as
/new, /help, /sessions or /approve. See Channels.Post in a chat
A Post in the chat step sends a message. Leave the text empty to send the result of the step before it. It can go to one of three places:
A post that cannot be delivered fails the step, and the message lands in the Feed so nothing is lost. Try it on a post step shows the message and sends nothing.
What an automation may change
Automations run with nobody watching, so the limits are tighter than in a chat:- An automation runs in Observe or Assist, never Yolo.
- A step that changes something, such as a command that is not a read, an integration call that creates or updates, or a post to a conversation, runs only with the permission you give at Go live: Every run, or Ask me each time. Ask me each time pauses the run and asks you in the Feed and on your phone, for up to an hour. If nobody answers, the step is skipped and the run finishes, or the run stops, as you chose.
- The permission is tied to exactly what that step does. Edit the step and Go live asks again. Kepler cannot give or widen it. To take a permission back, press Take back this permission on the step.
- Commands on the always-blocked list are refused when you save, and again when the step would run.
- Each run has a budget for model tokens and run time. A run that hits either ends and says so. Kepler never switches to a cheaper model to finish.
Where results land
- Notify me sends you a notification. It shows in Kepler, as a system notification, and on your phone only when you are away and the step is urgent or needs an answer. An alert from this step clears itself when a later run finds the problem gone, because the step’s condition no longer holds.
- Publish to the Feed and Design a report post a page to the Feed that keeps a version for every run. By default the post notifies you with its headline. For a routine report, switch off Tell me when it’s published and it lands in the Feed without ringing the bell.
- Ask me first and every Ask me each time permission wait under Waiting in the Feed, and reach your phone when you are away.
Where they are kept
Each automation is a YAML file in~/.kepler/workflows/, named after the automation. You can read, diff and edit it, and Kepler shows problems before anything goes live. A small one looks like this:
Where to go next
Channels
Connect the chats an automation can answer in.
Watchers
A check tied to one conversation.
Decision model
Fast typed answers for decision steps.
Hooks
Run your own check before and after each step.