- Shelve parks one alarm instance until a time you choose.
- A silence holds back notifications for every alarm whose labels match, for a time window.
- An inhibition holds back notifications for target alarms while a related source alarm is firing.
- Deactivating a definition stops the rule from being evaluated at all.
Compare the options
Silences and inhibitions never stop an alarm from opening. The alarm opens, its history is recorded, and it appears on the Board — only the notification is held back. Use shelving when you want an instance to stop changing state.
Shelve an alarm instance
Shelve an instance when you know about the problem and are working on it, and you do not want reminders or state changes in the meantime. While an instance is shelved:- Golain does not evaluate it, so it does not fire, resolve, or change state.
- Re-notify reminders pause. They resume on the next interval after the shelf ends. See Notifications.
- The instance stays open and appears on the Board with a Shelved badge.
- Its acknowledgement state does not change. An unacknowledged alarm stays unacknowledged.
only active alarm instances can be shelved.
Shelve from the Console
1
Open the alarm
Go to Alarms → Board. Click Shelve on the alarm’s row, or open the instance and click Shelve in the header.
2
Pick a duration
In Shelve this alarm, choose 30 min, 1 h, 4 h, End of shift, or Custom (minutes). Presets longer than the definition’s limit are hidden. The dialog shows This alarm allows up to … with the limit.
3
Add a reason
Enter a Reason so the next person knows what is being done. It is recorded on the instance with your name.
4
Confirm
Click Shelve for …. If the alarm is still unacknowledged, you can click Acknowledge and shelve instead to do both.
Shelve with the API
data.item, with shelved_at, shelved_until, shelved_by, and shelve_reason set.
To unshelve, send an empty POST:
alarm instance is not shelved.
Shelve limit and auto-unshelve
Silences
A silence holds back notifications for every alarm whose labels match a set of matchers, during a time window. Use silences for planned maintenance, commissioning, or any known period when alarms are expected.How silences apply
- A silence applies when it is enabled (
is_activeistrue) and the current time is betweenstarts_atandends_at, inclusive. - Golain checks silences when an alarm fires and when it resolves. If any active silence matches, that notification is not delivered.
- Golain also checks silences before each re-notify reminder. A silenced reminder is skipped, and reminders resume once the silence ends.
- A silence created after an alarm has already fired does not recall the notification that was already sent. It does stop later reminders.
- A new or edited silence can take up to about 15 seconds to take effect.
Matcher syntax
A matcher set is a JSON array of objects. Every matcher must match (AND).
Rules to remember:
- Regular expressions are fully anchored.
prodmatches onlyprod, notproduction. Useprod.*to match both. - A missing label counts as an empty string.
site=""matches alarms with nositelabel, andsite!=pune-2also matches alarms with nositelabel. - Label values are compared as text. Numbers and booleans in an instance’s labels are matched by their string form, for example
"42"or"true". - An invalid operator or regular expression is rejected when you save, with
invalid matchers: ….
Labels you can match on
Matchers test the instance’s labels — the same key/value pairs returned in the instance’slabels field and shown under Labels on the instance page. They do not include the definition’s key, name, kind, or priority.
If you are unsure, the instance’s
labels field is always the source of truth.
The Console pre-fills new silence and inhibition forms with example matcher rows such as
alarm or kind. Replace them with label keys your instances actually carry, or the silence will not match.Manage silences in the Console
1
Open Silences
Go to Alarms → Silences. The page lists Silences and Inhibitions.
2
Create a silence
Click New silence. Add one or more Matchers, then set Starts and Ends (the window defaults to now plus four hours).
3
Add a reason
Enter a Reason (required). Optionally fill Approved by.
4
Save
Click Create silence.
Use Edit, Disable / Enable, and Delete on each row. After you delete a silence, notifications it was holding back resume on the next evaluation.
Manage silences with the API
All paths are under
https://api.ilyama.golain.io/core/api/v1. Reads need can_read_assets on the Project. Create, update, and delete need can_manage_assets.
Create body:
data.item:
_keys (required). For example, to end a silence early by disabling it:
matchers, starts_at, ends_at, reason, approved_by, is_active, metadata.
Delete returns {"ok": 1}:
Inhibitions
An inhibition holds back notifications for target alarms while a related source alarm is firing. Use it to cut cascade noise — for example, when a gateway goes down, mute the alarms from every sensor behind that gateway.How inhibitions apply
When a target alarm fires or resolves, Golain mutes its notification if all of these are true:- The inhibition is enabled (
is_activeistrue). - The target alarm’s labels match
target_matchers. - At least one other alarm in the Project is currently firing and its labels match
source_matchers. - The source and target have the same value for every label in
equal_labels. A label missing from both counts as equal. Ifequal_labelsis empty, any matching source mutes any matching target.
- The source must be firing at the moment the target fires or resolves. If the target fires first, its notification is sent.
- An alarm never inhibits itself or a peer through a symmetric rule. If a target also matches the source side, sources that also match the target side are ignored.
- Inhibitions apply to the fire and resolve notifications. They do not pause re-notify reminders — use a silence or shelve the instance for that.
- Inhibitions have no time window. They stay in effect until you disable or delete them.
Manage inhibitions in the Console
Inhibitions live on the same page as silences.1
Open Silences
Go to Alarms → Silences and click New inhibition.
2
Set the source
Under While a source fires, add matchers for the alarm that indicates the root cause.
3
Set the targets
Under Mute targets, add matchers for the alarms to mute.
4
Join on labels
In When these labels match, enter comma-separated label keys, for example
gateway_id, site. Leave it empty to let any source mute any target.5
Save
Optionally add a Reason, then click Create inhibition.
Manage inhibitions with the API
Permissions match silences:
can_read_assets to read, can_manage_assets to change.
Create body:
data.item. Updates use PATCH with _keys, and the updatable keys are source_matchers, target_matchers, equal_labels, reason, is_active, and metadata. DELETE returns {"ok": 1}.
In this example, while the gateway’s device offline alarm is firing, notifications are muted for alarms labeled site=pune-2 (for example, a threshold rule with site in its labels_by).
Acknowledge versus shelve
Acknowledging and shelving do different jobs. You often want both.Next steps
- Notifications — subscriptions, re-notify reminders, and escalation
- Console guide — the Board, Definitions, and Silences pages
- Kinds and conditions —
labels_byand how instances get their labels - API reference — every alarm endpoint
- Troubleshooting — alarms that do not notify or do not match