🏗️ 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 |
|---|---|---|
| Memory | sqlite, markdown | "memory": {"backend": "sqlite"} |
| Sandbox | auto, landlock, firejail, docker, bubblewrap, none | "sandbox": {"backend": "landlock"} |
| Runtime | native, docker, wasm | "runtime": {"kind": "docker"} |
| Tunnel | none, cloudflare, tailscale, ngrok | "tunnel": {"kind": "cloudflare"} |
| Provider | 22+ 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.