Mute & Push Mode
Dial how much Zeph pushes, per project or machine-wide.
Pushes fire for every Claude Code session, not only ones launched with zeph cc — that
command is the remote-control bridge, not the notification switch.
/zeph-mute Disable all notifications for this project
/zeph-unmute Re-enable them
/zeph-status Show current state (mute + push mode, and where it came from)
/zeph-quiet Only high-priority pushes reach you ← the default
/zeph-loud Push on every turn
/zeph-normal Push on every turn that did real work, quiet on readsQuiet is the default
An install with no dial pushes only on high-priority signals, so a long session does not turn into a stream of per-turn notifications.
What still reaches you either way:
- Questions. The agent asking you something is never suppressed.
- The completion push when a session has been idle for five minutes.
If you would rather hear about every working turn, run /zeph-normal — that was the old default.
Machine-wide defaults
Add --global to any of the three dials to set the default for every project that has no dial of
its own. A per-project dial always outranks it, so /zeph-normal opts a single project back into
per-turn pushes and /zeph-normal --global does it everywhere.
Where the state lives
State lives in a file under ${XDG_STATE_HOME:-~/.local/state}/zeph, keyed by project directory,
with pushmode-default holding the global one. It survives reboots and new sessions until you
undo it.
Mute silences both hooks and CLI calls and overrides any push mode. Mute stays per-project by design, since a global mute could never be lifted for a single project.
The full resolution order, including the legacy /tmp locations and what an empty dial file
means, is documented under CLI & SDK → Command Reference, in the same section.