<?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: Preecha</title>
    <description>The latest articles on DEV Community by Preecha (@preecha).</description>
    <link>https://dev.to/preecha</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%2F3891818%2Ffc0ea1ab-a477-4892-93a0-711e6f361ce2.png</url>
      <title>DEV Community: Preecha</title>
      <link>https://dev.to/preecha</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/preecha"/>
    <language>en</language>
    <item>
      <title>How to Run Qwen3.5 with OpenClaw for Free Using Ollama?</title>
      <dc:creator>Preecha</dc:creator>
      <pubDate>Mon, 12 Oct 2026 02:03:11 +0000</pubDate>
      <link>https://dev.to/preecha/how-to-run-qwen35-with-openclaw-for-free-using-ollama-485k</link>
      <guid>https://dev.to/preecha/how-to-run-qwen35-with-openclaw-for-free-using-ollama-485k</guid>
      <description>&lt;p&gt;You face high cloud bills when you run powerful AI agents every day. Qwen3.5 gives you frontier-level multimodal reasoning locally. You combine it with OpenClaw for persistent agent workflows and Ollama for simple local serving. The result is a complete AI agent that works 24/7 on your machine without subscriptions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;💡You test Ollama’s OpenAI-compatible endpoint and OpenClaw’s gateway directly inside Apidog. Visual requests, instant assertions, and saved test scenarios make every configuration change easy to verify.&lt;/p&gt;

&lt;p&gt;Small choices matter. You pick the right model tag. You set the correct base URL. These decisions create big differences in speed and reliability. This guide shows you exact steps so you finish with a production-ready stack you control completely.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes Qwen3.5 Perfect for Local Agent Work
&lt;/h2&gt;

&lt;p&gt;Alibaba released Qwen3.5 in early 2026 as its first native vision-language model family. The 397B-A17B flagship uses a hybrid architecture. It combines Gated Delta Networks with sparse Mixture-of-Experts. Only 17 billion parameters activate per token. You get strong performance with far less memory.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmpzcy66lxthnlmbgpa7q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmpzcy66lxthnlmbgpa7q.png" alt="Qwen3.5 Benchmark" width="800" height="517"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ollama hosts these practical tags you pull today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;qwen3.5:35b&lt;/code&gt; — fits in 24 GB VRAM, 256K context, full text and image support&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;qwen3.5:122b&lt;/code&gt; — needs 81 GB for deeper reasoning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You run &lt;code&gt;qwen3.5&lt;/code&gt; locally and keep your data private. The model scores 86.7 on TAU2-Bench and 85.0 on MMMU. You therefore trust it for agent tasks that mix text, screenshots, and tool calls.&lt;/p&gt;

&lt;h2&gt;
  
  
  How OpenClaw Turns Qwen3.5 Into a Real Agent
&lt;/h2&gt;

&lt;p&gt;OpenClaw runs as your always-on agent runtime. You connect it to WhatsApp, Telegram, Slack, Discord, or Signal once. The agent listens continuously. When you send a message, OpenClaw routes it to &lt;code&gt;qwen3.5&lt;/code&gt;, calls tools, controls your browser with Playwright, edits files, updates calendars, and answers proactively.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0ao6ydkh5n0ez5pcdljq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0ao6ydkh5n0ez5pcdljq.png" alt="Image" width="800" height="295"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You store memory across sessions. The agent remembers your projects and preferences forever. You install community skills or let &lt;code&gt;qwen3.5&lt;/code&gt; write new ones on demand. OpenClaw therefore becomes your personal digital assistant that never sleeps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Ollama Makes the Integration Simple
&lt;/h2&gt;

&lt;p&gt;Ollama serves models locally and exposes an OpenAI-compatible endpoint on port &lt;code&gt;11434&lt;/code&gt;. You point OpenClaw at &lt;code&gt;http://localhost:11434/v1&lt;/code&gt; and set the model to &lt;code&gt;qwen3.5:35b&lt;/code&gt;. Ollama handles quantization, GPU offload, and context management automatically.&lt;/p&gt;

&lt;p&gt;You achieve fast token generation on consumer hardware. You keep the full 256K context window that &lt;code&gt;qwen3.5&lt;/code&gt; needs for long agent conversations. You avoid cloud costs and data leaks at the same time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites You Need to Meet
&lt;/h2&gt;

&lt;p&gt;You prepare your machine before you start:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use macOS 14 or later, Ubuntu 22.04/24.04, or Windows 11 with WSL2.
&lt;/li&gt;
&lt;li&gt;Ensure at least 24 GB VRAM for the 35B model or 32 GB unified memory on Apple Silicon.
&lt;/li&gt;
&lt;li&gt;Keep 30 GB free disk space.
&lt;/li&gt;
&lt;li&gt;Install Node.js 22 or higher and Ollama 0.17 or newer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You verify your GPU later with one command. Hardware that meets these requirements gives you responsive performance. You fall back to smaller quantized models if you have less memory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install Ollama and Pull Qwen3.5
&lt;/h2&gt;

&lt;p&gt;You start by installing Ollama:  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;macOS:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;ollama
brew services start ollama
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Linux:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://ollama.com/install.sh | sh
systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; &lt;span class="nt"&gt;--now&lt;/span&gt; ollama
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You confirm the service runs with:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Next, you pull the model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull qwen3.5:35b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The download finishes in 10 to 30 minutes. You test basic inference:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama run qwen3.5:35b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You type a prompt inside the REPL. Qwen3.5 answers accurately. You exit with &lt;code&gt;/bye&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You immediately check the OpenAI-compatible endpoint because OpenClaw needs it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl http://localhost:11434/v1/models
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The response lists &lt;code&gt;qwen3.5:35b&lt;/code&gt;. You know the bridge works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Launch OpenClaw With Qwen3.5
&lt;/h2&gt;

&lt;p&gt;You use one Ollama command to install and start everything:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama launch openclaw &lt;span class="nt"&gt;--model&lt;/span&gt; qwen3.5:35b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ollama installs missing components, starts the gateway, and opens the TUI wizard. You connect your messaging channels, confirm the model provider, and save settings. The gateway runs on port &lt;code&gt;8080&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You test by messaging your bot on Telegram:&lt;br&gt;&lt;br&gt;
&lt;code&gt;“List files in my Downloads folder.”&lt;/code&gt;&lt;br&gt;&lt;br&gt;
OpenClaw uses &lt;code&gt;qwen3.5&lt;/code&gt; and returns the result.&lt;/p&gt;

&lt;p&gt;You can also configure manually. You edit &lt;code&gt;~/.openclaw/openclaw.json&lt;/code&gt; and set the Ollama provider base URL. You restart with:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Both methods give identical results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test the Full Stack With Apidog
&lt;/h2&gt;

&lt;p&gt;You open Apidog and create a new project called “Qwen3.5 OpenClaw Local Stack.” You set the base URL to &lt;code&gt;http://localhost:11434/v1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0kfwdmm0ccvdqfn7e2ar.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0kfwdmm0ccvdqfn7e2ar.png" alt="Testing integration in Apidog" width="799" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You add a POST request to &lt;code&gt;/chat/completions&lt;/code&gt;. You include these headers:&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;"Content-Type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"application/json"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"Authorization"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bearer ollama"&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;You use this body:&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;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"qwen3.5:35b"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"messages"&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="nl"&gt;"role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"system"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"You are a helpful agent."&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="nl"&gt;"role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Plan steps to organize my Downloads folder by file type."&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;"temperature"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"max_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2048&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;You send the request. Apidog shows streaming tokens in real time. You add a visual assertion for status code 200. You save the request as a test scenario. You run the scenario again after you change settings. You therefore catch problems immediately.&lt;/p&gt;

&lt;p&gt;You create a second collection for OpenClaw’s gateway at &lt;code&gt;http://localhost:8080/v1&lt;/code&gt;. You test end-to-end message routing. Apidog’s schema validation confirms tool-call formats match what OpenClaw expects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design and Document Your Endpoints in Apidog
&lt;/h2&gt;

&lt;p&gt;You use Apidog’s visual designer to model the chat completions schema. You import the official OpenAI spec. You customize it for &lt;code&gt;qwen3.5&lt;/code&gt; parameters. You generate interactive documentation automatically. You share the docs with teammates through Apidog workspaces if you work together.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7bjcrtkf6zwbbm66oflx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7bjcrtkf6zwbbm66oflx.png" alt="Image" width="799" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You also create mock responses inside Apidog. You simulate tool calls before you finish the full OpenClaw setup. You therefore develop faster and test edge cases safely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced Configuration for Better Performance
&lt;/h2&gt;

&lt;p&gt;You create a custom &lt;code&gt;Modelfile&lt;/code&gt; when you need lighter quantization:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM qwen3.5:35b
PARAMETER num_gpu 999
PARAMETER num_ctx 131072
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You build it with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama create qwen3.5:35b-q4 &lt;span class="nt"&gt;-f&lt;/span&gt; Modelfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You update your OpenClaw config to use the new tag.&lt;/p&gt;

&lt;p&gt;You enable vision by sending base64 images in chat messages. &lt;code&gt;Qwen3.5&lt;/code&gt; processes screenshots that OpenClaw captures during browser tasks. You therefore automate forms that require visual understanding.&lt;/p&gt;

&lt;p&gt;You install extra skills:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw skill &lt;span class="nb"&gt;install&lt;/span&gt; @community/calendar
openclaw skill &lt;span class="nb"&gt;install&lt;/span&gt; @community/github
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each skill registers JSON schemas. &lt;code&gt;Qwen3.5&lt;/code&gt; learns to call them automatically. You monitor usage inside the OpenClaw dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Workflows You Run Today
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Code Reviews:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
You message OpenClaw:&lt;br&gt;&lt;br&gt;
&lt;code&gt;“Review the PR in my repo and suggest refactors.”&lt;/code&gt;&lt;br&gt;&lt;br&gt;
The agent clones the repository, analyzes code, and creates a patch.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Personal Task Automation:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
You write:&lt;br&gt;&lt;br&gt;
&lt;code&gt;“Check my inbox for flight confirmations and add them to calendar.”&lt;/code&gt;&lt;br&gt;&lt;br&gt;
OpenClaw parses emails and updates your calendar.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Research Assistants:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
You send a PDF screenshot and ask for a summary plus follow-up questions. &lt;code&gt;Qwen3.5&lt;/code&gt; extracts text accurately. OpenClaw keeps context across days.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multiple Agents:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
You launch separate OpenClaw workspaces. One uses &lt;code&gt;qwen3.5:35b&lt;/code&gt; for general work. Another uses a specialized coder model. The gateway routes messages correctly.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Optimize Speed and Memory Usage
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Set &lt;code&gt;OLLAMA_NUM_GPU=999&lt;/code&gt; to use all GPU layers. Monitor with &lt;code&gt;nvidia-smi&lt;/code&gt;. On Apple Silicon, enable flash attention.
&lt;/li&gt;
&lt;li&gt;Reduce context bloat with periodic summarization prompts that &lt;code&gt;qwen3.5&lt;/code&gt; runs automatically.
&lt;/li&gt;
&lt;li&gt;The 35B model reaches 45–60 tokens per second on a 4090-class GPU. Choose the variant that fits your hardware.
&lt;/li&gt;
&lt;li&gt;Use Apidog’s performance testing to measure latency across 100 requests. Adjust &lt;code&gt;temperature&lt;/code&gt; and &lt;code&gt;max_tokens&lt;/code&gt; until you reach your target response time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Solve Common Problems Quickly
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;“Model not found”:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Run &lt;code&gt;ollama list&lt;/code&gt; and correct the tag in your config.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;High latency:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Check logs with &lt;code&gt;journalctl -u ollama&lt;/code&gt; and increase GPU layers. Use Apidog to re-test the same request and confirm improvement.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tool-call parsing fails:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Lock &lt;code&gt;temperature&lt;/code&gt; at 0.7 inside Apidog test scenarios and re-run.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OpenClaw loses connection:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Run &lt;code&gt;openclaw configure --section channels&lt;/code&gt; to refresh tokens.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rate limits in Ollama:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Increase concurrency settings and test again in Apidog.  &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You use Apidog’s error inspection pane for every issue. The visual stack trace and response comparison speed up fixes dramatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep Your Setup Secure
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Run OpenClaw under a dedicated user account.
&lt;/li&gt;
&lt;li&gt;Enable sandboxing for tool execution.
&lt;/li&gt;
&lt;li&gt;Never expose ports &lt;code&gt;11434&lt;/code&gt; or &lt;code&gt;8080&lt;/code&gt; publicly. Access them through SSH tunnels or Tailscale when you travel.
&lt;/li&gt;
&lt;li&gt;Review every skill source before installation.
&lt;/li&gt;
&lt;li&gt;Turn on memory encryption in OpenClaw settings.
&lt;/li&gt;
&lt;li&gt;Back up the &lt;code&gt;~/.openclaw&lt;/code&gt; folder regularly.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You therefore operate a system safer than most cloud services because your data never leaves your network.&lt;/p&gt;

&lt;h2&gt;
  
  
  Plan for Future Updates
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Alibaba releases smaller &lt;code&gt;Qwen3.5&lt;/code&gt; variants regularly. Ollama adds them quickly. Pull updates with:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull qwen3.5:35b &lt;span class="nt"&gt;--force&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;OpenClaw’s skill library grows every week. Check GitHub notifications to stay current.
&lt;/li&gt;
&lt;li&gt;Repeat the Apidog testing process after each update. Keep your test collection and simply change the model tag. Maintain reliability without extra work.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The same OpenClaw setup is model-agnostic—swapping in DeepSeek produces a capable local AI assistant that runs entirely offline and requires no API subscription.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;You now run &lt;code&gt;qwen3.5&lt;/code&gt; with OpenClaw for free using Ollama. You control the entire stack on your hardware. You get strong reasoning, vision support, persistent memory, and proactive automation.&lt;/p&gt;

&lt;p&gt;You followed clear steps. You tested every layer with Apidog. You optimized performance and secured the environment. Small configuration choices produced a capable personal AI agent.&lt;/p&gt;

&lt;p&gt;Open your terminal now. Run the launch command. Connect your messaging apps. Send your first task. You will see how powerful a fully local agent feels.&lt;/p&gt;

&lt;p&gt;Download Apidog to follow along with future updates and keep testing your endpoints efficiently. You already have everything you need to build smarter workflows today.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuqdrff0rjq0wuzici8ll.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuqdrff0rjq0wuzici8ll.png" alt="Apidog API Design specification" width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>llm</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Top 12 Tools for Testing MCP Servers</title>
      <dc:creator>Preecha</dc:creator>
      <pubDate>Sun, 11 Oct 2026 14:02:10 +0000</pubDate>
      <link>https://dev.to/preecha/top-12-tools-for-testing-mcp-servers-4dni</link>
      <guid>https://dev.to/preecha/top-12-tools-for-testing-mcp-servers-4dni</guid>
      <description>&lt;p&gt;In the rapidly expanding universe of Generative AI, the Model Context Protocol (MCP) has emerged as the critical standard for connecting Large Language Models (LLMs) to external data and tools. But building an MCP server is only half the battle; ensuring it responds accurately, securely, and efficiently to AI agents is where the real challenge lies.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;To help you navigate this landscape, we have curated the ultimate list of tools for testing MCP servers. Whether you are debugging a local script or deploying a complex enterprise agent, these tools are essential for your stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Apidog MCP Client — The Ultimate Solution for Testing MCP Server
&lt;/h2&gt;

&lt;p&gt;The Best All-in-One MCP Server Testing Platform&lt;/p&gt;

&lt;p&gt;When it comes to tools for testing MCP servers, Apidog stands out as the premier choice for developers who demand efficiency and depth. While many tools offer basic debugging, Apidog provides a comprehensive ecosystem that streamlines the entire lifecycle of MCP development.&lt;/p&gt;

&lt;p&gt;Apidog's built-in MCP Client allows you to debug and test MCP servers with a level of granularity that standard CLIs cannot match. It supports both STDIO (for local processes) and HTTP/SSE (for remote servers) transport layers, making it versatile for any stage of development.&lt;/p&gt;

&lt;p&gt;Key Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visual Debugging: Connect to your server and instantly visualize the directory tree of available Tools, Prompts, and Resources. No more guessing if your server is registering capabilities correctly.&lt;/li&gt;
&lt;li&gt;One-Click Execution: Run server-side tools directly from the UI with custom parameters. Apidog validates your inputs against the schema automatically.&lt;/li&gt;
&lt;li&gt;Transport Flexibility: Seamlessly switch between testing a local stdio server and a deployed http endpoint without changing tools.&lt;/li&gt;
&lt;li&gt;Security &amp;amp; Auth: Built-in support for complex authentication flows, including OAuth 2.0, ensuring your MCP Server testing tools cover security requirements.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxqwsttk179i4qt92wg6v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxqwsttk179i4qt92wg6v.png" alt="Image" width="799" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to delve into professional-grade MCP development, Apidog is your starting point.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. MCP Inspector
&lt;/h2&gt;

&lt;p&gt;The Primary Tool for Manual Debugging&lt;/p&gt;

&lt;p&gt;The MCP Inspector is the "Swiss Army knife" of MCP clients to test MCP Server implementations. Developed by the core MCP team, it runs in your browser and connects directly to your local server. It is invaluable for inspecting the raw JSON-RPC messages flowing between the client and server. If you need to verify that your server is strictly adhering to protocol specs, the Inspector is your go-to utility.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Best for: Real-time message inspection and schema validation.&lt;/li&gt;
&lt;li&gt;Key Feature: Interactive "playground" to test tool calls and resource reads.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Claude Desktop
&lt;/h2&gt;

&lt;p&gt;Real-World Host for End-to-End Testing&lt;/p&gt;

&lt;p&gt;While synthetic tests are useful, nothing beats seeing how an actual AI agent interacts with your tool. Claude Desktop acts as a production-grade MCP Client to test MCP Server behavior in the wild. By configuring your local MCP server in Claude's settings, you can chat with the model and watch it "decide" to use your tools. This reveals subtle issues in your tool descriptions—if Claude is confused, your users will be too.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Best for: Testing "agentic" behavior and prompt effectiveness.&lt;/li&gt;
&lt;li&gt;Insight: Use this to refine how you describe your tools to the LLM.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. mcp-server-tester
&lt;/h2&gt;

&lt;p&gt;AI-Driven CLI for Automated Test Generation&lt;/p&gt;

&lt;p&gt;mcp-server-tester brings the power of AI to your testing pipeline. Instead of writing boilerplate test cases, this CLI tool analyzes your MCP server's capabilities and auto-generates test scenarios. It helps you indulge in a faster workflow by creating rapid feedback loops, ensuring that new changes don't break existing functionality.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. FastMCP Client
&lt;/h2&gt;

&lt;p&gt;Best for High-Speed In-Memory Unit Testing&lt;/p&gt;

&lt;p&gt;Speed is critical in CI/CD pipelines. FastMCP Client is designed for unit testing where network latency is a bottleneck. By mocking the transport layer and testing your server logic in-memory, it allows you to run thousands of assertions in seconds. It is a vital MCP Server testing platform component for developers practicing TDD (Test Driven Development).&lt;/p&gt;

&lt;h2&gt;
  
  
  6. mcp-testing-kit
&lt;/h2&gt;

&lt;p&gt;Node.js Utility for Structured Assertions&lt;/p&gt;

&lt;p&gt;For teams that prefer code-first testing, the mcp-testing-kit offers a robust library of assertions specifically for MCP. It simplifies the process of validating complex JSON payloads and ensuring that your server's responses match the expected schema structure.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Promptfoo MCP Scanner
&lt;/h2&gt;

&lt;p&gt;Security Red-Teaming Against Injection Attacks&lt;/p&gt;

&lt;p&gt;Promptfoo has extended its reputation in LLM eval to MCP. The MCP Scanner acts as a red-teamer, bombarding your server with adversarial inputs designed to trick the agent or exploit vulnerabilities. It is crucial for identifying "prompt injection" risks where an attacker might manipulate the tool's output to hijack the conversation.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Invariant Labs MCP-Scan
&lt;/h2&gt;

&lt;p&gt;Focuses on Preventing Tool Manipulation&lt;/p&gt;

&lt;p&gt;Invariant Labs MCP-Scan takes a deep dive into the logic of your tools. It analyzes the flow of data to prevent unauthorized tool manipulation, ensuring that an agent cannot be coerced into performing actions outside its permission scope.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. mcp-tef
&lt;/h2&gt;

&lt;p&gt;Validating the Quality of Tool Descriptions&lt;/p&gt;

&lt;p&gt;Security is also about clarity. mcp-tef validates that your tool descriptions are precise and unambiguous. Ambiguous descriptions are a security risk because they lead to unpredictable model behavior. This tool ensures your MCP Server testing tools stack includes semantic validation.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Postman
&lt;/h2&gt;

&lt;p&gt;Standard for Testing HTTP/SSE Transport Layers&lt;/p&gt;

&lt;p&gt;For MCP servers running over HTTP/SSE, Postman remains the gold standard. You can craft collections that simulate client requests, validate headers, and check SSE stream stability. It’s perfect for testing the "plumbing" of your server before you even connect an AI agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. JMeter
&lt;/h2&gt;

&lt;p&gt;Concurrency and Stress Testing&lt;/p&gt;

&lt;p&gt;JMeter is the heavy lifter for load testing. If you expect your MCP server to handle concurrent requests from thousands of agents, JMeter can simulate that traffic. It helps you identify memory leaks and latency spikes that only appear under load.&lt;/p&gt;

&lt;h2&gt;
  
  
  12. Cursor
&lt;/h2&gt;

&lt;p&gt;IDE Host to Test Agent Tool Selection&lt;/p&gt;

&lt;p&gt;Cursor, the AI-first code editor, doubles as an excellent testing environment. By integrating your MCP server, you can see how an AI coding assistant interacts with your custom tools while you write code. It provides a unique "developer experience" lens on your server's performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The ecosystem of tools for testing MCP servers is maturing rapidly. While standard tools like the MCP Inspector and Postman provide essential debugging capabilities, adopting a dedicated platform like Apidog transforms the experience. Apidog not only simplifies connection and visualization but acts as a complete MCP Server testing platform that bridges the gap between manual debugging and automated reliability.&lt;/p&gt;

&lt;p&gt;By combining Apidog with specialized security scanners like Promptfoo and performance beasts like JMeter, you can build MCP servers that are not just functional, but enterprise-ready. Don't let your AI agent fail because of a buggy tool—equip yourself with the right testing stack today.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>10 OpenClaw Automation Tasks That Save Hours</title>
      <dc:creator>Preecha</dc:creator>
      <pubDate>Sun, 11 Oct 2026 02:03:03 +0000</pubDate>
      <link>https://dev.to/preecha/10-openclaw-automation-tasks-that-save-hours-49ng</link>
      <guid>https://dev.to/preecha/10-openclaw-automation-tasks-that-save-hours-49ng</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;OpenClaw isn't just for answering questions—it's a powerful automation tool that can handle repetitive tasks, manage communications, and streamline your workflow. From sending scheduled emails to organizing files, this guide shows 10 practical automation tasks you can set up today to save hours every week.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Every developer has tasks that repeat: checking emails, filing documents, sending status updates. These take minutes each but add up to hours weekly.&lt;/p&gt;

&lt;p&gt;OpenClaw can handle many of these automatically. Combined with its skills system and platform integrations, you can set up powerful workflows that run themselves.&lt;/p&gt;

&lt;p&gt;Here are 10 automation tasks you can implement today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding OpenClaw Automation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How Automation Works
&lt;/h3&gt;

&lt;p&gt;OpenClaw automation works through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Skills: Pre-built automation packages&lt;/li&gt;
&lt;li&gt;Triggers: Schedule, events, or commands&lt;/li&gt;
&lt;li&gt;Actions: What OpenClaw does automatically&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Getting Started
&lt;/h3&gt;

&lt;p&gt;Install automation skills from ClawHub:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx clawhub skills &lt;span class="nb"&gt;install &lt;/span&gt;scheduler
npx clawhub skills &lt;span class="nb"&gt;install &lt;/span&gt;email-helper
npx clawhub skills &lt;span class="nb"&gt;install &lt;/span&gt;file-manager
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Task 1: Daily Email Summaries
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What It Does
&lt;/h3&gt;

&lt;p&gt;Automatically fetch and summarize your unread emails each morning.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx clawhub skills &lt;span class="nb"&gt;install &lt;/span&gt;gmail-summary
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Configuration
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# ~/.openclaw/skills/gmail-summary/config.yaml&lt;/span&gt;
&lt;span class="na"&gt;schedule&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;8&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*"&lt;/span&gt;  &lt;span class="c1"&gt;# 8 AM daily&lt;/span&gt;
&lt;span class="na"&gt;max_emails&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;
&lt;span class="na"&gt;summary_style&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bullet"&lt;/span&gt;
&lt;span class="na"&gt;channels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;telegram&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;discord&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Example Output
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;📧 Your Morning Email Summary (Feb 25)

Unread: 15

🔴 Important:
• Meeting request: Q3 Planning (from John)
• Invoice #12345 (from Accounting)

📎 Other:
• Newsletter: TechCrunch Daily
• Order confirmation: Amazon

Action items: Review calendar for 2pm meeting
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Use Cases
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Morning briefing before work&lt;/li&gt;
&lt;li&gt;Meeting preparation&lt;/li&gt;
&lt;li&gt;Urgent item detection&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Task 2: Meeting Scheduler
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What It Does
&lt;/h3&gt;

&lt;p&gt;Natural language meeting scheduling across calendars.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx clawhub skills &lt;span class="nb"&gt;install &lt;/span&gt;calendar-helper
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Usage
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Me: Schedule a meeting with John tomorrow at 2pm

OpenClaw: I'll schedule it. Checking calendars...

✓ Available: 2:00-2:30pm
✓ Created: "Meeting with John" - Tomorrow 2:00pm
📧 Invitation sent to john@company.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Check multiple calendars&lt;/li&gt;
&lt;li&gt;Find optimal times&lt;/li&gt;
&lt;li&gt;Send invitations&lt;/li&gt;
&lt;li&gt;Add video links&lt;/li&gt;
&lt;li&gt;Set reminders&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Task 3: File Organization
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What It Does
&lt;/h3&gt;

&lt;p&gt;Automatically organize downloads, documents, and project files.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw skills &lt;span class="nb"&gt;install &lt;/span&gt;file-organizer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Configuration
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# ~/.openclaw/skills/file-organizer/config.yaml&lt;/span&gt;
&lt;span class="na"&gt;watch_folders&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;~/Downloads&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;~/Desktop&lt;/span&gt;
&lt;span class="na"&gt;rules&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;pattern&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;*.pdf"&lt;/span&gt;
    &lt;span class="na"&gt;destination&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;~/Documents/PDFs&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;pattern&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;screenshot-*"&lt;/span&gt;
    &lt;span class="na"&gt;destination&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;~/Pictures/Screenshots&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;pattern&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;*.{js,ts,py}"&lt;/span&gt;
    &lt;span class="na"&gt;destination&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;~/Code/temp&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;pattern&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;report-*"&lt;/span&gt;
    &lt;span class="na"&gt;destination&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;~/Documents/Reports&lt;/span&gt;
&lt;span class="na"&gt;run_on_schedule&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*/4&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*"&lt;/span&gt;  &lt;span class="c1"&gt;# Every 4 hours&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What Happens
&lt;/h3&gt;

&lt;p&gt;Every 4 hours, OpenClaw:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scans your configured folders&lt;/li&gt;
&lt;li&gt;Matches files against rules&lt;/li&gt;
&lt;li&gt;Moves files to appropriate destinations&lt;/li&gt;
&lt;li&gt;Reports what was organized&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Task 4: Git Workflow Automation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What It Does
&lt;/h3&gt;

&lt;p&gt;Streamline common Git operations and enforce standards.&lt;/p&gt;

&lt;h3&gt;
  
  
  Available Automations
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Automatic commit messages:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Me: Commit my changes

OpenClaw: Analyzing your changes...

Modified: 3 files
- src/index.js (feature additions)
- src/styles.css (layout updates)
- package.json (dependencies)

✓ Committed: a1b2c3d "Add user dashboard feature"

🤖 Suggestion: Consider adding tests for the new component
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Branch management:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Me: Create a feature branch for user-auth

OpenClaw:
✓ Created: feature/user-auth
✓ Switched to new branch
✓ Based on: main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;PR automation:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Me: Create a PR for this code

OpenClaw:
✓ Analyzing changes...
✓ Created PR #45: "Add user authentication"
📝 Description generated from commits
👀 Reviewers: @team-lead
🔗 Tests: Passing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Task 5: Code Snippet Manager
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What It Does
&lt;/h3&gt;

&lt;p&gt;Store, search, and retrieve code snippets using natural language.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx clawhub skills &lt;span class="nb"&gt;install &lt;/span&gt;snippet-manager
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Usage
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Save a snippet:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;Me&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Save&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;React useEffect cleanup&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
jsx&lt;br&gt;
useEffect(() =&amp;gt; {&lt;br&gt;
  const handler = () =&amp;gt; console.log('cleanup');&lt;br&gt;
  return () =&amp;gt; handler();&lt;br&gt;
}, []);&lt;br&gt;
OpenClaw: ✓ Saved! Tag: "react", "hooks"&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
**Find a snippet:**

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
jsx&lt;br&gt;
Me: Find my React cleanup snippet&lt;/p&gt;

&lt;p&gt;OpenClaw:📋 React useEffect cleanup (react, hooks)&lt;/p&gt;

&lt;p&gt;useEffect(() =&amp;gt; {&lt;br&gt;
  const handler = () =&amp;gt; console.log('cleanup');&lt;br&gt;
  return () =&amp;gt; handler();&lt;br&gt;
}, []);&lt;br&gt;
✓ Used 3 times recently&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
### Features

- Tag-based organization
- Search by description
- Syntax highlighting
- Usage tracking
- Import/export

## Task 6: Daily Standup Reporter

### What It Does

Generate and share daily standup reports automatically.

### Setup

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
bash&lt;br&gt;
openclaw skills install standup-reporter&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
### Configuration

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
yaml&lt;/p&gt;
&lt;h1&gt;
  
  
  ~/.openclaw/skills/standup-reporter/config.yaml
&lt;/h1&gt;

&lt;p&gt;schedule: "0 9 * * 1-5"  # 9 AM weekdays&lt;br&gt;
track:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;git_commits&lt;/li&gt;
&lt;li&gt;jira_tickets&lt;/li&gt;
&lt;li&gt;calendar_events
output:&lt;/li&gt;
&lt;li&gt;telegram&lt;/li&gt;
&lt;li&gt;slack
template: "standup"
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
### Example Output

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;br&gt;
plaintext&lt;br&gt;
📊 Daily Standup - Feb 25&lt;/p&gt;

&lt;p&gt;✅ Completed:&lt;br&gt;
• PR #234: User dashboard feature&lt;br&gt;
• Bug fix: Login timeout issue&lt;br&gt;
• Code review: Auth refactor&lt;/p&gt;

&lt;p&gt;📅 Today:&lt;br&gt;
• Continue: API integration&lt;br&gt;
• Meeting: 2pm with team&lt;br&gt;
• Review: PR #238&lt;/p&gt;

&lt;p&gt;🎯 Blockers:&lt;br&gt;
• Waiting on: Design specs for settings page&lt;/p&gt;

&lt;p&gt;⏱️ Time tracking: 6.5 hrs&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
## Task 7: Research Assistant

### What It Does

Automate information gathering and summarization.

### Setup

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
bash&lt;br&gt;
npx clawhub skills install research-helper&lt;br&gt;
npx clawhub skills install web-scraper&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
### Usage

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;br&gt;
Me: Research the latest news on quantum computing&lt;/p&gt;

&lt;p&gt;OpenClaw: 🔍 Searching...&lt;/p&gt;

&lt;p&gt;✓ Found 15 articles&lt;/p&gt;

&lt;p&gt;📰 Top Stories:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;IBM announces new quantum processor&lt;/li&gt;
&lt;li&gt;Google achieves quantum supremacy milestone&lt;/li&gt;
&lt;li&gt;Investment in quantum startups hits record&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;📄 Summary:&lt;br&gt;
Quantum computing continues rapid advancement...&lt;br&gt;
[Full report saved to ~/Research/quantum-computing.md]&lt;/p&gt;

&lt;p&gt;Would you like me to expand on any topic?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
### Features

- Web search automation
- Content summarization
- Source collection
- Report generation
- Topic tracking

## Task 8: Monitoring &amp;amp; Alerts

### What It Does

Monitor systems, services, and send alerts proactively.

### Setup

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
bash&lt;br&gt;
npx clawhub skills install system-monitor&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
### Configuration

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
yaml&lt;/p&gt;
&lt;h1&gt;
  
  
  ~/.openclaw/skills/system-monitor/config.yaml
&lt;/h1&gt;

&lt;p&gt;checks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;name: server_health
type: http
url: &lt;a href="https://api.yoursite.com/health" rel="noopener noreferrer"&gt;https://api.yoursite.com/health&lt;/a&gt;
interval: 5  # minutes&lt;/li&gt;
&lt;li&gt;name: disk_space
type: shell
command: "df -h / | tail -1 | awk '{print $5}'"
threshold: "90%"&lt;/li&gt;
&lt;li&gt;name: cron_health
type: service
service: cron
alerts:
telegram:
enabled: true
email:
enabled: true
to: &lt;a href="mailto:you@example.com"&gt;you@example.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
### Alert Example

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;br&gt;
plaintext&lt;br&gt;
🚨 Alert: High Disk Usage&lt;/p&gt;

&lt;p&gt;Server: production-01&lt;br&gt;
Metric: Disk / usage&lt;br&gt;
Current: 92%&lt;br&gt;
Threshold: 90%&lt;br&gt;
Time: Feb 25 09:15 UTC&lt;/p&gt;

&lt;p&gt;Action needed: Consider cleaning old logs or expanding storage&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
## Task 9: Content Repurposing

### What It Does

Automatically convert content across formats and platforms.

### Setup

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
bash&lt;br&gt;
npx clawhub skills install content-repurpose&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
### Usage

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;br&gt;
Me: Turn my blog post into a Twitter thread&lt;/p&gt;

&lt;p&gt;OpenClaw: 📝 Converting...&lt;/p&gt;

&lt;p&gt;✓ Created 8-tweet thread:&lt;/p&gt;

&lt;p&gt;[1/8] 🚀 Just published a new guide on AI automation!&lt;br&gt;
Here's what you'll learn 👇&lt;/p&gt;

&lt;p&gt;[2/8] 1/ Task automation saves 5+ hours/week&lt;br&gt;
The key is starting with repetitive tasks&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;[8/8] 🔗 Read the full guide: [link]&lt;/p&gt;
&lt;h1&gt;
  
  
  AI #Productivity #Automation
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
### Features

- Blog to social media
- Long-form to summaries
- Cross-platform formatting
- Image extraction
- Hashtag suggestions

## Task 10: Database Assistant

### What It Does

Query databases using natural language.

### Setup

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;br&gt;
bash&lt;br&gt;
npx clawhub skills install database-helper&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
### Configuration

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
yaml&lt;/p&gt;
&lt;h1&gt;
  
  
  ~/.openclaw/skills/database-helper/config.yaml
&lt;/h1&gt;

&lt;p&gt;connections:&lt;br&gt;
  production:&lt;br&gt;
    type: postgresql&lt;br&gt;
    host: localhost&lt;br&gt;
    database: myapp&lt;br&gt;
  analytics:&lt;br&gt;
    type: mysql&lt;br&gt;
    host: analytics.internal&lt;br&gt;
    database: stats&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
### Usage

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;br&gt;
Me: How many users signed up this week?&lt;/p&gt;

&lt;p&gt;OpenClaw: 🔍 Querying database...&lt;/p&gt;

&lt;p&gt;📊 Results:&lt;br&gt;
This week: 1,247 new users&lt;br&gt;
Last week: 982 new users&lt;br&gt;
Change: +27%&lt;/p&gt;

&lt;p&gt;📈 Trend: Upward trend continues (3rd week)&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


### Features

- Natural language queries
- Multiple database support
- Query history
- Export results
- Schema documentation

## Best Practices

### Starting Out

- Start simple: Begin with one automation
- Test thoroughly: Verify before relying on it
- Monitor initially: Check outputs regularly
- Iterate: Refine based on results

### Security

- Never include credentials in configs
- Use environment variables
- Restrict access to automation skills
- Review permissions regularly

### Maintenance

- Update skills regularly
- Review and adjust schedules
- Check for breaking changes
- Document custom automations

## Conclusion

OpenClaw transforms from a conversational AI into a powerful automation platform. These 10 tasks are just the beginning—almost any repetitive task can be automated.

Start with these:
- Daily email summary (high value, easy setup)
- Git workflow automation (if you code daily)
- File organization (runs in background)

Scale up as you go:
- Add more skills from ClawHub
- Create custom automations
- Connect multiple platforms

The time you invest in setup pays back quickly in saved hours.

## FAQ

### Do I need coding skills to use these automations?

No! Most automations work out of the box with configuration. Some customizations may require basic YAML knowledge.

### Can I create custom automations?

Yes! Use SKILL.md for simple automations or TypeScript skills for complex ones. See our [Custom Skills guide](https://apidog.com/custom-skills?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=blog-sync).

### How much time can I save?

Typical savings: 2-5 hours per week for active users. The email summarizer alone saves 15-30 minutes daily.

### Are these automations safe?

Yes, but:
- Review skill permissions
- Don't store credentials in plain text
- Test before production use
- Monitor initially

### Can I run automations on a schedule?

Yes! OpenClaw supports cron-based scheduling. Set exact times or intervals for any automation.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
    </item>
    <item>
      <title>How to Run OpenClaw with Ollama ?</title>
      <dc:creator>Preecha</dc:creator>
      <pubDate>Sat, 10 Oct 2026 14:02:57 +0000</pubDate>
      <link>https://dev.to/preecha/how-to-run-openclaw-with-ollama--4nf4</link>
      <guid>https://dev.to/preecha/how-to-run-openclaw-with-ollama--4nf4</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Ollama is the easiest way to run powerful AI models locally. Combined with OpenClaw, it creates a free, privacy-focused AI assistant that rivals paid alternatives. This guide walks you through setting up Ollama, choosing the right model, and integrating it with OpenClaw for your personal AI assistant.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Running AI locally was once a hobbyist's pursuit, requiring complex setup and expensive hardware. Ollama changed that. With a simple install command and intuitive API, Ollama makes running AI models locally accessible to anyone.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9ku8va1p8eu1ki0462cd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9ku8va1p8eu1ki0462cd.png" alt="ollama launch openclaw --model qwen3.5:35b" width="796" height="69"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When paired with OpenClaw, you get a powerful AI assistant that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Costs nothing to run (after initial setup)&lt;/li&gt;
&lt;li&gt;Keeps your data 100% private&lt;/li&gt;
&lt;li&gt;Works offline once models are downloaded&lt;/li&gt;
&lt;li&gt;Offers full customization control&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This guide covers everything you need to get started.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Use Ollama with OpenClaw
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Benefits of Local AI
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Privacy: Your conversations never leave your machine&lt;/li&gt;
&lt;li&gt;No API costs: Pay once for hardware, use unlimited&lt;/li&gt;
&lt;li&gt;Offline access: Works without internet&lt;/li&gt;
&lt;li&gt;Full control: Customize models and prompts&lt;/li&gt;
&lt;li&gt;No rate limits: Use as much as you want&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Ollama
&lt;/h3&gt;

&lt;p&gt;Ollama stands out for several reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simple installation: One command gets you started&lt;/li&gt;
&lt;li&gt;Model library: 100+ models available&lt;/li&gt;
&lt;li&gt;Cross-platform: Works on macOS, Linux, Windows&lt;/li&gt;
&lt;li&gt;API-first: Easy integration with OpenClaw&lt;/li&gt;
&lt;li&gt;Active development: Regular updates and new models&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before starting, ensure you have:&lt;/p&gt;

&lt;h3&gt;
  
  
  Hardware Requirements
&lt;/h3&gt;

&lt;p&gt;Model SizeMinimum RAMRecommended RAM7B params8GB16GB14B params16GB32GB32B params32GB64GB70B params64GB128GB&lt;/p&gt;

&lt;h3&gt;
  
  
  Software Requirements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;macOS 10.15+, Linux, or Windows 10+&lt;/li&gt;
&lt;li&gt;Administrator/root access for installation&lt;/li&gt;
&lt;li&gt;Internet connection for initial downloads&lt;/li&gt;
&lt;li&gt;Command line familiarity&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What You'll Need
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A computer meeting RAM requirements&lt;/li&gt;
&lt;li&gt;Internet for downloading models&lt;/li&gt;
&lt;li&gt;Time for initial model downloads (varies by size and connection)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installing Ollama
&lt;/h2&gt;

&lt;h3&gt;
  
  
  macOS Installation
&lt;/h3&gt;

&lt;p&gt;The easiest method uses Homebrew:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;ollama
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or use the official installer script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://ollama.ai/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Linux Installation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Using the install script (recommended)&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://ollama.ai/install.sh | sh

&lt;span class="c"&gt;# Or download the binary directly&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;curl &lt;span class="nt"&gt;-L&lt;/span&gt; https://ollama.ai/download/ollama-linux-amd64 &lt;span class="nt"&gt;-o&lt;/span&gt; /usr/bin/ollama
&lt;span class="nb"&gt;sudo chmod&lt;/span&gt; +x /usr/bin/ollama
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Windows Installation
&lt;/h3&gt;

&lt;p&gt;Download the installer Run the installerFollow the on-screen instructions&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6q73grbbmcivdvoz5o7p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6q73grbbmcivdvoz5o7p.png" alt="Download Ollama" width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Verifying Installation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see output like &lt;code&gt;ollama version 0.15.0&lt;/code&gt; or newer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1ed7g4bw0ohjp0gv3pf0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1ed7g4bw0ohjp0gv3pf0.png" alt="Ollama version on terminal" width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Starting Ollama Service
&lt;/h3&gt;

&lt;p&gt;Ollama runs as a background service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Check if Ollama is running&lt;/span&gt;
ollama list

&lt;span class="c"&gt;# Start Ollama if not running&lt;/span&gt;
ollama serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F98aj77c04hl9n2dutnli.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F98aj77c04hl9n2dutnli.png" alt="Check if ollama is running with Ollama list command" width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing the Right Model
&lt;/h2&gt;

&lt;p&gt;Ollama supports 100+ models. Here's how to choose:&lt;/p&gt;

&lt;h3&gt;
  
  
  By Use Case
&lt;/h3&gt;

&lt;p&gt;Use CaseRecommended ModelsGeneral conversationQwen3.5, Llama 3.2, MistralCoding assistanceQwen3.5-Coder, DeepSeek-CoderReasoning/mathDeepSeek-R1, Qwen3.5Smaller hardwarePhi3.5, Gemma2.2B&lt;/p&gt;

&lt;h3&gt;
  
  
  By Hardware
&lt;/h3&gt;

&lt;p&gt;Available RAMRecommended8GB7B models (Qwen3.5, Llama3.2, Mistral)16GB8-14B models32GB14-32B models64GB+70B+ models&lt;/p&gt;

&lt;h3&gt;
  
  
  Popular Models in 2026
&lt;/h3&gt;

&lt;p&gt;Qwen3.5 — Excellent all-around performance, strong reasoning, good for coding. The most popular choice for OpenClaw in 2026.&lt;/p&gt;

&lt;p&gt;DeepSeek-R1 — Open-source reasoning model that rivals GPT-4 on math and logic tasks. Great for complex problem-solving.&lt;/p&gt;

&lt;p&gt;Mistral — Lightweight but capable. Excellent for systems with limited RAM.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Models
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Pulling Models
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install Qwen3.5 (recommended for most users)&lt;/span&gt;
ollama pull qwen2.5:7b

&lt;span class="c"&gt;# Or the latest Qwen3&lt;/span&gt;
ollama pull qwen3:7b

&lt;span class="c"&gt;# DeepSeek-R1 for reasoning tasks&lt;/span&gt;
ollama pull deepseek-r1:7b

&lt;span class="c"&gt;# Llama 3.2&lt;/span&gt;
ollama pull llama3.2:7b

&lt;span class="c"&gt;# Mistral&lt;/span&gt;
ollama pull mistral:7b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Model Tags
&lt;/h3&gt;

&lt;p&gt;Models come in different sizes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Different parameter sizes&lt;/span&gt;
ollama pull qwen2.5:3b    &lt;span class="c"&gt;# Smaller, faster&lt;/span&gt;
ollama pull qwen2.5:7b    &lt;span class="c"&gt;# Balanced&lt;/span&gt;
ollama pull qwen2.5:14b   &lt;span class="c"&gt;# More capable&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Viewing Installed Models
&lt;/h3&gt;



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

&lt;/div&gt;



&lt;p&gt;This shows all downloaded models and their sizes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running and Testing Models
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Interactive Mode
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Chat with the model&lt;/span&gt;
ollama run qwen2.5:7b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Type your message and press Enter. Type &lt;code&gt;/bye&lt;/code&gt; to exit.&lt;/p&gt;

&lt;h3&gt;
  
  
  API Mode
&lt;/h3&gt;

&lt;p&gt;Ollama runs an API server on port 11434 by default:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Generate endpoint&lt;/span&gt;
curl http://localhost:11434/api/generate &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="s2"&gt;"model"&lt;/span&gt;: &lt;span class="s2"&gt;"qwen2.5:7b"&lt;/span&gt;,
  &lt;span class="s2"&gt;"prompt"&lt;/span&gt;: &lt;span class="s2"&gt;"Hello, how are you?"&lt;/span&gt;,
  &lt;span class="s2"&gt;"stream"&lt;/span&gt;: &lt;span class="nb"&gt;false&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Using the Python Library
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;ollama&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Client&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;qwen2.5:7b&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Hello!&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;message&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Testing with Apidog
&lt;/h3&gt;

&lt;p&gt;Before connecting to OpenClaw, test your Ollama setup using Apidog:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a new request in Apidog&lt;/li&gt;
&lt;li&gt;Set method to POST&lt;/li&gt;
&lt;li&gt;Enter URL: &lt;code&gt;http://localhost:11434/api/generate&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Add header: &lt;code&gt;Content-Type: application/json&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd8f6mg1pnt3pdgy5ewty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd8f6mg1pnt3pdgy5ewty.png" alt="Create request in Apidog" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add body:
&lt;/li&gt;
&lt;/ol&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;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"qwen3-coder"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"prompt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"What is 2 + 2?"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"stream"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&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;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpemi3vhr2p3irfgevui9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpemi3vhr2p3irfgevui9.png" alt="Add Body to a request in Apidog" width="800" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This verifies your Ollama setup works before integrating with OpenClaw.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integrating Ollama with OpenClaw
&lt;/h2&gt;

&lt;p&gt;Now let's connect Ollama to OpenClaw.&lt;/p&gt;

&lt;h3&gt;
  
  
  Method 1: Quick Configuration
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Set OpenClaw to use Ollama with your model&lt;/span&gt;
openclaw models &lt;span class="nb"&gt;set &lt;/span&gt;ollama/qwen2.5:7b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Method 2: Environment Variables
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Configure Ollama endpoint&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;OLLAMA_HOST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;http://localhost:11434

&lt;span class="c"&gt;# Set the default model&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;OLLAMA_MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;qwen2.5:7b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Method 3: Configuration File
&lt;/h3&gt;

&lt;p&gt;Create or edit &lt;code&gt;~/.openclaw/config.yaml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;models&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;default&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ollama/qwen2.5:7b&lt;/span&gt;

&lt;span class="na"&gt;ollama&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;http://localhost:11434&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;qwen2.5:7b&lt;/span&gt;
  &lt;span class="na"&gt;temperature&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.7&lt;/span&gt;
  &lt;span class="na"&gt;top_p&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.9&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Verifying Integration
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Check OpenClaw model status&lt;/span&gt;
openclaw models status

&lt;span class="c"&gt;# Test with a message&lt;/span&gt;
openclaw chat &lt;span class="s2"&gt;"Hello!"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should receive a response from your local model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuration Options
&lt;/h2&gt;

&lt;p&gt;Fine-tune your Ollama + OpenClaw setup:&lt;/p&gt;

&lt;h3&gt;
  
  
  Temperature
&lt;/h3&gt;

&lt;p&gt;Controls creativity vs precision:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;ollama&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;temperature&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.7&lt;/span&gt;    &lt;span class="c1"&gt;# 0.0 = precise, 1.0 = creative&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Top-P and Top-K
&lt;/h3&gt;

&lt;p&gt;Control response diversity:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;ollama&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;top_p&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.9&lt;/span&gt;         &lt;span class="c1"&gt;# Nucleus sampling&lt;/span&gt;
  &lt;span class="na"&gt;top_k&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;40&lt;/span&gt;          &lt;span class="c1"&gt;# Token selection&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Context Length
&lt;/h3&gt;

&lt;p&gt;For longer conversations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;ollama&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;context_size&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;4096&lt;/span&gt;  &lt;span class="c1"&gt;# Default is often 2048 or 4096&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  System Prompt
&lt;/h3&gt;

&lt;p&gt;Customize model behavior:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;ollama&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;system_prompt&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
    &lt;span class="s"&gt;You are a helpful coding assistant.&lt;/span&gt;
    &lt;span class="s"&gt;Provide clear, concise code examples.&lt;/span&gt;
    &lt;span class="s"&gt;Explain concepts simply.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Switching Between Models
&lt;/h2&gt;

&lt;p&gt;One advantage of Ollama is easy model switching:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Switch to DeepSeek-R1 for reasoning&lt;/span&gt;
openclaw models &lt;span class="nb"&gt;set &lt;/span&gt;ollama/deepseek-r1:7b

&lt;span class="c"&gt;# Switch to Qwen-Coder for coding tasks&lt;/span&gt;
openclaw models &lt;span class="nb"&gt;set &lt;/span&gt;ollama/qwen2.5-coder:7b

&lt;span class="c"&gt;# Switch back to general model&lt;/span&gt;
openclaw models &lt;span class="nb"&gt;set &lt;/span&gt;ollama/qwen2.5:7b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Multiple Model Setup
&lt;/h3&gt;

&lt;p&gt;Configure multiple models in &lt;code&gt;config.yaml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;models&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;default&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ollama/qwen2.5:7b&lt;/span&gt;
  &lt;span class="na"&gt;coding&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ollama/qwen2.5-coder:7b&lt;/span&gt;
  &lt;span class="na"&gt;reasoning&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ollama/deepseek-r1:7b&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then switch between them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw models &lt;span class="nb"&gt;set &lt;/span&gt;coding
openclaw models &lt;span class="nb"&gt;set &lt;/span&gt;reasoning
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Model Won't Load
&lt;/h3&gt;

&lt;p&gt;Problem: Out of memory errors&lt;/p&gt;

&lt;p&gt;Solutions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use a smaller model (7B instead of 14B)&lt;/li&gt;
&lt;li&gt;Close other applications to free RAM&lt;/li&gt;
&lt;li&gt;Check available memory with &lt;code&gt;free -h&lt;/code&gt; (Linux) or Activity Monitor (Mac)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Slow Responses
&lt;/h3&gt;

&lt;p&gt;Problem: Responses take too long&lt;/p&gt;

&lt;p&gt;Solutions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use a smaller model&lt;/li&gt;
&lt;li&gt;Enable GPU acceleration (if available)&lt;/li&gt;
&lt;li&gt;Reduce context size&lt;/li&gt;
&lt;li&gt;Use SSD storage for model files&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Connection Refused
&lt;/h3&gt;

&lt;p&gt;Problem: OpenClaw can't connect to Ollama&lt;/p&gt;

&lt;p&gt;Solutions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Verify Ollama is running&lt;/span&gt;
ollama serve

&lt;span class="c"&gt;# Check the port&lt;/span&gt;
curl http://localhost:11434
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Model Not Found
&lt;/h3&gt;

&lt;p&gt;Problem: Model doesn't exist in Ollama&lt;/p&gt;

&lt;p&gt;Solutions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Pull the model&lt;/span&gt;
ollama pull qwen2.5:7b

&lt;span class="c"&gt;# Check available models&lt;/span&gt;
ollama list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;You've now got a powerful, private AI assistant running locally. Ollama + OpenClaw delivers capabilities that would cost $20+/month with cloud alternatives—all running on hardware you control.&lt;/p&gt;

&lt;p&gt;What you can do now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chat with your AI through multiple platforms&lt;/li&gt;
&lt;li&gt;Switch between models based on tasks&lt;/li&gt;
&lt;li&gt;Customize prompts for specialized behaviors&lt;/li&gt;
&lt;li&gt;Run offline once models are downloaded&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The only limit is your hardware.&lt;/p&gt;

&lt;p&gt;Next steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Experiment with different models&lt;/li&gt;
&lt;li&gt;Try Qwen3.5, DeepSeek-R1, and others&lt;/li&gt;
&lt;li&gt;Customize your system prompts&lt;/li&gt;
&lt;li&gt;Explore OpenClaw skills on ClawHub&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ready to build professional AI applications? Download Apidog free and test your AI integrations with a visual interface designed for developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What's the best Ollama model for OpenClaw?
&lt;/h3&gt;

&lt;p&gt;Qwen3.5 is currently the most popular—balanced performance with good reasoning and coding capabilities. DeepSeek-R1 excels at reasoning tasks if that's your priority.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I run multiple Ollama models at once?
&lt;/h3&gt;

&lt;p&gt;Yes, but each model requires RAM. A typical setup runs one model at a time, switching as needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I need a GPU?
&lt;/h3&gt;

&lt;p&gt;No, Ollama works on CPU. GPU acceleration makes it faster but isn't required. Smaller models (7B) work reasonably well on CPU.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I update models?
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull model-name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ollama updates automatically if a newer version is available.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use my own fine-tuned models?
&lt;/h3&gt;

&lt;p&gt;Yes, import custom models using Ollama's import functionality. Check the Ollama documentation for details.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>software</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>OpenClaw Security &amp; Privacy: Is Your Data Safe?</title>
      <dc:creator>Preecha</dc:creator>
      <pubDate>Sat, 10 Oct 2026 02:02:23 +0000</pubDate>
      <link>https://dev.to/preecha/openclaw-security-privacy-is-your-data-safe-2bff</link>
      <guid>https://dev.to/preecha/openclaw-security-privacy-is-your-data-safe-2bff</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;OpenClaw runs entirely locally, &amp;nbsp;your conversations, code, and data never leave your machine. Unlike cloud AI assistants that store everything on remote servers, OpenClaw gives you complete control over your data. This guide explains exactly how OpenClaw handles your information, its security features, and best practices for keeping your AI assistant secure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Every time you use ChatGPT or Claude, your conversations travel to their servers. They're stored, can be used for training, and may be accessed under certain legal circumstances.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fipmruxspx7k4t3s9vri4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fipmruxspx7k4t3s9vri4.png" alt="OpenClaw Architecture" width="800" height="167"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;OpenClaw is different. It runs on your machine, using your hardware and your electricity. But what does that actually mean for your security and privacy?&lt;/p&gt;

&lt;p&gt;Let's look at exactly what happens with your data.&lt;/p&gt;

&lt;h2&gt;
  
  
  How OpenClaw Handles Data
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Local Architecture
&lt;/h3&gt;

&lt;p&gt;When you use OpenClaw:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your device runs everything&lt;/li&gt;
&lt;li&gt;Your model processes your input&lt;/li&gt;
&lt;li&gt;Your storage holds conversation history&lt;/li&gt;
&lt;li&gt;Your network connects to Ollama (if using local models)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing goes to external servers by default.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Flow
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User Input → OpenClaw → Local Model (Ollama) → Response
                    ↓
            Local Storage Only
            (conversation history)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Compare to cloud AI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User Input → OpenClaw → Cloud API → Cloud Server → Model → Response
                              ↓
                    Stored on Server
                    (potentially for training)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What Stays Local
&lt;/h3&gt;

&lt;p&gt;With OpenClaw, these stay on your machine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All conversations&lt;/li&gt;
&lt;li&gt;Code you share&lt;/li&gt;
&lt;li&gt;Files you process&lt;/li&gt;
&lt;li&gt;Personal information&lt;/li&gt;
&lt;li&gt;Business data&lt;/li&gt;
&lt;li&gt;Credentials (if you use them)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Local vs Cloud: The Privacy Difference
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What Cloud AI Providers See
&lt;/h3&gt;

&lt;p&gt;When using ChatGPT, Claude, or similar:&lt;br&gt;
| Data               | Cloud AI  |&lt;br&gt;
|--------------------|-----------|&lt;br&gt;
| Conversations      | ✓ Stored  |&lt;br&gt;
| IP Address         | ✓ Logged  |&lt;br&gt;
| Usage Patterns     | ✓ Tracked |&lt;br&gt;
| Device Info        | ✓ Collected |&lt;br&gt;
| Can Be Used for Training | ✓ (with opt-out) |&lt;br&gt;
| May Be Subpoenaed  | ✓ Possible |&lt;/p&gt;
&lt;h3&gt;
  
  
  What Stays Private with OpenClaw
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Data&lt;/th&gt;
&lt;th&gt;OpenClaw&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Conversations&lt;/td&gt;
&lt;td&gt;Private (local only)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IP Address&lt;/td&gt;
&lt;td&gt;Not shared&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Usage Patterns&lt;/td&gt;
&lt;td&gt;Private&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Device Info&lt;/td&gt;
&lt;td&gt;Private&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Training&lt;/td&gt;
&lt;td&gt;Not applicable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subpoenas&lt;/td&gt;
&lt;td&gt;No external data&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Real-World Scenarios
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Scenario 1: Proprietary Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cloud AI: "Here's how to implement that feature" (your code was processed on their servers)&lt;/p&gt;

&lt;p&gt;OpenClaw: "Here's how to implement that feature" (processed locally on your machine)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario 2: Client Work Under NDA&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cloud AI: Potential breach of NDA data on third-party servers&lt;/p&gt;

&lt;p&gt;OpenClaw: Safe data never leaves your environment&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario 3: Sensitive Conversations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cloud AI: Stored, could be accessed legally&lt;/p&gt;

&lt;p&gt;OpenClaw: Only exists on your encrypted hard drive&lt;/p&gt;
&lt;h2&gt;
  
  
  OpenClaw Security Features
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Encryption
&lt;/h3&gt;

&lt;p&gt;Enable encryption for stored conversations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;security&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;encrypt_history&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;encryption_key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;env:ENCRYPTION_KEY&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Conversation history can be encrypted. Key stored in environment variables. Protects against physical access.&lt;/p&gt;

&lt;h3&gt;
  
  
  Access Control
&lt;/h3&gt;

&lt;p&gt;Control who can access your OpenClaw:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;security&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;allowed_users&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;user_id_1&lt;/span&gt;
  &lt;span class="na"&gt;require_auth&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;rate_limit&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;max_requests_per_minute&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Network Security
&lt;/h3&gt;

&lt;p&gt;When using Ollama locally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Server only binds to localhost&lt;/li&gt;
&lt;li&gt;Not accessible over network by default&lt;/li&gt;
&lt;li&gt;Can configure for local network if needed&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Skill Permissions
&lt;/h3&gt;

&lt;p&gt;Skills can request specific permissions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# skill.yaml&lt;/span&gt;
&lt;span class="na"&gt;permissions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;network&lt;/span&gt;    &lt;span class="c1"&gt;# Can access internet&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;filesystem&lt;/span&gt; &lt;span class="c1"&gt;# Can read/write files&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;execute&lt;/span&gt;    &lt;span class="c1"&gt;# Can run commands&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Review permissions before installing skills.&lt;/p&gt;

&lt;h2&gt;
  
  
  Potential Security Concerns
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Local Model Security
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Concern:&lt;/strong&gt; Can malicious models steal data?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mitigation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Only use trusted model sources (Ollama library)&lt;/li&gt;
&lt;li&gt;Verify model hashes when possible&lt;/li&gt;
&lt;li&gt;Review model manifest&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Skill Security
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Concern:&lt;/strong&gt; Could a malicious skill access my data?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mitigation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review skill permissions before installing&lt;/li&gt;
&lt;li&gt;Only install from trusted publishers&lt;/li&gt;
&lt;li&gt;Check skill source code&lt;/li&gt;
&lt;li&gt;Use sandbox mode&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enable skill sandbox:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;security&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;skill_sandbox&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Local Network Exposure
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Concern:&lt;/strong&gt; Could others access my OpenClaw?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mitigation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ollama binds to localhost by default&lt;/li&gt;
&lt;li&gt;Don't expose to network without authentication&lt;/li&gt;
&lt;li&gt;Use firewall rules&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Physical Access
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Concern:&lt;/strong&gt; Someone could access my data physically?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mitigation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable disk encryption (FileVault, LUKS)&lt;/li&gt;
&lt;li&gt;Use strong login passwords&lt;/li&gt;
&lt;li&gt;Enable encrypted conversation storage&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Memory Attacks
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Concern:&lt;/strong&gt; Could model memory be extracted?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mitigation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Models run in RAM, cleared on restart&lt;/li&gt;
&lt;li&gt;Don't input secrets into conversations&lt;/li&gt;
&lt;li&gt;Use environment variables for API keys&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Best Practices
&lt;/h2&gt;

&lt;h3&gt;
  
  
  For Personal Use
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Enable disk encryption

&lt;ul&gt;
&lt;li&gt;macOS: FileVault&lt;/li&gt;
&lt;li&gt;Linux: LUKS&lt;/li&gt;
&lt;li&gt;Windows: BitLocker&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Use strong passwords&lt;/li&gt;
&lt;li&gt;Keep software updated&lt;/li&gt;
&lt;li&gt;Review skill permissions&lt;/li&gt;
&lt;li&gt;Don't paste secrets in conversations&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  For Business Use
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Network isolation&lt;/li&gt;
&lt;li&gt;Audit logs
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;logging&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;level&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;info&lt;/span&gt;
  &lt;span class="na"&gt;file&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/var/log/openclaw.log&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Employee access controls&lt;/li&gt;
&lt;li&gt;Incident response plan&lt;/li&gt;
&lt;li&gt;Regular security reviews&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  For Sensitive Work
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Air-gapped setup&lt;/li&gt;
&lt;li&gt;Encrypted storage only&lt;/li&gt;
&lt;li&gt;No cloud integrations&lt;/li&gt;
&lt;li&gt;Secure credential management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use environment variables for sensitive data:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;OPENCLAW_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"your-key-here"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;GITHUB_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"ghp_xxx"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Enterprise Considerations
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Compliance
&lt;/h3&gt;

&lt;p&gt;OpenClaw can help with compliance requirements:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;OpenClaw&lt;/th&gt;
&lt;th&gt;Cloud AI&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GDPR&lt;/td&gt;
&lt;td&gt;Easier&lt;/td&gt;
&lt;td&gt;Complex&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIPAA&lt;/td&gt;
&lt;td&gt;Easier&lt;/td&gt;
&lt;td&gt;Requires BAA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SOC 2&lt;/td&gt;
&lt;td&gt;Easier&lt;/td&gt;
&lt;td&gt;Audit needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data residency&lt;/td&gt;
&lt;td&gt;✓ Full control&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Deployment Options
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Individual workstations&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simplest deployment&lt;/li&gt;
&lt;li&gt;Full privacy&lt;/li&gt;
&lt;li&gt;Consistent with BYOD&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Centralized server&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easier management&lt;/li&gt;
&lt;li&gt;Requires network security&lt;/li&gt;
&lt;li&gt;Higher maintenance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Containerized&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker/Kubernetes&lt;/li&gt;
&lt;li&gt;Isolated environment&lt;/li&gt;
&lt;li&gt;Consistent across deployments&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Testing APIs Securely
&lt;/h3&gt;

&lt;p&gt;When building integrations with OpenClaw, you'll likely need to test APIs and webhooks. &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=blog-sync"&gt;Apidog&lt;/a&gt; provides a secure, local-first approach to API testing that complements OpenClaw's privacy-focused architecture. Unlike cloud-based API tools that send your data to external servers, Apidog can test APIs locally without exposing sensitive data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fopbsglklkkbiij85dhz3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fopbsglklkkbiij85dhz3.png" alt="Apidog API Testing" width="799" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key benefits of using Apidog with OpenClaw:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test OpenClaw's API endpoints locally&lt;/li&gt;
&lt;li&gt;Verify webhook integrations without data leakage&lt;/li&gt;
&lt;li&gt;Debug API calls in an isolated environment&lt;/li&gt;
&lt;li&gt;Maintain security compliance for sensitive projects&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cost of Security
&lt;/h3&gt;

&lt;p&gt;With cloud AI, security is in someone else's hands. With OpenClaw:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You control everything&lt;/li&gt;
&lt;li&gt;You manage security&lt;/li&gt;
&lt;li&gt;Hardware costs apply&lt;/li&gt;
&lt;li&gt;But no data breach liability&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;OpenClaw offers a fundamentally different privacy model than cloud AI. Your data stays on your machine, under your control, subject to your security measures.&lt;/p&gt;

&lt;p&gt;The privacy advantage is real:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No data sent to external servers&lt;/li&gt;
&lt;li&gt;Complete control over storage&lt;/li&gt;
&lt;li&gt;No training data concerns&lt;/li&gt;
&lt;li&gt;Much simpler compliance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But it's not automatic:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You must secure your machine&lt;/li&gt;
&lt;li&gt;Review skill permissions&lt;/li&gt;
&lt;li&gt;Use encryption&lt;/li&gt;
&lt;li&gt;Follow best practices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For privacy-sensitive work - client projects, proprietary code, regulated industries - OpenClaw's local architecture provides meaningful advantages over cloud alternatives.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Does OpenClaw send any data to external servers?
&lt;/h3&gt;

&lt;p&gt;By default, no. Your conversations stay local. However:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If using cloud-based models (not recommended), data may be external&lt;/li&gt;
&lt;li&gt;Some skills may have network permissions&lt;/li&gt;
&lt;li&gt;Always review skill permissions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Can my conversations be accessed legally?
&lt;/h3&gt;

&lt;p&gt;With cloud AI, yes providers can be subpoenaed. With OpenClaw:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No external data to subpoena&lt;/li&gt;
&lt;li&gt;Only local law enforcement with physical access could request&lt;/li&gt;
&lt;li&gt;Much harder to compel disclosure&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Is OpenClaw safe for client work?
&lt;/h3&gt;

&lt;p&gt;Yes, this is one of its strongest use cases. Your client's code and data never leave your machine. Just ensure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your machine is secure&lt;/li&gt;
&lt;li&gt;Disk encryption is enabled&lt;/li&gt;
&lt;li&gt;No cloud integrations are used&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What about the ClawHavoc incident mentioned in other guides?
&lt;/h3&gt;

&lt;p&gt;In early 2026, malicious skills were found on ClawHub. This highlights:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Always review skill permissions&lt;/li&gt;
&lt;li&gt;Only install from trusted publishers&lt;/li&gt;
&lt;li&gt;Check source code when possible&lt;/li&gt;
&lt;li&gt;Use sandbox mode&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Can I use OpenClaw for healthcare or legal work?
&lt;/h3&gt;

&lt;p&gt;Yes! Local AI is ideal for sensitive professions. Just ensure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your machine meets security requirements&lt;/li&gt;
&lt;li&gt;Client data stays local&lt;/li&gt;
&lt;li&gt;Proper access controls are in place&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>What is KiloClaw? The Complete Guide to Your Hosted AI Assistant</title>
      <dc:creator>Preecha</dc:creator>
      <pubDate>Fri, 09 Oct 2026 14:03:22 +0000</pubDate>
      <link>https://dev.to/preecha/what-is-kiloclaw-the-complete-guide-to-your-hosted-ai-assistant-5a3a</link>
      <guid>https://dev.to/preecha/what-is-kiloclaw-the-complete-guide-to-your-hosted-ai-assistant-5a3a</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;KiloClaw is a fully hosted version of OpenClaw—the open-source AI agent that became the fastest-growing AI project in history with 230,000+ GitHub stars. It lets you deploy a personal AI assistant in under 60 seconds with access to 500+ AI models, 50+ chat platforms, and enterprise features like auto-restart and team management. No servers, Docker, or configuration required.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Between Claude's computer use, OpenAI's operators, and GitHub Copilot's agent mode, The AI agent landscape has exploded in 2026, with developers and businesses seeking personal assistants that can actually do things—not just chat and the market is heating up. But one project stood above the rest: OpenClaw, which went from zero to 230,000 GitHub stars in just 10 days, making it the fastest-growing open-source AI project ever.&lt;/p&gt;

&lt;p&gt;Now, there's an easier way to use it.&lt;/p&gt;

&lt;p&gt;KiloClaw brings the power of OpenClaw to a managed hosting platform, eliminating the headaches of server setup, Docker containers, and manual configuration. Whether you're a developer wanting to automate workflows or a team lead looking for a collaborative AI assistant, KiloClaw offers a compelling alternative to self-hosting.&lt;/p&gt;

&lt;p&gt;💡If you're working with multiple AI APIs and need a unified testing platform, Apidog integrates seamlessly with KiloClaw for debugging and monitoring your AI assistant's API calls.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is OpenClaw?
&lt;/h2&gt;

&lt;p&gt;Before understanding KiloClaw, you need to understand OpenClaw—the open-source project that powers it.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Origin Story
&lt;/h3&gt;

&lt;p&gt;OpenClaw was created by Peter Steinberger, a developer best known for founding PSPDFKit. What started as a personal project called "Clawdbot" evolved through several name changes (Moltbot, due to trademark concerns with Anthropic) before settling on OpenClaw.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjg3qzzxs2if93i71mec0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjg3qzzxs2if93i71mec0.png" alt="OpenClaw: The AI that actually does things." width="800" height="287"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project went viral in February 2026, gaining:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;230,000+ GitHub stars in under two weeks&lt;/li&gt;
&lt;li&gt;2 million+ visitors in a single week&lt;/li&gt;
&lt;li&gt;Coverage from major tech publications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Peter Steinberger was subsequently hired by OpenAI on February 15, 2026, validating the project's significance in the AI agent space.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Capabilities
&lt;/h3&gt;

&lt;p&gt;OpenClaw is your personal AI assistant that runs locally and connects to the tools you already use:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Multi-Platform Integration&lt;/td&gt;
&lt;td&gt;Works with WhatsApp, Telegram, Discord, Slack, Signal, iMessage, Microsoft Teams, Matrix, and 50+ platforms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shell Command Execution&lt;/td&gt;
&lt;td&gt;Runs terminal commands, executes scripts, and automates system tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Browser Control&lt;/td&gt;
&lt;td&gt;Navigates websites, fills forms, and extracts data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;File Management&lt;/td&gt;
&lt;td&gt;Reads, writes, and organizes files across your system&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Persistent Memory&lt;/td&gt;
&lt;td&gt;Stores conversation history and user preferences in Markdown files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Voice Interaction&lt;/td&gt;
&lt;td&gt;Supports voice commands on macOS, iOS, and Android&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;100+ AgentSkills&lt;/td&gt;
&lt;td&gt;Pre-built automation capabilities for common tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Model Flexibility
&lt;/h3&gt;

&lt;p&gt;OpenClaw isn't tied to a single AI provider. It supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Anthropic's Claude (including Claude 3.5 Sonnet, Opus 4)&lt;/li&gt;
&lt;li&gt;OpenAI's GPT (GPT-4o, GPT-4 Turbo)&lt;/li&gt;
&lt;li&gt;Google's Gemini&lt;/li&gt;
&lt;li&gt;Any model accessible via OpenAI-compatible APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This model-agnostic approach means you can switch between providers based on cost, capability, or specific task requirements.&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture Highlights
&lt;/h3&gt;

&lt;p&gt;The OpenClaw architecture follows a gateway pattern:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A central control plane stays connected to messaging channels&lt;/li&gt;
&lt;li&gt;An agent loop processes tasks one at a time for reliability&lt;/li&gt;
&lt;li&gt;Plugins extend functionality with JSON-schema definitions&lt;/li&gt;
&lt;li&gt;Tools and integrations are added as modular components&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This design prioritizes reliability over parallelism—each task completes fully before the next begins.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is KiloClaw?
&lt;/h2&gt;

&lt;p&gt;KiloClaw is a fully managed hosting service for OpenClaw, launched by Kilo Code (a platform serving 1.5 million+ developers). It takes the powerful OpenClaw agent and handles all the infrastructure complexity for you.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Value Proposition
&lt;/h3&gt;

&lt;p&gt;Instead of spending 30-60 minutes configuring servers, Docker, and environment variables, you can deploy a production-ready OpenClaw instance in under 60 seconds.&lt;/p&gt;

&lt;p&gt;Here's what KiloClaw handles automatically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Server provisioning and maintenance&lt;/li&gt;
&lt;li&gt;Docker container management&lt;/li&gt;
&lt;li&gt;Security configuration&lt;/li&gt;
&lt;li&gt;Auto-updates&lt;/li&gt;
&lt;li&gt;Process monitoring and auto-restart&lt;/li&gt;
&lt;li&gt;Unified billing&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Choose Hosted Over Self-Hosted?
&lt;/h3&gt;

&lt;p&gt;For many users, the self-hosted OpenClaw experience involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Technical Setup: Installing Docker, cloning the repository, configuring environment variables&lt;/li&gt;
&lt;li&gt;Ongoing Maintenance: Updating the software, monitoring for crashes, managing backups&lt;/li&gt;
&lt;li&gt;Security Hardening: Protecting exposed API keys, configuring network access, sandboxing&lt;/li&gt;
&lt;li&gt;Platform Management: Setting up webhooks for each chat platform individually&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;KiloClaw eliminates all of this while adding enterprise features that would be difficult to implement yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features of KiloClaw
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. One-Click Deployment
&lt;/h3&gt;

&lt;p&gt;The flagship feature: deploy your personal AI assistant in under 60 seconds. No SSH, no Docker, no config files. Just visit app.kilo.ai/claw and you're running.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. 500+ AI Models via Kilo Gateway
&lt;/h3&gt;

&lt;p&gt;Access an enormous selection of AI models through Kilo's unified gateway, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Claude models (3.5 Sonnet, Opus 4)&lt;/li&gt;
&lt;li&gt;GPT models (4o, Turbo)&lt;/li&gt;
&lt;li&gt;Gemini models&lt;/li&gt;
&lt;li&gt;open-source models (Llama, Mistral, Qwen)&lt;/li&gt;
&lt;li&gt;Specialty models for coding, reasoning, vision&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. 50+ Chat Platforms
&lt;/h3&gt;

&lt;p&gt;Connect your AI assistant to virtually any communication platform:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Platforms&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Messaging&lt;/td&gt;
&lt;td&gt;WhatsApp, Telegram, Signal, iMessage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Team Chat&lt;/td&gt;
&lt;td&gt;Slack, Microsoft Teams, Discord&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Social&lt;/td&gt;
&lt;td&gt;Twitter/X, Facebook Messenger&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Communication&lt;/td&gt;
&lt;td&gt;Matrix, RingCentral, Zoom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Email&lt;/td&gt;
&lt;td&gt;Gmail, Outlook (via plugins)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  4. Scheduled Tasks &amp;amp; Cron Jobs
&lt;/h3&gt;

&lt;p&gt;Automate workflows that run while you sleep:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Daily report generation&lt;/li&gt;
&lt;li&gt;Periodic data synchronization&lt;/li&gt;
&lt;li&gt;Scheduled notifications&lt;/li&gt;
&lt;li&gt;Recurring API health checks&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Auto-Restart on Crash
&lt;/h3&gt;

&lt;p&gt;If your agent crashes, KiloClaw automatically restarts it. No 3 AM alerts, no manual intervention.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Bring Your Own Keys
&lt;/h3&gt;

&lt;p&gt;Prefer to use your own API keys from Anthropic, OpenAI, or Google? KiloClaw supports bringing your existing keys while still using their infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Unified Billing
&lt;/h3&gt;

&lt;p&gt;Use your existing Kilo Gateway credits across all services. Zero markup on AI tokens—you pay exactly what the model providers charge.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Enterprise Features
&lt;/h3&gt;

&lt;p&gt;For teams and organizations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SSO (Single Sign-On): Integrate with your identity provider&lt;/li&gt;
&lt;li&gt;Audit Logs: Track all agent activities for compliance&lt;/li&gt;
&lt;li&gt;Team Management: Collaborate with shared configurations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  KiloClaw vs Self-Hosted OpenClaw
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;KiloClaw (Hosted)&lt;/th&gt;
&lt;th&gt;Self-Hosted OpenClaw&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Setup Time&lt;/td&gt;
&lt;td&gt;Under 60 seconds&lt;/td&gt;
&lt;td&gt;30-60+ minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Updates&lt;/td&gt;
&lt;td&gt;Automatic&lt;/td&gt;
&lt;td&gt;Manual (git pull)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI Models Available&lt;/td&gt;
&lt;td&gt;500+ via Kilo Gateway&lt;/td&gt;
&lt;td&gt;1 at a time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bring Your Own Key&lt;/td&gt;
&lt;td&gt;✓ Automatic&lt;/td&gt;
&lt;td&gt;Manual configuration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unified Billing&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Team Management&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSO&lt;/td&gt;
&lt;td&gt;✓ Enterprise&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Audit Logs&lt;/td&gt;
&lt;td&gt;✓ Enterprise&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auto-restart on Crash&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✗ Requires supervisor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Process Monitoring&lt;/td&gt;
&lt;td&gt;Built-in&lt;/td&gt;
&lt;td&gt;Manual setup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;Proxied, sandboxed&lt;/td&gt;
&lt;td&gt;Self-configured&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  When to Choose KiloClaw
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Quick deployment: You want to start in minutes, not hours&lt;/li&gt;
&lt;li&gt;Team use: You need collaboration and access controls&lt;/li&gt;
&lt;li&gt;Enterprise needs: You require SSO and audit compliance&lt;/li&gt;
&lt;li&gt;Simplicity: You prefer managed infrastructure over self-hosting&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When to Choose Self-Hosted OpenClaw
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Full control: You need complete visibility into the stack&lt;/li&gt;
&lt;li&gt;Cost optimization: You want to minimize compute costs at scale&lt;/li&gt;
&lt;li&gt;Customization: You need to modify the core agent behavior&lt;/li&gt;
&lt;li&gt;Privacy: You require data to stay entirely on your infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Use Cases and Real-World Applications
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Personal Productivity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Email management: Automatically categorize, draft responses, and prioritize&lt;/li&gt;
&lt;li&gt;Calendar scheduling: Coordinate meetings across time zones&lt;/li&gt;
&lt;li&gt;Research automation: Gather and summarize information from multiple sources&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Developer Workflows
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Code review assistance: Analyze pull requests and suggest improvements&lt;/li&gt;
&lt;li&gt;Documentation generation: Auto-generate API docs from code&lt;/li&gt;
&lt;li&gt;CI/CD monitoring: Track build status and notify on failures&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Business Operations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Customer support: Handle tier-1 inquiries across chat platforms&lt;/li&gt;
&lt;li&gt;Data extraction: Pull reports from SaaS tools and compile summaries&lt;/li&gt;
&lt;li&gt;Team notifications: Distribute updates across multiple channels&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Data Analysis
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Market research: Monitor competitors and summarize findings&lt;/li&gt;
&lt;li&gt;Sentiment analysis: Track brand mentions across social platforms&lt;/li&gt;
&lt;li&gt;Report automation: Generate weekly/monthly business reports&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started with KiloClaw
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Visit the Dashboard
&lt;/h3&gt;

&lt;p&gt;Navigate to the dashboard and sign in with your Kilo account (or create one).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fijto26lo5i4qt9qbibhh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fijto26lo5i4qt9qbibhh.png" alt="Visit the Kilo Dashboard" width="800" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Choose Your Deployment
&lt;/h3&gt;

&lt;p&gt;Select from options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quick Start: Deploy with default settings&lt;/li&gt;
&lt;li&gt;Custom: Configure specific platforms and models&lt;/li&gt;
&lt;li&gt;Import Config: Load your existing OpenClaw configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3w8qk46qzw0wzrae7yes.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3w8qk46qzw0wzrae7yes.png" alt="Image" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Connect Platforms
&lt;/h3&gt;

&lt;p&gt;Select which chat platforms to connect. Each platform requires different authentication:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Telegram: Bot token&lt;/li&gt;
&lt;li&gt;Discord: Bot token and server permissions&lt;/li&gt;
&lt;li&gt;Slack: OAuth app installation&lt;/li&gt;
&lt;li&gt;WhatsApp: QR code pairing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxa0qg2o9ly5nq58ytnor.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxa0qg2o9ly5nq58ytnor.png" alt="Connect Platforms on KiloClaw" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Select Your Model
&lt;/h3&gt;

&lt;p&gt;Choose from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kilo Gateway models: Access 500+ models with pay-as-you-go pricing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo7rc0si1jp7ybcl73cf6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo7rc0si1jp7ybcl73cf6.png" alt="Select Your Model for KiloClaw config" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bring your own key: Use existing Anthropic/OpenAI/Gemini keys&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffmv8vv8ozru16doriu4q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffmv8vv8ozru16doriu4q.png" alt="Image" width="800" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Configure Memory
&lt;/h3&gt;

&lt;p&gt;Set up persistent memory options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Conversation history storage&lt;/li&gt;
&lt;li&gt;User preference retention&lt;/li&gt;
&lt;li&gt;Context window management&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 6: Deploy
&lt;/h3&gt;

&lt;p&gt;Click deploy and your KiloClaw instance is live in under 60 seconds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzum9iv3cyeojj38v13z9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzum9iv3cyeojj38v13z9.png" alt="Deploy and test KiloClaw" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing and Free Trial
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Launch Offer
&lt;/h3&gt;

&lt;p&gt;7 days of free compute for all new users—no credit card required. This gives you ample time to test the platform and evaluate its capabilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ongoing Costs
&lt;/h3&gt;

&lt;p&gt;After the free trial, KiloClaw uses your existing Kilo Gateway credits:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Cost Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Compute&lt;/td&gt;
&lt;td&gt;Charged based on instance running time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI Tokens&lt;/td&gt;
&lt;td&gt;Zero markup—pay exact provider rates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Platform Connectors&lt;/td&gt;
&lt;td&gt;Included in compute cost&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Enterprise Pricing
&lt;/h3&gt;

&lt;p&gt;For teams requiring SSO, audit logs, and advanced management:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Contact Kilo for custom pricing&lt;/li&gt;
&lt;li&gt;Annual contracts available&lt;/li&gt;
&lt;li&gt;Volume discounts for large deployments&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Security Considerations
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Benefits of Managed Hosting
&lt;/h3&gt;

&lt;p&gt;KiloClaw addresses several security concerns that plague self-hosted AI agents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API Key Protection: Keys are proxied through Kilo's infrastructure, never exposed in your local environment&lt;/li&gt;
&lt;li&gt;Network Security: Traffic flows through secure channels with encryption&lt;/li&gt;
&lt;li&gt;VM Isolation: Each instance runs in an isolated virtual machine&lt;/li&gt;
&lt;li&gt;Sandboxing: Restricts agent actions to intended boundaries&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Best Practices Regardless of Deployment
&lt;/h3&gt;

&lt;p&gt;Whether using KiloClaw or self-hosted OpenClaw:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Least privilege: Grant minimum necessary permissions to each platform connector&lt;/li&gt;
&lt;li&gt;Audit regularly: Review logs and activity for suspicious behavior&lt;/li&gt;
&lt;li&gt;Limit capabilities: Disable platforms and tools you don't need&lt;/li&gt;
&lt;li&gt;Monitor usage: Set up alerts for unusual activity patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;KiloClaw represents a significant step forward in making powerful AI agents accessible to everyone. By taking the revolutionary OpenClaw project—the fastest-growing open-source AI in history—and wrapping it in a managed hosting experience, Kilo has lowered the barrier to entry dramatically.&lt;/p&gt;

&lt;p&gt;Whether you're a developer wanting to automate your workflows, a team lead seeking collaborative AI assistance, or a business needing enterprise-grade AI agents, KiloClaw offers a compelling package: 500+ models, 50+ platforms, one-click deployment, and zero markup on AI tokens.&lt;/p&gt;

&lt;p&gt;The 7-day free trial makes it risk-free to evaluate. If you've been curious about personal AI assistants but put off by the technical complexity of self-hosting, KiloClaw deserves your attention.&lt;/p&gt;

&lt;p&gt;Ready to try KiloClaw? Use Apidog to test and debug the API calls your AI assistant makes. Apidog's unified interface lets you inspect requests, validate responses, and monitor performance—essential for production AI agent deployments.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is KiloClaw?
&lt;/h3&gt;

&lt;p&gt;KiloClaw is a hosted version of OpenClaw that lets you deploy a personal AI assistant in under 60 seconds. It provides access to 500+ AI models and 50+ chat platforms without requiring server configuration or Docker knowledge.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does KiloClaw differ from OpenClaw?
&lt;/h3&gt;

&lt;p&gt;OpenClaw is the open-source project you self-host, while KiloClaw is a managed hosting service. KiloClaw handles all infrastructure, updates, security, and maintenance— you just click to deploy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is KiloClaw free to use?
&lt;/h3&gt;

&lt;p&gt;KiloClaw offers 7 days of free compute for new users. After that, you pay for compute time and AI tokens at Kilo Gateway rates with zero markup on token costs.&lt;/p&gt;

&lt;h3&gt;
  
  
  What chat platforms does KiloClaw support?
&lt;/h3&gt;

&lt;p&gt;KiloClaw supports 50+ platforms including WhatsApp, Telegram, Discord, Slack, Signal, Microsoft Teams, Matrix, and more.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use my own API keys with KiloClaw?
&lt;/h3&gt;

&lt;p&gt;Yes. KiloClaw supports bringing your own keys from Anthropic, OpenAI, Google, or any OpenAI-compatible API while using Kilo's infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does KiloClaw support enterprise features?
&lt;/h3&gt;

&lt;p&gt;Yes. Enterprise plans include SSO, audit logs, team management, and priority support.&lt;/p&gt;

&lt;h3&gt;
  
  
  How long does deployment take?
&lt;/h3&gt;

&lt;p&gt;KiloClaw deploys in under 60 seconds with no configuration required.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is KiloClaw secure?
&lt;/h3&gt;

&lt;p&gt;KiloClaw provides security features including proxied API keys, VM isolation, network security, and sandboxing—addressing common concerns with self-hosted AI agents.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>APIDOG February Updates: Enhanced MCP Debugging, Parallel Testing &amp; Shared Data</title>
      <dc:creator>Preecha</dc:creator>
      <pubDate>Fri, 09 Oct 2026 02:03:02 +0000</pubDate>
      <link>https://dev.to/preecha/apidog-february-updates-enhanced-mcp-debugging-parallel-testing-shared-data-1el1</link>
      <guid>https://dev.to/preecha/apidog-february-updates-enhanced-mcp-debugging-parallel-testing-shared-data-1el1</guid>
      <description>&lt;p&gt;Building on January's foundation, February doubles down on the MCP and testing experience—delivering richer debugging insights, parallel execution for Test Suites, cross-scenario shared test data, a completely redesigned test report, and seamless Hoppscotch migration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Hello Apidog Users,&lt;/p&gt;

&lt;p&gt;January introduced the MCP Client and Test Suites. February is about making them production-ready.&lt;/p&gt;

&lt;p&gt;We have refined the MCP debugging experience with richer content previews—Markdown rendering, image display, and direct Content field access. Test Suites now support parallel execution for dramatically faster regression runs. A new Shared Test Data system eliminates redundant data setup across scenarios. And the test report has been completely redesigned from the ground up with structured step display and failure filtering.&lt;/p&gt;

&lt;p&gt;On top of that, we have shipped Hoppscotch Collection import, SSE debugging improvements, and a long list of quality-of-life fixes across eight releases this month.&lt;/p&gt;

&lt;p&gt;Here is everything new this month👇&lt;/p&gt;

&lt;h2&gt;
  
  
  ⭐ New Updates
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔥 Refined MCP Client Debugging Experience
&lt;/h3&gt;

&lt;p&gt;When debugging MCP Servers with Apidog's built-in MCP Client, the response viewing experience has been comprehensively upgraded with more convenient content preview and verification capabilities.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Direct Content Field Viewing
&lt;/h4&gt;

&lt;p&gt;When debugging an MCP Server in Apidog, you can now view the response Content field directly in the "Content" tab—no more digging through raw JSON to find what you need. The "Raw" tab still provides the full JSON-RPC payload for deep inspection, giving you the best of both worlds depending on your debugging context.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Markdown Rendering Preview
&lt;/h4&gt;

&lt;p&gt;When an MCP response contains Markdown content, you can now toggle between raw Markdown and a rendered preview. This makes it easy to visually verify formatted documentation, README content, or any structured text returned by your MCP tools—without leaving the debugger.&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;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"# Hello, World!"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"markdown"&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;h4&gt;
  
  
  3. Image Preview
&lt;/h4&gt;

&lt;p&gt;Images in MCP responses are now rendered directly in the "Preview" tab, allowing developers to quickly verify image content and format without external tools. This is particularly useful when debugging MCP tools that return screenshots, charts, or generated visuals.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fupo9vij64ee3xmud8if8.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fupo9vij64ee3xmud8if8.gif" alt="Image Preview" width="600" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Together, these three improvements transform the MCP Client from a raw protocol inspector into a full-fidelity debugging environment—one where you can see exactly what your AI agents see.&lt;/p&gt;

&lt;h3&gt;
  
  
  🚀 Test Suites: Parallel Execution &amp;amp; Environment-Aware Scheduling
&lt;/h3&gt;

&lt;p&gt;Building on January's Test Suite launch, we are adding two capabilities that make orchestration significantly more powerful.&lt;/p&gt;

&lt;h4&gt;
  
  
  Parallel Execution Mode
&lt;/h4&gt;

&lt;p&gt;Test Suites now support a "Parallel" run mode, allowing multiple test cases and scenarios to execute concurrently. You can flexibly configure parallel execution rules to dramatically reduce overall test time—especially valuable for large-scale regression suites where sequential execution becomes a bottleneck.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fieqbymjeq8qw8wjmeevc.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fieqbymjeq8qw8wjmeevc.gif" alt="Parallel Execution" width="600" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mode Comparison:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mode&lt;/th&gt;
&lt;th&gt;Behavior&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sequential&lt;/td&gt;
&lt;td&gt;Scenarios run in order. Variables persist and propagate across scenario steps—ideal for dependent workflows.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Parallel&lt;/td&gt;
&lt;td&gt;Multiple scenarios run concurrently for maximum speed. Note: concurrency isolates context between scenarios—cases that depend on upstream variables may need to be restructured.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Actual speedup depends on the available hardware resources of the machine running the tests.&lt;/p&gt;

&lt;h4&gt;
  
  
  Scheduled Tasks Now Support Environment Selection
&lt;/h4&gt;

&lt;p&gt;When creating scheduled tasks for Test Suites, you can now select the target environment, enabling precise control over automated execution across different environments (e.g., staging, production). This means you can schedule the same suite to run against multiple environments on different cadences—a critical capability for teams managing multi-stage deployment pipelines.&lt;/p&gt;

&lt;h3&gt;
  
  
  🆕 Shared Test Data: Cross-Scenario Reusability
&lt;/h3&gt;

&lt;p&gt;A brand-new capability in this release: Shared Test Data. You can now create common test datasets that are reusable across multiple test scenarios, fundamentally changing how teams manage test data at scale.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why This Matters:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Previously, each test scenario maintained its own isolated test data. If ten scenarios needed the same user credentials, payment details, or product catalog, you had to duplicate that data ten times—and maintain it in ten places.&lt;/p&gt;

&lt;p&gt;Shared Test Data solves this by introducing a centralized data layer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create once, use everywhere:&lt;/strong&gt; Define a dataset once and reference it from any test scenario in your project.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Single source of truth:&lt;/strong&gt; Update the shared data in one place, and every scenario that references it picks up the change automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standardized testing:&lt;/strong&gt; Ensures all scenarios test against consistent, validated data—eliminating subtle discrepancies caused by copy-paste drift.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is especially powerful when combined with the new parallel execution mode, as shared data provides a stable foundation for concurrent test runs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fassets.apidog.com%2Fuploads%2Fhelp%2F2026%2F02%2F24%2Fyi14g-xx.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fassets.apidog.com%2Fuploads%2Fhelp%2F2026%2F02%2F24%2Fyi14g-xx.gif" alt="Shared Test Data" width="720" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📊 Test Reports: Complete Redesign
&lt;/h3&gt;

&lt;p&gt;The test report experience has been rebuilt from the ground up this month, delivered across two releases (v2.8.4 and v2.8.11).&lt;/p&gt;

&lt;h4&gt;
  
  
  Structured Step Display (v2.8.4)
&lt;/h4&gt;

&lt;p&gt;The entire test report UI has been redesigned to support structured display of all test steps. Instead of a flat log, you now see a hierarchical view that mirrors the actual execution flow—making it immediately clear which scenario, case, and step produced each result. The test report list has also been optimized with structured display and filtering capabilities.&lt;/p&gt;

&lt;h4&gt;
  
  
  Failed Case Filtering (v2.8.11)
&lt;/h4&gt;

&lt;p&gt;Building on the redesigned foundation, we have added a failed case filter and step-level detail inspection, helping you quickly zero in on failures and understand exactly what went wrong at each step.&lt;/p&gt;

&lt;p&gt;The report intelligently adapts its display based on your viewing context:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Viewing all steps:&lt;/strong&gt; Presented in a tree structure that clearly shows step hierarchy and execution context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Filtering failed cases:&lt;/strong&gt; Automatically switches to a flat list that aggregates all failed steps for rapid issue identification.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The combination of structured display and smart filtering means you can go from "the suite failed" to "here's the exact assertion that broke" in seconds rather than minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔗 Hoppscotch Collection Import
&lt;/h3&gt;

&lt;p&gt;For teams migrating from Hoppscotch, Apidog now supports direct import of Hoppscotch Collections. Simply export your collections from Hoppscotch and import them into Apidog—your endpoints, parameters, headers, and request bodies are preserved, making the transition seamless.&lt;/p&gt;

&lt;p&gt;This joins our existing import support for Postman, Swagger/OpenAPI, Insomnia, and other formats, reinforcing Apidog's position as a universal API platform that meets you where you are.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚡️ Optimizations
&lt;/h2&gt;

&lt;p&gt;Beyond the headline features, we have shipped a series of quality-of-life improvements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Protected Branch UI:&lt;/strong&gt; Redesigned the protected branch interaction for a cleaner, more intuitive workflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Preset Common Fields UX:&lt;/strong&gt; Improved the interface for applying preset common fields to endpoints, reducing friction in schema reuse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;crypto Global Object in Scripts:&lt;/strong&gt; Pre and post processor scripts now support the crypto global object, enabling cryptographic operations (hashing, HMAC, encryption) directly in your test scripts without external dependencies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSE Debugging:&lt;/strong&gt; When debugging SSE (Server-Sent Events) endpoints, Apidog now correctly handles &lt;code&gt;\r\n&lt;/code&gt; line breaks, ensuring accurate event stream parsing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project Invitation Flow:&lt;/strong&gt; Optimized the process of inviting collaborators to join a project, making team onboarding smoother.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test Report List:&lt;/strong&gt; The test report list view now supports structured display and filtering, making it easier to navigate large test histories.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🐞 Bug Fixes
&lt;/h2&gt;

&lt;p&gt;We resolved a total of 17 bugs across eight releases this month. Here are the highlights:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Testing &amp;amp; Automation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fixed an issue where the loop count displayed as 0 in test reports when using &lt;code&gt;{{variable}}&lt;/code&gt; as the iteration count in automated tests.&lt;/li&gt;
&lt;li&gt;Fixed an issue where response validation could not be configured when batch-running test data from the test case page.&lt;/li&gt;
&lt;li&gt;Fixed an issue where custom request endpoints would occasionally not include auth during automated test scenario execution if the endpoint did not switch to auth.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Data Import &amp;amp; Export:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fixed an issue where RAML files could not be imported into Apidog.&lt;/li&gt;
&lt;li&gt;Fixed an issue where Hoppscotch Collections failed to import in certain cases.&lt;/li&gt;
&lt;li&gt;Fixed an issue where generating SQL code from a schema did not use the schema name as the table name, resulting in all table names being &lt;code&gt;tableName&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Endpoint &amp;amp; Debugging:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fixed an issue where the response content of Socket endpoints was not formatted.&lt;/li&gt;
&lt;li&gt;Fixed an issue where the header parameter input field would lose focus after typing the first character when the field name was in English.&lt;/li&gt;
&lt;li&gt;Fixed an issue where directly saving a quick request under a subfolder would incorrectly move it to the root folder (v2.8.9).&lt;/li&gt;
&lt;li&gt;Fixed an issue where renaming a quick request would occasionally not be saved.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Platform &amp;amp; Governance:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fixed a 500 error that occurred in certain cases when configuring custom roles at the organization level.&lt;/li&gt;
&lt;li&gt;Fixed an issue where deleted branches did not release SEO custom URL slug bindings from endpoints.&lt;/li&gt;
&lt;li&gt;Fixed URL validation in published documentation navigation configuration.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🌟 Looking Ahead
&lt;/h2&gt;

&lt;p&gt;February's eight releases reflect our commitment to shipping fast and iterating on feedback. As we move into March, we are continuing to deepen the MCP debugging experience, expand Test Suite orchestration capabilities, and invest in the AI-native workflows that will define the next generation of API development.&lt;/p&gt;

&lt;p&gt;We are also actively working on deeper Git integrations and text-mode editing to align with git-first development habits—stay tuned.&lt;/p&gt;

&lt;h2&gt;
  
  
  💬 Join the Conversation
&lt;/h2&gt;

&lt;p&gt;Connect with fellow API engineers and the Apidog team:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Join our &lt;a href="https://discord.gg/apidog?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=blog-sync"&gt;Discord community&lt;/a&gt; for real-time discussions.&lt;/li&gt;
&lt;li&gt;Participate in our &lt;a href="https://apidog.com/slack?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=blog-sync"&gt;Slack community&lt;/a&gt; for technical deep dives.&lt;/li&gt;
&lt;li&gt;Follow us on &lt;a href="https://twitter.com/apidog" rel="noopener noreferrer"&gt;X (Twitter)&lt;/a&gt; for the latest updates.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;P.S. Explore the complete details of all these updates in the &lt;a href="https://apidog.com/changelog?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=blog-sync"&gt;Apidog Changelog&lt;/a&gt;! 🚀&lt;/p&gt;

&lt;p&gt;Happy API Building!&lt;/p&gt;

&lt;p&gt;Best Regards,&lt;br&gt;&lt;br&gt;
The Apidog Team&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Scale with Test Suites: High-performance organization for automated API testing</title>
      <dc:creator>Preecha</dc:creator>
      <pubDate>Thu, 08 Oct 2026 14:01:46 +0000</pubDate>
      <link>https://dev.to/preecha/scale-with-test-suites-high-performance-organization-for-automated-api-testing-247</link>
      <guid>https://dev.to/preecha/scale-with-test-suites-high-performance-organization-for-automated-api-testing-247</guid>
      <description>&lt;p&gt;Hey, Apidog users! 👋 Over the past year, we've built a comprehensive automated testing platform around Test Scenarios—reusable workflow sequences that chain multiple API requests into complete business flows. Test Scenarios solve the "how to test" problem, but we've heard consistent feedback from teams about a different challenge: "how to organize what to test."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Teams tell us they have hundreds of test cases organized by business modules, but when it's time for release regression, they only want to run their P0 cases—not everything. Currently, they have to manually search and select each one. Others maintain both positive and negative test cases but want smoke tests to only cover positive flows. And when new cases are added, they're often forgotten in regression lists.&lt;/p&gt;

&lt;p&gt;Today, we're introducing Test Suites: a new resource type that lets you organize and execute tests by rules rather than by individual selection. Here's how to implement these capabilities in your workflow:&lt;/p&gt;

&lt;h2&gt;
  
  
  Dynamic Test Routing
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: Need to run all P0 cases in the payment module without manual selection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a new Test Suite in the Automated Testing module&lt;/li&gt;
&lt;li&gt;Select "Dynamic Mode"&lt;/li&gt;
&lt;li&gt;Set conditions: &lt;code&gt;Directory = "Payment"&lt;/code&gt; AND &lt;code&gt;Priority = P0&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Run the suite—all matching cases execute automatically
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Example: CLI command to trigger suite&lt;/span&gt;
&lt;span class="nx"&gt;apidoq&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;suite&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;suite&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="nx"&gt;payment_p0&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt; &lt;span class="nx"&gt;production&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjy7ijjxlc3y0ytk2j764.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjy7ijjxlc3y0ytk2j764.png" alt="Image" width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key benefits&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New test cases matching your conditions auto-include&lt;/li&gt;
&lt;li&gt;Avoid maintaining static regression lists&lt;/li&gt;
&lt;li&gt;Works with AI-generated tests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Implementation options&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mode&lt;/th&gt;
&lt;th&gt;Configuration&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Static&lt;/td&gt;
&lt;td&gt;Manual case selection&lt;/td&gt;
&lt;td&gt;Smoke tests (5-15 stable cases)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dynamic&lt;/td&gt;
&lt;td&gt;Rule-based inclusion&lt;/td&gt;
&lt;td&gt;Module regression (changing case counts)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Parallel Execution
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: Hour-long serial test runs delay releases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open suite configuration&lt;/li&gt;
&lt;li&gt;Toggle "Parallel Execution" on&lt;/li&gt;
&lt;li&gt;System auto-optimizes concurrency&lt;/li&gt;
&lt;li&gt;Typical results: 60m → 30m runs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F86g3ulal4794ypz26ubw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F86g3ulal4794ypz26ubw.png" alt="Image" width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pro tip&lt;/strong&gt;: Group dependent steps within a single Test Scenario using sequential requests.&lt;/p&gt;

&lt;h2&gt;
  
  
  Structured Test Reports
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Actionable steps&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Run any test suite&lt;/li&gt;
&lt;li&gt;View grouped results by:

&lt;ul&gt;
&lt;li&gt;Module&lt;/li&gt;
&lt;li&gt;Priority&lt;/li&gt;
&lt;li&gt;Tags&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Failed cases surface automatically&lt;/li&gt;
&lt;li&gt;Expand groups for details&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmshmp99oaycl8keln5sc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmshmp99oaycl8keln5sc.png" alt="Image" width="800" height="507"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Sample CI/CD integration&lt;/span&gt;
apidoq run-suite &lt;span class="nt"&gt;--suite-id&lt;/span&gt; smoke_test &lt;span class="nt"&gt;--report-format&lt;/span&gt; junit &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; results.xml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configuration Management
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Default behavior&lt;/strong&gt;: Each scenario uses its saved config&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Environment override&lt;/strong&gt;: Set one env for all scenarios&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full override&lt;/strong&gt;: Advanced settings for custom configs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwtzw3tlk6xpc47t5k766.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwtzw3tlk6xpc47t5k766.png" alt="Image" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Use Cases
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Implementation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Smoke tests&lt;/td&gt;
&lt;td&gt;Static suite with 5-15 critical cases&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Module regression&lt;/td&gt;
&lt;td&gt;Dynamic suite filtered by directory + priority&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Production monitoring&lt;/td&gt;
&lt;td&gt;Scheduled suite with health check tag&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Current Limitations&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No suite nesting (but dynamic mode covers most needs)&lt;/li&gt;
&lt;li&gt;No auto-retry (avoids masking real failures)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get Started Now
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to Automated Testing → Test Suites&lt;/li&gt;
&lt;li&gt;Click "New Test Suite"&lt;/li&gt;
&lt;li&gt;Configure using the workflow above&lt;/li&gt;
&lt;li&gt;Integrate with CI/CD:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# GitHub Actions example&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Run Regression Suite&lt;/span&gt;
  &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;apidoq run-suite --suite-id full_regression&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Join our community&lt;/strong&gt; for advanced techniques:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://discord.gg/apidog?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=blog-sync"&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/apidog?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=blog-sync"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See the &lt;a href="https://apidog.com/changelog?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=blog-sync"&gt;Apidog Changelog&lt;/a&gt; for latest updates!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Use KiloClaw (OpenClaw alternative) ?</title>
      <dc:creator>Preecha</dc:creator>
      <pubDate>Wed, 07 Oct 2026 02:04:54 +0000</pubDate>
      <link>https://dev.to/preecha/how-to-use-kiloclaw-openclaw-alternative--4b1l</link>
      <guid>https://dev.to/preecha/how-to-use-kiloclaw-openclaw-alternative--4b1l</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;This guide walks you through deploying and using KiloClaw in 6 simple steps: sign up at app.kilo.ai/claw, choose your deployment type, connect chat platforms (Telegram, Discord, Slack, etc.), select your AI model, configure memory settings, and start using your AI assistant. The entire process takes under 60 seconds, and new users get 7 days of free compute.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;You've heard about KiloClaw, the hosted version of OpenClaw that's taken the AI agent world by storm. With 230,000+ GitHub stars and the ability to connect to 50+ platforms, it's never been easier to deploy a personal AI assistant.&lt;/p&gt;

&lt;p&gt;In this tutorial, we'll walk through the entire process of setting up KiloClaw from scratch. By the end, you'll have a fully functional AI assistant connected to your preferred chat platforms, ready to help with automation, research, and productivity tasks.&lt;/p&gt;

&lt;p&gt;💡As you build AI agent workflows, Apidog is invaluable for testing and debugging the API calls your assistant makes. Save time debugging with Apidog's unified request inspector.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before you begin, ensure you have:&lt;br&gt;
| &lt;strong&gt;Requirement&lt;/strong&gt;         | &lt;strong&gt;Description&lt;/strong&gt;                                   |&lt;br&gt;
|--------------------------|---------------------------------------------------|&lt;br&gt;
| Kilo Account             | Sign up at &lt;a href="https://app.kilo.ai" rel="noopener noreferrer"&gt;app.kilo.ai&lt;/a&gt; (free) |&lt;br&gt;
| Chat Platform Account    | At least one of: Telegram, Discord, Slack, etc. |&lt;br&gt;
| AI API Key (optional)    | Anthropic, OpenAI, or Google key if bringing your own |&lt;br&gt;
| Web Browser              | Chrome, Firefox, Safari, or Edge                 |&lt;/p&gt;

&lt;p&gt;That's it. No server, no Docker, no command line required.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 1: Create Your KiloClaw Account
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Navigate to KiloClaw
&lt;/h3&gt;

&lt;p&gt;Open your browser and visit &lt;a href="https://app.kilo.ai/claw" rel="noopener noreferrer"&gt;https://app.kilo.ai/claw&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll see the KiloClaw landing page with the option to sign in or create an account.&lt;/p&gt;
&lt;h3&gt;
  
  
  Sign Up Process
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Click "Get Started" or "Sign Up"&lt;/li&gt;
&lt;li&gt;Choose your sign-up method:

&lt;ul&gt;
&lt;li&gt;Email + password&lt;/li&gt;
&lt;li&gt;Google account&lt;/li&gt;
&lt;li&gt;GitHub account&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwnli68ndzrahm5e9y8tb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwnli68ndzrahm5e9y8tb.png" alt="Sign Up Screen" width="800" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Complete the verification (email or OAuth)&lt;/p&gt;
&lt;h3&gt;
  
  
  Account Setup
&lt;/h3&gt;

&lt;p&gt;After signing up, you'll land on the Kilo dashboard. If you're new to Kilo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enter your name or display name&lt;/li&gt;
&lt;li&gt;(Optional) Add a profile photo&lt;/li&gt;
&lt;li&gt;Accept terms of service&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You're now ready to create your first KiloClaw instance.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 2: Choose Your Deployment Type
&lt;/h2&gt;

&lt;p&gt;KiloClaw offers three deployment options to match your experience level:&lt;/p&gt;
&lt;h3&gt;
  
  
  Option A: Quick Start (Recommended for Beginners)
&lt;/h3&gt;

&lt;p&gt;The fastest path to a running assistant:&lt;/p&gt;

&lt;p&gt;✓ Pre-configured defaults&lt;br&gt;&lt;br&gt;
✓ All popular platforms enabled&lt;br&gt;&lt;br&gt;
✓ Default model selected&lt;br&gt;&lt;br&gt;
✓ Standard memory settings&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Time to deploy&lt;/strong&gt;: ~30 seconds  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F31oaarrgo0ma2udjpsj6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F31oaarrgo0ma2udjpsj6.png" alt="Quick Start Screen" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Option B: Custom Deployment
&lt;/h3&gt;

&lt;p&gt;For users who know what they want:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Platform Selection: Choose specific platforms to connect
&lt;/li&gt;
&lt;li&gt;Model Selection: Pick your preferred AI model(s)
&lt;/li&gt;
&lt;li&gt;Memory Configuration: Set conversation history limits
&lt;/li&gt;
&lt;li&gt;Capability Tuning: Enable/disable specific AgentSkills
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Time to deploy&lt;/strong&gt;: ~60 seconds  &lt;/p&gt;
&lt;h3&gt;
  
  
  Option C: Import Configuration
&lt;/h3&gt;

&lt;p&gt;For existing OpenClaw users:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Export your config from self-hosted OpenClaw
&lt;/li&gt;
&lt;li&gt;Upload the configuration file
&lt;/li&gt;
&lt;li&gt;KiloClaw maps settings to hosted environment
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Time to deploy&lt;/strong&gt;: ~45 seconds&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Recommendation&lt;/strong&gt;: Start with Quick Start to see KiloClaw in action, then customize later.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 3: Connect Chat Platforms
&lt;/h2&gt;

&lt;p&gt;This is where KiloClaw shines, connecting your AI assistant to the platforms you already use.&lt;/p&gt;
&lt;h3&gt;
  
  
  Supported Platforms
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Authentication&lt;/th&gt;
&lt;th&gt;Setup Time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Telegram&lt;/td&gt;
&lt;td&gt;Bot token&lt;/td&gt;
&lt;td&gt;2 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Discord&lt;/td&gt;
&lt;td&gt;Bot token + server invite&lt;/td&gt;
&lt;td&gt;3 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Slack&lt;/td&gt;
&lt;td&gt;OAuth installation&lt;/td&gt;
&lt;td&gt;3 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WhatsApp&lt;/td&gt;
&lt;td&gt;QR code pairing&lt;/td&gt;
&lt;td&gt;2 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft Teams&lt;/td&gt;
&lt;td&gt;OAuth + admin consent&lt;/td&gt;
&lt;td&gt;5 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Signal&lt;/td&gt;
&lt;td&gt;Phone number + verification&lt;/td&gt;
&lt;td&gt;2 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Matrix&lt;/td&gt;
&lt;td&gt;Access token&lt;/td&gt;
&lt;td&gt;3 min&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Platform Setup Walkthrough
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Telegram (Most Popular)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;In KiloClaw dashboard, click "Add Platform" → "Telegram"
&lt;/li&gt;
&lt;li&gt;Open Telegram and message &lt;a class="mentioned-user" href="https://dev.to/botfather"&gt;@botfather&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Create a new bot: &lt;code&gt;/newbot&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Copy the bot token
&lt;/li&gt;
&lt;li&gt;Paste token into KiloClaw
&lt;/li&gt;
&lt;li&gt;Click "Connect"
&lt;/li&gt;
&lt;li&gt;Start chatting with your bot!
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftgqwoa2z2ap4lpkqp78o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftgqwoa2z2ap4lpkqp78o.png" alt="Telegram Setup" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Telegram bot token format&lt;/strong&gt;: &lt;code&gt;1234567890:ABCdefGHIjklMNOpqrsTUVwxyz&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Discord
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;a href="https://discord.com/developers/applications" rel="noopener noreferrer"&gt;Discord Developer Portal&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Create a new application
&lt;/li&gt;
&lt;li&gt;Add a bot to your application
&lt;/li&gt;
&lt;li&gt;Copy the bot token
&lt;/li&gt;
&lt;li&gt;In KiloClaw, paste token and specify server
&lt;/li&gt;
&lt;li&gt;Set required permissions:

&lt;ul&gt;
&lt;li&gt;Read messages
&lt;/li&gt;
&lt;li&gt;Send messages
&lt;/li&gt;
&lt;li&gt;Manage messages (optional)
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Generate invite link and add bot to server
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Slack
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Create a Slack app at &lt;a href="https://api.slack.com/" rel="noopener noreferrer"&gt;api.slack.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Enable Bot Token Scopes:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;chat:write&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;channels:read&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;im:write&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Install app to your workspace
&lt;/li&gt;
&lt;li&gt;Copy Bot User OAuth Token
&lt;/li&gt;
&lt;li&gt;Paste into KiloClaw
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Connecting Multiple Platforms
&lt;/h3&gt;

&lt;p&gt;KiloClaw supports connecting to multiple platforms simultaneously. Your AI assistant will be accessible across all connected channels:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example setup&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
├── Telegram: @MyAIAssistant&lt;br&gt;&lt;br&gt;
├── Discord: #ai-assistant in MyServer&lt;br&gt;&lt;br&gt;
├── Slack: @ai-assistant in workspace&lt;br&gt;&lt;br&gt;
└── WhatsApp: +1-555-AI-HELP&lt;br&gt;&lt;br&gt;
&lt;strong&gt;All platforms share the same memory and context&lt;/strong&gt;, magic!&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 4: Select Your AI Model
&lt;/h2&gt;

&lt;p&gt;KiloClaw gives you flexibility in choosing how your assistant thinks.&lt;/p&gt;
&lt;h3&gt;
  
  
  Option A: Kilo Gateway Models
&lt;/h3&gt;

&lt;p&gt;Access 500+ models through Kilo's unified gateway:&lt;br&gt;
| Model Category | Examples                             | Best For                   |&lt;br&gt;
|----------------|--------------------------------------|----------------------------|&lt;br&gt;
| Reasoning      | Claude 4 Opus, GPT-4.5              | Complex problem-solving    |&lt;br&gt;
| Balanced       | Claude 3.5 Sonnet, GPT-4o            | General tasks              |&lt;br&gt;
| Fast           | GPT-4o-mini, Claude 3 Haiku          | Quick responses            |&lt;br&gt;
| Coding         | Claude 4.5 Code, Codex              | Development tasks          |&lt;br&gt;
| Vision         | Claude 4 Vision, GPT-4V              | Image understanding        |&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd7629c0ynrqa43phmgue.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd7629c0ynrqa43phmgue.png" alt="Model Selection" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing&lt;/strong&gt;: Pay-per-token at Kilo Gateway rates (no markup)&lt;/p&gt;
&lt;h3&gt;
  
  
  Option B: Bring Your Own Key
&lt;/h3&gt;

&lt;p&gt;Use existing API keys:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click "Bring Your Own Key"
&lt;/li&gt;
&lt;li&gt;Select provider: Anthropic, OpenAI, or Google
&lt;/li&gt;
&lt;li&gt;Paste your API key
&lt;/li&gt;
&lt;li&gt;Choose model(s) from that provider
&lt;/li&gt;
&lt;li&gt;Save
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1uygsfg82xy3lz8x5nvl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1uygsfg82xy3lz8x5nvl.png" alt="Bring Your Own Key" width="800" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your API key is securely stored and proxied through Kilo's infrastructure; it never touches your local environment.&lt;/p&gt;
&lt;h3&gt;
  
  
  Model Selection Tips
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Start with Claude 3.5 Sonnet: Excellent balance of capability and cost
&lt;/li&gt;
&lt;li&gt;Switch per-task: Create different configurations for different use cases
&lt;/li&gt;
&lt;li&gt;Use fast models for simple tasks: Save Opus/GPT-4 for complex reasoning
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Step 5: Configure Memory and Preferences
&lt;/h2&gt;

&lt;p&gt;One of KiloClaw's most powerful features is persistent memory; your assistant remembers context across sessions.&lt;/p&gt;
&lt;h3&gt;
  
  
  Memory Settings
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Setting&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Conversation History&lt;/td&gt;
&lt;td&gt;How many messages to retain&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User Preferences&lt;/td&gt;
&lt;td&gt;Remember user settings&lt;/td&gt;
&lt;td&gt;Enabled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context Window&lt;/td&gt;
&lt;td&gt;How much context per request&lt;/td&gt;
&lt;td&gt;Provider limit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory Format&lt;/td&gt;
&lt;td&gt;Markdown files for persistence&lt;/td&gt;
&lt;td&gt;Enabled&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Custom Instructions
&lt;/h3&gt;

&lt;p&gt;Set system prompts that define your assistant's behavior:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You are a helpful AI assistant specialized in:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Software development and code review
&lt;/li&gt;
&lt;li&gt;Research and fact-finding
&lt;/li&gt;
&lt;li&gt;Drafting emails and documents
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Be concise, accurate, and proactive. When unsure, ask clarifying questions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Privacy Controls
&lt;/h3&gt;

&lt;p&gt;Configure what your assistant can access:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read access: Which platforms can it read from?
&lt;/li&gt;
&lt;li&gt;Write access: Which platforms can it respond on?
&lt;/li&gt;
&lt;li&gt;Tool access: Which capabilities are enabled?
&lt;/li&gt;
&lt;li&gt;Data retention: How long is history kept?
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Step 6: Deploy and Start Using
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Launch Your Instance
&lt;/h3&gt;

&lt;p&gt;With all settings configured:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click "Deploy KiloClaw"
&lt;/li&gt;
&lt;li&gt;Wait for provisioning (~30 seconds)
&lt;/li&gt;
&lt;li&gt;See "Instance Running" status
&lt;/li&gt;
&lt;li&gt;Start chatting!
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  First Conversation
&lt;/h3&gt;

&lt;p&gt;Send a message on any connected platform:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;You&lt;/strong&gt;: Hello! What can you help me with?  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;KiloClaw&lt;/strong&gt;: Hi! I'm your personal AI assistant. I can help with:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Research and information gathering
&lt;/li&gt;
&lt;li&gt;Drafting emails, documents, and code
&lt;/li&gt;
&lt;li&gt;Scheduling and reminders
&lt;/li&gt;
&lt;li&gt;Automation across your connected apps
&lt;/li&gt;
&lt;li&gt;And much more!
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What would you like help with today?  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Using Your KiloClaw AI Assistant
&lt;/h2&gt;

&lt;p&gt;Now that it's running, here are the ways you can interact:&lt;/p&gt;
&lt;h3&gt;
  
  
  Basic Commands
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;help&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Show available commands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Display current configuration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;memory&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Show what the assistant remembers about you&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;reset&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Clear conversation history&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Task Examples
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Research Task
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;You&lt;/strong&gt;: Can you research the latest developments in AI agents and summarize the key trends?  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;KiloClaw&lt;/strong&gt;: [Conducts web research, synthesizes findings, presents summary]  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;
  
  
  Code Assistance
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;You&lt;/strong&gt;: Write a Python function to fetch data from a REST API with error handling.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;KiloClaw&lt;/strong&gt;: [Provides well-commented code with proper error handling]  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;
  
  
  Automation
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;You&lt;/strong&gt;: Remind me to review pull requests every day at 9 AM.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;KiloClaw&lt;/strong&gt;: [Sets up scheduled reminder task]  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Voice Interaction
&lt;/h3&gt;

&lt;p&gt;If enabled, talk to your assistant:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;macOS: Native integration via system microphone
&lt;/li&gt;
&lt;li&gt;iOS/Android: Mobile app integration
&lt;/li&gt;
&lt;li&gt;Phone: Twilio integration for voice calls
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Advanced Configuration
&lt;/h2&gt;
&lt;h3&gt;
  
  
  AgentSkills (100+ Pre-built Capabilities)
&lt;/h3&gt;

&lt;p&gt;KiloClaw includes pre-configured skills for common tasks:&lt;br&gt;
| Category      | Skills                                |&lt;br&gt;
|---------------|---------------------------------------|&lt;br&gt;
| Development   | Code review, debugging, documentation |&lt;br&gt;
| Productivity  | Calendar, email, note-taking          |&lt;br&gt;
| Research      | Web search, data extraction           |&lt;br&gt;
| Automation    | Scheduled tasks, webhooks             |&lt;br&gt;
| Communication | Drafting, translation, summarization  |&lt;/p&gt;

&lt;p&gt;Enable/disable skills in dashboard settings.&lt;/p&gt;
&lt;h3&gt;
  
  
  Custom Tools
&lt;/h3&gt;

&lt;p&gt;For advanced users, add custom capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create tool definition in JSON schema format
&lt;/li&gt;
&lt;li&gt;Implement tool logic (Python, JavaScript)
&lt;/li&gt;
&lt;li&gt;Register tool in KiloClaw dashboard
&lt;/li&gt;
&lt;li&gt;Start using in conversations
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Webhooks
&lt;/h3&gt;

&lt;p&gt;Connect KiloClaw to external services:&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;"trigger"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"new_lead_form"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"notify_slack"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"payload"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{{form_data}}"&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;h2&gt;
  
  
  Scheduling Automated Tasks
&lt;/h2&gt;

&lt;p&gt;KiloClaw supports cron-style scheduling for recurring tasks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting Up a Scheduled Task
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to "Automation" → "Scheduled Tasks"
&lt;/li&gt;
&lt;li&gt;Click "Add Task"
&lt;/li&gt;
&lt;li&gt;Configure:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Field            | Example  
Name             | Daily Standup Summary  
Schedule         | 0 9 * * 1-5 (Weekdays 9 AM)  
Action           | Run defined workflow  
Notification     | Post to Slack #standup  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Common Scheduled Automations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Daily briefings: Summarize calendar, emails, tasks
&lt;/li&gt;
&lt;li&gt;Weekly reports: Compile analytics and metrics
&lt;/li&gt;
&lt;li&gt;Monitoring: Check API health, alert on failures
&lt;/li&gt;
&lt;li&gt;Data sync: Pull/push data between services
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cron Expression Reference
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6)
│ │ │ │ │
* * * * *  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Managing Your Instance
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Dashboard Controls
&lt;/h3&gt;

&lt;p&gt;From the KiloClaw dashboard:&lt;br&gt;
| Action      | Description                            |&lt;br&gt;
|-------------|----------------------------------------|&lt;br&gt;
| Start/Stop  | Pause or resume your instance          |&lt;br&gt;
| Restart     | Force restart (fixes most issues)      |&lt;br&gt;
| View Logs   | See activity and error logs            |&lt;br&gt;
| Update      | Apply latest KiloClaw version          |&lt;br&gt;
| Delete&lt;/p&gt;

</description>
    </item>
    <item>
      <title>KiloClaw vs OpenClaw: What's the Difference?</title>
      <dc:creator>Preecha</dc:creator>
      <pubDate>Tue, 06 Oct 2026 14:01:43 +0000</pubDate>
      <link>https://dev.to/preecha/kiloclaw-vs-openclaw-whats-the-difference-175</link>
      <guid>https://dev.to/preecha/kiloclaw-vs-openclaw-whats-the-difference-175</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;KiloClaw is the hosted version of OpenClaw, you get the same powerful AI agent capabilities but with zero infrastructure management. KiloClaw deploys in under 60 seconds with 500+ AI models and 50+ platform integrations. OpenClaw is free and self-hosted, giving you full control but requiring Docker, server setup, and manual maintenance. Choose KiloClaw for simplicity and team features; choose OpenClaw for maximum control and cost optimization at scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;If you've been following the AI agent space in 2026, you've likely heard of OpenClaw, the open-source project that became the fastest-growing AI project in history, amassing 230,000+ GitHub stars in under two weeks. Created by Peter Steinberger (now at OpenAI), OpenClaw lets you run a personal AI assistant that connects to the tools and platforms you use daily.&lt;/p&gt;

&lt;p&gt;But here's the catch: OpenClaw is designed to be self-hosted. That means you need Docker, a server, and some technical know-how to get it running. That's where KiloClaw comes in.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  What is OpenClaw?
&lt;/h2&gt;

&lt;p&gt;OpenClaw is an open-source AI agent that went viral in February 2026. It started as a personal project called "Clawdbot" and evolved through several name changes (Moltbot, due to trademark concerns with Anthropic) before settling on OpenClaw.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjijjnnssk6s2tlva57tx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjijjnnssk6s2tlva57tx.png" alt="OpenClaw Interface" width="800" height="287"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Capabilities
&lt;/h3&gt;

&lt;p&gt;OpenClaw functions as your personal AI assistant that runs locally and connects to the tools you already use:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Multi-Platform Integration&lt;/td&gt;
&lt;td&gt;Works with WhatsApp, Telegram, Discord, Slack, Signal, iMessage, Microsoft Teams, Matrix, and 50+ platforms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shell Command Execution&lt;/td&gt;
&lt;td&gt;Runs terminal commands, executes scripts, and automates system tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Browser Control&lt;/td&gt;
&lt;td&gt;Navigates websites, fills forms, and extracts data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;File Management&lt;/td&gt;
&lt;td&gt;Reads, writes, and organizes files across your system&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Persistent Memory&lt;/td&gt;
&lt;td&gt;Stores conversation history and user preferences in Markdown files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Voice Interaction&lt;/td&gt;
&lt;td&gt;Supports voice commands on macOS, iOS, and Android&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;100+ Agent Skills&lt;/td&gt;
&lt;td&gt;Pre-built automation capabilities for common tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Model Support
&lt;/h3&gt;

&lt;p&gt;OpenClaw supports multiple AI providers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Anthropic's Claude (including Claude 3.5 Sonnet, Opus 4)&lt;/li&gt;
&lt;li&gt;OpenAI's GPT (GPT-4o, GPT-4 Turbo)&lt;/li&gt;
&lt;li&gt;Google's Gemini&lt;/li&gt;
&lt;li&gt;Any model accessible via OpenAI-compatible APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Trade-off
&lt;/h3&gt;

&lt;p&gt;OpenClaw is free to use, but you're responsible for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Server infrastructure (local machine or cloud VPS)&lt;/li&gt;
&lt;li&gt;Docker installation and configuration&lt;/li&gt;
&lt;li&gt;Ongoing maintenance and updates&lt;/li&gt;
&lt;li&gt;Security hardening&lt;/li&gt;
&lt;li&gt;Process monitoring (to restart if it crashes)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Example OpenClaw docker-compose.yml setup&lt;/span&gt;
version: &lt;span class="s1"&gt;'3'&lt;/span&gt;
services:
  openclaw:
    image: ghcr.io/openclaw/openclaw:latest
    environment:
      OPENAI_API_KEY: your-key-here
      CLAUDE_API_KEY: your-key-here
      PLATFORM_TOKENS: &lt;span class="nv"&gt;whatsapp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your-token,slack&lt;span class="o"&gt;=&lt;/span&gt;your-token
    volumes:
      - ./config:/config
    ports:
      - &lt;span class="s2"&gt;"3000:3000"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What is KiloClaw?
&lt;/h2&gt;

&lt;p&gt;KiloClaw is a fully managed hosting service for OpenClaw, launched by Kilo Code (a platform serving 1.5 million+ developers). It takes the powerful OpenClaw agent and handles all the infrastructure complexity for you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcbgclf9pt1xzxjnj0jxw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcbgclf9pt1xzxjnj0jxw.jpg" alt="KiloClaw Dashboard" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Value Proposition
&lt;/h3&gt;

&lt;p&gt;Instead of spending 30-60 minutes configuring servers, Docker, and environment variables, you can deploy a production-ready OpenClaw instance in under 60 seconds.&lt;/p&gt;

&lt;p&gt;Here's what KiloClaw handles automatically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Server provisioning and maintenance&lt;/li&gt;
&lt;li&gt;Docker container management&lt;/li&gt;
&lt;li&gt;Security configuration&lt;/li&gt;
&lt;li&gt;Auto-updates&lt;/li&gt;
&lt;li&gt;Process monitoring and auto-restart&lt;/li&gt;
&lt;li&gt;Unified billing through Kilo Gateway&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Additional Features
&lt;/h3&gt;

&lt;p&gt;KiloClaw includes several enhancements over the base OpenClaw:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;500+ AI Models via Kilo Gateway: Access an enormous selection including Claude, GPT, Gemini, and open-source models&lt;/li&gt;
&lt;li&gt;Enterprise Features: SSO, audit logs, team management&lt;/li&gt;
&lt;li&gt;Scheduled Tasks: Automate workflows with cron jobs&lt;/li&gt;
&lt;li&gt;Bring Your Own Keys: Use existing Anthropic/OpenAI/Gemini keys&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Feature-by-Feature Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;KiloClaw (Hosted)&lt;/th&gt;
&lt;th&gt;OpenClaw (Self-Hosted)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Setup Time&lt;/td&gt;
&lt;td&gt;Under 60 seconds&lt;/td&gt;
&lt;td&gt;30-60+ minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI Models Available&lt;/td&gt;
&lt;td&gt;500+ via Kilo Gateway&lt;/td&gt;
&lt;td&gt;1 at a time (manual switch)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Platform Integrations&lt;/td&gt;
&lt;td&gt;50+ pre-configured&lt;/td&gt;
&lt;td&gt;50+ (manual setup each)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auto-Restart on Crash&lt;/td&gt;
&lt;td&gt;✓ Built-in&lt;/td&gt;
&lt;td&gt;✗ Requires supervisor/supervisord&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Updates&lt;/td&gt;
&lt;td&gt;Automatic&lt;/td&gt;
&lt;td&gt;Manual (git pull + rebuild)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Process Monitoring&lt;/td&gt;
&lt;td&gt;Built-in&lt;/td&gt;
&lt;td&gt;Manual setup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Team Management&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSO&lt;/td&gt;
&lt;td&gt;✓ Enterprise&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Audit Logs&lt;/td&gt;
&lt;td&gt;✓ Enterprise&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scheduled Tasks&lt;/td&gt;
&lt;td&gt;✓ Built-in&lt;/td&gt;
&lt;td&gt;✗ Requires separate setup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bring Your Own Keys&lt;/td&gt;
&lt;td&gt;✓ Automatic&lt;/td&gt;
&lt;td&gt;Manual configuration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unified Billing&lt;/td&gt;
&lt;td&gt;✓ Via Kilo Gateway&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost&lt;/td&gt;
&lt;td&gt;Compute + token costs&lt;/td&gt;
&lt;td&gt;Free (you pay for infrastructure)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Pricing Comparison
&lt;/h2&gt;

&lt;h3&gt;
  
  
  KiloClaw Pricing
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;Features&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free Trial&lt;/td&gt;
&lt;td&gt;7 days of compute&lt;/td&gt;
&lt;td&gt;Free (no credit card)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Standard&lt;/td&gt;
&lt;td&gt;Pay-as-you-go compute + AI tokens&lt;/td&gt;
&lt;td&gt;Usage-based&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise&lt;/td&gt;
&lt;td&gt;SSO, audit logs, team management&lt;/td&gt;
&lt;td&gt;Custom pricing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;AI token costs have zero markup - you pay exactly what the model providers charge.&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenClaw Costs
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Software&lt;/td&gt;
&lt;td&gt;Free (open-source)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Server/Cloud&lt;/td&gt;
&lt;td&gt;$5-50/month (VPS or cloud VM)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI API Keys&lt;/td&gt;
&lt;td&gt;Pay directly to Anthropic/OpenAI/Google&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Electricity (local)&lt;/td&gt;
&lt;td&gt;Minimal&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Setup and Deployment
&lt;/h2&gt;

&lt;h3&gt;
  
  
  KiloClaw Deployment (60 seconds)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Visit &lt;a href="https://app.kilo.ai/claw?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=blog-sync"&gt;app.kilo.ai/claw&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Choose deployment type (Quick Start or Custom)&lt;/li&gt;
&lt;li&gt;Select chat platforms to connect&lt;/li&gt;
&lt;li&gt;Choose AI model (Kilo Gateway or bring your own key)&lt;/li&gt;
&lt;li&gt;Click Deploy&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  OpenClaw Deployment (30-60 minutes)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Install Docker on your machine or VPS&lt;/li&gt;
&lt;li&gt;Clone the repository:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   git clone https://github.com/openclaw/openclaw.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Configure environment variables&lt;/li&gt;
&lt;li&gt;Generate platform tokens&lt;/li&gt;
&lt;li&gt;Build and run:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   docker-compose up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  When to Choose Which
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Choose KiloClaw If:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need deployment in under 60 seconds&lt;/li&gt;
&lt;li&gt;You want auto-updates and monitoring&lt;/li&gt;
&lt;li&gt;You need team features or enterprise SSO&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Choose OpenClaw If:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You require full control over your infrastructure&lt;/li&gt;
&lt;li&gt;Data must stay entirely on-premises&lt;/li&gt;
&lt;li&gt;You're cost-optimizing at scale&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Migration Path
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;From KiloClaw to OpenClaw:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Export your configuration&lt;/li&gt;
&lt;li&gt;Set up Docker environment&lt;/li&gt;
&lt;li&gt;Import configuration into OpenClaw&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;From OpenClaw to KiloClaw:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Document your current config&lt;/li&gt;
&lt;li&gt;Create KiloClaw account&lt;/li&gt;
&lt;li&gt;Replicate settings in dashboard&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Can I use both KiloClaw and OpenClaw together?
&lt;/h3&gt;

&lt;p&gt;Yes, many users run OpenClaw for critical workflows and KiloClaw for convenience.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I debug API calls?
&lt;/h3&gt;

&lt;p&gt;Use tools like &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=blog-sync"&gt;Apidog&lt;/a&gt; to inspect requests and responses.&lt;/p&gt;

&lt;h3&gt;
  
  
  What if I need custom integrations?
&lt;/h3&gt;

&lt;p&gt;OpenClaw allows direct code modifications, while KiloClaw supports webhooks and custom actions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Key decision factors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time vs Control&lt;/strong&gt;: KiloClaw saves hours, OpenClaw gives full control&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team Needs&lt;/strong&gt;: KiloClaw offers team features out of the box&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost Structure&lt;/strong&gt;: OpenClaw is cheaper at scale, KiloClaw has lower startup cost&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For most developers, starting with KiloClaw's free trial provides the fastest way to test AI agent capabilities.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What is Nano Banana 2?</title>
      <dc:creator>Preecha</dc:creator>
      <pubDate>Tue, 06 Oct 2026 02:04:08 +0000</pubDate>
      <link>https://dev.to/preecha/what-is-nano-banana-2-58a0</link>
      <guid>https://dev.to/preecha/what-is-nano-banana-2-58a0</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Google Nano Banana 2 (officially Gemini 3.1 Flash Image) is Google's latest AI image generation model launched on February 26, 2026. It delivers Pro-quality images at Flash speeds, with improved text rendering, subject consistency for up to 5 characters, and resolution options from 512px to 4K. Available through the Gemini app, Gemini API, AI Studio, and Vertex AI, with free tier limitations and Pro/Ultra subscribers getting Nano Banana Pro access. All images include SynthID watermarks for content verification.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Google launched Nano Banana 2, the successor to the viral AI image generator that captured developer attention in 2025. This latest model promises Pro-quality output at Flash speeds, directly challenging OpenAI's DALL-E, ByteDance's Seedance, and Adobe's Firefly.&lt;/p&gt;

&lt;p&gt;For developers and businesses, the question isn't just "what's new", it's "how can I integrate this into my workflow?" Understanding Nano Banana 2's capabilities, API access, and limitations is essential for anyone building applications that generate images programmatically.&lt;/p&gt;

&lt;p&gt;Whether you're building a marketing platform, creating automated content tools, or integrating AI image generation into your product, this guide covers everything you need to know about Google's latest AI image model.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;💡When integrating AI image generation APIs like Gemini's Nano Banana 2, using a robust API testing tool like Apidog helps you debug requests, manage environment variables, and automate image generation workflows efficiently.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Nano Banana 2?
&lt;/h2&gt;

&lt;p&gt;Nano Banana 2 is Google's newest AI image generation model, officially named Gemini 3.1 Flash Image. It represents a significant upgrade to the original Nano Banana model that launched in August 2025 and quickly became one of the most discussed AI image generators in the developer community.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7aus3if5b02koahy5h8z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7aus3if5b02koahy5h8z.png" alt="Nano Banana 2" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The "Nano Banana" naming originated from Google's internal codename system and became the public moniker that stuck, much to the amusement of the tech community. The name itself went viral on social media, with developers sharing banana-themed AI-generated images as a sort of inside joke.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why the Name Matters
&lt;/h3&gt;

&lt;p&gt;The Nano Banana branding has become synonymous with accessible, high-quality AI image generation. By retaining the name for the successor model, Google signals continuity while emphasizing that this is an evolution of a proven product rather than an entirely new direction.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Technology Behind Nano Banana 2
&lt;/h3&gt;

&lt;p&gt;Built on the Gemini 3.1 architecture, Nano Banana 2 leverages advanced world knowledge pulled from Google's massive data repositories. This means the model understands real-world objects, contexts, and relationships better than many competing image generators, resulting in more accurate, contextually appropriate outputs.&lt;/p&gt;

&lt;p&gt;The model integrates seamlessly with other Gemini capabilities, allowing for multi-modal workflows where you can combine text generation, image understanding, and image creation in a single pipeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features and Capabilities
&lt;/h2&gt;

&lt;p&gt;Nano Banana 2 brings several significant improvements over its predecessor. Let's break down the key capabilities:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Speed and Performance
&lt;/h3&gt;

&lt;p&gt;The "Flash" in Gemini 3.1 Flash Image isn't just marketing, generation speeds are noticeably faster than the original Nano Banana. This makes it practical for real-time applications where users expect instant results, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Live content customization&lt;/li&gt;
&lt;li&gt;Interactive design tools&lt;/li&gt;
&lt;li&gt;E-commerce product visualization&lt;/li&gt;
&lt;li&gt;Social media content creation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Advanced World Knowledge
&lt;/h3&gt;

&lt;p&gt;Unlike standalone image generators, Nano Banana 2 taps into Gemini's vast knowledge base. This enables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accurate object rendering: The model understands how real-world objects look, function, and relate to each other&lt;/li&gt;
&lt;li&gt;Current events knowledge: Can incorporate recent events, products, and cultural references when appropriate&lt;/li&gt;
&lt;li&gt;Geographic accuracy: Buildings, landmarks, and locations are rendered correctly&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Improved Text Rendering
&lt;/h3&gt;

&lt;p&gt;One of the biggest weaknesses of AI image generators has been text rendering, creating readable text within images. Nano Banana 2 significantly improves this capability, making it viable for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Marketing mockups and advertisements&lt;/li&gt;
&lt;li&gt;Greeting cards and invitations&lt;/li&gt;
&lt;li&gt;Infographics with labels&lt;/li&gt;
&lt;li&gt;Product designs with typography&lt;/li&gt;
&lt;li&gt;Social media graphics&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Subject Consistency
&lt;/h3&gt;

&lt;p&gt;For workflows requiring multiple images of the same character or object, Nano Banana 2 offers impressive consistency:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Character consistency: Maintains resemblance for up to 5 characters in a single workflow&lt;/li&gt;
&lt;li&gt;Object fidelity: Preserves fidelity of up to 14 objects across multiple generations&lt;/li&gt;
&lt;li&gt;Style consistency: Keeps visual style uniform across image sequences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is particularly valuable for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Comic and storyboard creation&lt;/li&gt;
&lt;li&gt;Product catalog generation&lt;/li&gt;
&lt;li&gt;Brand asset development&lt;/li&gt;
&lt;li&gt;Character design iteration&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Resolution and Aspect Ratios
&lt;/h3&gt;

&lt;p&gt;Nano Banana 2 supports a wide range of output options:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Resolution&lt;/th&gt;
&lt;th&gt;Use Case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;512px&lt;/td&gt;
&lt;td&gt;Thumbnails, previews, social posts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1024px&lt;/td&gt;
&lt;td&gt;Web content, presentations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2048px&lt;/td&gt;
&lt;td&gt;Print-ready, high-quality digital&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4K&lt;/td&gt;
&lt;td&gt;Large format, professional use&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Aspect ratios include standard options (1:1, 4:3, 16:9, 9:16) plus custom configurations.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Content Authentication
&lt;/h3&gt;

&lt;p&gt;All images generated with Nano Banana 2 include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SynthID watermarks: Google's invisible watermarking technology for AI-generated content&lt;/li&gt;
&lt;li&gt;C2PA Content Credentials: Industry-standard provenance metadata&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This addresses growing concerns about AI-generated content authenticity and positions Nano Banana 2 for use cases where provenance matters, such as news, journalism, and regulated industries.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nano Banana 2 vs Original Nano Banana
&lt;/h2&gt;

&lt;p&gt;If you're already using the original Nano Banana, here's what's new in version 2:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Original Nano Banana&lt;/th&gt;
&lt;th&gt;Nano Banana 2&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Generation Speed&lt;/td&gt;
&lt;td&gt;Fast&lt;/td&gt;
&lt;td&gt;2x faster&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text Rendering&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;Significantly improved&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Character Consistency&lt;/td&gt;
&lt;td&gt;2 characters&lt;/td&gt;
&lt;td&gt;5 characters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Object Fidelity&lt;/td&gt;
&lt;td&gt;6 objects&lt;/td&gt;
&lt;td&gt;14 objects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Max Resolution&lt;/td&gt;
&lt;td&gt;2048px&lt;/td&gt;
&lt;td&gt;4K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;World Knowledge&lt;/td&gt;
&lt;td&gt;Static training data&lt;/td&gt;
&lt;td&gt;Real-time Gemini integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content Authentication&lt;/td&gt;
&lt;td&gt;SynthID only&lt;/td&gt;
&lt;td&gt;SynthID + C2PA&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The improvements are substantial enough that if you're on the original model, upgrading to Nano Banana 2 is strongly recommended for most use cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Access Nano Banana 2
&lt;/h2&gt;

&lt;p&gt;Google has made Nano Banana 2 available through multiple channels, giving developers flexibility in how they integrate it:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Gemini App (Consumer)
&lt;/h3&gt;

&lt;p&gt;The easiest way to try Nano Banana 2 is through the Gemini mobile and web apps. Simply update to the latest version and look for the image generation feature.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgh681cqoqmm5x247xg57.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgh681cqoqmm5x247xg57.png" alt="Gemini App" width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access&lt;/strong&gt;: Free (with limitations)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Best for&lt;/strong&gt;: Quick experiments, casual use, learning the model capabilities&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Google Search
&lt;/h3&gt;

&lt;p&gt;Nano Banana 2 is integrated directly into Google Search through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI Mode: Conversational image generation within search&lt;/li&gt;
&lt;li&gt;Google Lens: Image generation from visual input&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Access&lt;/strong&gt;: Available to all Google users&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Best for&lt;/strong&gt;: Quick queries, visual research&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Google AI Studio
&lt;/h3&gt;

&lt;p&gt;For developers wanting to experiment with the API before building integrations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web-based playground&lt;/li&gt;
&lt;li&gt;Easy API key generation&lt;/li&gt;
&lt;li&gt;Usage tracking and limits&lt;/li&gt;
&lt;li&gt;Prompt experimentation tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ey5puqr05x19v2c9ynb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ey5puqr05x19v2c9ynb.png" alt="Google AI Studio" width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access&lt;/strong&gt;: Free tier unavailable, requires Google account&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Best for&lt;/strong&gt;: Prototyping, learning, small projects&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Gemini API (Programmatic)
&lt;/h3&gt;

&lt;p&gt;The primary integration pathway for applications:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;REST API access&lt;/li&gt;
&lt;li&gt;Streaming responses&lt;/li&gt;
&lt;li&gt;Full parameter control&lt;/li&gt;
&lt;li&gt;Production usage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj7jx4zv3xoazfcl5hy8s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj7jx4zv3xoazfcl5hy8s.png" alt="Gemini API" width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access&lt;/strong&gt;: API key required, usage-based pricing&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Best for&lt;/strong&gt;: Application integration, production systems&lt;/p&gt;
&lt;h3&gt;
  
  
  5. Vertex AI (Enterprise)
&lt;/h3&gt;

&lt;p&gt;For enterprise customers needing advanced features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Custom model fine-tuning (future)&lt;/li&gt;
&lt;li&gt;Advanced security and compliance&lt;/li&gt;
&lt;li&gt;Dedicated infrastructure&lt;/li&gt;
&lt;li&gt;Comprehensive analytics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyu6uznf3ifab4wh0bqn4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyu6uznf3ifab4wh0bqn4.png" alt="Vertex AI" width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access&lt;/strong&gt;: Google Cloud customers&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Best for&lt;/strong&gt;: Enterprise applications, regulated industries&lt;/p&gt;
&lt;h3&gt;
  
  
  6. Google Antigravity
&lt;/h3&gt;

&lt;p&gt;A newer platform for accessing Google's AI capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simplified access&lt;/li&gt;
&lt;li&gt;Competitive pricing&lt;/li&gt;
&lt;li&gt;Developer-focused features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Access&lt;/strong&gt;: API key required&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Best for&lt;/strong&gt;: Developers seeking alternatives to Vertex&lt;/p&gt;
&lt;h3&gt;
  
  
  7. Google Flow
&lt;/h3&gt;

&lt;p&gt;Google's video editing tool now uses Nano Banana 2 as the default image model, enabling:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI-powered video generation&lt;/li&gt;
&lt;li&gt;Storyboarding&lt;/li&gt;
&lt;li&gt;Asset creation for video projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffz3j9sntsv123mx12d6y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffz3j9sntsv123mx12d6y.png" alt="Google Flow" width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access&lt;/strong&gt;: Included with Google subscription&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Best for&lt;/strong&gt;: Video content creators&lt;/p&gt;
&lt;h2&gt;
  
  
  Integrating Nano Banana 2 API with Apidog
&lt;/h2&gt;

&lt;p&gt;For developers building applications that use Nano Banana 2, proper API testing and management is crucial. Here's how to integrate and test the Gemini image generation API using Apidog:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiupbpo6a31jf3kkq4qcs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiupbpo6a31jf3kkq4qcs.png" alt="Apidog Integration" width="799" height="530"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;Before you begin, you'll need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Google Cloud account&lt;/li&gt;
&lt;li&gt;API key from Google AI Studio or Gemini API&lt;/li&gt;
&lt;li&gt;Apidog installed (or use the web version)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Step 1: Set Up Your Apidog Workspace
&lt;/h3&gt;

&lt;p&gt;Create a new workspace for your image generation project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Open Apidog and create a new workspace&lt;/span&gt;
&lt;span class="c"&gt;# Name: "Nano Banana 2 Integration"&lt;/span&gt;
&lt;span class="c"&gt;# Description: "Gemini image generation API testing"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Configure Environment Variables
&lt;/h3&gt;

&lt;p&gt;Store your API key securely using Apidog's environment variables:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Environment: Development
Variable: GEMINI_API_KEY
Value: your_api_key_here
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Pro Tip&lt;/strong&gt;: Never hardcode API keys in your requests. Use Apidog's environment variables to keep your credentials secure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Create Your First Image Generation Request
&lt;/h3&gt;

&lt;p&gt;Here's how to structure a basic image generation request in Apidog:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Endpoint: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp-image-generation:predict

Method: POST

Headers:

Authorization: Bearer &lt;span class="o"&gt;{{&lt;/span&gt;GEMINI_API_KEY&lt;span class="o"&gt;}}&lt;/span&gt;
Content-Type: application/json

Request Body:

&lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="s2"&gt;"prompt"&lt;/span&gt;: &lt;span class="s2"&gt;"A modern minimalist office workspace with a banana-shaped desk lamp, 4k quality, natural lighting"&lt;/span&gt;,
  &lt;span class="s2"&gt;"number_of_images"&lt;/span&gt;: 1,
  &lt;span class="s2"&gt;"aspect_ratio"&lt;/span&gt;: &lt;span class="s2"&gt;"16:9"&lt;/span&gt;,
  &lt;span class="s2"&gt;"resolution"&lt;/span&gt;: &lt;span class="s2"&gt;"1024x1024"&lt;/span&gt;,
  &lt;span class="s2"&gt;"negative_prompt"&lt;/span&gt;: &lt;span class="s2"&gt;"blurry, low quality, distorted"&lt;/span&gt;,
  &lt;span class="s2"&gt;"safety_filter_level"&lt;/span&gt;: &lt;span class="s2"&gt;"block_medium_and_above"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Test the Request
&lt;/h3&gt;

&lt;p&gt;Click "Send" in Apidog to test your request. You should receive a response containing:&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;"predictions"&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="nl"&gt;"image"&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;"mimeType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"image/png"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"base64_encoded_image_data..."&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;"generated_image_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"img_abc123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"metadata"&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;"prompt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"A modern minimalist office workspace..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"seed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;12345&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"finish_reason"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"SUCCESS"&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="nl"&gt;"metadata"&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;"model_version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gemini-3.1-flash-image-v2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"processing_time_ms"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1250&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"content_authenticity"&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;"synthID"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"enabled"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"c2pa"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"enabled"&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;h3&gt;
  
  
  Step 5: Build Automated Test Suites
&lt;/h3&gt;

&lt;p&gt;Create automated tests in Apidog to ensure your image generation pipeline works reliably:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Apidog test script&lt;/span&gt;
&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Successful image generation&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;jsonData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;jsonData&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;predictions&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;have&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;property&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;image&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;jsonData&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;predictions&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;finish_reason&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;eql&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;SUCCESS&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content authenticity verified&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;jsonData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;jsonData&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content_authenticity&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;synthID&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;eql&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;enabled&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Response time under 3 seconds&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;responseTime&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;be&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;below&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Advanced: Character Consistency Workflow
&lt;/h3&gt;

&lt;p&gt;For projects requiring consistent characters across multiple images, here's how to structure your workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Step 1: Generate base character&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;baseRequest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;prompt&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;A friendly robot character, cute style, front view, white and blue color scheme&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;seed&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;12345&lt;/span&gt;  &lt;span class="c1"&gt;// Note the seed for reproducibility&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Step 2: Generate variations using same seed&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;variationRequest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;prompt&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Same robot character, sitting pose, simple background&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;seed&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;12345&lt;/span&gt;  &lt;span class="c1"&gt;// Same seed maintains consistency&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Step 3: Verify character matches&lt;/span&gt;
&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Character consistency maintained&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;baseResponse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;globals&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;base_character_response&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;variationResponse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="c1"&gt;// Compare object metadata to verify consistency&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Advanced: Error Handling
&lt;/h3&gt;

&lt;p&gt;Handle common API errors gracefully:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Test for rate limiting&lt;/span&gt;
&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Handle rate limiting&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;code&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;429&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;jsonData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Rate limited. Retry after: &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;jsonData&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;retryDelay&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Test for content policy violations&lt;/span&gt;
&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content policy handling&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;code&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;jsonData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;jsonData&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;details&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;reason&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;include&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;SAFETY&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Pricing and Access Tiers
&lt;/h2&gt;

&lt;p&gt;Understanding Nano Banana 2's pricing structure is essential for budgeting your AI image generation projects:&lt;/p&gt;

&lt;h3&gt;
  
  
  Free Tier
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Limitations&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Limited generations per day (exact number varies)&lt;/li&gt;
&lt;li&gt;Lower priority during peak times&lt;/li&gt;
&lt;li&gt;No access to advanced features&lt;/li&gt;
&lt;li&gt;Basic resolution options only&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for&lt;/strong&gt;: Learning, experimentation, low-volume use&lt;/p&gt;

&lt;h3&gt;
  
  
  Google AI Pro ($19.99/month)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Includes&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Substantial generation quota&lt;/li&gt;
&lt;li&gt;Priority processing&lt;/li&gt;
&lt;li&gt;Access to Nano Banana Pro (higher fidelity)&lt;/li&gt;
&lt;li&gt;Higher resolution options&lt;/li&gt;
&lt;li&gt;Commercial usage rights&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for&lt;/strong&gt;: Freelancers, small teams, production applications&lt;/p&gt;

&lt;h3&gt;
  
  
  Google AI Ultra ($49.99/month)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Includes&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generous or unlimited generations&lt;/li&gt;
&lt;li&gt;Highest priority processing&lt;/li&gt;
&lt;li&gt;Access to all model variants&lt;/li&gt;
&lt;li&gt;4K resolution&lt;/li&gt;
&lt;li&gt;API access with higher rate limits&lt;/li&gt;
&lt;li&gt;Enterprise support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for&lt;/strong&gt;: Teams, agencies, high-volume applications&lt;/p&gt;

&lt;h3&gt;
  
  
  API-Based Pricing
&lt;/h3&gt;

&lt;p&gt;For programmatic access beyond subscription tiers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pay-per-generation pricing available&lt;/li&gt;
&lt;li&gt;Volume discounts for enterprise&lt;/li&gt;
&lt;li&gt;Vertex AI offers custom pricing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pro Tip&lt;/strong&gt;: When building production applications, monitor your API usage carefully. Apidog's analytics features can help track generation counts and identify optimization opportunities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Use Cases
&lt;/h2&gt;

&lt;p&gt;Nano Banana 2's capabilities open up numerous practical applications:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. E-Commerce Product Visualization
&lt;/h3&gt;

&lt;p&gt;Generate product images from descriptions or CAD files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create multiple product variations instantly&lt;/li&gt;
&lt;li&gt;Generate lifestyle images showing products in use&lt;/li&gt;
&lt;li&gt;Produce seasonal and promotional imagery&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Marketing Content Creation
&lt;/h3&gt;

&lt;p&gt;Streamline marketing workflows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate ad creative variations at scale&lt;/li&gt;
&lt;li&gt;Create social media content from text descriptions&lt;/li&gt;
&lt;li&gt;Produce A/B testing variants quickly&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Game and Entertainment Assets
&lt;/h3&gt;

&lt;p&gt;Game developers can leverage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Character design iteration&lt;/li&gt;
&lt;li&gt;Environment concept art&lt;/li&gt;
&lt;li&gt;Asset variation generation&lt;/li&gt;
&lt;li&gt;Storyboard creation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Publishing and Journalism
&lt;/h3&gt;

&lt;p&gt;News organizations can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate illustrative images for articles&lt;/li&gt;
&lt;li&gt;Create data visualizations&lt;/li&gt;
&lt;li&gt;Produce historical reconstructions (with appropriate disclaimers)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Design Prototyping
&lt;/h3&gt;

&lt;p&gt;UX/UI designers benefit from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rapid wireframe visualization&lt;/li&gt;
&lt;li&gt;Mood board generation&lt;/li&gt;
&lt;li&gt;Layout concept exploration&lt;/li&gt;
&lt;li&gt;Icon and illustration creation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Google Nano Banana 2 represents a significant step forward in accessible AI image generation. With its combination of speed, quality, and integration options, it's become a compelling choice for developers and businesses looking to add image generation capabilities to their applications.&lt;/p&gt;

&lt;p&gt;Key takeaways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster generation with Pro-quality output makes real-time applications viable&lt;/li&gt;
&lt;li&gt;Improved text rendering opens up new use cases previously unsuitable for AI image generation&lt;/li&gt;
&lt;li&gt;Subject consistency enables multi-image workflows for storytelling and branding&lt;/li&gt;
&lt;li&gt;Multiple access channels from consumer apps to enterprise APIs suit various integration needs&lt;/li&gt;
&lt;li&gt;Content authentication addresses authenticity concerns for regulated industries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For developers integrating Nano Banana 2, using a tool like Apidog for API testing and management ensures reliable, maintainable integrations. The ability to create test suites, manage environment variables, and automate workflows is essential for production deployments.&lt;/p&gt;

&lt;p&gt;As AI image generation continues to evolve, staying current with model updates and best practices will help you build applications that leverage these capabilities effectively.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Use Google Nano Banana 2 API</title>
      <dc:creator>Preecha</dc:creator>
      <pubDate>Mon, 05 Oct 2026 14:04:18 +0000</pubDate>
      <link>https://dev.to/preecha/how-to-use-google-nano-banana-2-api-401k</link>
      <guid>https://dev.to/preecha/how-to-use-google-nano-banana-2-api-401k</guid>
      <description>&lt;p&gt;Building applications with AI image generation feels like magic—until you hit the wall of complex API documentation, authentication headaches, and debugging nightmares. You've seen what Nano Banana 2 can do: stunning images generated from text prompts, Pro-quality output at Flash speeds, and features like subject consistency that make multi-image workflows possible. But actually integrating it into your codebase? That's where most developers get stuck.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;You've probably tried wading through Google's documentation, piecing together authentication flows, and manually testing requests in a CLI. Maybe you've already burned through API quota debugging malformed requests or wondered why your images come back blurry every time. The truth is, integrating any new API, especially one as powerful as Nano Banana 2 requires more than just reading the docs. You need a workflow that lets you test quickly, iterate on prompts, and manage your API calls efficiently.&lt;/p&gt;

&lt;p&gt;In this guide, we'll walk through everything you need to integrate Nano Banana 2 into your applications, from setting up your Google Cloud project to writing production-ready code in Python and JavaScript. But here's what makes this guide different: we'll show you how to test and debug every step using Apidog, so you're not just copying code, you're building a workflow you can maintain and scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before you start, make sure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Google Cloud account (or sign up at cloud.google.com)&lt;/li&gt;
&lt;li&gt;Basic understanding of REST APIs&lt;/li&gt;
&lt;li&gt;Python 3.8+ or Node.js 18+ installed&lt;/li&gt;
&lt;li&gt;An API client like Apidog for testing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This guide assumes you're familiar with making HTTP requests and handling JSON data. If you're new to APIs, check out our API Testing Guide for fundamentals.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting Up Your Google Cloud Project
&lt;/h2&gt;

&lt;p&gt;To use the Nano Banana 2 API, you need a Google Cloud project with the Generative Language API enabled.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Create a New Project
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to the Google Cloud Console
k- Click "Select a project" → "New Project"&lt;/li&gt;
&lt;li&gt;Enter a project name (e.g., "nano-banana-image-gen")&lt;/li&gt;
&lt;li&gt;Click "Create"&lt;/li&gt;
&lt;li&gt;Wait for the project to be created&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1du03ixbwhobjcw2l1go.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1du03ixbwhobjcw2l1go.png" alt="Create Google Cloud Project" width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Configure API Access
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to "APIs &amp;amp; Services" → "Credentials"&lt;/li&gt;
&lt;li&gt;Click "Create Credentials" → "API Key"&lt;/li&gt;
&lt;li&gt;Copy your API key (you'll need it later)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5l95sp5eqifqvict5hh4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5l95sp5eqifqvict5hh4.png" alt="Create API key In google Cloud project" width="799" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pro Tip: It's best practice to restrict your API key in production. Limit it to the Generative Language API and your specific domains or IP addresses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Your API Key
&lt;/h2&gt;

&lt;p&gt;There are two ways to get API access:&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 1: Google Cloud Console (Recommended for Production)
&lt;/h3&gt;

&lt;p&gt;Follow the steps above—the API key you created is your access credential.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 2: Google AI Studio (Recommended for Development)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to Google AI Studio&lt;/li&gt;
&lt;li&gt;Sign in with your Google account&lt;/li&gt;
&lt;li&gt;Click "Get API Key" in the navigation&lt;/li&gt;
&lt;li&gt;Click "Create API Key" (or select an existing project)&lt;/li&gt;
&lt;li&gt;Copy your API key&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzone0tvmyan2cdafi63o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzone0tvmyan2cdafi63o.png" alt="Create API key in Google AI Studio" width="799" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The AI Studio key is great for development and testing. For production, use the Google Cloud Console key for better management and security.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your First API Request
&lt;/h2&gt;

&lt;p&gt;Let's make a simple image generation request to verify everything works.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using cURL
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp-image-generation:predict?key=YOUR_API_KEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "prompt": "A cute banana character wearing sunglasses, fun cartoon style",
    "number_of_images": 1
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Understanding the Response
&lt;/h3&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;"predictions"&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="nl"&gt;"image"&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;"mimeType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"image/png"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="&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;"generatedImageId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"img_abc123xyz"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"metadata"&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;"prompt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"A cute banana character wearing sunglasses, fun cartoon style"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"seed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;12345&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"finishReason"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"SUCCESS"&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="nl"&gt;"metadata"&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;"modelVersion"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gemini-3.1-flash-image-preview"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"processingTimeMs"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1250&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"contentAuthenticity"&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;"synthID"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"enabled"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"c2pa"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"enabled"&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;The &lt;code&gt;data&lt;/code&gt; field contains a base64-encoded PNG image. You'll need to decode it to save or display the image.&lt;/p&gt;

&lt;h2&gt;
  
  
  Python Integration
&lt;/h2&gt;

&lt;p&gt;Here's how to integrate Nano Banana 2 into your Python applications:&lt;/p&gt;

&lt;h3&gt;
  
  
  Installing the Client Library
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;google-generativeai
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Basic Image Generation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;google.generativeai&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;genai&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;base64&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;

&lt;span class="c1"&gt;# Configure the API with your key
&lt;/span&gt;&lt;span class="n"&gt;genai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;configure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GEMINI_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="c1"&gt;# Create the model
&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;genai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GenerativeModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gemini-3.1-flash-image-preview&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Generate an image
&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_images&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;A modern minimalist office with natural lighting, indoor plants, standing desk, 4k quality&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;number_of_images&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Save the image
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;generated_images&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;image_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;generated_images&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;image_bytes&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;output_image.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Image saved to output_image.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Advanced Image Generation with Parameters
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;google.generativeai&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;genai&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;PIL&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;io&lt;/span&gt;

&lt;span class="n"&gt;genai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;configure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GEMINI_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;genai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GenerativeModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gemini-3.1-flash-image-preview&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Generate with advanced parameters
&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_images&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;A futuristic cityscape at night with neon lights, flying cars, cyberpunk aesthetic&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;number_of_images&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;aspect_ratio&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;16:9&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;negative_prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;blurry, low quality, distorted, ugly&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;safety_filter_level&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;block_medium_and_above&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Process the response
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;idx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;generated_image&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;enumerate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;generated_images&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# Convert to PIL Image
&lt;/span&gt;    &lt;span class="n"&gt;image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;io&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;BytesIO&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;generated_image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;image_bytes&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

    &lt;span class="c1"&gt;# Save with custom name
&lt;/span&gt;    &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;generated_image_&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;idx&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Access metadata
&lt;/span&gt;    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Image &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;idx&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;generated_image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;finish_reason&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Seed: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;generated_image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;seed&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Batch Image Generation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;google.generativeai&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;genai&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;

&lt;span class="n"&gt;genai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;configure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GEMINI_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;genai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GenerativeModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gemini-3.1-flash-image-preview&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Generate multiple images at once
&lt;/span&gt;&lt;span class="n"&gt;prompts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;A red sports car on a mountain road&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;A cozy coffee shop interior&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;A minimalist bedroom design&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;A tropical beach sunset&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# Generate all images
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;idx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;enumerate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompts&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_images&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;number_of_images&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;aspect_ratio&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;16:9&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;generated_images&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;image_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;generated_images&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;image_bytes&lt;/span&gt;
        &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;image_&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;idx&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Generated: image_&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;idx&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Character Consistency Example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;google.generativeai&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;genai&lt;/span&gt;

&lt;span class="n"&gt;genai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;configure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GEMINI_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;genai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GenerativeModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gemini-3.1-flash-image-preview&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Base character description
&lt;/span&gt;&lt;span class="n"&gt;base_character&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;A friendly cartoon robot with round body, blue eyes, antenna on head, white and light blue color scheme&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;# Generate base character (note the seed for consistency)
&lt;/span&gt;&lt;span class="n"&gt;response1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_images&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;base_character&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;, front view, standing pose&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;number_of_images&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;seed&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;  &lt;span class="c1"&gt;# Important: note this seed
&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;base_seed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;generated_images&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;seed&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Base character seed: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;base_seed&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Generate variations using the same seed
&lt;/span&gt;&lt;span class="n"&gt;poses&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sitting pose&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;waving hand&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;holding a ball&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;walking&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;pose&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;poses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_images&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;base_character&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;pose&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, same character as seed &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;base_seed&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;number_of_images&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;seed&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;base_seed&lt;/span&gt;  &lt;span class="c1"&gt;# Same seed maintains consistency
&lt;/span&gt;    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;generated_images&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;filename&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;robot_&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;pose&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;_&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;generated_images&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;image_bytes&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Generated: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  JavaScript/Node.js Integration
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Installing the Client Library
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @google/generative-ai
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Basic Image Generation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;GoogleGenerativeAI&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@google/generative-ai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;path&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Initialize with API key&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;genAI&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;GoogleGenerativeAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;GEMINI_API_KEY&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;generateImage&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Get the model&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;genAI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getGenerativeModel&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gemini-3.1-flash-image-preview&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="c1"&gt;// Generate image&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generateImages&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;A beautiful sunset over the ocean with palm trees silhouette&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;numberOfImages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="c1"&gt;// Process the response&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;generatedImages&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;generatedImages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;imageData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;generatedImages&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;imageBytes&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// Save to file&lt;/span&gt;
    &lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;writeFileSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sunset.png&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Buffer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;imageData&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;base64&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Image saved to sunset.png&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// Log metadata&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Seed:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;generatedImages&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;seed&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Finish Reason:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;generatedImages&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;finishReason&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;generateImage&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Handling Base64 Responses
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;GoogleGenerativeAI&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@google/generative-ai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;genAI&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;GoogleGenerativeAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;GEMINI_API_KEY&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;generateAndProcessImage&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;genAI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getGenerativeModel&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gemini-3.1-flash-image-preview&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generateImages&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Professional headshot of a person in business attire, studio lighting&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;numberOfImages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;aspectRatio&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1:1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;resolution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1024x1024&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;generatedImage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;generatedImages&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

  &lt;span class="c1"&gt;// Decode base64&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;imageBuffer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Buffer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;generatedImage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;imageBytes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;base64&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="c1"&gt;// Save with metadata in filename&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;filename&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`portrait_&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;generatedImage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;seed&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.png`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;writeFileSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;imageBuffer&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;seed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;generatedImage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;seed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;finishReason&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;generatedImage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;finishReason&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;generateAndProcessImage&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;info&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Generated:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;info&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Error:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Express.js REST API Example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;GoogleGenerativeAI&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@google/generative-ai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;multer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;multer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;genAI&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;GoogleGenerativeAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;GEMINI_API_KEY&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

&lt;span class="c1"&gt;// Image generation endpoint&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/generate&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;aspect_ratio&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;negative_prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;number_of_images&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;genAI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getGenerativeModel&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gemini-2.0-flash-exp-image-generation&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generateImages&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="nx"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;numberOfImages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;number_of_images&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;aspectRatio&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;aspect_ratio&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1:1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;negativePrompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;negative_prompt&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="c1"&gt;// Convert images to base64 for response&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;images&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;generatedImages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;img&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;idx&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;idx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;seed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;img&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;seed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;finishReason&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;img&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;finishReason&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;img&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;imageBytes&lt;/span&gt; &lt;span class="c1"&gt;// Base64 encoded&lt;/span&gt;
    &lt;span class="p"&gt;}));&lt;/span&gt;

    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;success&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;images&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;modelVersion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;modelVersion&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;processingTimeMs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;processingTimeMs&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Generation error:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;success&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Batch generation endpoint&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/generate/batch&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;prompts&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;genAI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getGenerativeModel&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gemini-3.1-flash-image-preview&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;

    &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;prompt&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;prompts&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generateImages&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="nx"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;numberOfImages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
      &lt;span class="p"&gt;});&lt;/span&gt;

      &lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="nx"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;seed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;generatedImages&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]?.&lt;/span&gt;&lt;span class="nx"&gt;seed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;success&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;!!&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;generatedImages&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
      &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;success&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;results&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;success&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Server running on port 3000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Advanced Parameters
&lt;/h2&gt;

&lt;p&gt;Nano Banana 2 supports various parameters to fine-tune your image generation:&lt;/p&gt;

&lt;h3&gt;
  
  
  Parameter Reference
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;prompt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Text description of desired image&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"A cat sitting on a mat"&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;number_of_images&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;integer&lt;/td&gt;
&lt;td&gt;Number of images to generate (1-4)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;aspect_ratio&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Image aspect ratio&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"16:9", "1:1", "4:3"&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;resolution&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Output resolution&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"1024x1024", "2048x2048"&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;negative_prompt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Elements to exclude&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"blurry, watermark"&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;seed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;integer&lt;/td&gt;
&lt;td&gt;Random seed for reproducibility&lt;/td&gt;
&lt;td&gt;&lt;code&gt;12345&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;safety_filter_level&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Content filtering&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"block_medium_and_above"&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Resolution Options
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Available resolutions
&lt;/span&gt;&lt;span class="n"&gt;resolutions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;512x512&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="c1"&gt;# Thumbnail, social media
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;768x768&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="c1"&gt;# Small web images
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1024x1024&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# Standard square
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1024x768&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c1"&gt;# 4:3 landscape
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1280x720&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c1"&gt;# HD ready
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1920x1080&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# Full HD
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2048x2048&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# High quality
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;3840x2160&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;   &lt;span class="c1"&gt;# 4K
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# Using specific resolution
&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_images&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Professional product photography of a watch&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;resolution&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2048x2048&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Aspect Ratios
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;aspect_ratios&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1:1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="c1"&gt;# Square (Instagram posts)
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;4:3&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="c1"&gt;# Standard photo
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;16:9&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c1"&gt;# Landscape (YouTube, web)
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;9:16&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c1"&gt;# Portrait (Stories, TikTok)
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;21:9&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c1"&gt;# Ultrawide
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;3:4&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="c1"&gt;# Portrait standard
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2:3&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;     &lt;span class="c1"&gt;# Portrait photo
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# Using specific aspect ratio
&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_images&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Modern office interior design&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;aspect_ratio&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;16:9&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Handling Responses
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Parsing the Response Structure
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
python
import google.generativeai as genai

genai.configure(api_key=os.environ.get("GEMINI_API_KEY"))
model = genai.GenerativeModel("gemini-3.1-flash-image-preview")

response = model.generate_images(
    prompt="A fantasy castle on a mountain",
    number_of_images=2
)

# Access predictions (generated images)
for idx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
    </item>
  </channel>
</rss>
