Langkah 3 (Jalur D) — Chat Bridge via Telegram
Ini deep-dive Jalur D dari lima control plane remote — jalur paling kuat sekaligus paling berat setup-nya. Masuk ke sini setelah checkpoint di halaman sebelumnya lolos: kamu punya alasan konkret butuh orkestrasi multi-agent/cron/alert dalam satu inbox. Contoh di bawah memakai Telegram, tapi ketiga jalurnya juga mendukung platform lain (WhatsApp/Slack/Discord — bahkan Feishu/LINE/WeChat Work via cc-connect).
Di sinilah "solo = team" mulai terasa penuh: agent hidup di mesin yang selalu menyala, dan kamu mengarahkannya dari HP — memberi task, menerima laporan, menyetujui langkah berisiko — dari mana saja.
Pilih jalurmu
| Jalur | Cocok untuk | Effort setup | Kontrol |
|---|---|---|---|
| A. OpenClaw | Mayoritas orang — gateway chat→agent matang, multi-channel | ± 30 menit | Tinggi (self-hosted) |
| B. Hermes Agent | Yang mau agent + memory + skills terintegrasi satu paket | ± 30 menit | Tinggi (self-hosted, open source) |
| C. Bridge custom | Yang mau paham cara kerjanya / kebutuhan sangat spesifik | ± 1–2 jam | Total |
Ketiganya butuh mesin yang selalu menyala: laptop/PC di rumah, Mac mini, atau VPS ($5–10/bulan — Hetzner/DigitalOcean/dll). Untuk mulai, laptop yang tidak sleep sudah cukup.
Semua jalur butuh ini. Di Telegram, chat ke @BotFather:
/newbot
→ beri nama, misal: My Agent Runner
→ beri username, misal: my_agent_runner_bot
BotFather membalas dengan bot token (123456:ABC-DEF...). Lalu dapatkan chat ID-mu: chat ke @userinfobot, catat angka Id.
:::warning Token = akses penuh ke bot
Siapa pun yang memegang token bisa membaca dan mengirim pesan sebagai bot-mu. Simpan di environment variable / secret manager, jangan pernah commit ke repo. Kalau bocor: /revoke di BotFather.
:::
Checkpoint: kamu punya bot token dan chat ID numerik milikmu sendiri.
OpenClaw adalah runtime + gateway yang menghubungkan agent ke Telegram/WhatsApp/Discord dan mengeksekusi shell, browser, dan cron di mesinmu. Butuh Node 22+.
npm install -g openclaw
openclaw onboard --install-daemon
Wizard onboarding akan menanyakan: provider model + API key (pilih model terkuat yang budget-mu izinkan — ini agent yang memegang shell), workspace, lalu channels → Telegram: tempel bot token dari langkah sebelumnya.
--install-daemon mendaftarkan gateway sebagai service (launchd di macOS, systemd di Linux) sehingga hidup lagi setelah reboot.
Setelah jalan, kunci aksesnya — hanya kamu yang boleh memerintah:
{
"channels": {
"telegram": {
"botToken": "${TELEGRAM_BOT_TOKEN}",
"allowFrom": [<CHAT_ID_KAMU>]
}
}
}
Checkpoint: kirim "halo, kamu jalan di mesin apa?" ke bot-mu dari Telegram — dijawab; kirim pesan dari akun Telegram lain — diabaikan/ditolak.
Hermes Agent (Nous Research, MIT) adalah agent self-improving: menulis skill Markdown dari pengalaman dan menyimpannya di memory lintas sesi. Gateway bawaannya mendukung Telegram, Discord, Slack, WhatsApp, Signal, dan email; backend eksekusinya bisa local, Docker, SSH, atau cloud sandbox (Daytona/Modal).
# install (lihat https://hermes-agent.nousresearch.com/docs/ untuk metode terbaru)
pip install hermes-agent
hermes setup # wizard: provider model, backend terminal, messaging
hermes gateway # jalankan gateway, sambungkan Telegram dengan bot token-mu
Pola yang disarankan: jalankan Hermes dengan backend Docker (bukan local) supaya shell-nya terisolasi dari mesinmu, dan arahkan workspace-nya ke clone repomu.
Checkpoint: dari Telegram, minta Hermes menjalankan git log --oneline -5 di repomu dan hasilnya benar.
Untuk memahami cara kerja semua produk di atas: pada intinya mereka hanyalah loop yang meneruskan pesan Telegram ke agent CLI headless dan mengembalikan outputnya. Versi minimal yang bisa langsung kamu pakai:
npm init -y && npm install telegraf
const {Telegraf} = require('telegraf');
const {execFile} = require('node:child_process');
const ALLOWED_CHAT_ID = Number(process.env.ALLOWED_CHAT_ID); // chat ID kamu
const REPO = process.env.REPO_DIR; // path repo target
const bot = new Telegraf(process.env.TELEGRAM_BOT_TOKEN);
bot.use((ctx, next) => {
if (ctx.chat?.id !== ALLOWED_CHAT_ID) return; // tolak semua orang lain
return next();
});
bot.on('text', (ctx) => {
ctx.reply('⏳ dikerjakan...');
// -p = headless: jalankan satu task penuh lalu keluar
execFile('claude', ['-p', ctx.message.text, '--output-format', 'text'],
{cwd: REPO, timeout: 15 * 60 * 1000, maxBuffer: 10 * 1024 * 1024},
(err, stdout, stderr) => {
const out = (stdout || stderr || String(err)).slice(-3500);
ctx.reply(out || '(selesai tanpa output)');
});
});
bot.launch();
TELEGRAM_BOT_TOKEN=<TOKEN> ALLOWED_CHAT_ID=<CHAT_ID> REPO_DIR=$HOME/proyekku \
node bridge.js
- Claude Code
- opencode
- oh-my-pi
claude -p "<task>" menjalankan agentic loop penuh secara headless. Permission mengikuti .claude/settings.json dari Langkah 2; tambahkan --permission-mode acceptEdits bila edit file ingin auto-approve di mode remote.
Ganti execFile('claude', ...) menjadi execFile('opencode', ['run', ctx.message.text]) — opencode run adalah mode non-interaktifnya.
Ganti menjadi execFile('omp', ['-p', ctx.message.text]) untuk mode print/headless oh-my-pi.
Jalankan di bawah tmux atau buat service systemd/launchd supaya tetap hidup. Untuk sesi interaktif penuh (bukan satu-tembakan), pola yang umum adalah bot yang menulis ke sesi tmux send-keys — tapi mulai dari versi headless dulu.
Checkpoint: dari HP, kirim "jalankan npm test dan laporkan hasilnya" — balasan berisi hasil test sungguhan dari repomu.
Kamu baru saja menghubungkan internet ke shell di mesinmu. Empat lapis minimum:
- Whitelist chat ID — sudah dilakukan di atas. Verifikasi ulang: akun lain harus benar-benar diabaikan.
- Secret di environment, bukan di file yang bisa dibaca agent; ingat aturan
denyuntuk.envdari Langkah 2. - Isolasi eksekusi — jalankan runner sebagai user OS terpisah tanpa akses ke dokumen pribadimu, atau di dalam container/VM. Di VPS khusus, risiko ini otomatis lebih kecil.
- Batas blast radius git — agent hanya bisa push branch, tidak bisa merge ke
main(branch protection dari Langkah 1 menahan ini).
:::warning Jangan pernah Jangan expose bot tanpa whitelist, jangan beri agent remote kredensial production (DB prod, cloud admin), dan jangan aktifkan mode bypass permission di mesin yang menyimpan data pribadimu. :::
Checkpoint: kamu bisa menuliskan, dalam satu kalimat per item, apa kerusakan maksimal jika (a) bot token bocor, (b) agent menjalankan perintah destruktif — dan kamu nyaman dengan kedua jawaban itu.
Selanjutnya: Langkah 4 — Paralel dengan Git Worktrees