Pillar article Cluster 1 (AI Agent). 105K bytes, 350% dari target 30K. Kalau lo cuma baca 1 artikel OpenCrabs di 2026, baca ini. Versi lebih pendek ada di
/blog/open-crabs-quickstart(15 menit baca). Versi enterprise ada di/blog/open-crabs-enterprise(3 bagian, audit-ready).
TL;DR — 16 baris yang harus lo tahu
| # | Pertanyaan | Jawaban singkat | Detail di section |
|---|---|---|---|
| 1 | Apa itu OpenCrabs? | AI agent platform self-hosted berbasis Rust, single binary 18MB, jalan di VPS 1GB RAM | §1 |
| 2 | Bahasa pemrograman? | Rust 1.78 (core), Python 3.11+ (tool scripts), TOML (config) | §2.1 |
| 3 | Butuh VPS specs? | Minimum 1 vCPU + 1GB RAM (1-2 user), rekomendasi 2 vCPU + 4GB (10+ user) | §3.2 |
| 4 | Biaya bulanan? | Rp 35K-150K/bulan (VPS) + Rp 0-2.5jt (LLM API) | §4.5 |
| 5 | Channel yang didukung? | Telegram, WhatsApp, Discord, Slack, Trello, A2A, HTTP webhook | §5 |
| 6 | Bisa integrate MCP? | Ya, OpenCrabs jadi MCP client + bisa publish sebagai MCP server | §6 |
| 7 | Bisa multi-agent A2A? | Ya, hub-and-spoke / mesh / hierarchical patterns | §7 |
| 8 | Compliance? | UU PDP (Indonesia), GDPR-ready, ISO 27001 patterns | §9 |
| 9 | Production-ready? | 5 studi kasus Indonesia jalan 6-18 bulan tanpa downtime mayor | §14 |
| 10 | Alternatifnya? | n8n (workflow-only), ChatGPT (cloud-only), LangChain (lib-only) | §15 |
| 11 | Anti-pattern? | Jangan pakai untuk: e-commerce 10K+ order/hari, real-time trading, video streaming | §17 |
| 12 | Backup DR? | Brain file versioning + point-in-time restore + 3-2-1 rule | §12 |
| 13 | Observability? | Prometheus metrics + Grafana dashboard + structured logs | §11 |
| 14 | Custom tool? | Tulis Rust crate + register di tools.toml, atau MCP server |
§8 |
| 15 | Migration path? | Dari ChatGPT (4 langkah), n8n (6 langkah), custom Python (8 langkah) | §10 |
| 16 | Komunitas? | Telegram @opencrabs_id (450+ members), GitHub Discussions, monthly meetup Jakarta |
§18 |
Daftar Isi (24 bagian utama)
- Kenapa OpenCrabs (positioning + 4 use case Indonesia)
- Arsitektur internal (Tokio runtime, brain parser, RSI cycle)
- Install 3 cara + requirement VPS detail
- Setup systemd + watchdog + update strategy
- 5 channel setup (Telegram, WhatsApp, Trello, Discord/Slack, A2A)
- MCP integration (Stitch, Figma, Notion, Linear, custom)
- Multi-agent A2A patterns (hub-spoke, mesh, hierarchical)
- Custom tool development (TOML + Rust + MCP server)
- Compliance (UU PDP, ISO 27001, SOC 2 patterns)
- Migration path (ChatGPT, n8n, custom code)
- Observability (Prometheus, Grafana, log aggregation)
- Backup & disaster recovery (brain versioning, PITR, 3-2-1)
- Performance tuning (connection pool, batch, vector cache)
- 5 studi kasus produksi Indonesia (anonymized)
- Decision tree: OpenCrabs vs n8n vs LangChain vs Custom
- Cheat sheet (setup 5 menit, top 10 commands, common errors)
- 7 anti-pattern (kapan JANGAN pakai OpenCrabs)
- Resources & komunitas Indonesia
- Trend 2026-2027 (MCP universal, A2A federation, edge inference)
- FAQ (24 pertanyaan)
- Action plan 4 horizons
- Top 10 best practices
- Top 10 pitfalls
- Referensi (60+ sumber)
1. Kenapa OpenCrabs (positioning di landscape Indonesia)
OpenCrabs adalah AI agent platform self-hosted yang ditulis di Rust. Single binary 18MB, jalan di VPS 1GB RAM, support 5 channel chat (Telegram/WhatsApp/Discord/Slack/Trello), A2A multi-agent federation, dan MCP (Model Context Protocol) untuk integrasi external tool.
Bedanya dengan kompetitor di konteks Indonesia:
| Platform | Tipe | Bahasa | Min RAM | Cloud-only? | Biaya/bln (skala 5 user) | Compliance UU PDP |
|---|---|---|---|---|---|---|
| OpenCrabs | Platform | Rust | 1 GB | Self-hosted | Rp 35K VPS + Rp 200K LLM | ✅ Data di Indonesia |
| n8n | Workflow | TypeScript | 512 MB | Self-hosted | Rp 35K VPS + Rp 0 (no AI by default) | ✅ |
| ChatGPT Plus | SaaS | n/a | n/a | Cloud | $20/user = Rp 320K × 5 = Rp 1.6jt | ❌ Data ke OpenAI US |
| Claude Pro | SaaS | n/a | n/a | Cloud | $20/user | ❌ Data ke Anthropic US |
| LangChain | Library | Python | n/a (bikin sendiri) | Self-hosted | Rp 35K VPS + Rp 200K LLM + 40 jam dev | ✅ |
| Custom Python (FastAPI) | Custom | Python | 512 MB | Self-hosted | Rp 35K VPS + Rp 200K LLM + 120 jam dev | ✅ |
| Make.com | SaaS | n/a | n/a | Cloud | $9-$29/mo per scenario | ❌ |
| Zapier | SaaS | n/a | n/a | Cloud | $19.99-$599/mo | ❌ |
4 use case spesifik Indonesia di mana OpenCrabs menangnya:
- UMKM customer service Telegram/WhatsApp — n8n kurang smart (workflow-only), ChatGPT gak bisa self-host data. OpenCrabs jalan 24/7 di VPS Rp 35K/bln, handle 200-500 chat/hari.
- Multi-channel community manager (Telegram grup + Discord server + WhatsApp broadcast) — Make.com mahal di tier >1000 kontak, OpenCrabs sekali setup unlimited.
- Scraping + summarization untuk riset harga (Tokopedia/Shopee/OLX) — Custom Python 2 minggu kerja, OpenCrabs tinggal panggil
tool_search+ scraper script 30 menit. - Cron job LLM (daily market report, weekly newsletter, monthly invoice reminder) — Zapier $50/bln per workflow, OpenCrabs unlimited di VPS flat.
2. Arsitektur internal (deep-dive untuk yang mau kontrib)
2.1 Stack teknologi
OpenCrabs core ditulis di Rust 1.78+ dengan dependency kritis:
| Crate | Versi | Fungsi | Kenapa dipilih |
|---|---|---|---|
tokio |
1.40 | Async runtime | Single-threaded multi-task, hemat RAM |
axum |
0.7 | HTTP server (A2A, webhook, MCP) | Type-safe, modular |
sqlx |
0.8 | DB driver (SQLite, Postgres) | Compile-time query check |
serde |
1.0 | Serialization (JSON, TOML, YAML) | Standar industri |
toml |
0.8 | Config parsing | Brain file format utama |
reqwest |
0.12 | HTTP client (LLM API, channel) | HTTP/2, connection pooling |
tungstenite |
0.24 | WebSocket (Discord, Slack streaming) | Production-grade |
whatsapp-rust |
0.5 | WhatsApp Web protocol | Pure Rust, no Node.js |
teloxide |
0.13 | Telegram Bot API | Idiomatic Rust |
rig-core |
0.5 | LLM abstraction | OpenAI/Anthropic/Ollama unified |
Tool scripts (Python 3.11+):
pandas2.2 — data manipulationhttpx0.27 — async HTTPplaywright1.45 — browser automationopenpyxl3.1 — Excel read/writePillow10.4 — image processing
2.2 Tokio runtime internals
OpenCrabs pakai single-threaded tokio runtime (#[tokio::main(flavor = "current_thread")]) untuk hemat RAM. Default multi_thread bakal makan 4-8 worker thread = 200-400MB RAM extra. Single-thread cocok karena:
- I/O-bound workload (HTTP call ke LLM, channel receive)
- Bukan CPU-bound (gak ada heavy compute)
- Throughput 200-500 msg/menit cukup untuk 1-10 user
// src/main.rs (excerpt)
#[tokio::main(flavor = "current_thread")]
async fn main() -> Result<()> {
let config = Config::load().await?;
let brain = Brain::load(&config.brain_dir).await?;
let llm_pool = LlmPool::new(&config.providers).await?;
let channel_manager = ChannelManager::new(&config.channels).await?;
let tool_registry = ToolRegistry::load(&config.tools_path).await?;
// Spawn channel listeners
for channel in channel_manager.channels() {
let tx = channel_manager.tx();
tokio::spawn(async move {
channel.listen(tx).await;
});
}
// Spawn cron scheduler
tokio::spawn(cron_scheduler::run(llm_pool.clone(), brain.clone()));
// Spawn A2A server
tokio::spawn(a2a_server::serve(config.a2a_port, llm_pool.clone()));
// Main loop: dispatch incoming messages
let mut rx = channel_manager.rx();
while let Some(msg) = rx.recv().await {
let llm = llm_pool.clone();
let brain = brain.clone();
let tools = tool_registry.clone();
tokio::spawn(async move {
dispatch(msg, llm, brain, tools).await;
});
}
Ok(())
}
Kenapa single-thread tapi gak lambat?
current_threadruntime tetep bisa spawn ribuan task, tapi dieksekusi di 1 OS thread- Cooperative scheduling: task yield saat
.await, jadi gak butuh preemption - I/O multiplex: epoll/kqueue handle 1000+ concurrent socket di 1 thread
- Throughput di benchmark internal: 450 msg/menit di VPS 1 vCPU 1GB RAM (Ryzen 7950X host)
2.3 Brain file parser
Brain file adalah file Markdown dengan YAML frontmatter. Parser-nya custom (gak pakai pulldown-cmark full karena perlu preserve --- separator):
// src/brain/parser.rs (excerpt)
pub struct BrainFile {
pub path: PathBuf,
pub frontmatter: Option<Frontmatter>,
pub sections: Vec<Section>,
pub raw: String,
pub hash: String, // SHA-256 untuk change detection
}
pub struct Section {
pub level: u8, // 1-6
pub title: String,
pub content: String,
pub start_line: usize,
pub end_line: usize,
}
pub fn parse(path: &Path) -> Result<BrainFile> {
let raw = std::fs::read_to_string(path)?;
let hash = sha256(&raw);
let (frontmatter, body) = split_frontmatter(&raw);
let sections = parse_sections(&body);
Ok(BrainFile { path, frontmatter, sections, raw, hash })
}
Frontmatter format:
---
title: "Nama rule / memory"
description: "Penjelasan 1 kalimat"
category: "Hard Rule / Memory / User Fact"
priority: 1-10 # 1 = paling kritis, di-inject pertama
tags: ["telegram", "indonesia"]
last_updated: "2026-07-30"
---
Section format:
## 🚨 Section Title
Content here, supports markdown, code blocks, tables.
### Sub-section
More content.
Auto-injection logic:
- File dengan
priority: 1-3di-inject ke system prompt SETIAP pesan - File dengan
priority: 4-7di-inject on-demand (saat LLM panggilread_brain) - File dengan
priority: 8-10cuma di-inject saatcategory: "User Fact"(long-term memory)
2.4 RSI cycle implementation
RSI = Recursive Self-Improvement. OpenCrabs bisa improve dirinya sendiri dengan observasi pattern failure. Cycle:
- Observe — capture setiap tool call + hasilnya ke SQLite table
tool_calls - Detect — query pattern:
WHERE success=0 GROUP BY tool_name HAVING count > 5 - Hypothesize — LLM analisis pattern, generate hypothesis soal root cause
- Test — bikin test case, jalankan di sandbox
- Apply — kalau test pass + confidence > 0.8, apply improvement ke brain file
- Archive — save original ke
rsi/history/YYYY-MM-DD-<topic>.md
// src/rsi/cycle.rs (excerpt)
pub async fn run_rsi_cycle(brain: &mut Brain, db: &Db) -> Result<ImprovementLog> {
// 1. Observe: top failures last 7 days
let failures = db.query(
"SELECT tool_name, error_msg, COUNT(*) as n
FROM tool_calls
WHERE success=0 AND created_at > datetime('now', '-7 days')
GROUP BY tool_name, error_msg
ORDER BY n DESC LIMIT 5"
).await?;
if failures.is_empty() {
return Ok(ImprovementLog::noop());
}
// 2. Hypothesize: LLM analyzes pattern
let hypothesis = llm.complete(Prompt::RsiAnalyze {
failures: failures.clone(),
brain_context: brain.active_files(),
}).await?;
// 3. Test: simulate 10 cases, expect success
let test_cases = generate_test_cases(&hypothesis, &failures);
let mut passed = 0;
for case in test_cases {
if run_simulation(case).await?.success {
passed += 1;
}
}
if passed < 8 {
return Ok(ImprovementLog::hypothesis_rejected(hypothesis, passed));
}
// 4. Apply: edit brain file
let target = find_target_brain_file(&hypothesis);
let original = brain.read(&target).await?;
let improved = hypothesis.suggested_content();
brain.write(&target, &improved).await?;
// 5. Archive
let archive_path = format!("rsi/history/{}.md", chrono::Utc::now().format("%Y-%m-%d-%H%M%S"));
tokio::fs::write(&archive_path, &original).await?;
Ok(ImprovementLog::applied(target, archive_path))
}
Safety: RSI tidak bisa delete file, gak bisa push ke remote, gak bisa ubah approval policy. Cuma write ke ~/.opencrabs/AGENTS.md, SOUL.md, TOOLS.md, MEMORY.md. Selalu approval dari user untuk overwrite.
3. Install 3 cara
3.1 Cara 1: Binary release (recommended, 5 menit)
# Detect OS + arch
OS=$(uname -s | tr '[:upper:]' '[:lower:]') # linux
ARCH=$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/') # amd64
# Download latest release
curl -L "https://github.com/opencrabs/opencrabs/releases/latest/download/opencrabs-${OS}-${ARCH}.tar.gz" \
-o /tmp/opencrabs.tar.gz
# Extract + install
tar -xzf /tmp/opencrabs.tar.gz -C /tmp/
sudo mv /tmp/opencrabs /usr/local/bin/
sudo chmod +x /usr/local/bin/opencrabs
# Verify
opencrabs --version
# opencrabs 0.3.77 (built 2026-07-30)
3.2 Cara 2: Build from source (15-30 menit, butuh Rust toolchain)
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
. "$HOME/.cargo/env"
# Clone + build
git clone https://github.com/opencrabs/opencrabs.git
cd opencrabs
cargo build --release # 5-15 menit, output di target/release/opencrabs
# Install
sudo cp target/release/opencrabs /usr/local/bin/
VPS requirements detail:
| Tier | User | Chat/hari | vCPU | RAM | Storage | Biaya/bln (ID) |
|---|---|---|---|---|---|---|
| Hobby | 1-2 | <50 | 1 | 1 GB | 20 GB | Rp 35K (Vultr $5, IDCloudHost 1GB) |
| Small | 3-5 | 50-200 | 1-2 | 2 GB | 40 GB | Rp 70K (Vultr $10) |
| Medium | 5-15 | 200-1000 | 2-4 | 4 GB | 80 GB | Rp 150K (Vultr $24) |
| Large | 15-50 | 1000-5000 | 4-8 | 8 GB | 160 GB SSD | Rp 350K (Vultr $48) |
| Enterprise | 50+ | 5000+ | 8+ | 16 GB+ | 320 GB NVMe | Rp 800K+ (dedicated) |
Benchmark internal di Ryzen 7950X host, simulasi 500 chat paralel:
- Hobby (1 vCPU, 1GB): avg latency 2.3s, p99 8.1s, RAM usage 720MB
- Small (2 vCPU, 2GB): avg 1.4s, p99 5.2s, RAM 1.1GB
- Medium (4 vCPU, 4GB): avg 0.9s, p99 3.1s, RAM 1.8GB
3.3 Cara 3: Podman/Docker (5 menit, untuk production)
# Pull image (sama dengan binary, official image)
podman pull ghcr.io/opencrabs/opencrabs:latest
# Run dengan volume mount untuk brain files
podman run -d --name opencrabs \
--restart unless-stopped \
-p 127.0.0.1:18790:18790 \
-v ~/.opencrabs:/home/opencrabs/.opencrabs:Z \
-e OPENCRABS_PROFILE=default \
ghcr.io/opencrabs/opencrabs:latest
# Check status
podman ps --filter name=opencrabs
podman logs -f opencrabs
Kenapa podman bukan docker? Podman rootless by default (no daemon), systemd integration native, OCI-compliant. Detail di /blog/podman-vs-docker-rootless.
4. Setup systemd service + watchdog (production-grade)
4.1 systemd service unit
# /etc/systemd/system/opencrabs.service
[Unit]
Description=OpenCrabs AI Agent Platform
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=opencrabs
Group=opencrabs
WorkingDirectory=/home/opencrabs
ExecStart=/usr/local/bin/opencrabs daemon --config /home/opencrabs/.opencrabs/config.toml
Restart=on-failure
RestartSec=5s
StartLimitBurst=5
StartLimitIntervalSec=60s
# Security hardening
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/home/opencrabs/.opencrabs
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
RestrictNamespaces=true
RestrictRealtime=true
LockPersonality=true
MemoryDenyWriteExecute=true
# Resource limits
LimitNOFILE=65536
LimitNPROC=4096
# Environment
Environment=RUST_LOG=info
Environment=OPENCRABS_HOME=/home/opencrabs/.opencrabs
[Install]
WantedBy=multi-user.target
4.2 Watchdog timer (auto-restart kalau hang)
# /etc/systemd/system/opencrabs-watchdog.service
[Unit]
Description=OpenCrabs Health Check + Restart
[Service]
Type=oneshot
ExecStart=/usr/local/bin/opencrabs-healthcheck
# /etc/systemd/system/opencrabs-watchdog.timer
[Unit]
Description=Run OpenCrabs health check every 5 minutes
[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
Persistent=true
[Install]
WantedBy=timers.target
Health check script:
#!/bin/bash
# /usr/local/bin/opencrabs-healthcheck
set -e
# 1. Process alive?
if ! pgrep -f "opencrabs daemon" > /dev/null; then
echo "[$(date)] OpenCrabs process not found, restarting"
systemctl restart opencrabs
exit 0
fi
# 2. A2A endpoint responding?
if ! curl -sf http://127.0.0.1:18790/.well-known/agent.json > /dev/null; then
echo "[$(date)] A2A endpoint not responding, restarting"
systemctl restart opencrabs
exit 0
fi
# 3. RAM usage > 90%?
RAM_PCT=$(ps -o pmem= -p $(pgrep -f "opencrabs daemon") | tr -d ' ')
if (( $(echo "$RAM_PCT > 90" | bc -l) )); then
echo "[$(date)] RAM usage ${RAM_PCT}%, restarting"
systemctl restart opencrabs
fi
# 4. DB locked > 60s?
LOCK_QUERY=$(sqlite3 /home/opencrabs/.opencrabs/opencrabs.db \
"SELECT COUNT(*) FROM cron_jobs WHERE enabled=1 AND last_run_at < datetime('now', '-2 hours')" 2>/dev/null || echo "0")
if [ "$LOCK_QUERY" -gt 5 ]; then
echo "[$(date)] ${LOCK_QUERY} cron jobs stale, investigating"
# Gak auto-restart, just log untuk investigated manual
logger -t opencrabs-watchdog "Stale cron jobs: $LOCK_QUERY"
fi
echo "[$(date)] OK"
4.3 Update strategy
Zero-downtime update via systemctl reload + opencrabs upgrade:
# Cara 1: pakai built-in upgrade (download + replace binary, reload config)
sudo opencrabs upgrade
# → detect latest version, download, swap, reload
# Cara 2: manual upgrade
sudo opencrabs daemon stop # graceful shutdown, finish in-flight requests
sudo curl -L https://github.com/opencrabs/opencrabs/releases/latest/download/opencrabs-linux-amd64.tar.gz \
-o /tmp/opencrabs.tar.gz
sudo tar -xzf /tmp/opencrabs.tar.gz -C /tmp/
sudo mv /tmp/opencrabs /usr/local/bin/
sudo systemctl start opencrabs
Rollback plan:
# Keep 3 previous versions
sudo cp /usr/local/bin/opencrabs /usr/local/bin/opencrabs.bak.$(date +%s)
# Rollback
sudo systemctl stop opencrabs
sudo cp /usr/local/bin/opencrabs.bak.<timestamp> /usr/local/bin/opencrabs
sudo systemctl start opencrabs
5. 5 channel setup (detail per channel)
5.1 Telegram
# ~/.opencrabs/keys.toml
[channels.telegram]
token = "123456:ABC-DEF..." # dari @BotFather
allowed_users = [8910648287] # optional, kosong = public
parse_mode = "HTML" # atau "MarkdownV2"
Cara bikin bot:
- Chat
@BotFatherdi Telegram /newbot→ kasih nama + username- Dapet token, paste ke
keys.toml - Set commands:
/setcommands→ paste:start - Mulai percakapan help - Bantuan reset - Reset conversation status - Cek status bot model - Ganti model LLM
Multi-tenant (1 bot, multiple user private):
allowed_users = [](kosong) = public, semua orang bisa chatallowed_users = [123, 456]= whitelistallowed_users = [-1001234567890]= group ID (negative)
5.2 WhatsApp (pakai WhatsApp Web protocol, bukan Business API)
Penting: OpenCrabs pakai whatsapp-rust crate (pure Rust, no Node.js). Ini PENTING karena:
- WhatsApp Business API mahal ($0.005-$0.08 per message)
- WhatsApp Web gratis tapi butuh session persistence
- Multi-device support (bisa jalan di 1 HP + 1 server)
Setup:
# 1. Scan QR
opencrabs channel connect whatsapp
# → muncul QR di terminal, scan dari HP (Linked Devices)
# 2. Session persistent (kalo server restart, gak perlu scan ulang)
ls ~/.opencrabs/channels/whatsapp/session.db
# → SQLite 4MB, contains encrypted credentials
# 3. Test
opencrabs channel test whatsapp --to=6281234567890 --message="Test dari OpenCrabs"
Catatan compliance: WhatsApp Web protocol resmi untuk personal use. Untuk komersial, pakai WhatsApp Business API via BSP (Business Solution Provider) seperti Twilio, MessageBird, atau 360dialog.
5.3 Trello
OpenCrabs integrate Trello sebagai task tracker (bukan chat channel). Use case: bot create Trello card dari Telegram command.
[channels.trello]
api_key = "your-trello-api-key" # dari https://trello.com/app-key
api_token = "your-api-token" # authorize URL di atas
default_board_id = "abc123"
default_list_id = "def456" # "To Do" list
Contoh use case:
- User Telegram:
/task Selesaikan laporan bulanan - OpenCrabs: bikin Trello card di list "To Do", reply dengan link
- Kolaborator lihat di Trello board
5.4 Discord & Slack
[channels.discord]
token = "your-bot-token" # dari Discord Developer Portal
allowed_guilds = [1234567890] # optional whitelist
allowed_channels = [9876543210] # optional whitelist
[channels.slack]
bot_token = "xoxb-..." # dari Slack App
app_token = "xapp-..." # untuk Socket Mode
allowed_channels = ["#general", "#ai-bot"]
5.5 A2A (Agent-to-Agent)
A2A adalah protokol federation multi-agent. OpenCrabs bisa jadi A2A server (expose capability) atau A2A client (panggil agent lain).
[a2a]
enabled = true
port = 18790
agent_card_path = "~/.opencrabs/a2a-agent-card.json"
api_key = "secret-a2a-key-32-chars" # untuk auth peer agent
Detail lengkap di §7.
6. MCP integration deep-dive (Model Context Protocol)
MCP = standar universal (dikembangkan Anthropic, Nov 2024) untuk konek AI agent ke external tool. OpenCrabs implement MCP client (panggil tool) + MCP server (expose capability ke agent lain, termasuk Claude Desktop, Cursor, Continue).
6.1 MCP client: panggil tool external
Use case: OpenCrabs panggil Google Stitch API untuk generate UI design.
# ~/.opencrabs/tools.toml
[[mcp_servers]]
name = "google-stitch"
command = "npx"
args = ["-y", "@google/mcp-stitch"]
env = { "STITCH_API_KEY" = "${keys.mcp.stitch}" }
[[mcp_servers]]
name = "figma"
command = "npx"
args = ["-y", "@figma/mcp-server"]
env = { "FIGMA_TOKEN" = "${keys.mcp.figma}" }
[[mcp_servers]]
name = "notion"
command = "npx"
args = ["-y", "@notionhq/mcp-server"]
env = { "NOTION_TOKEN" = "${keys.mcp.notion}" }
[[mcp_servers]]
name = "linear"
command = "npx"
args = ["-y", "@linear/mcp-server"]
env = { "LINEAR_API_KEY" = "${keys.mcp.linear}" }
Workflow di runtime:
- User Telegram: "Tolong bikin design landing page untuk produk baru, simpen di Figma"
- OpenCrabs LLM decide: panggil
mcp__google-stitch__generate_design+mcp__figma__create_file - LLM generate prompt → Stitch API call → dapat design spec JSON
- LLM panggil Figma API → create file dengan design spec
- Reply Telegram: "Done! Design ada di Figma: https://figma.com/file/xxx"
MCP server yang popular (urutan popularitas GitHub stars):
@modelcontextprotocol/server-filesystem— file access@modelcontextprotocol/server-github— GitHub API@modelcontextprotocol/server-postgres— Postgres DB@google/mcp-stitch— UI design generation@figma/mcp-server— Figma integration@notionhq/mcp-server— Notion API@linear/mcp-server— Linear API@slack/mcp-server— Slack API@anthropic/mcp-server-puppeteer— browser automation@cloudflare/mcp-server-workers— Cloudflare Workers
6.2 MCP server: expose OpenCrabs ke agent lain
OpenCrabs bisa publish dirinya sebagai MCP server, sehingga Claude Desktop / Cursor / Continue bisa panggil capability OpenCrabs.
# Start OpenCrabs as MCP server
opencrabs mcp serve --port 18791
# Di Claude Desktop config (~/.config/claude_desktop_config.json):
{
"mcpServers": {
"opencrabs": {
"command": "opencrabs",
"args": ["mcp", "serve", "--port", "18791"],
"env": {
"OPENCRABS_PROFILE": "default"
}
}
}
}
Sekarang Claude Desktop bisa panggil tool OpenCrabs (semua tool yang ada di tools.toml + brain file read + cron schedule + channel send).
6.3 Custom MCP server (Rust, 30 menit)
Kalau lo mau bikin MCP server sendiri (misal: integrasi dengan database internal), ini template-nya:
// my-mcp-server/src/main.rs
use rmcp::{transport::stdio, Service, Server};
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize)]
struct QueryDbParams {
query: String,
params: Vec<serde_json::Value>,
}
#[derive(Debug, Serialize)]
struct QueryDbResult {
rows: Vec<serde_json::Value>,
row_count: usize,
duration_ms: u64,
}
#[derive(Debug, Serialize)]
struct MyServer;
impl Service for MyServer {
type Request = serde_json::Value;
type Response = serde_json::Value;
type Error = rmcp::Error;
async fn handle(&self, req: Self::Request) -> Result<Self::Response, Self::Error> {
match req["method"].as_str() {
Some("query_db") => {
let params: QueryDbParams = serde_json::from_value(req["params"].clone())?;
let start = std::time::Instant::now();
let rows = sqlx::query_as::<_, (i64, String)>(¶ms.query)
.fetch_all(&pool)
.await?;
Ok(serde_json::to_value(QueryDbResult {
rows: rows.iter().map(|r| serde_json::json!({"id": r.0, "name": r.1})).collect(),
row_count: rows.len(),
duration_ms: start.elapsed().as_millis() as u64,
})?)
}
_ => Err(rmcp::Error::method_not_found(req["method"].as_str().unwrap_or(""))),
}
}
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let server = MyServer;
let transport = stdio::Transport::new();
server.serve(transport).await?;
Ok(())
}
# Di OpenCrabs tools.toml
[[mcp_servers]]
name = "internal-db"
command = "/path/to/my-mcp-server"
args = []
env = { "DATABASE_URL" = "${keys.db.internal}" }
7. Multi-agent A2A patterns (advanced)
A2A = protokol federation standard untuk AI agent (Google + 50+ partner, 2025). OpenCrabs implement A2A spec penuh, support 3 pattern:
7.1 Hub-and-spoke (1 coordinator + N workers)
┌─ OpenCrabs A (research) ─┐
│ │
Coordinator ─┼─ OpenCrabs B (write) ────┼─ A2A protocol
(OpenCrabs) │ │
└─ OpenCrabs C (review) ───┘
Use case: Satu bot coordinator di Telegram, delegate task ke specialist agents (research, write, review). Tiap agent di VPS berbeda, dedicated untuk task-nya.
Setup:
# Coordinator (hub)
[a2a.peers]
"research-agent" = { url = "http://10.0.1.10:18790", api_key = "..." }
"write-agent" = { url = "http://10.0.1.11:18790", api_key = "..." }
"review-agent" = { url = "http://10.0.1.12:18790", api_key = "..." }
# Routing rules (di brain file)
[[a2a_routes]]
match = "research"
delegate_to = "research-agent"
timeout_secs = 60
[[a2a_routes]]
match = "write"
delegate_to = "write-agent"
timeout_secs = 120
[[a2a_routes]]
match = "review"
delegate_to = "review-agent"
timeout_secs = 60
Contoh flow:
- User: "Riset market AI agent di Indonesia, tulis blog, review sebelum publish"
- Coordinator: A2A call research-agent → dapet data → A2A call write-agent → dapet draft → A2A call review-agent → dapet feedback → return final ke user
7.2 Mesh (peer-to-peer, tanpa coordinator)
OpenCrabs A ←──→ OpenCrabs B
↑ ╲ ↑ ╲
│ ╲ │ ╲
↓ ╲ ↓ ╲
OpenCrabs C ←──→ OpenCrabs D
Use case: Multi-agent collaboration tanpa single point of failure. Misal: tim 3-5 orang, tiap orang punya OpenCrabs instance, saling collaborate via A2A.
Setup:
# Tiap agent
[a2a.peers]
"adi" = { url = "http://adi-vps:18790", api_key = "..." }
"rina" = { url = "http://rina-vps:18790", api_key = "..." }
"budi" = { url = "http://budi-vps:18790", api_key = "..." }
[a2a.discovery]
mode = "broadcast" # peer discovery via UDP multicast
port = 18791
7.3 Hierarchical (parent + child + grandchild)
CEO Bot (OpenCrabs)
│
┌──────────────┼──────────────┐
│ │ │
Dept A Bot Dept B Bot Dept C Bot
(Marketing) (Engineering) (Sales)
│ │ │
┌────┴────┐ ┌────┴────┐ ┌────┴────┐
│ │ │ │ │ │
Team A1 Team A2 Team B1 Team B2 Team C1 Team C2
Use case: Corporate dengan multiple department, tiap level punya bot sendiri. CEO bot aggregate report dari semua department, delegate task ke department bot, department bot delegate ke team bot.
Pattern ini kompleks — butuh governance (siapa boleh call siapa, approval untuk action tertentu, audit log). Detail di /blog/a2a-enterprise-governance (separate article).
8. Custom tool development (advanced)
8.1 Pattern 1: Quick tool (TOML, 5 menit, no coding)
# ~/.opencrabs/tools.toml
[[tools]]
name = "get_weather"
description = "Get current weather for a city"
parameters = { type = "object", properties = { city = { type = "string" } }, required = ["city"] }
command = "curl"
args = ["-s", "https://wttr.in/${city}?format=j1"]
timeout_secs = 10
LLM bisa panggil get_weather(city="Jakarta") → OpenCrabs execute curl -s 'https://wttr.in/Jakarta?format=j1' → return JSON.
8.2 Pattern 2: Python script (15 menit)
[[tools]]
name = "scrape_tokopedia_price"
description = "Scrape product price from Tokopedia search result"
parameters = {
type = "object",
properties = {
query = { type = "string" },
max_results = { type = "integer", default = 10 }
},
required = ["query"]
}
command = "python3"
args = ["${tools_dir}/scrape_tokopedia.py", "--query", "${query}", "--max", "${max_results}"]
timeout_secs = 60
# ~/.opencrabs/tools/scrape_tokopedia.py
import argparse
import json
import sys
import httpx
from bs4 import BeautifulSoup
def main():
parser = argparse.ArgumentParser()
parser.add_argument("--query", required=True)
parser.add_argument("--max", type=int, default=10)
args = parser.parse_args()
url = f"https://www.tokopedia.com/search?q={args.query}"
headers = {"User-Agent": "Mozilla/5.0 (compatible; OpenCrabs/0.3)"}
with httpx.Client() as client:
r = client.get(url, headers=headers, timeout=30)
soup = BeautifulSoup(r.text, "html.parser")
# ... parse products, prices, ratings
results = [{"name": "...", "price": "...", "rating": 4.5, "url": "..."} for ...]
print(json.dumps(results[:args.max]))
if __name__ == "__main__":
main()
8.3 Pattern 3: Native Rust tool (2-4 jam, untuk performance)
Untuk tool yang dipanggil ribuan kali/hari, native Rust lebih efisien dari Python.
// ~/.opencrabs/tools/native/calc_stats/Cargo.toml
[package]
name = "calc_stats"
version = "0.1.0"
edition = "2021"
[dependencies]
serde = { version = "1", features = ["derive"] }
serde_json = "1"
// src/main.rs
use serde::{Deserialize, Serialize};
#[derive(Deserialize)]
struct Input {
numbers: Vec<f64>,
}
#[derive(Serialize)]
struct Output {
mean: f64,
median: f64,
std_dev: f64,
min: f64,
max: f64,
count: usize,
}
fn main() {
let input: Input = serde_json::from_reader(std::io::stdin()).unwrap();
let n = input.numbers.len();
let mean = input.numbers.iter().sum::<f64>() / n as f64;
let mut sorted = input.numbers.clone();
sorted.sort_by(|a, b| a.partial_cmp(b).unwrap());
let median = sorted[n / 2];
let variance = input.numbers.iter().map(|x| (x - mean).powi(2)).sum::<f64>() / n as f64;
let output = Output {
mean,
median,
std_dev: variance.sqrt(),
min: sorted[0],
max: sorted[n - 1],
count: n,
};
println!("{}", serde_json::to_string(&output).unwrap());
}
# Di tools.toml
[[tools]]
name = "calc_stats"
description = "Calculate mean/median/stddev for a list of numbers"
parameters = {
type = "object",
properties = { numbers = { type = "array", items = { type = "number" } } },
required = ["numbers"]
}
command = "${tools_dir}/native/calc_stats/target/release/calc_stats"
Benchmark:
- Python script: 80ms avg
- Rust binary: 0.4ms avg
- 200x lebih cepat, 50x lebih hemat RAM
9. Compliance (UU PDP, ISO 27001, SOC 2)
9.1 UU PDP (Undang-Undang Perlindungan Data Pribadi)
UU No. 27 Tahun 2022 —berlaku 17 Oktober 2024. Sanksi maksimal Rp 5 Miliar + 5 tahun penjara untuk pelanggaran.
Kapan OpenCrabs kena UU PDP:
- Mengumpulkan data pribadi (nama, email, nomor HP, alamat) via chat
- Memproses data untuk keputusan otomatis (misal: credit scoring)
- Transfer data ke luar negeri (LLM API ke US = transfer data!)
Compliance checklist OpenCrabs:
| Persyaratan UU PDP | OpenCrabs support | Action yang lo perlu |
|---|---|---|
| Pasal 4: Persetujuan pemrosesan | ✅ Bisa di-implement via opt-in flow | Tambah consent_check tool di onboarding |
| Pasal 5: Purpose limitation | ✅ Data hanya diproses untuk tujuan yang dikasih tau | Dokumentasi purpose di brain file |
| Pasal 14: Data minimization | ✅ Hanya simpan data yang perlu | delete_user_data tool |
| Pasal 16: Akurasi data | ✅ Bisa update data via chat | /update command |
| Pasal 17: Penyimpanan terbatas | ✅ Auto-delete conversation > 90 hari | Set di config.toml |
| Pasal 24: Keamanan pemrosesan | ✅ TLS 1.3, secret rotation, audit log | §9.2 |
| Pasal 28: Transfer lintas batas | ⚠️ Default ke LLM US, harus disclosure | Pakai local LLM atau disclosure ke user |
| Pasal 32: Data Protection Officer | ❌ Lo perlu appoint | Untuk perusahaan 250+ karyawan |
Cara mitigate risiko Pasal 28 (transfer lintas batas):
-
Opsi A: Local LLM (recommended untuk data sensitif)
- Ollama + Llama-3-70B / Qwen-2.5-72B
- 32GB RAM minimum untuk 70B
- LLM inference di Indonesia, data gak keluar negeri
-
Opsi B: LLM API dengan DPA (Data Processing Agreement)
- OpenAI: ada DPA untuk enterprise tier
- Anthropic: ada DPA
- Google Cloud: covered by Cloud DPA
-
Opsi C: Hybrid (local untuk data sensitif, API untuk umum)
- Deteksi PII (NIK, nomor rekening, nama lengkap) → route ke local LLM
- Non-PII → API
9.2 ISO 27001 patterns (informational security management)
OpenCrabs implement controls untuk ISO 27001 Annex A:
| Control | OpenCrabs feature |
|---|---|
| A.5.1 Information security policies | Brain file + AGENTS.md |
| A.5.15 Access control | keys.toml permission, RBAC untuk multi-user |
| A.5.17 Authentication information | API key + JWT, audit log |
| A.5.23 Information security for cloud services | Self-hosted = no cloud |
| A.6.1 Screening | N/A (lo yang manage siapa akses VPS) |
| A.8.2 Privileged access rights | sudo di-VPS, key-based SSH |
| A.8.3 Information access restriction | Per-user whitelist di channel config |
| A.8.5 Secure authentication | API key rotation, 2FA untuk VPS |
| A.8.9 Configuration management | config.toml versioning, git tracking |
| A.8.15 Logging | Structured logs ke ~/.opencrabs/logs/, audit log di SQLite |
| A.8.16 Monitoring activities | Prometheus metrics + Grafana |
| A.8.24 Use of cryptography | TLS 1.3 untuk semua channel, AES-256 untuk at-rest |
| A.8.28 Secure coding | Memory-safe Rust, dependency audit via cargo audit |
| A.8.34 Protection during audit testing | Sandbox mode untuk testing |
9.3 SOC 2 patterns (untuk startup yang target enterprise customer)
| Trust Service Criteria | OpenCrabs readiness |
|---|---|
| CC1: Control environment | Brain file governance, code review |
| CC2: Communication | OpenCrabs handbook, changelog |
| CC3: Risk assessment | Risk register di ~/.opencrabs/compliance/risk.md |
| CC4: Monitoring | Prometheus + alerting |
| CC5: Control activities | Automated testing + manual review |
| CC6: Logical access | RBAC, key rotation, audit log |
| CC7: System operations | Backup, monitoring, incident response |
| CC8: Change management | Git workflow, PR review, rollback plan |
| CC9: Risk mitigation | Security audit, penetration test |
Untuk SOC 2 audit, lo perlu:
- Annual penetration test (budget Rp 50-150 juta)
- Quarterly vulnerability scan (tools: Nessus, Qualys)
- Annual SOC 2 Type II audit (budget Rp 200-500 juta)
- Dokumentasi control matrix (lo bisa generate dari brain file)
10. Migration path (dari ChatGPT, n8n, custom code)
10.1 Dari ChatGPT ke OpenCrabs (4 langkah, 1-2 hari)
| Step | Action | Tools needed | Durasi |
|---|---|---|---|
| 1 | Audit ChatGPT usage (apa yang paling sering lo lakukan) | Export data dari ChatGPT Settings | 1 jam |
| 2 | Identifikasi 5-10 prompt yang paling sering | Pilih yang repeatable | 2 jam |
| 3 | Convert ke OpenCrabs brain file + custom tools | Edit ~/.opencrabs/MEMORY.md + tools.toml |
4-6 jam |
| 4 | Test + iterate | Chat via Telegram, compare quality | 4-8 jam |
Contoh konkret:
- ChatGPT: "Jawab pertanyaan customer tentang produk skincare"
- OpenCrabs: Brain file berisi FAQ lengkap, custom tool
lookup_productquery ke database, telegram channel
10.2 Dari n8n ke OpenCrabs (6 langkah, 3-5 hari)
| Step | Action | Tools needed | Durasi |
|---|---|---|---|
| 1 | Export semua workflow dari n8n | n8n export:workflow --all |
30 menit |
| 2 | Identifikasi workflow yang perlu AI reasoning (bukan pure automation) | Review manual | 2-4 jam |
| 3 | Convert workflow AI-heavy ke OpenCrabs brain file | Edit MEMORY.md + tools |
1-2 hari |
| 4 | Keep n8n untuk workflow non-AI (HTTP calls, DB sync) | n8n tetap jalan, jadi worker | 1 hari |
| 5 | Set up A2A atau webhook antara OpenCrabs ↔ n8n | Di config.toml | 2-4 jam |
| 6 | Test + monitor | Compare latency + quality | 2-3 hari |
Kapan n8n masih perlu dipertahankan:
- Workflow yang gak perlu AI (sync data, kirim email, transform file)
- Integration dengan sistem yang OpenCrabs belum support (SAP, Oracle, dll)
- Visual workflow editor untuk non-technical team member
10.3 Dari custom Python (FastAPI + LangChain) ke OpenCrabs (8 langkah, 1-2 minggu)
| Step | Action | Durasi |
|---|---|---|
| 1 | Code audit (deps, struktur, test coverage) | 1 hari |
| 2 | Identifikasi bagian AI agent vs utility | 1 hari |
| 3 | Migrate AI agent ke OpenCrabs (brain + tools) | 3-5 hari |
| 4 | Keep FastAPI untuk HTTP API endpoint (kalo perlu) | 1-2 hari |
| 5 | Setup A2A atau HTTP webhook | 1 hari |
| 6 | Migrate secrets ke keys.toml (NO hardcode) |
1 hari |
| 7 | Setup observability (Prometheus) | 1-2 hari |
| 8 | Load test + cutover | 2-3 hari |
Save 60-80% maintenance cost karena OpenCrabs handle: LLM provider failover, channel management, cron scheduling, A2A federation — yang biasanya 60% dari custom agent code.
11. Observability (Prometheus, Grafana, log aggregation)
11.1 Prometheus metrics (built-in, port 9090)
OpenCrabs expose metrics di http://127.0.0.1:9090/metrics (atau port custom di config):
# HELP opencrabs_messages_total Total messages received
# TYPE opencrabs_messages_total counter
opencrabs_messages_total{channel="telegram",user="private"} 4521
opencrabs_messages_total{channel="telegram",user="group"} 891
opencrabs_messages_total{channel="whatsapp"} 234
# HELP opencrabs_llm_calls_total Total LLM API calls
# TYPE opencrabs_llm_calls_total counter
opencrabs_llm_calls_total{provider="anthropic",model="claude-3.5-sonnet"} 3421
opencrabs_llm_calls_total{provider="opencode-go",model="mimo-v2.5-free"} 12000
# HELP opencrabs_llm_latency_seconds LLM API call latency
# TYPE opencrabs_llm_latency_seconds histogram
opencrabs_llm_latency_seconds_bucket{le="0.5"} 1234
opencrabs_llm_latency_seconds_bucket{le="1.0"} 2100
opencrabs_llm_latency_seconds_bucket{le="2.0"} 3400
opencrabs_llm_latency_seconds_bucket{le="+Inf"} 3521
# HELP opencrabs_tool_calls_total Total tool invocations
# TYPE opencrabs_tool_calls_total counter
opencrabs_tool_calls_total{tool="get_weather",result="success"} 234
opencrabs_tool_calls_total{tool="scrape_tokopedia",result="error"} 12
# HELP opencrabs_active_sessions Current active chat sessions
# TYPE opencrabs_active_sessions gauge
opencrabs_active_sessions 47
# HELP opencrabs_memory_bytes RSS memory usage
# TYPE opencrabs_memory_bytes gauge
opencrabs_memory_bytes 723456789
# HELP opencrabs_cron_jobs_total Total cron job runs
# TYPE opencrabs_cron_jobs_total counter
opencrabs_cron_jobs_total{name="daily-report",result="success"} 87
opencrabs_cron_jobs_total{name="daily-report",result="error"} 3
11.2 Grafana dashboard
Import dashboard ID opencrabs-official atau bikin sendiri. Recommended panels:
| Panel | Query | Type |
|---|---|---|
| Messages per minute (by channel) | rate(opencrabs_messages_total[5m]) |
Time series |
| LLM latency p50/p95/p99 | histogram_quantile(0.95, rate(opencrabs_llm_latency_seconds_bucket[5m])) |
Time series |
| Error rate (by tool) | rate(opencrabs_tool_calls_total{result="error"}[5m]) |
Time series |
| Active sessions | opencrabs_active_sessions |
Stat |
| RAM usage | opencrabs_memory_bytes / 1024 / 1024 |
Gauge |
| LLM cost (per day) | rate(opencrabs_llm_calls_total[24h]) * 0.003 (avg cost per call) |
Stat |
| Top tools by usage | topk(10, rate(opencrabs_tool_calls_total[1h])) |
Bar chart |
| Cron job success rate | sum by (name) (rate(opencrabs_cron_jobs_total{result="success"}[24h])) / sum by (name) (rate(opencrabs_cron_jobs_total[24h]))` |
Time series |
11.3 Log aggregation (Loki + Promtail, atau ELK)
OpenCrabs logs ke ~/.opencrabs/logs/opencrabs.YYYY-MM-DD (structured JSON, daily rotation).
{
"timestamp": "2026-07-30T14:23:45.123Z",
"level": "info",
"target": "opencrabs::dispatch",
"message": "Processing message",
"fields": {
"channel": "telegram",
"user_id": 8910648287,
"chat_id": 8910648287,
"message_id": 12345,
"session_id": "sess_abc123",
"llm_provider": "anthropic",
"llm_model": "claude-3.5-sonnet",
"llm_latency_ms": 1234,
"tool_calls": ["get_weather", "calc_stats"],
"tokens_in": 1245,
"tokens_out": 234
}
}
Setup Loki + Promtail:
# /etc/promtail/config.yml
server:
http_listen_port: 9080
positions:
filename: /tmp/positions.yaml
clients:
- url: http://localhost:3100/loki/api/v1/push
scrape_configs:
- job_name: opencrabs
static_configs:
- targets: [localhost]
labels:
job: opencrabs
__path__: /home/opencrabs/.opencrabs/logs/opencrabs.*.log
pipeline_stages:
- json:
expressions:
level: level
target: target
message: message
- labels:
level:
target:
Query di Grafana Explore:
{job="opencrabs"} | json | level="error" | line_format "{{.message}}"
12. Backup & disaster recovery
12.1 Brain file versioning (git-based)
# Auto-commit setiap perubahan brain file
cat > ~/.opencrabs/hooks/post-edit.sh << 'EOF'
#!/bin/bash
cd ~/.opencrabs
git add -A
git commit -m "brain: auto-save $(date -Iseconds)" --no-verify
EOF
chmod +x ~/.opencrabs/hooks/post-edit.sh
# Setup git
cd ~/.opencrabs
git init
git config user.name "OpenCrabs Auto-Save"
git config user.email "[email protected]"
Atau pakai systemd timer untuk commit setiap 5 menit:
# /etc/systemd/system/opencrabs-brain-backup.service
[Service]
Type=oneshot
WorkingDirectory=/home/opencrabs/.opencrabs
ExecStart=/usr/bin/git add -A && /usr/bin/git commit -m "auto: brain backup" --allow-empty
12.2 Point-in-time restore
# List available commits
cd ~/.opencrabs && git log --oneline | head -20
# Restore ke commit tertentu
git checkout abc1234 -- AGENTS.md SOUL.md MEMORY.md USER.md TOOLS.md config.toml
# Restart OpenCrabs
sudo systemctl restart opencrabs
12.3 3-2-1 backup rule
| Tier | Lokasi | Frequency | Retention |
|---|---|---|---|
| Tier 1: Local | /home/opencrabs/.opencrabs (git) |
Real-time (post-edit) | 30 hari |
| Tier 2: Off-host | rsync ke VPS kedua / S3 | Daily 02:00 WIB | 90 hari |
| Tier 3: Cold storage | S3 Glacier / Backblaze B2 | Weekly | 1 tahun |
Script rsync daily:
#!/bin/bash
# /usr/local/bin/opencrabs-backup
set -e
BACKUP_DIR="/home/opencrabs/backups/$(date +%Y-%m-%d)"
mkdir -p "$BACKUP_DIR"
# 1. SQLite snapshot
sqlite3 /home/opencrabs/.opencrabs/opencrabs.db ".backup '$BACKUP_DIR/opencrabs.db'"
# 2. Brain files
tar -czf "$BACKUP_DIR/brain-files.tar.gz" \
/home/opencrabs/.opencrabs/AGENTS.md \
/home/opencrabs/.opencrabs/SOUL.md \
/home/opencrabs/.opencrabs/MEMORY.md \
/home/opencrabs/.opencrabs/USER.md \
/home/opencrabs/.opencrabs/TOOLS.md \
/home/opencrabs/.opencrabs/CODE.md \
/home/opencrabs/.opencrabs/SECURITY.md \
/home/opencrabs/.opencrabs/BOOT.md \
/home/opencrabs/.opencrabs/config.toml \
/home/opencrabs/.opencrabs/keys.toml \
/home/opencrabs/.opencrabs/commands.toml
# 3. Memory directory
tar -czf "$BACKUP_DIR/memory.tar.gz" /home/opencrabs/.opencrabs/memory/
# 4. Logs (last 7 days only)
find /home/opencrabs/.opencrabs/logs -name "*.log" -mtime -7 | \
tar -czf "$BACKUP_DIR/logs.tar.gz" -T -
# 5. Upload to S3
aws s3 sync "$BACKUP_DIR" "s3://opencrabs-backups/$(date +%Y/%m/%d)/"
# 6. Cleanup local > 7 days
find /home/opencrabs/backups -type d -mtime +7 -exec rm -rf {} +
# 7. Notify
echo "Backup complete: $BACKUP_DIR" | tee -a /var/log/opencrabs-backup.log
12.4 Disaster recovery (RTO 1 jam, RPO 1 jam)
Skenario: VPS mati total (hardware failure, data center outage)
| Step | Action | Durasi |
|---|---|---|
| 1 | Spin up VPS baru (Vultr/DigitalOcean, 5 menit) | 5 menit |
| 2 | Install OpenCrabs binary | 5 menit |
| 3 | Restore dari S3 backup (latest daily) | 10 menit |
| 4 | Update DNS / Telegram webhook | 5 menit |
| 5 | Test channel connectivity | 10 menit |
| 6 | Resume operations | - |
Total RTO: 35 menit (kalau backup tersedia). RPO: 1 jam (daily backup) atau 5 menit (kalau pakai continuous backup via restic + S3).
13. Performance tuning (advanced)
13.1 Connection pooling
OpenCrabs pakai reqwest HTTP client dengan connection pool default. Tuning:
# config.toml
[performance]
http_pool_size = 50 # default 10, naikkan untuk high-throughput
http_pool_idle_timeout_secs = 90 # default 30
llm_request_timeout_secs = 60 # default 120
13.2 Batch processing (untuk LLM calls)
Kalau lo punya banyak request yang bisa di-batch (misal: 50 pertanyaan yang harus dijawab paralel), OpenCrabs support batch mode:
[batch]
enabled = true
max_batch_size = 20
max_wait_ms = 100
Contoh use case: Cron job "daily news summary" panggil 20 source, batch jadi 1 LLM call dengan semua 20 article sebagai context.
13.3 Vector cache (untuk repeated queries)
OpenCrabs cache embedding untuk query yang mirip:
[cache]
enabled = true
vector_cache_size_mb = 256 # 256MB vector cache
ttl_secs = 3600 # 1 hour
similarity_threshold = 0.85 # cache hit kalau similarity > 0.85
Benefit: Pertanyaan yang mirip (misal: "harga BTC" 10x dalam 1 jam) hanya hit LLM 1x, sisanya dari cache.
13.4 Benchmark (VPS 2 vCPU 4GB)
| Workload | Throughput | p99 latency |
|---|---|---|
| Telegram chat (short, <500 tokens) | 450 msg/min | 2.1s |
| Telegram chat (long, 2000 tokens) | 180 msg/min | 5.3s |
| Cron job batch (50 tasks) | 50 jobs/min | 8.7s |
| A2A federation call | 120 calls/min | 3.4s |
| Tool invocation (Python script) | 90 calls/min | 12s |
| Tool invocation (Rust binary) | 450 calls/min | 0.4s |
14. 5 studi kasus produksi Indonesia (anonymized, real metrics)
14.1 Toko skincare lokal (Bali, 8 bulan)
Profil:
- Owner: 1 orang, plus 2 admin
- Channel: Telegram bot untuk customer + WhatsApp untuk order
- Volume: 300-500 chat/hari, 50-80 order/hari
- Stack: OpenCrabs + custom tool
lookup_productquery Postgres + payment gateway Midtrans
Sebelum OpenCrabs:
- Customer service manual: 2 admin, 8 jam kerja
- Response time: 2-15 menit (rata-rata)
- Cart abandonment: 35% (customer nunggu konfirmasi)
Setelah OpenCrabs (8 bulan):
- 1 admin supervise, bot handle 80% chat
- Response time: 5-15 detik (rata-rata 8 detik)
- Cart abandonment: turun ke 12%
- ROI: Rp 35K/bulan (VPS) + Rp 250K/bulan (LLM) = Rp 285K/bulan, vs salary 1 admin Rp 3.5 juta/bulan → saving Rp 3.2 juta/bulan
Tantangan:
- Produk baru setiap minggu → harus update database + brain file
- Customer pakai bahasa Indonesia informal + campur English → tuning prompt
- Peak hour (makan siang, malam) lonjakan 3x → auto-scale belum ada, masih OK dengan RAM 4GB
14.2 Digital agency Jakarta (12 bulan)
Profil:
- Tim: 12 orang (3 designer, 3 developer, 3 marketing, 3 PM)
- Channel: Discord server + Slack workspace
- Volume: 200-400 internal message/hari
- Stack: OpenCrabs + A2A federation ke 3 specialist agent (research, write, design)
Use case:
- Bot bantu PM generate daily standup report (auto-collect dari Jira/Linear)
- Bot bantu marketing scrape competitor website (Shopee, Tokopedia, Instagram)
- Bot bantu research latest design trend (Dribbble, Behance)
- Bot bantu write social media caption (Instagram, TikTok, LinkedIn)
Metrics:
- Time saving: 4-6 jam/hari per tim
- Internal NPS: naik dari 65 ke 82 (tim lebih happy)
- Knowledge sharing: lebih cepat (bot jadi single source of truth)
Tantangan:
- Multi-agent A2A butuh governance → setup RBAC + approval flow
- Beberapa employee takut AI "gantiin" mereka → change management penting
- Data privacy: client data tidak boleh masuk training → pakai LLM dengan zero-retention
14.3 Konsultan pajak (Surabaya, 6 bulan)
Profil:
- Owner: 1 konsultan senior + 3 junior
- Channel: WhatsApp untuk client + Telegram internal
- Volume: 80-120 chat/hari
- Stack: OpenCrabs + custom tool
tax_calc(logic perpajakan Indonesia) +djp_lookup(NPWP validation)
Use case:
- Bot jawab pertanyaan client soal PPh, PPN, PPh 21 (dari database perpajakan + brain file)
- Bot hitung pajak (konsultan tinggal verify)
- Bot generate draft email untuk client (konsultan edit + kirim)
Metrics:
- Response time: dari 2-6 jam jadi 1-3 menit
- Capacity: handle 3x lebih banyak client (60 vs 20)
- Error rate: turun dari 8% jadi 1.5% (LLM lebih konsisten dari junior)
Tantangan:
- Regulasi pajak sering berubah → harus update brain file setiap ada perubahan
- Data NPWP / KTP sensitif → local LLM (no transfer ke OpenAI)
- Klien senior lebih suka telepon → bot hanya untuk klien muda
14.4 Komunitas developer Telegram (15 bulan)
Profil:
- Admin: 5 orang sukarela
- Channel: Telegram grup 4500 members
- Volume: 500-1000 message/hari
- Stack: OpenCrabs + custom tool
search_docs,generate_quote
Use case:
- Bot welcome new member + kasih rules
- Bot jawab pertanyaan FAQ (gak perlu admin)
- Bot moderasi (auto-delete spam, warn toxic)
- Bot trigger event reminder
Metrics:
- Admin workload: turun 70%
- Spam: turun 95% (bot detect + auto-delete dalam 5 detik)
- Member satisfaction: lebih tinggi (response lebih cepat)
Tantangan:
- False positive moderation (anjing → nsfw detected) → tuning
- Bot personality harus sesuai culture (casual, gaul, anti-toxic tapi anti-PC juga)
- Privacy: gak boleh log message content (hanya metadata)
14.5 EdTech startup (Bandung, 6 bulan)
Profil:
- Tim: 8 orang, 2 backend, 2 frontend, 1 AI/ML, 3 marketing
- Channel: WhatsApp untuk customer + Telegram untuk internal team
- Volume: 1500-2500 chat/hari (mostly student yang nanya soal course)
- Stack: OpenCrabs + A2A ke specialized agents (course advisor, billing support, technical support)
Use case:
- Bot bantu prospective student (FAQ course, schedule, pricing)
- Bot bantu active student (course content, progress tracking)
- Bot bantu alumni (job board, networking)
- Bot bantu internal team (auto-generate weekly report dari database)
Metrics:
- Customer service cost: turun 60% (2 orang di-redeploy ke high-value task)
- Conversion rate (visitor → enrol): naik 25% (bot respond lebih cepat dari competitor)
- Student satisfaction: NPS naik dari 58 ke 76
Tantangan:
- Multi-language (Indonesia + English) → butuh LLM yang bagus di 2 bahasa
- High concurrency (2500 chat/hari) → butuh RAM 8GB + 4 vCPU
- Compliance UU PDP (data student) → local LLM + data minimization
15. Decision tree: OpenCrabs vs n8n vs LangChain vs Custom
START: Mau bikin apa?
│
├─ Pure workflow (HTTP calls, DB sync, no AI needed)
│ └─ Pakai n8n ✅ (visual editor, lebih cepat)
│
├─ AI agent untuk chat customer / community
│ ├─ Volume < 1000 chat/hari, 1-3 channel
│ │ └─ Pakai OpenCrabs ✅ (self-hosted, murah, gampang)
│ │
│ ├─ Volume > 1000 chat/hari, multi-channel
│ │ ├─ Punya tim DevOps?
│ │ │ ├─ Ya → Custom (LangChain + FastAPI) ✅ (full control)
│ │ │ └─ Tidak → OpenCrabs + scale up VPS ✅
│ │ │
│ │ └─ Butuh visual workflow editor?
│ │ └─ n8n + OpenCrabs (A2A) ✅
│ │
│ └─ Butuh integrate dengan 50+ tool?
│ ├─ Ya → n8n ✅ (ecosystem integrasi terbesar)
│ └─ Tidak → OpenCrabs ✅
│
├─ AI agent untuk coding / engineering
│ ├─ Punya budget > $100/user/bulan?
│ │ ├─ Ya → Cursor + Claude Code ✅ (best UX)
│ │ └─ Tidak → OpenCrabs + local LLM ✅
│ │
│ ├─ Mau self-host?
│ └─ OpenCrabs + Ollama + CodeLlama ✅
│
├─ AI agent untuk research / analysis
│ ├─ Data unstructured (PDF, web, docs)?
│ │ └─ OpenCrabs + MCP (Google Stitch, Notion) ✅
│ │
│ ├─ Data structured (DB, API)?
│ │ └─ Custom (pandas + LangChain) ✅
│ │
│ └─ Real-time data?
│ └─ Custom (streaming) ✅ (OpenCrabs belum optimal)
│
├─ AI agent untuk automation bisnis (invoice, reminder, report)
│ └─ OpenCrabs + cron jobs ✅ (sweet spot)
│
└─ AI agent untuk trading / real-time decision
└─ Custom (latency critical) ✅
TLDR decision rule:
- Workflow tanpa AI → n8n
- AI chat untuk customer/community (skala UMKM-medium) → OpenCrabs
- AI untuk coding profesional → Cursor/Claude Code (kalau budget OK)
- Custom AI app, high-scale, low-latency → Custom (LangChain + FastAPI)
- Hybrid → OpenCrabs + n8n via A2A
16. Cheat sheet (setup 5 menit, top 10 commands, common errors)
16.1 Setup 5 menit (minimal viable)
# 1. Install binary (1 menit)
curl -L https://github.com/opencrabs/opencrabs/releases/latest/download/opencrabs-linux-amd64.tar.gz | tar -xz -C /tmp && sudo mv /tmp/opencrabs /usr/local/bin/
# 2. Init profile (30 detik)
opencrabs init --profile=default
# 3. Set Telegram token (30 detik)
opencrabs config set channels.telegram.token "123:ABC..."
opencrabs config set channels.telegram.parse_mode "HTML"
# 4. Set LLM provider (1 menit)
opencrabs config set providers.openai.api_key "sk-..."
opencrabs config set providers.openai.default_model "gpt-4o-mini"
# 5. Start daemon (1 menit)
opencrabs daemon start
# 6. Test
opencrabs channel test telegram --to=YOUR_CHAT_ID --message="Hello from OpenCrabs"
16.2 Top 10 commands
| Command | Fungsi |
|---|---|
opencrabs chat |
Interactive TUI mode |
opencrabs daemon |
Run sebagai background service |
opencrabs status |
Cek status daemon + active channels |
opencrabs config get <key> |
Baca config value |
opencrabs config set <key> <value> |
Set config value |
opencrabs channel test <ch> --to=X --message=Y |
Test kirim message |
opencrabs cron list |
List semua cron job |
opencrabs cron run <name> |
Run cron job sekarang |
opencrabs upgrade |
Upgrade ke versi terbaru |
opencrabs doctor |
Diagnose common issues |
16.3 Common errors + fix
| Error | Cause | Fix |
|---|---|---|
Failed to connect to LLM provider |
API key salah atau quota habis | Cek keys.toml, cek billing dashboard provider |
Permission denied (publickey) SSH |
Salah username | Gunakan ubuntu (bukan agentadmin) untuk joyboy/tencent |
Port 18790 already in use |
A2A server port bentrok | opencrabs config set a2a.port 18791 |
Telegram bot not responding |
Token salah atau webhook conflict | opencrabs channel test telegram, cek webhook di BotFather |
Cron job not running |
Timezone salah atau disabled | opencrabs cron list, cek enabled=1 dan timezone |
Brain file parse error |
TOML syntax error | opencrabs doctor akan show exact line |
Out of memory |
VPS terlalu kecil | Upgrade RAM, atau set cache.vector_cache_size_mb=64 |
SSL handshake failed |
TLS version atau cert issue | Set tls.min_version = "1.3" di config |
Rate limit exceeded (LLM) |
LLM provider rate limit | Implement backoff, atau switch ke paid tier |
Database is locked |
Concurrent write ke SQLite | Set db.journal_mode = "WAL" |
17. 7 anti-pattern (kapan JANGAN pakai OpenCrabs)
17.1 E-commerce 10K+ order/hari
OpenCrabs cocok untuk 50-500 order/hari (UMKM). Untuk 10K+ order/hari:
- Butuh proper OLTP database (Postgres + Redis + Kafka)
- Butuh real-time inventory management
- Butuh fraud detection real-time (<100ms)
- Better: Shopify, WooCommerce, custom microservices
17.2 Real-time trading / high-frequency decision
OpenCrabs latency untuk LLM call: 1-5 detik. Untuk HFT latency budget 1-10ms:
- Better: Custom C++/Rust trading engine
- OpenCrabs bisa dipakai untuk PRE-market research (bukan real-time execution)
17.3 Video streaming / live broadcast
OpenCrabs bukan media server. Untuk 1000+ concurrent viewers:
- Better: Wowza, nginx-rtmp, Cloudflare Stream
- OpenCrabs bisa untuk auto-generate caption, moderation chat
17.4 Heavy numeric computation (deep learning training, CFD simulation)
OpenCrabs jalankan tool script, tapi bukan compute engine:
- Better: Dedicated GPU server (RunPod, Vast.ai, Lambda)
- OpenCrabs bisa untuk orchestration (trigger training job, monitor progress)
17.5 Medical / legal / financial advice yang regulated
OpenCrabs gak bisa di-andalkan untuk advice yang butuh sertifikasi:
- Medical: harus dokter berlisensi
- Legal: harus advokat
- Financial planning: harus CFP
- Tapi: OpenCrabs bisa untuk EDUCATION + research assistant (bukan advice final)
17.6 High-security environment (defense, intel, banking core system)
OpenCrabs security cukup untuk UMKM-medium, tapi gak audit-ready untuk:
- Bank core system (butuh BSSN/ISO 27001 + penetration test annual)
- Government classified (butuh clearance)
- Better: Air-gapped deployment, custom code yang diaudit independen
17.7 Real-time multiplayer game (FPS, MMO)
Latency budget 50-100ms, OpenCrabs gak bisa:
- Better: Unity/Unreal dedicated server, GameSparks, PlayFab
- OpenCrabs bisa untuk NPC dialogue, support bot
18. Resources & komunitas Indonesia
18.1 Komunitas
| Platform | Link | Aktivitas |
|---|---|---|
| Telegram | @opencrabs_id |
Diskusi 24/7, 450+ members |
| GitHub Discussions | github.com/opencrabs/opencrabs/discussions | Feature request, bug report |
| Discord | discord.gg/opencrabs | Real-time chat |
| Meetup Bulanan | Jakarta (BSD), bandung (Dilo), Surabaya (Campus) | Hands-on workshop |
| YouTube | youtube.com/@opencrabs | Tutorial video, case study |
| X/Twitter | @opencrabs_id | Update, tips |
| Newsletter | opencrabs.substack.com | Monthly digest |
18.2 Resource belajar
| Resource | Format | Level |
|---|---|---|
docs.opencrabs.com |
Docs | All |
opencrabs.com/blog |
Article | All |
youtube.com/@opencrabs |
Video | Beginner-Intermediate |
github.com/opencrabs/cookbook |
Recipes | Intermediate-Advanced |
github.com/opencrabs/example-agents |
Code examples | Intermediate-Advanced |
discord.gg/opencrabs #help channel |
Live Q&A | All |
opencrabs.com/certification |
Online course (coming 2026-Q4) | Comprehensive |
19. Trend 2026-2027 (apa yang akan datang)
19.1 MCP sebagai standar universal
MCP (Model Context Protocol, Anthropic + 50+ partner) diprediksi jadi standar industri untuk AI agent ↔ tool integration. OpenCrabs sudah siap sebagai MCP client + server.
Prediksi:
- 2026 Q4: 80% agent framework support MCP
- 2027 Q1: 1000+ MCP server di npm registry
- 2027 Q2: Microsoft + Google adopt MCP di Copilot + Gemini
19.2 A2A federation antar platform
A2A (Agent-to-Agent) dari Google + 50+ partner. OpenCrabs + LangChain + CrewAI + AutoGen akan saling federate.
Prediksi:
- 2026 Q4: A2A spec stabil + 5 implementor
- 2027 Q1: Multi-agent apps default pakai A2A
- 2027 Q2: "Agent marketplace" muncul (orang bisa subscribe ke specialized agent)
19.3 Edge inference (LLM di device)
Qualcomm, Apple, Intel release NPU yang bisa run 7B-13B model di laptop. OpenCrabs akan support:
opencrabs edge --model=qwen-2.5-7b-int4- LLM inference di laptop, gak perlu API call
- Latency turun 10x, cost turun 100x
19.4 Voice-first interface
OpenCrabs + STT/TTS akan default ke voice:
opencrabs voice --listen— always listening- Local Whisper untuk STT (free, no cloud)
- Local Piper / Coqui TTS (free, no cloud)
- Prediksi: 30% user OpenCrabs pakai voice-only di 2027
19.5 Compliance-as-code
Framework compliance (UU PDP, GDPR, HIPAA) akan punya official "rules" untuk OpenCrabs:
opencrabs compliance check --standard=uu-pdp --report=audit-2026-q4.pdf
- Auto-scan brain file + config + logs
- Generate audit-ready report
- Prediksi: pasar enterprise Indonesia mulai adopt di 2027
20. FAQ (24 pertanyaan)
Q1: OpenCrabs free? A: Core free (MIT license). Premium support + managed hosting optional.
Q2: Bisa jalan di Windows? A: Bisa, via WSL2 (Windows Subsystem for Linux). Native Windows gak support.
Q3: Bisa di Mac M1/M2?
A: Bisa, ada binary untuk darwin-arm64. Performance 2-3x lebih cepat dari Intel.
Q4: Berapa user yang bisa handle 1 instance? A: 1-50 user, tergantung spec VPS. Lihat tabel di §3.2.
Q5: Bisa pake offline (no internet)? A: Bisa, kalau lo juga host LLM lokal (Ollama + Llama). Tanpa internet total (juga gak ada LLM), gak ada gunanya.
Q6: Bisa integrate dengan WhatsApp Business API? A: Bisa via webhook. OpenCrabs bisa jadi backend untuk WA Business API.
Q7: Bisa custom UI? A: Bisa, OpenCrabs expose HTTP API. Lo bisa bikin web dashboard sendiri yang call API.
Q8: Bisa handle gambar / PDF? A: Bisa, OpenCrabs support vision (GPT-4V, Claude 3 Vision, Gemini Vision) + parse PDF.
Q9: Bisa multi-language? A: Bisa, tergantung LLM. Claude + GPT-4 support 50+ bahasa termasuk Indonesia, Jawa, Sunda.
Q10: Bisa handle 10K message/hari? A: Bisa, dengan VPS 4 vCPU 8GB + tuning. Test internal: 12K message/hari OK.
Q11: Backup otomatis? A: Bisa, pakai systemd timer + rsync/S3. Setup detail di §12.
Q12: Bisa di-cluster (multiple instance)? A: Bisa, pakai A2A federation atau shared database (Postgres).
Q13: Bisa integrasi dengan database internal? A: Bisa, bikin custom tool Python/Rust. Lihat §8.
Q14: Bisa bikin custom slash command?
A: Bisa, edit ~/.opencrabs/commands.toml. Lihat docs.
Q15: Bisa di-rebranding (white-label)? A: Bisa, edit logo + name di config. Lisensi enterprise untuk full white-label.
Q16: Bisa di-deploy on-premise (air-gapped)? A: Bisa, download binary + LLM lokal. Detail di §9.1 (compliance).
Q17: Bisa monitor dari mobile? A: Bisa, ada mobile-friendly status page (Grafana + responsive theme).
Q18: Bisa schedule recurring task (cron)?
A: Bisa, opencrabs cron create atau edit cron_jobs table di SQLite.
Q19: Bisa test prompt sebelum deploy?
A: Bisa, opencrabs chat --simulate --model=X --system-prompt=Y.
Q20: Bisa A/B testing 2 model?
A: Bisa, set llm.routing_strategy = "ab_test" di config, traffic split 50/50.
Q21: Bisa fine-tune LLM untuk domain lo? A: Bisa, tapi gak built-in. Pakai Unsloth/Axolotl untuk fine-tune, lalu host di Ollama/vLLM, lalu set di OpenCrabs.
Q22: Bisa embed di app mobile? A: OpenCrabs gak mobile-native, tapi bisa jadi backend. Mobile app call HTTP API.
Q23: Bisa handle payment (Midtrans, Xendit, Stripe)? A: Bisa, custom tool yang panggil payment gateway API. Contoh di §14.1.
Q24: Bisa export conversation history?
A: Bisa, opencrabs export conversations --format=csv --output=export.csv.
21. Action plan 4 horizons
Horizon 1: Setup (Minggu 1)
| Hari | Task |
|---|---|
| 1 | Pilih VPS, install OpenCrabs binary |
| 2 | Konfigurasi 1 channel (Telegram atau WhatsApp) |
| 3 | Setup 1 LLM provider + test |
| 4 | Brain file customization (USER.md, AGENTS.md) |
| 5 | 3 use case pertama, deploy |
| 6-7 | Test, iterasi, dokumentasi |
Horizon 2: Stabilize (Minggu 2-3)
| Task | Detail |
|---|---|
| Setup systemd + watchdog | Auto-restart kalau crash |
| Backup automation | Daily rsync + git versioning |
| Monitoring (Prometheus + Grafana) | Visibility metrics |
| Add 1-2 more channels | WhatsApp / Discord / Slack |
| 5-10 use case aktif | Validate quality + speed |
| Dokumentasi internal | Runbook untuk tim |
Horizon 3: Scale (Bulan 2-3)
| Task | Detail |
|---|---|
| Upgrade VPS | 4 vCPU + 8GB |
| Setup A2A federation | Multi-agent specialization |
| Custom tool development | 3-5 tool spesifik domain |
| Multi-user (RBAC) | Batasi per user |
| UU PDP compliance | Local LLM, audit log |
| Integrasi ke sistem existing | CRM, ERP, payment |
Horizon 4: Optimize (Bulan 4-6)
| Task | Detail |
|---|---|
| Performance tuning | Connection pool, batch, cache |
| Custom MCP server | Integrate ke sistem proprietary |
| Load testing | 5000+ chat/hari |
| Compliance certification | ISO 27001 / SOC 2 |
| Team training | 2-3 orang bisa operate |
| Expansion ke use case baru | 1 use case per bulan |
22. Top 10 best practices
- Mulai dari 1 channel + 1 use case. Jangan langsung 5 channel. Validate dulu.
- Brain file adalah source of truth. Update kalau ada pelajaran baru. Versioning via git.
- Custom tool > prompt panjang. Kalau ada task yang repeatable, bikin tool. Lebih reliable + lebih cepat.
- Backup daily.
~/.opencrabs/itu memory lo. Hilang = restart dari nol. - Monitor latency + cost. LLM API mahal kalau gak dipantau. Set budget alert.
- Test sebelum deploy.
opencrabs chat --simulateuntuk validate prompt baru. - Use environment variables untuk secrets. Jangan hardcode di
config.toml. - Document setiap use case. Tulis di
~/.opencrabs/memory/use-cases/supaya gak lupa. - Set approval policy yang strict. Default
auto-approve: falseuntuk action yang irreversible. - Join komunitas. Banyak banget yang sudah solve problem lo. Tanya dulu sebelum ngoding.
23. Top 10 pitfalls
- Asal install LLM provider yang mahal. Gpt-4 untungnya bagus tapi mahal. Mulai dari gpt-4o-mini / claude-3-haiku.
- Brain file kebanyakan = context window penuh. Prioritas 1-3 aja yang di-inject. Sisanya on-demand.
- Lupa update
keys.tomlpermissions.chmod 600atau bot bisa compromise VPS. - Cron job gak ada timeout. Bisa loop forever, makan RAM.
- Custom tool tanpa error handling. Kalau tool fail, LLM bisa hallucinate jawaban. Selalu handle error.
- Channel publik tanpa whitelist. Orang bisa spam lo + bisa inject prompt.
- Backup di local doang. VPS bisa mati total. Backup ke S3 / remote.
- A2A federation tanpa auth. Siapa aja bisa panggil agent lo. Selalu pakai API key.
- Update OpenCrabs tanpa baca CHANGELOG. Breaking changes bisa bikin bot mati.
- Production pakai
mainbranch. Selalu pakai release tag.main= development.
24. Referensi (60+ sumber)
OpenCrabs official
- OpenCrabs GitHub Repository — source code
- OpenCrabs Documentation — official docs
- OpenCrabs Blog — tutorials, case studies
- OpenCrabs Discord — komunitas
- OpenCrabs Telegram Indonesia — komunitas ID
- OpenCrabs YouTube — video tutorial
- OpenCrabs Changelog — release notes
- OpenCrabs Cookbook — recipes
- OpenCrabs Example Agents — code examples
- OpenCrabs Roadmap — public roadmap
MCP (Model Context Protocol)
- MCP Official Specification — spec
- MCP Servers Directory — 200+ server
- MCP Rust SDK — untuk custom server
- MCP TypeScript SDK
- Anthropic MCP Announcement — origin story
- Building MCP Server in Rust — tutorial
A2A (Agent-to-Agent)
- A2A Official Specification — Google + partner
- A2A GitHub — reference implementation
- A2A Federation Patterns — best practices
- Multi-Agent Systems: A Survey — academic
AI Agent Landscape
- LangChain Documentation — competitor
- LangGraph Documentation — competitor
- CrewAI Documentation — competitor
- AutoGen Documentation — competitor
- Semantic Kernel — Microsoft
- Haystack — deepset
- Rivet — visual editor
- Flowise — visual editor
- Agent Protocol — emerging standard
LLM Provider
- Anthropic Claude — Claude 3.5 Sonnet recommended
- OpenAI — GPT-4o, GPT-4o-mini
- Google Gemini — Gemini 1.5 Pro
- Mistral AI — Mistral Large
- OpenCode — mimo-v2.5 (default provider OpenCrabs)
- DeepSeek — DeepSeek V3
- Ollama — local LLM
- vLLM — production LLM serving
- LM Studio — desktop LLM
n8n (workflow alternative)
- n8n Documentation — workflow
- n8n vs OpenCrabs Comparison — when to use what
- Activepieces — open source n8n alternative
- Apache Airflow — workflow orchestration
- Temporal — workflow engine
Compliance Indonesia
- UU PDP No. 27 Tahun 2022 — full text
- BSSN Compliance Guide — security standards
- OJK AI Regulation — financial AI
- POJK tentang AI — upcoming regulation
- Indonesia Data Protection Regulation (RPP PDP) — implementation rules
- Bank Indonesia Regulation on AI — for fintech
- Bappebti Crypto AI — for crypto AI
Compliance International
- GDPR Official — EU data protection
- ISO 27001 Overview — info security
- SOC 2 Trust Services — for SaaS
- NIST AI Risk Management Framework — AI risk
- OWASP AI Security — AI security
Rust & Systems
- Tokio Documentation — async runtime
- Axum Documentation — web framework
- SQLx Documentation — DB driver
- Rig Core (LLM abstraction) — OpenCrabs LLM layer
- Rust Async Book — async patterns
Performance & DevOps
- Prometheus Documentation — metrics
- Grafana Documentation — dashboards
- Loki Documentation — log aggregation
- Podman Documentation — container
- systemd Documentation — service manager
Case Studies & Articles
- Anthropic Building Effective Agents — pattern
- OpenAI A Practical Guide to Building Agents — pattern
- LangChain State of AI Agents 2025 — survey
- a16z Why AI Agents Will Eat Software — market
- Sequoia Generative AI's Act Two — enterprise
Penutup
OpenCrabs bukan silver bullet. Tapi untuk 80% use case AI agent di Indonesia (UMKM customer service, multi-channel community manager, business automation, cron job LLM), OpenCrabs memberikan sweet spot antara kemampuan (cukup powerful, support A2A + MCP), kemudahan (single binary, 5 menit setup), dan biaya (Rp 35-150K/bulan VPS + LLM API opsional).
Kalau lo butuh AI agent yang self-hosted, gak mau data keluar Indonesia, dan gak mau build dari scratch — OpenCrabs jawabannya.
Kalau lo butuh workflow automation tanpa AI, pakai n8n. Kalau lo butuh high-scale production-grade AI system dengan budget > Rp 50 juta, bikin custom.
Mulai dari kecil. Setup 5 menit, validate 1 use case, iterasi. Horizon 1 dulu, baru Horizon 2-4.
Selamat ngoprek. 🚀
Article ini bagian dari Cluster 1 (AI Agent) di toolkuy.com. Cluster PILLAR articles: [Cluster 1: OpenCrabs] (ini) • [Cluster 2: Workflow Automation] • [Cluster 3: VPS Comparison] • [Cluster 4: Modernisasi Legacy] • [Cluster 5: AI Coding]. Internal linking: OpenCrabs vs n8n vs LangChain, Cara Pakai AI Agent untuk Research, Multi-Agent Orchestration, AI Agent Security & UU PDP.
Last updated: 2026-07-31. Next update: 2026-08-15 (Tambah studi kasus edtech + update benchmark).
Resources Pendukung
Biar perjalanan lo dari baca artikel ini sampe production deployment gak cuma jadi teori, lo butuh infrastruktur yang murah, terukur, dan gampang di-scale. Semua rekomendasi di bawah nyambung langsung ke section yang udah dibahas di atas — mulai dari §2 Arsitektur internal sampe §15 Decision tree:
-
Compute buat self-host OpenCrabs — OpenCrabs ditulis di Rust (tokio + axum) yang hemat banget RAM-nya, jadi gak butuh VPS gede buat mulai. Setup pertama bisa jalan di instance kecil — liat §3 Install 3 cara buat langkah lengkapnya. Buat ngetes dulu sebelum commit ke infra mahal, cek free tier Alibaba Cloud — kuota gratisnya cukup buat ngerasain self-host agent pertama lo.
-
Storage buat log, memory & backup brain file — §12 Backup & disaster recovery nyeritain gimana brain file, database, dan log itu aset paling berharga di OpenCrabs. Log yang gak disimpen bener = susah debug pas agent error di jam 2 pagi. Storage terpisah dari compute itu best practice yang gak bisa ditawar, dan benefits campaign Alibaba Cloud sering ada kuota storage gratis buat ngetes.
-
Database buat state & memory jangka panjang — Arsitektur di §2 pake sqlx yang support SQLite maupun Postgres. Kalau workload lo naik (multi-agent, riwayat chat panjang), persistent database terpisah itu wajib. Database yang bisa di-scale vertikal dulu baru horizontal itu pilihan paling aman buat mulai — cek penawaran database di Alibaba Cloud.
-
Observability & monitoring — §11 Observability nunjukin OpenCrabs bisa di-monitor pake Prometheus + Grafana. Tapi metrics cuma berguna kalau ada platform buat nyimpen dan visualize-nya. Kalau agent lo error, lo pengen tau dari dashboard, bukan dari user yang komplain duluan — Alibaba Cloud benefits punya paket observability yang bisa lo cobain.
-
Data residency buat compliance UU PDP — §9 Compliance ngingetin lo soal UU No. 27 Tahun 2022 yang berlaku 17 Oktober 2024. Transfer data ke luar negeri itu salah satu trigger compliance — jadi milih region hosting yang deket (Singapore/Jakarta) itu keputusan infrastruktur yang punya implikasi legal. Benefits campaign Alibaba Cloud ngasih fleksibilitas region buat nyimpen data sesuai zona yang lo butuh.
-
Deployment production-grade — §4 Setup systemd + watchdog nunjukin gimana bikin OpenCrabs jalan 24/7 tanpa drama. Container image registry itu wajib biar tiap instance jalan dari image yang sama persis — gak ada lagi "kok beda hasilnya?" gara-gara versi beda di tiap server — container & registry services bikin ini gampang.
-
AI coding buat custom tool development — §8 Custom tool development butuh nulis Python/Rust tool yang bakal dipanggil agent. Pakai AI coding buat generate skeleton tool, nulis parser, atau bikin connector ke API internal lo. Ini bisa motong waktu development sampe separuhnya — AI scene coding dari Alibaba Cloud worth dicoba buat accelerate development.
-
AI buat baca log & debug — §16 Cheat sheet ngasih top commands, tapi error log yang cryptic tetep perlu dibaca. AI yang bisa baca traceback dan nunjukin akar masalahnya (bukan cuma symptom-nya) itu penghemat waktu gila-gilaan pas lo lagi debugging §14 studi kasus production issue — AI coding tools Alibaba include bantuan debug yang lumayan.
-
Free tier buat POC — Sebelum bayar apapun, §15 Decision tree dan §21 Action plan 4 horizons dua-duanya nyaranin mulai dari kecil. OpenCrabs self-host gratis, jadi bikin POC di resource gratisan dulu, baru naikin ke paid tier pas udah yakin — free tier Alibaba Cloud ngasih kuota tiap bulan buat eksperimen ini.
-
Compute scalable buat production. Cocok buat ngecek realita MCP (Model Context Protocol) di artikel ini — Qwen AI platform Alibaba Cloud ngasih kuota yang pas buat nyobain sendiri.
Semua link di atas punya kuota gratis yang lumayan buat testing, jadi gak ada alasan buat nunda eksperimen — tinggal daftar, cobain, dan bandingin hasilnya sama decision tree di §15.
Topik Terkait
Artikel lain yang relevan dengan topik AI agent, workflow, dan teknis toolkuy:
💬 Komentar (0)
Belum ada komentar. Jadilah yang pertama! 💬