Multi-Agent · Vtable Architecture · Sandbox

Konfigurasi NullClaw
untuk Multi-Agent Workflow di Linux Server

Kekuatan sejati NullClaw ada di fleksibilitas konfigurasinya. Swap provider, sandbox, dan memory backend hanya lewat config — tanpa ubah kode. Binary 678 KB, kemampuan enterprise.

± 24 menit baca SufaNet
Konfigurasi NullClaw Multi-Agent Workflow Linux Server

🏗️ Arsitektur Konfigurasi Berbasis Vtable

Perbedaan utama NullClaw dari AI agent lain adalah arsitektur vtable-first — setiap komponen sistem didefinisikan sebagai interface yang bisa di-swap dengan implementasi lain hanya melalui konfigurasi JSON. Kamu tidak perlu modifikasi kode, tidak perlu recompile. Cukup ubah config dan restart.

Ini memberikan fleksibilitas luar biasa: gunakan SQLite untuk memory di development, switch ke markdown files di device yang tidak punya cukup I/O random access, atau jalankan dalam Docker untuk isolasi maksimal — semua hanya dengan ganti satu baris di config.

Subsistem Opsi Implementasi Cara Switch
Memorysqlite, markdown"memory": {"backend": "sqlite"}
Sandboxauto, landlock, firejail, docker, bubblewrap, none"sandbox": {"backend": "landlock"}
Runtimenative, docker, wasm"runtime": {"kind": "docker"}
Tunnelnone, cloudflare, tailscale, ngrok"tunnel": {"kind": "cloudflare"}
Provider22+ provider"default_provider": "anthropic"

📁 Struktur Konfigurasi NullClaw

# Lokasi file config
~/.nullclaw/config.json

# Backup sebelum modifikasi besar
cp ~/.nullclaw/config.json ~/.nullclaw/config.json.bak.$(date +%Y%m%d)

# Validasi config
nullclaw config validate

# Reload config tanpa restart
nullclaw config reload

Skeleton config.json NullClaw lengkap:

{
  "default_provider": "openrouter",
  "default_temperature": 0.7,
  "models": { ... },       // Providers & model config
  "agents": { ... },       // Agent definitions (support multi)
  "gateway": { ... },      // HTTP gateway
  "channels": { ... },     // Messaging channels
  "autonomy": { ... },     // Level & rate limits
  "security": { ... },     // Sandbox & encryption
  "memory": { ... },       // Memory backend GLOBAL
  "runtime": { ... },      // Docker/WASM/native
  "tunnel": { ... },       // Expose ke internet
  "hardware": { ... },     // Peripheral support
  "logging": { ... },      // Log config
  "audit": { ... }         // Audit log
}

🤖 Konfigurasi Provider dan Model

{
  "default_provider": "openrouter",
  "default_temperature": 0.7,
  "models": {
    "providers": {
      "openrouter": {
        "api_key": "sk-or-...",
        "base_url": "https://openrouter.ai/api/v1",
        "timeout_ms": 30000,
        "max_retries": 3
      },
      "anthropic": {
        "api_key": "sk-ant-...",
        "timeout_ms": 60000
      },
      "ollama": {
        "base_url": "http://localhost:11434",
        "timeout_ms": 120000
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "anthropic/claude-sonnet-4",
        "fallback": ["openai/gpt-4o-mini", "ollama/llama3.2:3b"],
        "cheap": "anthropic/claude-haiku-3-5",
        "code": "anthropic/claude-sonnet-4"
      }
    }
  }
}

🤝 Setup Multi-Agent NullClaw

NullClaw mendukung definisi beberapa agent dengan konfigurasi berbeda dalam satu file config. Setiap agent bisa memiliki model, channel, workspace, dan level autonomy yang independen:

{
  "agents": {
    "defaults": {
      "model": { "primary": "anthropic/claude-haiku-3-5" },
      "heartbeat": { "every": "1h" }
    },
    "instances": {
      "dev_assistant": {
        "name": "Dev Assistant",
        "description": "Agent untuk coding dan debugging",
        "model": { "primary": "anthropic/claude-sonnet-4" },
        "channels": ["telegram.main"],
        "workspace": "/home/user/projects",
        "autonomy": { "level": "supervised" },
        "tools": ["read_file", "write_file", "run_command", "web_search"],
        "system_prompt": "Kamu adalah senior developer. Bantu debugging dan review code."
      },
      "ops_agent": {
        "name": "Ops Agent",
        "description": "Agent untuk monitoring dan operasional server",
        "model": { "primary": "anthropic/claude-sonnet-4", "cheap": "claude-haiku-3-5" },
        "channels": ["telegram.ops"],
        "workspace": "/opt/monitoring",
        "autonomy": {
          "level": "semi",
          "max_actions_per_hour": 100
        },
        "heartbeat": {
          "every": "15m",
          "prompt": "Cek status semua service dan laporkan jika ada anomali."
        }
      },
      "research_agent": {
        "name": "Research Agent",
        "description": "Agent untuk riset dan analisis",
        "model": { "primary": "openai/gpt-4o" },
        "channels": ["discord.research"],
        "autonomy": { "level": "none" },
        "tools": ["web_search", "read_file", "write_file"]
      }
    }
  }
}

🧠 Konfigurasi Memory Backend

NullClaw mendukung dua backend memory: SQLite (hybrid vector + FTS5) dan Markdown files (human-readable, git-versionable):

{
  "memory": {
    "backend": "sqlite",            // sqlite | markdown
    "sqlite": {
      "path": "~/.nullclaw/memory/main.db",
      "vector_dims": 1536,
      "fts_enabled": true,
      "max_memories": 5000,
      "vacuum_interval": "7d"      // Auto vacuum SQLite
    },
    "markdown": {
      "path": "~/Documents/nullclaw-memory",
      "file_per_topic": true
    },
    "retrieval": {
      "top_k": 10,
      "min_score": 0.7,
      "use_reranker": false
    },
    "embedding": {
      "provider": "openrouter",
      "model": "openai/text-embedding-3-small",
      "batch_size": 100
    }
  }
}

💡 Kapan Gunakan Masing-masing Backend?

  • SQLite: Default untuk hampir semua kasus. Performa semantic search terbaik.
  • Markdown: Jika kamu ingin review memory agent secara manual, atau store di Git repo untuk versioning.

🔒 Konfigurasi Sandbox: Landlock, Firejail, Docker

NullClaw memiliki dukungan sandbox paling komprehensif di antara semua AI agent yang dibahas. Ini sangat penting karena agent yang bisa "run_command" berpotensi berbahaya tanpa sandbox:

{
  "security": {
    "sandbox": {
      "backend": "auto",           // Auto-detect: landlock → firejail → docker → none

      // Konfigurasi Landlock (Linux 5.13+, paling efisien)
      "landlock": {
        "allow_read": [
          "/home/user/projects",
          "/tmp",
          "/usr/lib",
          "/usr/share"
        ],
        "allow_write": [
          "/home/user/projects/output",
          "/tmp"
        ],
        "allow_exec": [
          "/usr/bin/python3",
          "/usr/bin/git",
          "/usr/bin/node"
        ],
        "deny_network": false       // true untuk block semua network call
      },

      // Konfigurasi Firejail (Linux, lebih mudah setup)
      "firejail": {
        "profile": "nullclaw",
        "net": "none",              // Isolasi network lengkap
        "private": true
      },

      // Konfigurasi Bubblewrap (Flatpak-style)
      "bubblewrap": {
        "bind_paths": ["/home/user/projects"],
        "ro_bind_paths": ["/usr", "/lib"],
        "unshare_all": true
      }
    },
    "secrets": {
      "encrypt": true,
      "backend": "file"
    }
  }
}

📡 Konfigurasi Channel Multi-Account

{
  "channels": {
    "telegram": {
      "accounts": {
        "main": {
          "bot_token": "TOKEN_BOT_UTAMA",
          "allow_from": ["personal_username"],
          "reply_in_private": true
        },
        "ops": {
          "bot_token": "TOKEN_BOT_OPS",
          "allow_from": ["ops_admin", "sre_team"],
          "allow_groups": ["@ops_team_group"]
        }
      }
    },
    "discord": {
      "accounts": {
        "research": {
          "bot_token": "Bot DISCORD_TOKEN",
          "guild_id": "GUILD_ID",
          "allowed_channel_ids": ["CHANNEL_ID"]
        }
      }
    },
    "irc": {
      "accounts": {
        "libera": {
          "host": "irc.libera.chat",
          "port": 6697,
          "nick": "nullclaw_bot",
          "channel": "#myproject",
          "tls": true,
          "allow_from": ["trusted_nick"]
        }
      }
    }
  }
}

🔌 Konfigurasi Hardware Peripherals

NullClaw adalah satu-satunya AI agent dalam daftar ini yang mendukung hardware peripheral secara built-in — sebuah fitur unik berkat kemampuan low-level Zig:

{
  "hardware": {
    "enabled": true,
    "peripherals": {
      "arduino": {
        "enabled": true,
        "port": "/dev/ttyUSB0",
        "baud": 9600,
        "protocol": "serial"
      },
      "gpio": {
        // Raspberry Pi GPIO
        "enabled": true,
        "chip": "/dev/gpiochip0",
        "pins": {
          "led": { "pin": 17, "direction": "out" },
          "button": { "pin": 27, "direction": "in" }
        }
      },
      "i2c": {
        "enabled": true,
        "bus": "/dev/i2c-1",
        "devices": {
          "temperature": { "address": "0x48" }
        }
      }
    }
  }
}

📝 Audit Logging

Untuk compliance dan debugging, NullClaw mendukung audit log yang mencatat setiap aksi agent secara detail:

{
  "audit": {
    "enabled": true,
    "log_path": "~/.nullclaw/audit/audit.jsonl",
    "log_level": "info",             // info | verbose | debug
    "include_tool_inputs": true,
    "include_tool_outputs": false,   // false untuk privasi
    "include_model_calls": true,
    "rotate": {
      "max_size_mb": 100,
      "max_age_days": 90,
      "compress": true
    }
  },
  "logging": {
    "level": "info",
    "format": "json",
    "output": "both",               // both = file + stderr
    "file": {
      "path": "~/.nullclaw/logs/nullclaw.log",
      "max_size_mb": 50,
      "max_backups": 7
    }
  }
}
# Monitor log realtime
journalctl --user -u nullclaw -f

# Lihat audit log
tail -f ~/.nullclaw/audit/audit.jsonl | jq '.'

# Statistik penggunaan
nullclaw stats
nullclaw stats --period 7d

🐋 Runtime Docker untuk Isolasi Maksimal

{
  "runtime": {
    "kind": "docker",               // native | docker | wasm
    "docker": {
      "image": "alpine:3.20",
      "pull_policy": "if_not_present",
      "network": "bridge",
      "memory_limit_mb": 256,
      "cpu_quota": 0.5,
      "read_only_rootfs": false,
      "volumes": [
        "/home/user/projects:/workspace:rw",
        "/tmp:/tmp:rw"
      ],
      "env": {
        "LANG": "en_US.UTF-8"
      },
      "security_opt": ["no-new-privileges:true"],
      "cap_drop": ["ALL"],
      "cap_add": ["NET_BIND_SERVICE"]
    }
  }
}

🚀 VPS untuk Multi-Agent NullClaw

Konfigurasi multi-agent NullClaw dengan beberapa instance agent tetap sangat hemat resource — bahkan dengan 3 agent aktif sekaligus, total RAM tidak lebih dari 20-30 MB. Ini berarti kamu bisa menjalankan seluruh workflow otomatisasi dari sebuah VPS entry-level.

VPS Indonesia SufaNet adalah pilihan sempurna — dengan paket terjangkau, kamu bisa deploy multi-agent NullClaw bersama Nginx, database, dan aplikasi lain dalam satu server tanpa perlu upgrade RAM.

🦴 NullClaw Multi-Agent + VPS SufaNet

3 agent aktif. <30 MB RAM total. Jalan mulus di VPS entry-level SufaNet.

❓ FAQ Konfigurasi NullClaw

Bagaimana cara test apakah sandbox Landlock aktif?

Jalankan nullclaw doctor — output-nya akan menunjukkan sandbox backend yang terdeteksi dan aktif. Untuk Landlock, kernel Linux minimal 5.13 diperlukan. Cek versi kernel dengan uname -r.

Berapa banyak agent yang bisa dijalankan paralel?

NullClaw didesain untuk menjalankan banyak agent secara concurrent dengan overhead minimal. Di VPS 512 MB RAM, kamu bisa comfortably jalankan 5-10 agent aktif. RAM per agent NullClaw sangat kecil karena Zig tidak memiliki runtime overhead.

Apakah memory bisa di-share antar agent?

Ya, kamu bisa pointing beberapa agent ke database SQLite yang sama di config memory. Namun perlu hati-hati dengan race condition jika banyak agent menulis memory secara bersamaan. Untuk isolation penuh, tiap agent sebaiknya punya database memory sendiri.

🎯 Kesimpulan

NullClaw membuktikan bahwa binary kecil tidak berarti kemampuan yang terbatas. Dengan arsitektur vtable yang memungkinkan swap komponen via konfigurasi, dukungan sandbox enterprise-grade (Landlock, Firejail, Docker), dan kemampuan hardware peripheral yang unik, NullClaw adalah platform AI agent yang sangat fleksibel.

Pasangkan dengan VPS Indonesia SufaNet untuk deployment yang efisien dan ekonomis.

🦴 Zero Overhead. Maximum Flexibility.

NullClaw multi-agent production-ready di VPS SufaNet terjangkau.