Nodd use cases

Five ways to connect approvals, alerts, and job monitoring to what you already run. Each one moves from the sender to Nodd, to an iPhone, to a result.

1. Production deploy approval (GitHub Actions)

For a team that wants automated releases with a person at the last step. You can review and decide on your iPhone without opening GitHub.

SenderGitHub ActionsAsks for approvalwith wait: trueNoddApproval cardDelivers to thechannel's membersiPhoneReviewApprove or rejectwith Face IDResultJob outcomeApproved: deployRejected: job failsExpired: job failsGitHub ActionsSenderAsks for approval with wait: trueApproval cardNoddDelivers to the channel's membersReviewiPhoneApprove or reject with Face IDJob outcomeResultApproved: deployRejected: job failsExpired: job fails

Minimal setup

- id: approval
  uses: blipdrop/nodd-action@v1
  with:
    key: ${{ secrets.NODD_KEY }}
    title: Deploy to production?
    level: high
    wait: "true"
    expires-in: "1800"

- name: Deploy
  run: ./deploy.sh

The step succeeds only on approval. Rejection, expiry, cancellation, and failure all fail the job, so it stops there. Pass a send key to key from Secrets. See GitHub Action.

Best fit: Free, if one person decides. Team, if a team receives it.

2. Stop risky AI agent actions (Claude Code hook)

For a developer who leaves work to an AI agent. The command stops before it runs, so you can read it and decide.

SenderClaude Codenodd hook asksbefore a tool runsNoddApproval cardDelivers with thecommand as the bodyiPhoneRead the commandA rejection caninclude a reasonResultHook decisionApproved: runsRejected: no runFailure: no runClaude CodeSendernodd hook asks before a tool runsApproval cardNoddDelivers with the command as the bodyRead the commandiPhoneA rejection can include a reasonHook decisionResultApproved: runsRejected: no runFailure: no run

Minimal setup

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [{"type": "command", "command": "nodd hook", "timeout": 1260}]
      }
    ]
  }
}

Add this to your Claude Code settings, and run nodd login first. Each run of a tool that matches matcher asks for approval. The default response deadline is 300 seconds. A rejection reason reaches the agent. A network failure never allows the tool. See Claude Code hook.

Best fit: Free, with up to 3 open questions. Team, if you run several agents.

3. Two-person database changes (multiple approvers and escalation)

For a team that does not want one person to decide on a production database change. Nothing runs until two people approve, and other people are told if nobody responds.

Sendernodd ask--approvals 2--escalate-afterNoddWaits for twoTells other peopleafter 10 min silentiPhoneOne at a timeShows progress suchas 1 of 2 approvedResultExit codeTwo approve: 0One rejects: 10No response: 11nodd askSender--approvals 2 --escalate-afterWaits for twoNoddTells other people after 10 min silentOne at a timeiPhoneShows progress such as 1 of 2 approvedExit codeResultTwo approve: 0One rejects: 10No response: 11

Minimal setup

nodd ask "Change the production DB?" --level high \
  --field Environment=production \
  --approvals 2 --escalate-after 600 --expires-in 3600 \
  && ./migrate.sh

The command after && runs only when the approvals are complete. The same person counts once. Escalation goes to the channel's Managers and Responders by default. See the Manual.

Best fit: Team. Multiple approvers and escalation are Team only.

4. Alerts that resolve themselves (Grafana, Datadog, and more)

For the person on call overnight. Firing alerts reach the iPhone, and recovered alerts leave the Action tab by themselves.

SenderMonitoringGrafana, Datadog,and other webhooksNoddMakes an alertLinks firing andrecovery by keyiPhoneAction tabOpens a link tothe sourceResultResolvedRecovery arrivesLeaves Action tabMonitoringSenderGrafana, Datadog, and other webhooksMakes an alertNoddLinks firing and recovery by keyAction tabiPhoneOpens a link to the sourceResolvedResultRecovery arrivesLeaves Action tab

Minimal setup

https://api.nodd.blipdrop.net/in/grafana/nodd_live_i_...

Issue the URL under Add integration in the app, and paste it into a Grafana webhook contact point. For Datadog, Sentry, PagerDuty, and Alertmanager, see Inbound URLs. Inbound URLs accept only messages without buttons, so they cannot ask for approval.

Best fit: Free. Team, if people share the rotation.

5. Nightly job monitoring (heartbeats)

For whoever runs nightly backups or reports. A job that stops before it can report a failure still shows up, because its heartbeat goes missing.

SenderNightly jobRuns nodd heartbeatwhen it finishesNoddWatches the clockNotifies after theinterval plus graceiPhoneMissing reportArrives at thehigh levelResultReports resumeYou check the jobResume notificationNightly jobSenderRuns nodd heartbeat when it finishesWatches the clockNoddNotifies after the interval plus graceMissing reportiPhoneArrives at the high levelReports resumeResultYou check the jobResume notification

Minimal setup

0 3 * * * /usr/local/bin/backup.sh && nodd heartbeat nightly.backup --every 86400

With &&, the report goes out only when the backup succeeds. --grace defaults to 10% of --every. Each channel can have up to 20, and reports do not count toward the monthly messages. See the Manual.

Best fit: Free. Team, if you need more than 10 channels.