Skip to content

Deployment

ZeptoClaw can be deployed anywhere a Linux binary can run. Choose the method that fits your infrastructure.

The fastest way to deploy ZeptoClaw is using the automated setup script:

Terminal window
curl -fsSL https://zeptoclaw.com/setup.sh | bash

This interactive wizard will:

  • Download the latest ZeptoClaw binary
  • Guide you through configuring your LLM provider (Anthropic or OpenAI)
  • Set up your messaging channel (Telegram, Slack, Discord, or Webhook)
  • Install and start a systemd service

Docker deployment:

Terminal window
curl -fsSL https://zeptoclaw.com/setup.sh | bash -s -- --docker

Uninstall:

Terminal window
curl -fsSL https://zeptoclaw.com/setup.sh | bash -s -- --uninstall

The simplest production deployment:

FROM ghcr.io/qhkm/zeptoclaw:latest
COPY config.json /root/.zeptoclaw/config.json
EXPOSE 8080
CMD ["zeptoclaw", "gateway"]
Terminal window
docker build -t my-agent .
docker run -d --name zeptoclaw \
-e ZEPTOCLAW_PROVIDERS_ANTHROPIC_API_KEY=sk-ant-... \
-e ZEPTOCLAW_CHANNELS_TELEGRAM_BOT_TOKEN=123456:ABC... \
my-agent

For multi-service setups:

version: '3.8'
services:
zeptoclaw:
image: ghcr.io/qhkm/zeptoclaw:latest
restart: unless-stopped
environment:
- ZEPTOCLAW_PROVIDERS_ANTHROPIC_API_KEY=${ANTHROPIC_KEY}
- ZEPTOCLAW_CHANNELS_TELEGRAM_BOT_TOKEN=${TELEGRAM_TOKEN}
volumes:
- zeptoclaw-data:/root/.zeptoclaw
healthcheck:
test: ["CMD", "zeptoclaw", "config", "check"]
interval: 30s
retries: 3
volumes:
zeptoclaw-data:

Deploy to Fly.io with a single command:

fly.toml
app = "my-zeptoclaw"
primary_region = "sin"
[build]
image = "ghcr.io/qhkm/zeptoclaw:latest"
[env]
RUST_LOG = "info"
[[services]]
internal_port = 8080
protocol = "tcp"
[[services.ports]]
port = 443
handlers = ["tls", "http"]
Terminal window
fly launch
fly secrets set ZEPTOCLAW_PROVIDERS_ANTHROPIC_API_KEY=sk-ant-...
fly secrets set ZEPTOCLAW_CHANNELS_TELEGRAM_BOT_TOKEN=123456:ABC...
fly deploy

Deploy via Railway CLI:

Terminal window
railway init
railway up
# Set secrets
railway variables set ZEPTOCLAW_PROVIDERS_ANTHROPIC_API_KEY=sk-ant-...
railway variables set ZEPTOCLAW_CHANNELS_TELEGRAM_BOT_TOKEN=123456:ABC...

Use the Render dashboard or render.yaml:

services:
- type: worker
name: zeptoclaw
runtime: docker
dockerfilePath: ./Dockerfile
envVars:
- key: ZEPTOCLAW_PROVIDERS_ANTHROPIC_API_KEY
sync: false
- key: ZEPTOCLAW_CHANNELS_TELEGRAM_BOT_TOKEN
sync: false

For direct deployment on a Linux server:

/etc/systemd/system/zeptoclaw.service
[Unit]
Description=ZeptoClaw AI Agent
After=network-online.target
[Service]
Type=simple
User=zeptoclaw
ExecStart=/usr/local/bin/zeptoclaw gateway
Restart=always
RestartSec=5
Environment=RUST_LOG=info
EnvironmentFile=/etc/zeptoclaw/env
[Install]
WantedBy=multi-user.target
Terminal window
sudo systemctl enable zeptoclaw
sudo systemctl start zeptoclaw

ZeptoClaw’s config check command can be used as a health check:

Terminal window
zeptoclaw config check

Returns exit code 0 if configuration is valid.

Important directories to persist across restarts:

PathContents
~/.zeptoclaw/config.jsonConfiguration
~/.zeptoclaw/memory/Long-term memory
~/.zeptoclaw/sessions/Conversation history
~/.zeptoclaw/skills/Custom skills
~/.zeptoclaw/plugins/Custom plugins

Mount ~/.zeptoclaw as a volume in Docker deployments.

ZeptoClaw is very lightweight:

ResourceRequirement
CPUAny modern CPU (ARM64 or x86_64)
RAM~6MB RSS at idle
Disk~4MB binary + data
NetworkOutbound HTTPS to LLM provider APIs