<?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: 권용범</title>
    <description>The latest articles on DEV Community by 권용범 (@needsbuilder).</description>
    <link>https://dev.to/needsbuilder</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3801767%2F52c8cdfe-8b25-4720-8dfd-f8ec116e5aed.jpg</url>
      <title>DEV Community: 권용범</title>
      <link>https://dev.to/needsbuilder</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/needsbuilder"/>
    <language>en</language>
    <item>
      <title>I built a one-click installer for OpenClaw AI agent</title>
      <dc:creator>권용범</dc:creator>
      <pubDate>Mon, 02 Mar 2026 13:21:38 +0000</pubDate>
      <link>https://dev.to/needsbuilder/i-built-a-one-click-installer-for-openclaw-ai-agent-9e7</link>
      <guid>https://dev.to/needsbuilder/i-built-a-one-click-installer-for-openclaw-ai-agent-9e7</guid>
      <description>&lt;p&gt;If you've ever tried setting up &lt;a href="https://github.com/openclaw/openclaw" rel="noopener noreferrer"&gt;OpenClaw&lt;/a&gt; — the&lt;br&gt;
  open-source AI agent that runs on Telegram — you know the drill: install Node.js, run a bunch of&lt;br&gt;
   npm commands, configure API keys in JSON files, set up a gateway process, figure out why it&lt;br&gt;
  won't start...&lt;/p&gt;

&lt;p&gt;I kept seeing people in the community give up halfway through the setup. So I built &lt;strong&gt;EasyClaw&lt;/strong&gt;&lt;br&gt;
   — a desktop app that handles the entire installation in three clicks.&lt;/p&gt;

&lt;p&gt;## What it does&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Download → Run → Enter your API key.&lt;/strong&gt; That's the whole process.&lt;/p&gt;

&lt;p&gt;EasyClaw automatically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Detects your environment (Node.js version, WSL on Windows, etc.)&lt;/li&gt;
&lt;li&gt;Installs missing dependencies&lt;/li&gt;
&lt;li&gt;Configures OpenClaw with your AI provider (Anthropic, Google Gemini, OpenAI, MiniMax, or GLM)&lt;/li&gt;
&lt;li&gt;Sets up a Telegram bot so you can chat with your AI agent from your phone&lt;/li&gt;
&lt;li&gt;Runs the gateway process in the background with a system tray icon&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;## The interesting technical challenges&lt;/p&gt;

&lt;p&gt;### Cross-platform WSL automation (Windows)&lt;/p&gt;

&lt;p&gt;On macOS, the setup is fairly straightforward — install Node.js, run npm. But Windows doesn't&lt;br&gt;
  have a native Unix environment, so OpenClaw runs inside WSL (Windows Subsystem for Linux).&lt;/p&gt;

&lt;p&gt;Automating WSL installation from an Electron app turned out to be surprisingly tricky:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WSL state machine&lt;/strong&gt;: WSL can be in 6 different states. Each state needs different handling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reboot persistence&lt;/strong&gt;: WSL installation requires a system reboot. The app saves wizard state
to a JSON file with a 24-hour expiry, so users can pick up right where they left off after
rebooting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IPv6 issues&lt;/strong&gt;: WSL defaults to IPv6 DNS resolution which breaks some network calls. We force
&lt;code&gt;NODE_OPTIONS=--dns-result-order=ipv4first&lt;/code&gt; when running the gateway.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;### Electron lifecycle quirks&lt;/p&gt;

&lt;p&gt;The app lives in the system tray. Closing the window doesn't quit the app — it just hides it.&lt;br&gt;
  The gateway keeps running in the background and polls for status every 10 seconds.&lt;/p&gt;

&lt;p&gt;### 7-step wizard with conditional flow&lt;/p&gt;

&lt;p&gt;The installation wizard has 7 steps, but not all are shown to every user. We built a custom&lt;br&gt;
  &lt;code&gt;useWizard&lt;/code&gt; hook with history tracking for back navigation and &lt;code&gt;goTo()&lt;/code&gt; for skipping steps.&lt;/p&gt;

&lt;p&gt;## Stack&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Electron + electron-vite&lt;/strong&gt; for the desktop shell&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React 19 + Tailwind CSS 4&lt;/strong&gt; for the UI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TypeScript&lt;/strong&gt; throughout&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;electron-builder + GitHub Actions&lt;/strong&gt; for CI/CD&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Apple Notarization&lt;/strong&gt; for macOS code signing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;i18n&lt;/strong&gt; support for Korean, English, Japanese, and Chinese&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;## Try it out&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/ybgwon96/easyclaw" rel="noopener noreferrer"&gt;github.com/ybgwon96/easyclaw&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://easyclaw.kr" rel="noopener noreferrer"&gt;easyclaw.kr&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's MIT licensed and fully open source. Contributions welcome!&lt;/p&gt;

&lt;p&gt;Would love to hear your feedback. What AI providers would you like to see supported next?&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>electron</category>
      <category>react</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
