Claude Code session notifications with dashboard links #117

Open
opened 2026-01-14 08:54:49 +00:00 by mprihoda · 1 comment
mprihoda commented 2026-01-14 08:54:49 +00:00 (Migrated from github.com)

Improve notifications from Claude Code sessions:

  • Route notifications through iw-cli instead of direct push
  • Include links to dashboard showing current task/phase state
  • Hook into Claude Code events (session end, waiting for input, phase completion)
  • Make it easy to go from notification directly to relevant context in dashboard
Improve notifications from Claude Code sessions: - Route notifications through iw-cli instead of direct push - Include links to dashboard showing current task/phase state - Hook into Claude Code events (session end, waiting for input, phase completion) - Make it easy to go from notification directly to relevant context in dashboard
Member

Intake: needs-input

1. Which push does iw-cli take over, and where does iw-cli send the notification?

The issue says "route notifications through iw-cli instead of direct push", but this machine has two different pushes. ~/.claude/settings.json sends permission_prompt notifications to your phone through moshi-hook. Both Claude profiles run procedures/.../agent-lifecycle-notify.sh, which POSTs lifecycle events to Gladys on :8888. The dashboard already shows "waiting on him" (slice 07, PR #447). So the remaining value must come from a push.

  • a) Take over the moshi-hook phone push. iw-cli adds a dashboard link to the phone notification. Gladys does not change.
  • b) Take over the Gladys POST. iw-cli sends the lifecycle events with links, and Gladys delivers them.
  • c) Take over both. One iw-cli entry point that sends to both channels. This is the most work.

Recommended: a) — it is the push that you see on the phone, so a link in it is most useful.

2. Does iw-cli only supply the hook command, or does iw-cli also write the Claude Code settings?

The hook wiring is in ~/.claude/settings.json, ~/.claude-iw/settings.json and the procedures repo. All three are outside this repository. The slice 07 card makes writing outside the repo need your approval (map.md#L156-L170).

  • a) iw-cli supplies a command (for example iw notify) and documents the hook lines. You edit the settings files yourself.
  • b) iw-cli also installs the hooks, like herdr integration install claude. This writes to your home directory.

Recommended: a) — it changes least and writes nothing outside the repo.

The dashboard binds to localhost and to one non-loopback address (the hosts field of ~/.local/share/iw/server/config.json). On a phone, a localhost link does not open.

  • a) Use the first non-loopback host from hosts. No new config. The link breaks if the order of hosts changes.
  • b) Add a config field for the link base URL. This is explicit, but it is one more setting.
  • c) Use localhost only. The link opens only on this machine.

Recommended: b) — the link address is then a clear decision, and it does not depend on the bind order.

Answer in a comment on this issue, per number, for example "1: a", or in your own words; intake reads it on its next iteration.

Intake: needs-input ### 1. Which push does iw-cli take over, and where does iw-cli send the notification? The issue says "route notifications through iw-cli instead of direct push", but this machine has two different pushes. `~/.claude/settings.json` sends `permission_prompt` notifications to your phone through `moshi-hook`. Both Claude profiles run `procedures/.../agent-lifecycle-notify.sh`, which POSTs lifecycle events to Gladys on `:8888`. The dashboard already shows "waiting on him" (slice 07, PR #447). So the remaining value must come from a push. - **a) Take over the moshi-hook phone push.** iw-cli adds a dashboard link to the phone notification. Gladys does not change. - **b) Take over the Gladys POST.** iw-cli sends the lifecycle events with links, and Gladys delivers them. - **c) Take over both.** One iw-cli entry point that sends to both channels. This is the most work. **Recommended: a)** — it is the push that you see on the phone, so a link in it is most useful. ### 2. Does iw-cli only supply the hook command, or does iw-cli also write the Claude Code settings? The hook wiring is in `~/.claude/settings.json`, `~/.claude-iw/settings.json` and the `procedures` repo. All three are outside this repository. The slice 07 card makes writing outside the repo need your approval ([map.md#L156-L170](https://code.iterative.works/iterative-works/iw-cli/src/branch/main/project-management/efforts/dashboard-control-plane/map.md#L156-L170)). - **a) iw-cli supplies a command (for example `iw notify`) and documents the hook lines.** You edit the settings files yourself. - **b) iw-cli also installs the hooks**, like `herdr integration install claude`. This writes to your home directory. **Recommended: a)** — it changes least and writes nothing outside the repo. ### 3. Which dashboard address goes into the link? The dashboard binds to `localhost` and to one non-loopback address (the `hosts` field of `~/.local/share/iw/server/config.json`). On a phone, a `localhost` link does not open. - **a) Use the first non-loopback host from `hosts`.** No new config. The link breaks if the order of `hosts` changes. - **b) Add a config field for the link base URL.** This is explicit, but it is one more setting. - **c) Use `localhost` only.** The link opens only on this machine. **Recommended: b)** — the link address is then a clear decision, and it does not depend on the bind order. Answer in a comment on this issue, per number, for example "1: a", or in your own words; intake reads it on its next iteration.
Sign in to join this conversation.
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
iterative-works/iw-cli#117
No description provided.