- Jh123x: Blog, Code, Fun and everything in between./
- My Blog Posts and Stories/
- My experience trying out Picoclaw/
My experience trying out Picoclaw
Table of Contents
Introduction #
After the news of Singapore’s Foreign Minister Vivian Balakrishnan using AI to help with his work, I decided to take a closer look at using AI as a work partner.
I wasn’t always this way.
Previous Impressions #
When Openclaw 1st came out, this was what I thought about it.
This thing looks like a security nightmare. On top of letting it loose in your environment, there are also a lot of surfaces where it can be influenced. This includes skills, websites that it visits, the conversations that it has.
It feels similar to letting a stranger have access to your network. Openclaw can make network queries, access all the tools you have given to it.
This has always deterred me from trying out Openclaw (and adjacent) products.
Changes #
So what changed? Within this period of time, there were many changes that made me reconsider this.
- Job became AI related
- More is known about the cost and benefits of such tools
These 2 considerations have shifted my thoughts on tools such as Openclaw.
Software of choice #
I am looking for programs which are similar to Openclaw but cater to my own needs.
Constraints #
I want to host multiple versions of the agent so I can test different versions. This will mean that each agent should not take up too much CPU/Memory.
- Low CPU/Memory footprint
- Support messaging on Telegram and WhatsApp (Minimally)
- Support Skills
- Support MCP servers for extensions
- Supports a web GUI for configuration
Result #
Based on that requirement, I settled on Picoclaw.
Picoclaw is a lightweight Go alternative to Openclaw. It works similarly to Openclaw but with a smaller footprint (And fewer features)
- It claims to use 10-20MB of ram and takes less than 1 second to boot on a 0.8GHz CPU.
- It supports multiple channels, including WhatsApp and Telegram
- It has a launcher image that supports a web GUI for configuration
- Has skills and MCP support.
As a start, I will be using Picoclaw and see how it goes.
Security Measures #
Due to my lingering concerns of Picoclaw, this is what I decided to do to reduce the blast radius.
Network Isolation #
This service is separated into different VLANs compared to the users and the other services
The firewall config is something like the following
| Src \ Dst | Vlan 1 (Agents) | Vlan 2 (Other services) | Vlan 3 (Users) |
|---|---|---|---|
| Vlan 1 (Agents) | Allowed | Not allowed | Not allowed |
| Vlan 2 (Other Services) | Not allowed | Allowed | Not Allowed |
| Vlan 3 (Users) | Allowed | Allowed | Allowed |
Allowed in this case means that users from that VLAN can request into a different VLAN.
Not allowed VLANs can still reply to traffic but not initiate them.VM Isolation #
On top of the network isolation, I also have multiple layers of defense on a VM level
The instances are within a Proxmox VM with Docker. Each agent will be created in a separate docker container.
For any other tools that I want to deploy, it will be deployed within the same docker network, and will be accessible to all the agents (if required).
Model of Choice #
I decided to go with DeepSeek due to the cheap pricing (As I am a cheapo).
Prior to deciding, I went online to take a look at different reviews on various models as well as the price of each of the models. In terms of price to performance, it is the most value for money and I decided to go with it.
Other considerations:
- Hosting a local model: This will require a large upfront cost of the infrastructure and can run the model for a long time. However, I decided against this as performance will be worse and using an online provider will have better SLA
- Claude: This model is good but costs too much for me sadly.
- ChatGPT: Also price.
| Models | Provider | Input | Cached Input | Output |
|---|---|---|---|---|
| ChatGPT 5.5 | OpenAI | $5 | $0.50 | $30 |
| Claude Opus 4.8 | Anthropic | $6.25/$10 | $0.50 | $25 |
| Gemini 3.1 Pro Preview | $2/$4 | $0.20 | $0.40 | |
| DeepSeek v4 Pro | DeepSeek | $0.435 | $0.003625 | $0.87 |
Note: Prices are in USD
Here are some of the links for the price
The pricing format is a little bit different based on the model that you choose. For more information please refer to their official pricing website.
Setting up Picoclaw #
With the above security measures in place, I feel more comfortable with running Picoclaw on my own infrastructure.
Docker Compose #
To setup the image easily, I made use of the following Docker image.
services:
picoclaw-launcher:
image: "docker.io/sipeed/picoclaw:launcher"
restart: unless-stopped
environment:
- PICOCLAW_GATEWAY_HOST=0.0.0.0
# Uncomment this if you want to map the ports.
# ports:
# - "18800:18800"
# - "18790:18790"
healthcheck:
test:
- CMD
- wget
- "--spider"
- "http://localhost:18800"
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
volumes:
- "pico_data:/root/.picoclaw"
volumes:
pico_data:
This is a modified version of the main docker image from the Picoclaw Github. This image sets up the gateway and health check signal so that we know when it goes down.
This docker-compose.yaml pairs very well with Coolify, which I use to deploy the agents.
If you want to map the port to the host, please uncomment the ports section.
Customizing your model #
To customize your model, Picoclaw does not have out of the box support for editing the different markdown files.
Here is a list
| File | Description |
|---|---|
| SOUL.md | The Purpose and Identity of the Agent |
| AGENT.md | Operational behaviour and capabilities |
| USER.md | Profile of the user using this agent |
| HEARTBEAT.md | Built-in scheduler to allow periodic execution of Agent tasks |
| memory/MEMORY.md | Stores the index and policy for memory for the Agent |
To fully customize it, you will have to update these files within the docker container before turning on the gateway.
Setting up with the Web GUI #
After starting the docker compose, navigate to the ip of the instance at port 18000 or the domain generated by Coolify.
Setting a Dashboard Password #

On your first visit, you will have to set a password to login to the page. After setting your initial password, you will be redirected to the login page

After logging in, you will see something similar to the below.

On the main page, we can chat with the model that we configured, similar to the ChatGPT interface.
Before we can start using this, we need to configure a few things
Configuring the model #

Click on the models tab and select the provider that you want to configure

Using ChatGPT as an example, once we select the configuration, we just need to fill in the details such as API KEY and base url.
For different providers, the configurations are very similar.

After setting it up, you have to set a model as default by clicking the star icon.
This sets the models that will be used by default.
Configuring the Channel #
After configuring the model, we will have to also configure a channel. In this case, a channel refers to a way you can communicate with the model.

These shows the channels that Picoclaw supports out of the box.
Telegram is the easiest to set up.

Select the Telegram tab to start the configuration.
In order to get a token from the Bot, you can refer to the Telegram documentation here
To get your ID, send a message to @username_to_id_bot.
It is a bot that echos your ID back to you.
Copy the ID and paste it in Allow From section.
Activate the Channel and Save it.
Starting the Gateway #
After configuring from above, the last thing that we need is to start the gateway

If you configured all the steps correctly, this Start Gateway button will light up for you to start the server.
After you start the server, you can communicate with it through your preferred channel.
Issues #
After setting my Picoclaw up, I immediately ran into some issues. I expected features which are supported out of the box to be well supported. However, there are still some issues with them during set up.
WhatsApp Integration Issues #
After finishing all of the set up and running the agent, I realized I was unable to get the WhatsApp integration working correctly.
As a result, I am stuck on Telegram, which works for now.
I guess not all the integrations work out of the box through the API, but it will do for now.
Scheduled jobs #
When I asked Picoclaw to schedule a job, the actual job schedule does not run. I have tried to do it with 2 different methods.
- Picoclaw Cron
- HEARTBEAT.md file
Using both methods, I am still unable to get it working. I will spend more time on this and will follow up in a different blog post on how to fix this.
Conclusion #
So far it feels good to have a companion to help do research and bounce ideas off of. I will run this set up for a while to see how it benefits me.
Currently, I think this only benefit users who:
- Mainly communicate through
Telegram. - Do not need scheduling systems.
- Willing to tinker.
Some tinkering is definitely required to get it to working the way that you wanted. No harm trying if you are interested.
In the next blog post, I will be sharing how I got the WhatsApp integration set up and share the software and set up files that I used to get this working.