Hooks are a simpler abstraction compared to a DAG. It allows to trigger post-done operations, like sending notifications or triggering a logic in response to the final state of an operation. You can use any component as a hook, as long as it’s registered in the public component hub or in a private hub in your organization.

Using the public components

Polyaxon provides several public components where the main purpose is to be used as a hook, like notifiers. For instance you can notify a slack channel about the state of your jobs:

hooks:
  - trigger: succeeded
    hubRef: slack
    connection: slack-notification

If you need to send notifications for all done statuses:

hooks:
  - trigger: done
    hubRef: slack
    connection: slack-notification

Running multiple hooks

It’s also possible to have multiple hooks or the same hook based on different conditions, for instance, a user can both send a slack notification and start a tensorboard after a successful experiment:

hooks:
  - trigger: succeeded
    hubRef: tensorboard
    disableDefaults: true
    params:
      uuid: { value: '{{ globals.uuid }}' }
  - trigger: succeeded
    hubRef: slack
    connection: slack-notification