<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Verdeoc</title>
    <description>The latest articles on DEV Community by Verdeoc (@verdeoc).</description>
    <link>https://dev.to/verdeoc</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4160359%2F959c04e7-eca1-4360-a701-1ead0055cefd.png</url>
      <title>DEV Community: Verdeoc</title>
      <link>https://dev.to/verdeoc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/verdeoc"/>
    <language>en</language>
    <item>
      <title>A concrete OpenClaw workflow: notify your iPhone when an agent finishes</title>
      <dc:creator>Verdeoc</dc:creator>
      <pubDate>Sun, 18 Oct 2026 19:41:40 +0000</pubDate>
      <link>https://dev.to/verdeoc/a-concrete-openclaw-workflow-notify-your-iphone-when-an-agent-finishes-233p</link>
      <guid>https://dev.to/verdeoc/a-concrete-openclaw-workflow-notify-your-iphone-when-an-agent-finishes-233p</guid>
      <description>&lt;h1&gt;
  
  
  A concrete OpenClaw workflow: notify your iPhone when an agent finishes
&lt;/h1&gt;

&lt;p&gt;A long-running OpenClaw task can finish after you leave the Gateway chat. This tutorial shows one narrow workflow: deliver a native iOS notification for the supported &lt;code&gt;agentFinished&lt;/code&gt; event using &lt;a href="https://github.com/verdeoc/reply-push-v2" rel="noopener noreferrer"&gt;&lt;code&gt;reply-push-v2&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This is a notification path for a plugin-owned event. It is &lt;strong&gt;not&lt;/strong&gt; a fix for OpenClaw core Web Push, the Control UI, the Gateway, or the browser relay.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;OpenClaw Gateway running on a machine you control&lt;/li&gt;
&lt;li&gt;The official OpenClaw iOS app with a paired iPhone node&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;reply-push-v2&lt;/code&gt; plugin, version &lt;code&gt;2.1.1&lt;/code&gt; at the time of writing&lt;/li&gt;
&lt;li&gt;A task that reaches the supported &lt;code&gt;agentFinished&lt;/code&gt; event&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The package was checked from a clean npm package install/load test. That verifies package structure and loading; it does not prove delivery on every iOS, network, or Gateway configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;p&gt;Install the plugin from npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw plugins &lt;span class="nb"&gt;install &lt;/span&gt;reply-push-v2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The repository also documents a manual fallback if the normal npm installation path is unavailable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/verdeoc/reply-push-v2#readme" rel="noopener noreferrer"&gt;Installation and configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://clawhub.ai/verdeoc/plugins/reply-push-v2" rel="noopener noreferrer"&gt;Canonical ClawHub plugin page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do not paste Gateway or APNs credentials into a prompt. Use the configuration path documented by the project and review third-party plugin permissions before enabling it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Pair the official iOS node with the Gateway.&lt;/li&gt;
&lt;li&gt;Install and enable &lt;code&gt;reply-push-v2&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Start a task that may run longer than your current chat session.&lt;/li&gt;
&lt;li&gt;Leave the desktop or chat surface.&lt;/li&gt;
&lt;li&gt;When the task reaches &lt;code&gt;agentFinished&lt;/code&gt;, check the paired iPhone for the native notification.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A practical prompt can be simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Run the requested task and notify my paired iPhone only when it finishes. Do not send intermediate updates.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For scheduled work, the same pattern applies: the scheduler starts the task, and the completion event is the notification trigger. No test post, payment, or external webhook is needed for this workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verification checklist
&lt;/h2&gt;

&lt;p&gt;Use this sequence when diagnosing a missing notification:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confirm the iPhone node is paired and reachable from the Gateway.&lt;/li&gt;
&lt;li&gt;Confirm the plugin is installed and enabled with &lt;code&gt;openclaw plugins list&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Run a small task that reliably completes.&lt;/li&gt;
&lt;li&gt;Check whether the task itself finished before diagnosing delivery.&lt;/li&gt;
&lt;li&gt;Check the iOS app notification permission and Focus settings.&lt;/li&gt;
&lt;li&gt;Inspect the Gateway/plugin logs without copying tokens or private payloads.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the task finishes but the notification path does not, collect the event timing and node reachability first. Do not describe that symptom as a core OpenClaw Web Push or relay fix: this plugin does not claim to repair those systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Free boundary and limitations
&lt;/h2&gt;

&lt;p&gt;The Free edition covers the documented &lt;code&gt;agentFinished&lt;/code&gt; category. Other event categories are part of the project's separately documented Pro offering. This tutorial does not promise delivery guarantees, background execution on every iOS state, or compatibility with an unpaired device.&lt;/p&gt;

&lt;p&gt;The workflow also depends on the official app/node, the Gateway being able to reach it, and the user's iOS notification permissions. A browser tab, PWA, or X/Reddit/Discord integration is not required.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/verdeoc/reply-push-v2" rel="noopener noreferrer"&gt;reply-push-v2 repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://clawhub.ai/verdeoc/plugins/reply-push-v2" rel="noopener noreferrer"&gt;ClawHub plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/verdeoc/native-ios-push-notifications-for-your-openclaw-agents-no-pwa-5b4i"&gt;Existing conceptual overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.openclaw.ai/tools/plugin" rel="noopener noreferrer"&gt;OpenClaw plugin documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>openclaw</category>
      <category>ios</category>
      <category>notifications</category>
      <category>automation</category>
    </item>
    <item>
      <title>Native iOS push notifications for your OpenClaw agents (no PWA)</title>
      <dc:creator>Verdeoc</dc:creator>
      <pubDate>Sat, 03 Oct 2026 19:02:43 +0000</pubDate>
      <link>https://dev.to/verdeoc/native-ios-push-notifications-for-your-openclaw-agents-no-pwa-5b4i</link>
      <guid>https://dev.to/verdeoc/native-ios-push-notifications-for-your-openclaw-agents-no-pwa-5b4i</guid>
      <description>&lt;p&gt;OpenClaw agents run on a Mac (a Gateway). You talk to them from Telegram, the Control UI, or the official iOS app. Once you close the app, you can miss agent events unless you keep a PWA open.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;reply-push-v2&lt;/strong&gt;, an OpenClaw plugin that sends native APNs push notifications to the &lt;strong&gt;official OpenClaw iOS app&lt;/strong&gt;. No PWA, no background tab, no polling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free edition 2.1.1:&lt;/strong&gt; &lt;code&gt;agentFinished&lt;/code&gt; notifications.&lt;br&gt;
&lt;strong&gt;Pro edition:&lt;/strong&gt; &lt;code&gt;agentQuestion&lt;/code&gt;, &lt;code&gt;humanMentioned&lt;/code&gt;, &lt;code&gt;scheduledTaskFailed&lt;/code&gt;, and &lt;code&gt;subagentFailed&lt;/code&gt;, plus an optional agent allowlist and custom mention regex.&lt;/p&gt;
&lt;h2&gt;
  
  
  Compatibility
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Package: &lt;code&gt;2.1.1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;OpenClaw build target: &lt;code&gt;2026.9.6&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Plugin API: &lt;code&gt;&amp;gt;=2026.3.24-beta.2&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Why native
&lt;/h2&gt;

&lt;p&gt;Your Gateway holds no APNs keys: notifications go through the hosted OpenClaw push relay (&lt;code&gt;ios-push-relay.openclaw.ai&lt;/code&gt;). The plugin auto-detects your paired iPhone node, so a single-device setup needs zero device configuration. It respects &lt;code&gt;NIGHT_MODE&lt;/code&gt; and dedupes per category for 15 seconds.&lt;/p&gt;
&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;OpenClaw Gateway with plugin support&lt;/li&gt;
&lt;li&gt;Official OpenClaw iOS app, paired and approved with the Gateway&lt;/li&gt;
&lt;li&gt;iOS notifications enabled for the app&lt;/li&gt;
&lt;li&gt;Reachability to &lt;code&gt;ios-push-relay.openclaw.ai&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;iOS only; Android is not supported&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Install (recommended)
&lt;/h2&gt;

&lt;p&gt;Install the free package with npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw plugins &lt;span class="nb"&gt;install &lt;/span&gt;reply-push-v2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enable the plugin and its conversation hook in &lt;code&gt;~/.openclaw/openclaw.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"plugins"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"entries"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"reply-push-v2"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"enabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"allowConversationAccess"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart the Gateway and verify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw plugins list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see the Free edition with &lt;code&gt;agentFinished&lt;/code&gt; enabled. Ask your agent to complete a turn and check the iPhone lock screen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Manual fallback
&lt;/h2&gt;

&lt;p&gt;If npm installation is unavailable, unzip the package into &lt;code&gt;~/.openclaw/plugins/reply-push-v2/&lt;/code&gt;, add the same &lt;code&gt;plugins.entries&lt;/code&gt; entry above, restart the Gateway, and run &lt;code&gt;openclaw plugins list&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Source and issues: &lt;a href="https://github.com/verdeoc/reply-push-v2" rel="noopener noreferrer"&gt;https://github.com/verdeoc/reply-push-v2&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm package: &lt;a href="https://www.npmjs.com/package/reply-push-v2" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/reply-push-v2&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ClawHub catalog search: &lt;a href="https://clawhub.ai/verdeoc/plugins/reply-push-v2" rel="noopener noreferrer"&gt;https://clawhub.ai/verdeoc/plugins/reply-push-v2&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Pro edition: &lt;a href="https://verdeoc.gumroad.com/l/openclaw-ios-notifications" rel="noopener noreferrer"&gt;https://verdeoc.gumroad.com/l/openclaw-ios-notifications&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The canonical ClawHub plugin page is &lt;a href="https://clawhub.ai/verdeoc/plugins/reply-push-v2" rel="noopener noreferrer"&gt;https://clawhub.ai/verdeoc/plugins/reply-push-v2&lt;/a&gt;. Verify the publisher is &lt;a class="mentioned-user" href="https://dev.to/verdeoc"&gt;@verdeoc&lt;/a&gt; and the version is 2.1.1 before installing.&lt;/p&gt;

&lt;p&gt;Core OpenClaw issues are separate from this plugin:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/openclaw/openclaw/issues/164557" rel="noopener noreferrer"&gt;iOS notification settings guidance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/openclaw/openclaw/issues/164585" rel="noopener noreferrer"&gt;Foreground Web Push suppression&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/openclaw/openclaw/issues/164147" rel="noopener noreferrer"&gt;Production/sandbox relay routing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These concern OpenClaw core/UI/relay behavior. &lt;code&gt;reply-push-v2&lt;/code&gt; does not claim to fix them; it adds a native &lt;code&gt;agentFinished&lt;/code&gt; notification path.&lt;/p&gt;

&lt;p&gt;Feedback welcome — especially which notification category matters most to you.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
