[{"data":1,"prerenderedAt":6415},["ShallowReactive",2],{"published-article-paths":3,"search-navigation":348,"\u002Fid\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them":421,"\u002Fid\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them-surround":867},[4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346],{"path":5},"\u002Fde\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":7},"\u002Fde\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":9},"\u002Fde\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":11},"\u002Fde\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":13},"\u002Fde\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":15},"\u002Fde\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":17},"\u002Fde\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":19},"\u002Fde\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":21},"\u002Fde\u002Farticle\u002Fsetup-antigravity-2",{"path":23},"\u002Fde\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":25},"\u002Fde\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":27},"\u002Fde\u002Farticle\u002Fsync-obsidian-across-devices",{"path":29},"\u002Fde\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":31},"\u002Fde\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":33},"\u002Fde\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":35},"\u002Fde\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":37},"\u002Fen\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":39},"\u002Fen\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":41},"\u002Fen\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":43},"\u002Fen\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":45},"\u002Fen\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":47},"\u002Fen\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":49},"\u002Fen\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":51},"\u002Fen\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":53},"\u002Fen\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":55},"\u002Fen\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":57},"\u002Fen\u002Farticle\u002Fsetup-antigravity-2",{"path":59},"\u002Fen\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":61},"\u002Fen\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":63},"\u002Fen\u002Farticle\u002Fsync-obsidian-across-devices",{"path":65},"\u002Fen\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":67},"\u002Fen\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":69},"\u002Fen\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":71},"\u002Fen\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":73},"\u002Fes\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":75},"\u002Fes\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":77},"\u002Fes\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":79},"\u002Fes\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":81},"\u002Fes\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":83},"\u002Fes\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":85},"\u002Fes\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":87},"\u002Fes\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":89},"\u002Fes\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":91},"\u002Fes\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":93},"\u002Fes\u002Farticle\u002Fsetup-antigravity-2",{"path":95},"\u002Fes\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":97},"\u002Fes\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":99},"\u002Fes\u002Farticle\u002Fsync-obsidian-across-devices",{"path":101},"\u002Fes\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":103},"\u002Fes\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":105},"\u002Fes\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":107},"\u002Fes\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":109},"\u002Ffr\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":111},"\u002Ffr\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":113},"\u002Ffr\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":115},"\u002Ffr\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":117},"\u002Ffr\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":119},"\u002Ffr\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":121},"\u002Ffr\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":123},"\u002Ffr\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":125},"\u002Ffr\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":127},"\u002Ffr\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":129},"\u002Ffr\u002Farticle\u002Fsetup-antigravity-2",{"path":131},"\u002Ffr\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":133},"\u002Ffr\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":135},"\u002Ffr\u002Farticle\u002Fsync-obsidian-across-devices",{"path":137},"\u002Ffr\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":139},"\u002Ffr\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":141},"\u002Ffr\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":143},"\u002Ffr\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":145},"\u002Fid\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":147},"\u002Fid\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":149},"\u002Fid\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":151},"\u002Fid\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":153},"\u002Fid\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":155},"\u002Fid\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":157},"\u002Fid\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":159},"\u002Fid\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":161},"\u002Fid\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":163},"\u002Fid\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":165},"\u002Fid\u002Farticle\u002Fsetup-antigravity-2",{"path":167},"\u002Fid\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":169},"\u002Fid\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":171},"\u002Fid\u002Farticle\u002Fsync-obsidian-across-devices",{"path":173},"\u002Fid\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":175},"\u002Fid\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":177},"\u002Fid\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":179},"\u002Fid\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":181},"\u002Fja\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":183},"\u002Fja\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":185},"\u002Fja\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":187},"\u002Fja\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":189},"\u002Fja\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":191},"\u002Fja\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":193},"\u002Fja\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":195},"\u002Fja\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":197},"\u002Fja\u002Farticle\u002Fsetup-antigravity-2",{"path":199},"\u002Fja\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":201},"\u002Fja\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":203},"\u002Fja\u002Farticle\u002Fsync-obsidian-across-devices",{"path":205},"\u002Fja\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":207},"\u002Fja\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":209},"\u002Fja\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":211},"\u002Fja\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":213},"\u002Fpt\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":215},"\u002Fpt\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":217},"\u002Fpt\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":219},"\u002Fpt\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":221},"\u002Fpt\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":223},"\u002Fpt\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":225},"\u002Fpt\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":227},"\u002Fpt\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":229},"\u002Fpt\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":231},"\u002Fpt\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":233},"\u002Fpt\u002Farticle\u002Fsetup-antigravity-2",{"path":235},"\u002Fpt\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":237},"\u002Fpt\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":239},"\u002Fpt\u002Farticle\u002Fsync-obsidian-across-devices",{"path":241},"\u002Fpt\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":243},"\u002Fpt\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":245},"\u002Fpt\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":247},"\u002Fpt\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":249},"\u002Ftw\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":251},"\u002Ftw\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":253},"\u002Ftw\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":255},"\u002Ftw\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":257},"\u002Ftw\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":259},"\u002Ftw\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":261},"\u002Ftw\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":263},"\u002Ftw\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":265},"\u002Ftw\u002Farticle\u002Fsetup-antigravity-2",{"path":267},"\u002Ftw\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":269},"\u002Ftw\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":271},"\u002Ftw\u002Farticle\u002Fsync-obsidian-across-devices",{"path":273},"\u002Ftw\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":275},"\u002Ftw\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":277},"\u002Ftw\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":279},"\u002Ftw\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":281},"\u002Fvi\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":283},"\u002Fvi\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":285},"\u002Fvi\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":287},"\u002Fvi\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":289},"\u002Fvi\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":291},"\u002Fvi\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":293},"\u002Fvi\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":295},"\u002Fvi\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":297},"\u002Fvi\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":299},"\u002Fvi\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":301},"\u002Fvi\u002Farticle\u002Fsetup-antigravity-2",{"path":303},"\u002Fvi\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":305},"\u002Fvi\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":307},"\u002Fvi\u002Farticle\u002Fsync-obsidian-across-devices",{"path":309},"\u002Fvi\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":311},"\u002Fvi\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":313},"\u002Fvi\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":315},"\u002Fvi\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":317},"\u002Fzh\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":319},"\u002Fzh\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":321},"\u002Fzh\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":323},"\u002Fzh\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":325},"\u002Fzh\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":327},"\u002Fzh\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":329},"\u002Fzh\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":331},"\u002Fzh\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":333},"\u002Fzh\u002Farticle\u002Fsetup-antigravity-2",{"path":335},"\u002Fzh\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":337},"\u002Fzh\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":339},"\u002Fzh\u002Farticle\u002Fsync-obsidian-across-devices",{"path":341},"\u002Fzh\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":343},"\u002Fzh\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":345},"\u002Fzh\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":347},"\u002Fzh\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",[349,353,357,361,365,369,373,377,381,385,389,393,397,401,405,409,413,417],{"title":350,"path":351,"stem":352},"AI Agent Skills: What They Are & How to Create Them","\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them","en\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"title":354,"path":355,"stem":356},"Bringing Buzz to DeepSeek Harness: Taught to Speak Nostr","\u002Farticle\u002Fbringing-buzz-to-deepseek-harness","en\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"title":358,"path":359,"stem":360},"Solving AI Agent Skills Fragmentation with npx skills","\u002Farticle\u002Fcentralised-the-skills-for-agents","en\u002Farticle\u002Fcentralised-the-skills-for-agents",{"title":362,"path":363,"stem":364},"How to Expose Hermes Agent Privately with Cloudflare WARP","\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp","en\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"title":366,"path":367,"stem":368},"How AI Agent Skills Replace Nuxt App Scaffolding Scripts","\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts","en\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"title":370,"path":371,"stem":372},"Stop Exposing Your Vault: Secure NodeWarden with Cloudflare","\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare","en\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"title":374,"path":375,"stem":376},"How to Deploy Hermes Agent on a Linux VPS","\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server","en\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"title":378,"path":379,"stem":380},"Self-Host Your Travel Itineraries with TREK and Docker","\u002Farticle\u002Fself-hosted-travel-planner-trek","en\u002Farticle\u002Fself-hosted-travel-planner-trek",{"title":382,"path":383,"stem":384},"Self-Host Block's Buzz: Shared AI Agent Workspace","\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues","en\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"title":386,"path":387,"stem":388},"How to Self-Host a BitWarden Compatible Server Nodewarden","\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare","en\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"title":390,"path":391,"stem":392},"Google Antigravity 2 Hands-On: Setup & First Impressions","\u002Farticle\u002Fsetup-antigravity-2","en\u002Farticle\u002Fsetup-antigravity-2",{"title":394,"path":395,"stem":396},"NetSuite AI Connector Guide: MCP Setup & Use Cases","\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude","en\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"title":398,"path":399,"stem":400},"Switch Between Multiple Cloudflare WARP Orgs on Mac","\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac","en\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"title":402,"path":403,"stem":404},"How to Sync Obsidian Vaults Across Devices Securely","\u002Farticle\u002Fsync-obsidian-across-devices","en\u002Farticle\u002Fsync-obsidian-across-devices",{"title":406,"path":407,"stem":408},"Testing Claude Fable 5: A Financial Analysis Review","\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis","en\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"title":410,"path":411,"stem":412},"Guide to Browser and Scheduler in Antigravity 2","\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2","en\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"title":414,"path":415,"stem":416},"Build a Persistent AI Memory System on Cloudflare","\u002Farticle\u002Fuse-cloudflare-as-ai-memory","en\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"title":418,"path":419,"stem":420},"Antigravity 2 in Action: AI Agents, Skills, and MCP","\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2","en\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"id":422,"title":423,"author":424,"body":425,"category":845,"date":847,"description":848,"extension":849,"image":850,"imageAlt":851,"isPublished":513,"meta":852,"minRead":505,"navigation":513,"path":145,"seo":858,"stem":859,"tags":860,"updatedAt":865,"__hash__":866},"article\u002Fid\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them.md","Skill Agen AI: Apa Itu dan Bagaimana Cara Membuatnya","",{"type":426,"value":427,"toc":835},"minimark",[428,433,447,460,543,549,553,556,565,572,577,635,646,652,655,711,715,722,729,732,744,748,793,796,813,817,828,831],[429,430,432],"h2",{"id":431},"apa-itu-skill-agen-ai","Apa Itu Skill Agen AI?",[434,435,436,437,441,442,446],"p",{},"Skill agen (agent skill) adalah ",[438,439,440],"strong",{},"kumpulan instruksi"," yang dapat digunakan kembali — sebuah prosedur standar yang memberi tahu agen cara melakukan jenis tugas tertentu dengan baik. Skill ini terdiri dari satu file Markdown bernama ",[443,444,445],"code",{},"SKILL.md"," dan dapat menyertakan file lain yang diperlukan untuk tugas tersebut, seperti dokumen referensi, templat, atau skrip yang dapat dieksekusi.",[434,448,449,450,459],{},"Mari kita ambil skill ",[451,452,456],"a",{"href":453,"rel":454},"https:\u002F\u002Fgithub.com\u002Fmattpocock\u002Fskills\u002Fblob\u002F733d312884b3878a9a9cff693c5886943753a741\u002Fskills\u002Fproductivity\u002Fgrill-me\u002FSKILL.md",[455],"nofollow",[443,457,458],{},"grill-me"," sebagai contoh:",[461,462,466],"pre",{"className":463,"code":464,"language":465,"meta":424,"style":424},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","---\nname: grill-me\ndescription: Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions \"grill me\".\n---\n\nInterview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.\n\nAsk the questions one at a time.\n\nIf a question can be answered by exploring the codebase, explore the codebase instead.\n","yaml",[443,467,468,477,492,503,508,515,521,526,532,537],{"__ignoreMap":424},[469,470,473],"span",{"class":471,"line":472},"line",1,[469,474,476],{"class":475},"sBMFI","---\n",[469,478,480,484,488],{"class":471,"line":479},2,[469,481,483],{"class":482},"swJcz","name",[469,485,487],{"class":486},"sMK4o",":",[469,489,491],{"class":490},"sfazB"," grill-me\n",[469,493,495,498,500],{"class":471,"line":494},3,[469,496,497],{"class":482},"description",[469,499,487],{"class":486},[469,501,502],{"class":490}," Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions \"grill me\".\n",[469,504,506],{"class":471,"line":505},4,[469,507,476],{"class":475},[469,509,511],{"class":471,"line":510},5,[469,512,514],{"emptyLinePlaceholder":513},true,"\n",[469,516,518],{"class":471,"line":517},6,[469,519,520],{"class":490},"Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.\n",[469,522,524],{"class":471,"line":523},7,[469,525,514],{"emptyLinePlaceholder":513},[469,527,529],{"class":471,"line":528},8,[469,530,531],{"class":490},"Ask the questions one at a time.\n",[469,533,535],{"class":471,"line":534},9,[469,536,514],{"emptyLinePlaceholder":513},[469,538,540],{"class":471,"line":539},10,[469,541,542],{"class":490},"If a question can be answered by exploring the codebase, explore the codebase instead.\n",[434,544,545,546,548],{},"File ",[443,547,445],{}," berisi blok kecil metadata dan isi instruksi. Metadata terdiri dari nama dan deskripsi skill, yang dimuat oleh agen AI saat pertama kali dijalankan.",[429,550,552],{"id":551},"bagaimana-cara-kerja-skill-agen-ai-progressive-disclosure","Bagaimana Cara Kerja Skill Agen AI: Progressive Disclosure",[434,554,555],{},"Pada awalnya, hanya nama dan deskripsi skill yang dimuat ke dalam konteks. Ketika permintaan pengguna cocok dengan deskripsi skill, barulah isi instruksi lengkap dimuat ke dalam konteks yang sama.",[434,557,558,559,564],{},"Mari kita lihat bagaimana skill ",[451,560,562],{"href":453,"rel":561},[455],[443,563,458],{}," digunakan.",[434,566,567],{},[568,569],"img",{"alt":570,"src":571},"Diagram urutan yang mengilustrasikan mekanisme pengungkapan progresif untuk eksekusi keahlian agen AI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FAI%20Agent%20Skills%20What%20They%20Are%20%26%20How%20to%20Create%20Them\u002Fai-agent-skill-progressive-disclosure-sequence-diagram.webp",[573,574,576],"h3",{"id":575},"langkah-demi-langkah","Langkah demi Langkah",[578,579,580,587,593,599,605,619,629],"ol",{},[581,582,583,586],"li",{},[438,584,585],{},"Permintaan (Request)"," — Pengguna meminta sesuatu kepada agen (\"uji ketahanan desain alur kerja saya\").",[581,588,589,592],{},[438,590,591],{},"Prompt pemilihan (Selection prompt)"," — Permintaan pengguna, bersama dengan deskripsi dari semua skill yang tersedia, dikirim ke LLM.",[581,594,595,598],{},[438,596,597],{},"LLM memilih"," — LLM membandingkan permintaan dengan setiap deskripsi dan mengembalikan skill yang cocok.",[581,600,601,604],{},[438,602,603],{},"Konfirmasi"," — Agen menampilkan skill yang diusulkan kepada pengguna untuk dikonfirmasi (atau ditolak\u002Fdisesuaikan).",[581,606,607,610,611,615,616,618],{},[438,608,609],{},"Instruksi dimuat"," — Agen mengambil instruksi ",[612,613,614],"em",{},"lengkap"," untuk skill yang telah dikonfirmasi: isi dari file ",[443,617,445],{},".",[581,620,621,624,625,628],{},[438,622,623],{},"Prompt eksekusi (Execution prompt)"," — Permintaan pengguna ",[438,626,627],{},"ditambah instruksi skill yang dipilih"," dikirim ke LLM.",[581,630,631,634],{},[438,632,633],{},"Respons"," — LLM menghasilkan output, yaitu pertanyaan pengujian pertama.",[434,636,637,638,645],{},"Sekarang mari gunakan ",[451,639,642],{"href":640,"rel":641},"https:\u002F\u002Fgithub.com\u002Fcoleam00\u002Fexcalidraw-diagram-skill",[455],[443,643,644],{},"excalidraw-diagram-skill"," untuk mengilustrasikan bagaimana skill yang memiliki dokumen referensi digunakan:",[434,647,648],{},[568,649],{"alt":650,"src":651},"Diagram urutan yang menunjukkan agen AI mengeksekusi keahlian yang dimuat dengan file referensi dan templat eksternal","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FAI%20Agent%20Skills%20What%20They%20Are%20%26%20How%20to%20Create%20Them\u002Fai-agent-skill-with-reference-files-sequence-diagram.webp",[573,653,576],{"id":654},"langkah-demi-langkah-1",[578,656,657,662,668,677,681,694,702],{},[581,658,659,661],{},[438,660,585],{}," — Pengguna meminta sesuatu kepada agen (\"gambarkan alur kerja proses deployment\").",[581,663,664,667],{},[438,665,666],{},"Prompt pemilihan"," — Permintaan pengguna, bersama dengan deskripsi semua skill yang tersedia, dikirim ke LLM.",[581,669,670,672,673,676],{},[438,671,597],{}," — LLM membandingkan permintaan dengan setiap deskripsi dan mengembalikan skill yang cocok. Di sini, \"gambarkan alur kerja\" cocok dengan deskripsi ",[443,674,675],{},"excalidraw-diagram",", sehingga skill tersebut dipilih.",[581,678,679,604],{},[438,680,603],{},[581,682,683,610,685,687,688,690,691,693],{},[438,684,609],{},[612,686,614],{}," untuk skill yang telah dikonfirmasi: isi ",[443,689,445],{}," beserta file referensi lainnya (untuk ",[443,692,675],{},", ini mencakup palet warna, skema JSON, dan templat elemen).",[581,695,696,624,699,701],{},[438,697,698],{},"Prompt eksekusi",[438,700,627],{}," dikirim ke LLM. Model sekarang memiliki metodologi mendalam yang dibutuhkannya.",[581,703,704,706,707,710],{},[438,705,633],{}," — LLM menghasilkan output (file JSON ",[443,708,709],{},".excalidraw","), yang kemudian dikembalikan oleh agen kepada pengguna.",[429,712,714],{"id":713},"skill-agen-ai-vs-tools-dan-mcp","Skill Agen AI vs. Tools dan MCP",[434,716,717,718,721],{},"Skill tidak menggantikan prompt, tools, atau integrasi Model Context Protocol (MCP). Tools dan integrasi MCP memperluas jangkauan agen ke sistem eksternal — seperti melakukan query ke database, memanggil API, dan sebagainya. Sementara itu, skill memperdalam keahlian praktis (",[612,719,720],{},"know-how",") agen untuk menyelesaikan suatu tugas.",[434,723,724,725,728],{},"Sebuah MCP seperti ",[451,726,727],{"href":395},"Cara Setup NetSuite MCP di ChatGPT dan Claude"," memungkinkan agen menjawab pertanyaan pengguna dengan mengakses data keuangan dan operasional langsung di NetSuite. Kemudian, skill pelaporan operasional NetSuite akan memandu agen tentang cara menyusun laporan tersebut dan menyajikan jawabannya sebagai laporan yang rapi kepada pengguna.",[434,730,731],{},"Beberapa skenario penggunaan skill meliputi:",[733,734,735,738,741],"ul",{},[581,736,737],{},"Alur kerja multi-langkah (multi-step workflows)",[581,739,740],{},"Pemrosesan dokumen, seperti mengekstrak data dari PDF",[581,742,743],{},"Standarisasi pembuatan kode (code-generation)",[429,745,747],{"id":746},"cara-membuat-skill-agen-ai","Cara Membuat Skill Agen AI",[578,749,750,760,774,783],{},[581,751,752,755,756,759],{},[438,753,754],{},"Buat folder"," dengan nama yang mewakili skill tersebut (misalnya ",[443,757,758],{},"netsuite-operation-report\u002F",").",[581,761,762,767,768,770,771,773],{},[438,763,764,765],{},"Tulis ",[443,766,445],{}," dengan menyertakan ",[443,769,483],{},", ",[443,772,497],{}," yang tajam, dan isi instruksi yang ringkas (di bawah 200 kata).",[581,775,776,779,780,782],{},[438,777,778],{},"Tambahkan aset\u002Fsumber daya"," yang dibutuhkan tugas tersebut — dokumen referensi, templat, skrip. Jaga agar ",[443,781,445],{}," tetap pendek dan buat tautan ke detailnya.",[581,784,785,788,789,792],{},[438,786,787],{},"Instal skill"," di tempat yang dapat ditemukan oleh agen. Rujuk ke ",[451,790,791],{"href":359},"Sentralisasi Skill untuk Agen AI"," untuk informasi cara mengelola skill di berbagai agen.",[434,794,795],{},"Beberapa tips menulis skill yang baik:",[733,797,798,801,807,810],{},[581,799,800],{},"Tulis deskripsi untuk pemicu sistem (trigger), bukan untuk dibaca manusia.",[581,802,803,804,806],{},"Jaga agar ",[443,805,445],{}," tetap ramping — di bawah 200 kata. Letakkan kasus umum di bagian isi, dan biarkan kasus khusus berada di dokumen referensi.",[581,808,809],{},"Gunakan skrip untuk hal-hal yang bersifat deterministik. Jangan meminta LLM melakukan perhitungan aritmatika.",[581,811,812],{},"Gunakan versi. Lakukan commit ke git.",[429,814,816],{"id":815},"kesimpulan","Kesimpulan",[434,818,819,820,823,824,827],{},"Berbeda dengan tools dan MCP yang mendefinisikan ",[612,821,822],{},"apa yang harus dihubungkan",", skill agen mengemas ",[612,825,826],{},"bagaimana cara melakukan pekerjaan",". Keduanya adalah pelengkap penting, bukan pengganti satu sama lain.",[434,829,830],{},"With memanfaatkan progressive disclosure, skill menjaga context window agen Anda tetap bersih dan efisien — memuat instruksi mendalam, dokumen referensi, dan skrip eksekusi hanya ketika permintaan pengguna memicunya.",[832,833,834],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":424,"searchDepth":479,"depth":494,"links":836},[837,838,842,843,844],{"id":431,"depth":479,"text":432},{"id":551,"depth":479,"text":552,"children":839},[840,841],{"id":575,"depth":494,"text":576},{"id":654,"depth":494,"text":576},{"id":713,"depth":479,"text":714},{"id":746,"depth":479,"text":747},{"id":815,"depth":479,"text":816},[846],"ai-agents","2026-06-26","Pelajari apa itu skill agen AI, cara kerja progressive disclosure, dan langkah praktis membangun skill kustom yang dapat digunakan kembali untuk alur kerja.","md","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FAI%20Agent%20Skills%20What%20They%20Are%20%26%20How%20to%20Create%20Them\u002FID-AI-Agent-Skills-What-They-Are-%26-How-to-Create-Them.webp","Panduan Skill Agen AI: Cara Membuat Workflow Reusable",{"schemaOrg":853,"robots":856,"sitemap":857},[854],{"@type":855,"headline":423,"description":848},"HowTo","index, follow",{"lastmod":847},{"title":851,"description":848,"ogTitle":423,"ogDescription":848,"twitterTitle":423,"twitterDescription":848},"id\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",[861,862,863,864],"Agen AI","Keahlian Agen","Alur Kerja yang Dapat Digunakan Kembali","Tutorial AI",null,"UBcL6WjIce5K5DByxI6GshOgI77Q1AiBfEbFA11RXeo",{"surround":868,"related":2105},[869,1544],{"id":870,"title":871,"author":424,"body":872,"category":1515,"date":1516,"description":1517,"extension":849,"image":1518,"imageAlt":1519,"isPublished":513,"meta":1520,"minRead":510,"navigation":513,"path":157,"seo":1535,"stem":1537,"tags":1538,"updatedAt":865,"__hash__":1543},"article\u002Fid\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server.md","Cara Menginstal dan Mendeploy Hermes Agent di VPS Linux",{"type":426,"value":873,"toc":1504},[874,878,881,884,888,892,895,910,916,919,949,956,985,991,996,1011,1023,1031,1036,1054,1058,1061,1083,1089,1092,1104,1115,1126,1157,1161,1172,1182,1193,1207,1214,1224,1230,1258,1274,1278,1284,1296,1301,1337,1341,1344,1360,1366,1445,1448,1496,1498,1501],[429,875,877],{"id":876},"mengapa-menghos-hermes-agent-di-vps-remote","Mengapa Menghos Hermes Agent di VPS Remote?",[434,879,880],{},"Karena Hermes Agent mampu menjalankan tugas latar belakang, menjadwalkan tugas, dan merespons panggilan webhook, kita membutuhkan mesin yang siaga 24\u002F7. Komputer lokal bisa kehilangan daya, terputus dari internet, atau kehabisan sumber daya perangkat keras. Server jarak jauh (remote server) menjamin uptime 99% dan memudahkan penskalaan sumber daya komputasi kapan pun dibutuhkan.",[434,882,883],{},"Ada beberapa penyedia virtual private server (VPS) terjangkau di luar sana seperti Hetzner, Hostinger, dan Contabo. Kami telah menggunakan Contabo selama beberapa waktu, dan sejauh ini kinerjanya sangat memuaskan.",[429,885,887],{"id":886},"cara-mengonfigurasi-hermes-agent-di-vps-linux","Cara Mengonfigurasi Hermes Agent di VPS Linux",[573,889,891],{"id":890},"langkah-1-hubungkan-ke-vps-anda","Langkah 1: Hubungkan ke VPS Anda",[434,893,894],{},"Buka terminal dan lakukan SSH ke mesin remote Anda:",[461,896,900],{"className":897,"code":898,"language":899,"meta":424,"style":424},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","ssh root@your_server_ip\n","bash",[443,901,902],{"__ignoreMap":424},[469,903,904,907],{"class":471,"line":472},[469,905,906],{"class":475},"ssh",[469,908,909],{"class":490}," root@your_server_ip\n",[434,911,912],{},[568,913],{"alt":914,"src":915},"Koneksi SSH ke server VPS Linux di dalam terminal","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fvps-terminal-ssh-connection.webp",[434,917,918],{},"Pastikan paket server Anda sudah mutakhir:",[461,920,922],{"className":897,"code":921,"language":899,"meta":424,"style":424},"sudo apt update && sudo apt upgrade -y\n",[443,923,924],{"__ignoreMap":424},[469,925,926,929,932,935,938,941,943,946],{"class":471,"line":472},[469,927,928],{"class":475},"sudo",[469,930,931],{"class":490}," apt",[469,933,934],{"class":490}," update",[469,936,937],{"class":486}," &&",[469,939,940],{"class":475}," sudo",[469,942,931],{"class":490},[469,944,945],{"class":490}," upgrade",[469,947,948],{"class":490}," -y\n",[434,950,951,952,955],{},"Tambahkan pengguna baru, ",[443,953,954],{},"hermes",", atau nama pengguna pilihan Anda:",[461,957,959],{"className":897,"code":958,"language":899,"meta":424,"style":424},"sudo adduser hermes \nsudo passwd hermes\n",[443,960,961,975],{"__ignoreMap":424},[469,962,963,965,968,971],{"class":471,"line":472},[469,964,928],{"class":475},[469,966,967],{"class":490}," adduser",[469,969,970],{"class":490}," hermes",[469,972,974],{"class":973},"sTEyZ"," \n",[469,976,977,979,982],{"class":471,"line":479},[469,978,928],{"class":475},[469,980,981],{"class":490}," passwd",[469,983,984],{"class":490}," hermes\n",[434,986,987,988,487],{},"Matikan login kata sandi ",[443,989,990],{},"root",[578,992,993],{},[581,994,995],{},"Buka file konfigurasi SSH:",[461,997,999],{"className":897,"code":998,"language":899,"meta":424,"style":424},"sudo nano \u002Fetc\u002Fssh\u002Fsshd_config\n",[443,1000,1001],{"__ignoreMap":424},[469,1002,1003,1005,1008],{"class":471,"line":472},[469,1004,928],{"class":475},[469,1006,1007],{"class":490}," nano",[469,1009,1010],{"class":490}," \u002Fetc\u002Fssh\u002Fsshd_config\n",[578,1012,1013],{"start":479},[581,1014,1015,1016,1019,1020,487],{},"Temukan baris ",[443,1017,1018],{},"PermitRootLogin"," dan ubah nilainya menjadi ",[443,1021,1022],{},"no",[461,1024,1029],{"className":1025,"code":1027,"language":1028,"meta":424},[1026],"language-text","PermitRootLogin no\n","text",[443,1030,1027],{"__ignoreMap":424},[578,1032,1033],{"start":494},[581,1034,1035],{},"Simpan file tersebut lalu mulai ulang layanan SSH:",[461,1037,1039],{"className":897,"code":1038,"language":899,"meta":424,"style":424},"sudo systemctl restart ssh\n",[443,1040,1041],{"__ignoreMap":424},[469,1042,1043,1045,1048,1051],{"class":471,"line":472},[469,1044,928],{"class":475},[469,1046,1047],{"class":490}," systemctl",[469,1049,1050],{"class":490}," restart",[469,1052,1053],{"class":490}," ssh\n",[573,1055,1057],{"id":1056},"langkah-2-instal-hermes-agent","Langkah 2: Instal Hermes Agent",[434,1059,1060],{},"Jalankan perintah berikut:",[461,1062,1064],{"className":897,"code":1063,"language":899,"meta":424,"style":424},"curl -fsSL https:\u002F\u002Fhermes-agent.nousresearch.com\u002Finstall.sh | bash\n",[443,1065,1066],{"__ignoreMap":424},[469,1067,1068,1071,1074,1077,1080],{"class":471,"line":472},[469,1069,1070],{"class":475},"curl",[469,1072,1073],{"class":490}," -fsSL",[469,1075,1076],{"class":490}," https:\u002F\u002Fhermes-agent.nousresearch.com\u002Finstall.sh",[469,1078,1079],{"class":486}," |",[469,1081,1082],{"class":475}," bash\n",[434,1084,1085],{},[568,1086],{"alt":1087,"src":1088},"Menjalankan skrip instalasi Hermes Agent di terminal","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-agent-installation-terminal.webp",[434,1090,1091],{},"Setelah terinstal, verifikasi instalasi dengan mengetik:",[461,1093,1095],{"className":897,"code":1094,"language":899,"meta":424,"style":424},"hermes --version\n",[443,1096,1097],{"__ignoreMap":424},[469,1098,1099,1101],{"class":471,"line":472},[469,1100,954],{"class":475},[469,1102,1103],{"class":490}," --version\n",[434,1105,1106,1107,1110,1111],{},"Jalankan ",[443,1108,1109],{},"hermes setup"," untuk mengonfigurasi Hermes Agent:\n",[568,1112],{"alt":1113,"src":1114},"Menjalankan perintah hermes setup di terminal untuk memulai konfigurasi","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-agent-setup-wizard.webp",[434,1116,1117,1118,1121,1122],{},"Pilih penyedia LLM, mulai dengan ",[443,1119,1120],{},"DeepSeek"," dan tambahkan yang lain nanti.\n",[568,1123],{"alt":1124,"src":1125},"Memilih DeepSeek sebagai penyedia LLM pada penyiapan Hermes","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-llm-provider-selection.webp",[434,1127,1128,1129,1131,1132,1136,1140,1141,1144,1145,1140,1149,1152,1153],{},"Masukkan API key ",[443,1130,1120],{}," Anda:\n",[568,1133],{"alt":1134,"src":1135},"Memasukkan API key DeepSeek di dalam terminal","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-enter-api-key.webp",[568,1137],{"alt":1138,"src":1139},"Konfirmasi keberhasilan API key untuk penyedia LLM","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-api-key-success.webp","\nPilih ",[443,1142,1143],{},"local machine"," untuk menjalankan Hermes Agent:\n",[568,1146],{"alt":1147,"src":1148},"Memilih local machine sebagai lingkungan eksekusi Hermes Agent","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-select-local-machine.webp",[443,1150,1151],{},"Telegram"," di bagian saluran (channels). Saluran lainnya dapat dikonfigurasi nanti.\n",[568,1154],{"alt":1155,"src":1156},"Memilih Telegram sebagai saluran komunikasi dalam konfigurasi Hermes","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-select-telegram-channel.webp",[573,1158,1160],{"id":1159},"langkah-3-integrasi-dengan-telegram","Langkah 3: Integrasi dengan Telegram",[434,1162,1163,1164,1167,1168],{},"Pilih ",[443,1165,1166],{},"[2]"," untuk menggunakan bot Telegram.\n",[568,1169],{"alt":1170,"src":1171},"Memilih opsi untuk mengonfigurasi integrasi bot Telegram","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-bot-integration-option.webp",[434,1173,1174,1175,1177,1178],{},"Buka ",[443,1176,1151],{}," dan cari 'BotFather'.\n",[568,1179],{"alt":1180,"src":1181},"Mencari BotFather di dalam aplikasi Telegram","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-search-botfather.webp",[434,1183,1184,1185,1188,1189],{},"Klik ",[443,1186,1187],{},"Open"," untuk membuka 'BotFather'.\n",[568,1190],{"alt":1191,"src":1192},"Membuka antarmuka obrolan dengan BotFather di Telegram","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-open-botfather-chat.webp",[434,1194,1184,1195,1198,1199,1202,1203],{},[443,1196,1197],{},"Create a New Bot"," (atau gunakan perintah ",[443,1200,1201],{},"\u002Fnewbot",").\n",[568,1204],{"alt":1205,"src":1206},"Mengirim perintah newbot ke BotFather untuk membuat bot Telegram baru","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fbotfather-create-new-bot.webp",[434,1208,1209,1210],{},"Isi nama-nama yang diminta lalu buat bot tersebut.\n",[568,1211],{"alt":1212,"src":1213},"Mengonfigurasi nama dan nama pengguna untuk bot Telegram baru","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fbotfather-bot-details-configured.webp",[434,1215,1184,1216,1219,1220],{},[443,1217,1218],{},"Copy"," untuk menyalin token dan tempelkan kembali ke terminal.\n",[568,1221],{"alt":1222,"src":1223},"Menyalin token API HTTP dari bot Telegram yang baru dibuat","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fbotfather-copy-http-api-token.webp",[434,1225,1226,1227,1229],{},"Temukan ID akun pengguna ",[443,1228,1151],{}," Anda dan tambahkan ke 'Allowed user list':",[733,1231,1232,1242,1255],{},[581,1233,1234,1235,1237,1238],{},"Cari '@raw_data_bot' di ",[443,1236,1151],{},".\n",[568,1239],{"alt":1240,"src":1241},"Mencari raw data bot di Telegram untuk mendapatkan ID pengguna","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-search-raw-data-bot.webp",[581,1243,1184,1244,1247,1248,1237,1251],{},[443,1245,1246],{},"RawDataBot"," lalu klik tombol Start. ID pengguna Anda akan ditampilkan di sebelah ",[443,1249,1250],{},"P.S. Your ID:",[568,1252],{"alt":1253,"src":1254},"Memulai RawDataBot untuk melihat ID akun pengguna","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-raw-data-bot-user-id.webp",[581,1256,1257],{},"Salin ID pengguna tersebut dan tempelkan ke terminal.",[434,1259,1260,1261,1265,1266,1270],{},"Karena kita menjalankannya di cloud, kita ingin agar layanan ini dimulai secara otomatis.\n",[568,1262],{"alt":1263,"src":1264},"Mengonfigurasi opsi autostart untuk layanan systemd Hermes","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-autostart-service-option.webp","\nBiarkan semuanya sesuai bawaan (default):\n",[568,1267],{"alt":1268,"src":1269},"Membiarkan konfigurasi pengaturan pada nilai default di terminal","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-leave-defaults-1.webp",[568,1271],{"alt":1272,"src":1273},"Menyelesaikan opsi penyiapan default pada konfigurasi Hermes","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-leave-defaults-2.webp",[429,1275,1277],{"id":1276},"menguji-hermes-agent-anda-dengan-bot-telegram","Menguji Hermes Agent Anda dengan Bot Telegram",[434,1279,1280,1281,487],{},"Jalankan perintah berikut untuk memulai ",[443,1282,1283],{},"hermes gateway",[461,1285,1287],{"className":897,"code":1286,"language":899,"meta":424,"style":424},"hermes gateway\n",[443,1288,1289],{"__ignoreMap":424},[469,1290,1291,1293],{"class":471,"line":472},[469,1292,954],{"class":475},[469,1294,1295],{"class":490}," gateway\n",[434,1297,1174,1298,1300],{},[443,1299,1151],{}," and tambahkan bot yang telah dibuat, '@tech_cloud_hermes_bot', ke obrolan Anda.",[733,1302,1303,1316,1327],{},[581,1304,1305,1306,1308,1309,1237,1312],{},"Ketik '\u002Fnew' di ",[443,1307,1151],{}," untuk memulai sesi baru ",[443,1310,1311],{},"Hermes Agent",[568,1313],{"alt":1314,"src":1315},"Mengetik perintah new di Telegram untuk memulai sesi baru Hermes Agent","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-chat-hermes-new-session.webp",[581,1317,1318,1319,1322,1323],{},"Mengetik ",[443,1320,1321],{},"\u002Fcommands"," akan menampilkan daftar semua perintah yang tersedia.\n",[568,1324],{"alt":1325,"src":1326},"Mengetik commands di Telegram untuk melihat instruksi Hermes yang tersedia","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-chat-hermes-commands-list.webp",[581,1328,1318,1329,1332,1333],{},[443,1330,1331],{},"\u002Fmodel"," untuk melihat daftar LLM yang tersedia.\n",[568,1334],{"alt":1335,"src":1336},"Mengetik model di Telegram untuk melihat daftar LLM yang aktif","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-chat-hermes-model-selection.webp",[429,1338,1340],{"id":1339},"menjalankan-hermes-gateway-sebagai-layanan-latar-belakang","Menjalankan Hermes Gateway sebagai Layanan Latar Belakang",[434,1342,1343],{},"Buat file layanan (service file):",[461,1345,1349],{"className":1346,"code":1347,"language":1348,"meta":424,"style":424},"language-shell shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","sudo nano \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-gateway.service\n","shell",[443,1350,1351],{"__ignoreMap":424},[469,1352,1353,1355,1357],{"class":471,"line":472},[469,1354,928],{"class":475},[469,1356,1007],{"class":490},[469,1358,1359],{"class":490}," \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-gateway.service\n",[434,1361,1362,1363,1365],{},"Tempelkan kode berikut, ganti ",[443,1364,954],{}," pada '\u002Fhome\u002Fhermes' dengan nama pengguna pilihan Anda:",[461,1367,1371],{"className":1368,"code":1369,"language":1370,"meta":424,"style":424},"language-ini shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[Unit]\nDescription=Hermes Gateway\nAfter=network.target\n\n[Service]\nUser=hermes\nWorkingDirectory=\u002Fhome\u002Fhermes\nExecStart=\u002Fhome\u002Fhermes\u002F.local\u002Fbin\u002Fhermes gateway\nRestart=always\nRestartSec=10\nEnvironment=PATH=\u002Fhome\u002Fhermes\u002F.local\u002Fbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fbin:\u002Fbin\n\n[Install]\nWantedBy=multi-user.target\n","ini",[443,1372,1373,1378,1383,1388,1392,1397,1402,1407,1412,1417,1422,1428,1433,1439],{"__ignoreMap":424},[469,1374,1375],{"class":471,"line":472},[469,1376,1377],{},"[Unit]\n",[469,1379,1380],{"class":471,"line":479},[469,1381,1382],{},"Description=Hermes Gateway\n",[469,1384,1385],{"class":471,"line":494},[469,1386,1387],{},"After=network.target\n",[469,1389,1390],{"class":471,"line":505},[469,1391,514],{"emptyLinePlaceholder":513},[469,1393,1394],{"class":471,"line":510},[469,1395,1396],{},"[Service]\n",[469,1398,1399],{"class":471,"line":517},[469,1400,1401],{},"User=hermes\n",[469,1403,1404],{"class":471,"line":523},[469,1405,1406],{},"WorkingDirectory=\u002Fhome\u002Fhermes\n",[469,1408,1409],{"class":471,"line":528},[469,1410,1411],{},"ExecStart=\u002Fhome\u002Fhermes\u002F.local\u002Fbin\u002Fhermes gateway\n",[469,1413,1414],{"class":471,"line":534},[469,1415,1416],{},"Restart=always\n",[469,1418,1419],{"class":471,"line":539},[469,1420,1421],{},"RestartSec=10\n",[469,1423,1425],{"class":471,"line":1424},11,[469,1426,1427],{},"Environment=PATH=\u002Fhome\u002Fhermes\u002F.local\u002Fbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fbin:\u002Fbin\n",[469,1429,1431],{"class":471,"line":1430},12,[469,1432,514],{"emptyLinePlaceholder":513},[469,1434,1436],{"class":471,"line":1435},13,[469,1437,1438],{},"[Install]\n",[469,1440,1442],{"class":471,"line":1441},14,[469,1443,1444],{},"WantedBy=multi-user.target\n",[434,1446,1447],{},"Aktifkan dan jalankan layanan tersebut:",[461,1449,1451],{"className":1346,"code":1450,"language":1348,"meta":424,"style":424},"sudo systemctl daemon-reload\nsudo systemctl enable hermes-gateway\nsudo systemctl start hermes-gateway\nsudo systemctl status hermes-gateway\n",[443,1452,1453,1462,1474,1485],{"__ignoreMap":424},[469,1454,1455,1457,1459],{"class":471,"line":472},[469,1456,928],{"class":475},[469,1458,1047],{"class":490},[469,1460,1461],{"class":490}," daemon-reload\n",[469,1463,1464,1466,1468,1471],{"class":471,"line":479},[469,1465,928],{"class":475},[469,1467,1047],{"class":490},[469,1469,1470],{"class":490}," enable",[469,1472,1473],{"class":490}," hermes-gateway\n",[469,1475,1476,1478,1480,1483],{"class":471,"line":494},[469,1477,928],{"class":475},[469,1479,1047],{"class":490},[469,1481,1482],{"class":490}," start",[469,1484,1473],{"class":490},[469,1486,1487,1489,1491,1494],{"class":471,"line":505},[469,1488,928],{"class":475},[469,1490,1047],{"class":490},[469,1492,1493],{"class":490}," status",[469,1495,1473],{"class":490},[429,1497,816],{"id":815},[434,1499,1500],{},"Dalam artikel ini, kita telah fokus pada cara menyiapkan Hermes Agent dan menggunakan Telegram untuk berkomunikasi dengannya. Menjalankan Hermes Agent di server jarak jauh memberi Anda asisten digital nyata yang aktif 24\u002F7.",[832,1502,1503],{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":424,"searchDepth":479,"depth":494,"links":1505},[1506,1507,1512,1513,1514],{"id":876,"depth":479,"text":877},{"id":886,"depth":479,"text":887,"children":1508},[1509,1510,1511],{"id":890,"depth":494,"text":891},{"id":1056,"depth":494,"text":1057},{"id":1159,"depth":494,"text":1160},{"id":1276,"depth":479,"text":1277},{"id":1339,"depth":479,"text":1340},{"id":815,"depth":479,"text":816},[846],"2026-06-19","Deploy Hermes Agent di VPS remote untuk uptime 24\u002F7 yang andal. Ikuti panduan langkah demi langkah kami untuk mengintegrasikannya dengan bot Telegram kustom.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002FID-How%20to%20Setup%20Hermes%20on%20Remote%20Server.webp","Panduan langkah demi langkah untuk mendeploy Hermes Agent di VPS Linux dan mengintegrasikannya dengan bot Telegram.",{"schemaOrg":1521,"robots":856,"sitemap":1534},[1522],{"@type":855,"name":871,"description":1517,"image":1518,"step":1523},[1524,1528,1531],{"@type":1525,"name":891,"text":1526,"image":915,"url":1527},"HowToStep","Buka terminal dan lakukan SSH ke mesin remote Anda: Pastikan paket server Anda sudah mutakhir: Tambahkan pengguna baru, `hermes`, atau nama penggun...","#langkah-1-hubungkan-ke-vps-anda",{"@type":1525,"name":1057,"text":1529,"image":1088,"url":1530},"Jalankan perintah berikut: Setelah terinstal, verifikasi instalasi dengan mengetik: Jalankan `hermes setup` untuk mengonfigurasi Hermes Agent: Pili...","#langkah-2-instal-hermes-agent",{"@type":1525,"name":1160,"text":1532,"image":1171,"url":1533},"Pilih `[2]` untuk menggunakan bot Telegram. Buka `Telegram` dan cari 'BotFather'. Klik `Open` untuk membuka 'BotFather'. Klik `Create a New Bot` (a...","#langkah-3-integrasi-dengan-telegram",{"lastmod":1516},{"title":1536,"description":1517,"ogTitle":871,"ogDescription":1517,"twitterTitle":871,"twitterDescription":1517},"Deploy Hermes Agent di VPS: Panduan Integrasi Telegram Bot","id\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",[1311,1539,1540,1541,1542],"VPS Setup","Telegram Bot","Linux VPS","AI Agent","v0mZdfPz9KY0iWU2GsJAibjrsfj_Qkeow9BR7idwGE8",{"id":1545,"title":1546,"author":424,"body":1547,"category":2087,"date":2090,"description":2091,"extension":849,"image":2092,"imageAlt":2093,"isPublished":513,"meta":2094,"minRead":505,"navigation":513,"path":169,"seo":2098,"stem":2099,"tags":2100,"updatedAt":865,"__hash__":2104},"article\u002Fid\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac.md","Beralih di antara beberapa profil Cloudflare WARP pada macOS",{"type":426,"value":1548,"toc":2080},[1549,1553,1556,1563,1567,1573,1576,1579,1583,1586,1593,1609,1922,2038,2040,2043,2047,2077],[429,1550,1552],{"id":1551},"apa-itu-cloudflare-warp","Apa Itu Cloudflare WARP?",[434,1554,1555],{},"Cloudflare WARP adalah aplikasi sisi klien (client-side) yang merutekan lalu lintas perangkat tertentu melalui jaringan global Cloudflare, bukan langsung menuju ke internet publik.",[434,1557,1558,1559,1562],{},"Aplikasi ini membuat terowongan terenkripsi yang dibangun di atas protokol ",[438,1560,1561],{},"WireGuard",", mengamankan lalu lintas dari perangkat ke pusat data Cloudflare terdekat. Kebijakan kemudian dapat dibuat di dasbor Cloudflare Anda untuk memfilter, mencatat (log), memeriksa, atau merutekan lalu lintas masuk ini.",[429,1564,1566],{"id":1565},"mengapa-kita-membutuhkan-cloudflare-warp","Mengapa Kita Membutuhkan Cloudflare WARP?",[434,1568,1569,1570,618],{},"Untuk mengekspos sumber daya internal dengan aman—seperti layanan web pribadi atau aplikasi SaaS—kepada karyawan, kontraktor, dan pemangku kepentingan lainnya, klien Cloudflare WARP digunakan sebagai titik penegakan sisi klien untuk ",[438,1571,1572],{},"Zero Trust Network Access (ZTNA)",[434,1574,1575],{},"Klien Cloudflare WARP diinstal di laptop atau ponsel pengguna. Aplikasi ini mengharuskan pengguna untuk melakukan autentikasi dan memenuhi pemeriksaan postur keamanan tertentu (seperti berasal dari rentang IP yang disetujui, menggunakan domain email terdaftar, atau menjalankan firewall aktif) sebelum memberikan akses.",[434,1577,1578],{},"Dengan menyalurkan lalu lintas perangkat langsung ke Cloudflare, identitas pengguna, perangkat, dan kebijakan diverifikasi sebelum permintaan sampai ke sumber daya internal. Hasilnya, sumber daya internal tidak pernah terekspos ke internet publik, dan setiap permintaan tercatat serta diaudit sepenuhnya.",[429,1580,1582],{"id":1581},"mendukung-beberapa-profil-warp-pada-satu-perangkat","Mendukung Beberapa Profil WARP pada Satu Perangkat",[434,1584,1585],{},"Ketika pengguna perlu beralih antara akun Cloudflare pribadi dan perusahaan, atau ketika administrator sistem mengelola beberapa penyewa (tenant), dukungan untuk beberapa profil WARP pada satu perangkat menjadi sangat krusial.",[434,1587,1588,1589,1592],{},"Untuk mencapai hal ini di macOS, kita dapat menggunakan file profil MDM ",[443,1590,1591],{},".mobileconfig"," untuk menentukan dan mendaftarkan lingkungan WARP yang berbeda.",[733,1594,1595,1606],{},[581,1596,1597,1605],{},[451,1598,1601,1602,1604],{"href":1599,"rel":1600},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fstatic\u002Fmdm\u002Fmultiple-orgs\u002FCloudflareWARP.mobileconfig",[455],"Download a sample ",[443,1603,1591],{}," file"," langsung dari Cloudflare.",[581,1607,1608],{},"Di bawah ini adalah contoh tampilan konfigurasi tersebut:",[461,1610,1614],{"className":1611,"code":1612,"language":1613,"meta":424,"style":424},"language-xml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003C!DOCTYPE plist PUBLIC \"-\u002F\u002FApple\u002F\u002FDTD PLIST 1.0\u002F\u002FEN\" \"http:\u002F\u002Fwww.apple.com\u002FDTDs\u002FPropertyList-1.0.dtd\">\n\u003Cplist version=\"1.0\">\n\u003Cdict>\n  \u003Ckey>PayloadContent\u003C\u002Fkey>\n  \u003Carray>\n    \u003Cdict>\n      \u003Ckey>PayloadDisplayName\u003C\u002Fkey>\n      \u003Cstring>Warp Configuration\u003C\u002Fstring>\n      \u003Ckey>PayloadIdentifier\u003C\u002Fkey>\n      \u003Cstring>com.cloudflare.warp.CB8B22D4-50E1-48E8-8874-A7594627013A\u003C\u002Fstring>\n      \u003Ckey>PayloadOrganization\u003C\u002Fkey>\n      \u003Cstring>Cloudflare Ltd.\u003C\u002Fstring>\n      \u003Ckey>PayloadType\u003C\u002Fkey>\n      \u003Cstring>com.cloudflare.warp\u003C\u002Fstring>\n      \u003Ckey>PayloadUUID\u003C\u002Fkey>\n      \u003Cstring>CB8B22D4-50E1-48E8-8874-A7594627013A\u003C\u002Fstring>\n      \u003Ckey>PayloadVersion\u003C\u002Fkey>\n      \u003Cinteger>1\u003C\u002Finteger>\n      \u003Ckey>configs\u003C\u002Fkey>\n      \u003Carray>\n        \u003Cdict>\n          \u003Ckey>organization\u003C\u002Fkey>\n          \u003Cstring>your-team-name-1\u003C\u002Fstring>\n          \u003Ckey>display_name\u003C\u002Fkey>\n          \u003Cstring>Team 1\u003C\u002Fstring>\n        \u003C\u002Fdict>\n        \u003Cdict>\n          \u003Ckey>organization\u003C\u002Fkey>\n          \u003Cstring>your-team-name-2\u003C\u002Fstring>\n          \u003Ckey>display_name\u003C\u002Fkey>\n          \u003Cstring>Team 2\u003C\u002Fstring>\n        \u003C\u002Fdict>\n      \u003C\u002Farray>\n    \u003C\u002Fdict>\n  \u003C\u002Farray>\n  \u003Ckey>PayloadDisplayName\u003C\u002Fkey>\n  \u003Cstring>Cloudflare WARP\u003C\u002Fstring>\n  \u003Ckey>PayloadIdentifier\u003C\u002Fkey>\n  \u003Cstring>cloudflare_warp\u003C\u002Fstring>\n  \u003Ckey>PayloadOrganization\u003C\u002Fkey>\n  \u003Cstring>Cloudflare, Ltd.\u003C\u002Fstring>\n  \u003Ckey>PayloadRemovalDisallowed\u003C\u002Fkey>\n  \u003Cfalse\u002F>\n  \u003Ckey>PayloadScope\u003C\u002Fkey>\n  \u003Cstring>System\u003C\u002Fstring>\n  \u003Ckey>PayloadType\u003C\u002Fkey>\n  \u003Cstring>Configuration\u003C\u002Fstring>\n  \u003Ckey>PayloadUUID\u003C\u002Fkey>\n  \u003Cstring>2B7763B8-64F6-41EB-AA5E-7761651B8131\u003C\u002Fstring>\n  \u003Ckey>PayloadVersion\u003C\u002Fkey>\n  \u003Cinteger>1\u003C\u002Finteger>\n\u003C\u002Fdict>\n\u003C\u002Fplist>\n","xml",[443,1615,1616,1621,1626,1631,1636,1641,1646,1651,1656,1661,1666,1671,1676,1681,1686,1692,1698,1704,1710,1716,1722,1728,1734,1740,1746,1752,1758,1764,1769,1774,1780,1785,1791,1796,1802,1808,1814,1820,1826,1832,1838,1844,1850,1856,1862,1868,1874,1880,1886,1892,1898,1904,1910,1916],{"__ignoreMap":424},[469,1617,1618],{"class":471,"line":472},[469,1619,1620],{},"\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",[469,1622,1623],{"class":471,"line":479},[469,1624,1625],{},"\u003C!DOCTYPE plist PUBLIC \"-\u002F\u002FApple\u002F\u002FDTD PLIST 1.0\u002F\u002FEN\" \"http:\u002F\u002Fwww.apple.com\u002FDTDs\u002FPropertyList-1.0.dtd\">\n",[469,1627,1628],{"class":471,"line":494},[469,1629,1630],{},"\u003Cplist version=\"1.0\">\n",[469,1632,1633],{"class":471,"line":505},[469,1634,1635],{},"\u003Cdict>\n",[469,1637,1638],{"class":471,"line":510},[469,1639,1640],{},"  \u003Ckey>PayloadContent\u003C\u002Fkey>\n",[469,1642,1643],{"class":471,"line":517},[469,1644,1645],{},"  \u003Carray>\n",[469,1647,1648],{"class":471,"line":523},[469,1649,1650],{},"    \u003Cdict>\n",[469,1652,1653],{"class":471,"line":528},[469,1654,1655],{},"      \u003Ckey>PayloadDisplayName\u003C\u002Fkey>\n",[469,1657,1658],{"class":471,"line":534},[469,1659,1660],{},"      \u003Cstring>Warp Configuration\u003C\u002Fstring>\n",[469,1662,1663],{"class":471,"line":539},[469,1664,1665],{},"      \u003Ckey>PayloadIdentifier\u003C\u002Fkey>\n",[469,1667,1668],{"class":471,"line":1424},[469,1669,1670],{},"      \u003Cstring>com.cloudflare.warp.CB8B22D4-50E1-48E8-8874-A7594627013A\u003C\u002Fstring>\n",[469,1672,1673],{"class":471,"line":1430},[469,1674,1675],{},"      \u003Ckey>PayloadOrganization\u003C\u002Fkey>\n",[469,1677,1678],{"class":471,"line":1435},[469,1679,1680],{},"      \u003Cstring>Cloudflare Ltd.\u003C\u002Fstring>\n",[469,1682,1683],{"class":471,"line":1441},[469,1684,1685],{},"      \u003Ckey>PayloadType\u003C\u002Fkey>\n",[469,1687,1689],{"class":471,"line":1688},15,[469,1690,1691],{},"      \u003Cstring>com.cloudflare.warp\u003C\u002Fstring>\n",[469,1693,1695],{"class":471,"line":1694},16,[469,1696,1697],{},"      \u003Ckey>PayloadUUID\u003C\u002Fkey>\n",[469,1699,1701],{"class":471,"line":1700},17,[469,1702,1703],{},"      \u003Cstring>CB8B22D4-50E1-48E8-8874-A7594627013A\u003C\u002Fstring>\n",[469,1705,1707],{"class":471,"line":1706},18,[469,1708,1709],{},"      \u003Ckey>PayloadVersion\u003C\u002Fkey>\n",[469,1711,1713],{"class":471,"line":1712},19,[469,1714,1715],{},"      \u003Cinteger>1\u003C\u002Finteger>\n",[469,1717,1719],{"class":471,"line":1718},20,[469,1720,1721],{},"      \u003Ckey>configs\u003C\u002Fkey>\n",[469,1723,1725],{"class":471,"line":1724},21,[469,1726,1727],{},"      \u003Carray>\n",[469,1729,1731],{"class":471,"line":1730},22,[469,1732,1733],{},"        \u003Cdict>\n",[469,1735,1737],{"class":471,"line":1736},23,[469,1738,1739],{},"          \u003Ckey>organization\u003C\u002Fkey>\n",[469,1741,1743],{"class":471,"line":1742},24,[469,1744,1745],{},"          \u003Cstring>your-team-name-1\u003C\u002Fstring>\n",[469,1747,1749],{"class":471,"line":1748},25,[469,1750,1751],{},"          \u003Ckey>display_name\u003C\u002Fkey>\n",[469,1753,1755],{"class":471,"line":1754},26,[469,1756,1757],{},"          \u003Cstring>Team 1\u003C\u002Fstring>\n",[469,1759,1761],{"class":471,"line":1760},27,[469,1762,1763],{},"        \u003C\u002Fdict>\n",[469,1765,1767],{"class":471,"line":1766},28,[469,1768,1733],{},[469,1770,1772],{"class":471,"line":1771},29,[469,1773,1739],{},[469,1775,1777],{"class":471,"line":1776},30,[469,1778,1779],{},"          \u003Cstring>your-team-name-2\u003C\u002Fstring>\n",[469,1781,1783],{"class":471,"line":1782},31,[469,1784,1751],{},[469,1786,1788],{"class":471,"line":1787},32,[469,1789,1790],{},"          \u003Cstring>Team 2\u003C\u002Fstring>\n",[469,1792,1794],{"class":471,"line":1793},33,[469,1795,1763],{},[469,1797,1799],{"class":471,"line":1798},34,[469,1800,1801],{},"      \u003C\u002Farray>\n",[469,1803,1805],{"class":471,"line":1804},35,[469,1806,1807],{},"    \u003C\u002Fdict>\n",[469,1809,1811],{"class":471,"line":1810},36,[469,1812,1813],{},"  \u003C\u002Farray>\n",[469,1815,1817],{"class":471,"line":1816},37,[469,1818,1819],{},"  \u003Ckey>PayloadDisplayName\u003C\u002Fkey>\n",[469,1821,1823],{"class":471,"line":1822},38,[469,1824,1825],{},"  \u003Cstring>Cloudflare WARP\u003C\u002Fstring>\n",[469,1827,1829],{"class":471,"line":1828},39,[469,1830,1831],{},"  \u003Ckey>PayloadIdentifier\u003C\u002Fkey>\n",[469,1833,1835],{"class":471,"line":1834},40,[469,1836,1837],{},"  \u003Cstring>cloudflare_warp\u003C\u002Fstring>\n",[469,1839,1841],{"class":471,"line":1840},41,[469,1842,1843],{},"  \u003Ckey>PayloadOrganization\u003C\u002Fkey>\n",[469,1845,1847],{"class":471,"line":1846},42,[469,1848,1849],{},"  \u003Cstring>Cloudflare, Ltd.\u003C\u002Fstring>\n",[469,1851,1853],{"class":471,"line":1852},43,[469,1854,1855],{},"  \u003Ckey>PayloadRemovalDisallowed\u003C\u002Fkey>\n",[469,1857,1859],{"class":471,"line":1858},44,[469,1860,1861],{},"  \u003Cfalse\u002F>\n",[469,1863,1865],{"class":471,"line":1864},45,[469,1866,1867],{},"  \u003Ckey>PayloadScope\u003C\u002Fkey>\n",[469,1869,1871],{"class":471,"line":1870},46,[469,1872,1873],{},"  \u003Cstring>System\u003C\u002Fstring>\n",[469,1875,1877],{"class":471,"line":1876},47,[469,1878,1879],{},"  \u003Ckey>PayloadType\u003C\u002Fkey>\n",[469,1881,1883],{"class":471,"line":1882},48,[469,1884,1885],{},"  \u003Cstring>Configuration\u003C\u002Fstring>\n",[469,1887,1889],{"class":471,"line":1888},49,[469,1890,1891],{},"  \u003Ckey>PayloadUUID\u003C\u002Fkey>\n",[469,1893,1895],{"class":471,"line":1894},50,[469,1896,1897],{},"  \u003Cstring>2B7763B8-64F6-41EB-AA5E-7761651B8131\u003C\u002Fstring>\n",[469,1899,1901],{"class":471,"line":1900},51,[469,1902,1903],{},"  \u003Ckey>PayloadVersion\u003C\u002Fkey>\n",[469,1905,1907],{"class":471,"line":1906},52,[469,1908,1909],{},"  \u003Cinteger>1\u003C\u002Finteger>\n",[469,1911,1913],{"class":471,"line":1912},53,[469,1914,1915],{},"\u003C\u002Fdict>\n",[469,1917,1919],{"class":471,"line":1918},54,[469,1920,1921],{},"\u003C\u002Fplist>\n",[733,1923,1924,1935,1948,1958,1964,1981,1993,2013,2029],{},[581,1925,1926,1927,1930,1931,1934],{},"Ganti ",[443,1928,1929],{},"your-team-name-1"," dan ",[443,1932,1933],{},"your-team-name-2"," dengan nama tim Cloudflare Zero Trust Anda masing-masing.",[581,1936,1937,1938,1941,1942,1945,1946,618],{},"Jalankan perintah ",[443,1939,1940],{},"uuidgen"," di Terminal Anda untuk menghasilkan UUID unik, lalu gunakan untuk mengganti nilai tempat penampung (placeholder) ",[443,1943,1944],{},"PayloadUUID"," di file ",[443,1947,1591],{},[581,1949,1950,1951,1954,1955,1957],{},"Pastikan string ",[443,1952,1953],{},"PayloadIdentifier"," juga berisi ",[443,1956,1944],{}," yang diperbarui agar profil tetap berbeda.",[581,1959,1960,1961,1963],{},"Simpan file ",[443,1962,1591],{}," yang telah Anda edit.",[581,1965,1174,1966,1969,1970,1973,1974,1977],{},[438,1967,1968],{},"Pengaturan Sistem"," di Mac Anda, cari ",[438,1971,1972],{},"Profil"," (Profiles), lalu pilih.",[1975,1976],"br",{},[568,1978],{"alt":1979,"src":1980},"Panel Profil di Pengaturan Sistem macOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002Fmacos-system-settings-profiles.webp",[581,1982,1184,1983,1986,1987,1989],{},[438,1984,1985],{},"Instal, lihat, atau hapus..."," (Install, view or remove...) untuk mulai menambahkan profil konfigurasi baru Anda.",[1975,1988],{},[568,1990],{"alt":1991,"src":1992},"Tombol instal, lihat, atau hapus profil macOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002Fmacos-profiles-view-remove.webp",[581,1994,1995,1996,1999,2000,2002,2003,2005,2009],{},"Klik ikon ",[438,1997,1998],{},"+"," (plus) di sudut kiri bawah dan pilih file ",[443,2001,1591],{}," yang telah Anda simpan.",[1975,2004],{},[568,2006],{"alt":2007,"src":2008},"Tombol plus (+) profil macOS untuk menambahkan profil baru","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002Fmacos-profiles-add-profile.webp",[568,2010],{"alt":2011,"src":2012},"Memilih file .mobileconfig di macOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002Fmacos-select-mobileconfig-file.webp",[581,2014,1163,2015,2018,2019,2022,2023,2025],{},[438,2016,2017],{},"Cloudflare WARP"," dan klik ",[438,2020,2021],{},"Instal"," (Install) untuk menerapkan konfigurasi.",[1975,2024],{},[568,2026],{"alt":2027,"src":2028},"Mengonfirmasi instalasi profil Cloudflare WARP di macOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002Fmacos-install-cloudflare-warp-profile.webp",[581,2030,2031,2032,2034],{},"Mulai ulang klien Cloudflare WARP Anda. Sekarang Anda akan melihat pengalih multi-profil di antarmuka pengguna:",[1975,2033],{},[568,2035],{"alt":2036,"src":2037},"Klien Cloudflare WARP dengan pengalih multi-profil di macOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002Fcloudflare-warp-multi-profile-switcher.webp",[429,2039,816],{"id":815},[434,2041,2042],{},"Klien Cloudflare WARP bertindak sebagai titik keamanan krusial pada perangkat pengguna, membuat Akses Jaringan Zero Trust (ZTNA) menjadi tangguh sekaligus sangat praktis. Menjaga sumber daya internal tetap terisolasi dari internet publik memastikan setiap upaya koneksi diautentikasi, dievaluasi, dan diaudit dengan aman.",[429,2044,2046],{"id":2045},"referensi","Referensi",[733,2048,2049,2056,2063,2070],{},[581,2050,2051],{},[451,2052,2055],{"href":2053,"rel":2054},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fteam-and-resources\u002Fdevices\u002Fcloudflare-one-client\u002Fdeployment\u002Fmdm-deployment\u002F#prepare-file-for-mdm-deployment",[455],"Managed Deployment Preparation",[581,2057,2058],{},[451,2059,2062],{"href":2060,"rel":2061},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fteam-and-resources\u002Fdevices\u002Fcloudflare-one-client\u002Fdeployment\u002Fmdm-deployment\u002Fswitch-organizations\u002F",[455],"Switch Between Zero Trust Organizations",[581,2064,2065],{},[451,2066,2069],{"href":2067,"rel":2068},"https:\u002F\u002Fblog.cloudflare.com\u002Fintroducing-warp-connector-paving-the-path-to-any-to-any-connectivity-2\u002F",[455],"Introducing WARP Connector: Paving the Path to Any-to-Any Connectivity",[581,2071,2072],{},[451,2073,2076],{"href":2074,"rel":2075},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fteam-and-resources\u002Fdevices\u002Fcloudflare-one-client\u002F",[455],"Cloudflare One Client Documentation",[832,2078,2079],{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":424,"searchDepth":479,"depth":494,"links":2081},[2082,2083,2084,2085,2086],{"id":1551,"depth":479,"text":1552},{"id":1565,"depth":479,"text":1566},{"id":1581,"depth":479,"text":1582},{"id":815,"depth":479,"text":816},{"id":2045,"depth":479,"text":2046},[2088,2089],"security","cloudflare","2026-07-04","Konfigurasikan dan beralih antara beberapa organisasi Cloudflare WARP di macOS menggunakan file .mobileconfig. Panduan MDM lengkap untuk administrator TI.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002FID-Switch-Between-Multiple-Cloudflare-WARP-Orgs-on-Mac.webp","Konfigurasi Beberapa Profil Cloudflare WARP pada macOS",{"schemaOrg":2095,"robots":856,"sitemap":2097},[2096],{"@type":855,"headline":1546,"description":2091},{"lastmod":2090},{"title":2093,"description":2091,"ogTitle":1546,"ogDescription":2091,"twitterTitle":1546,"twitterDescription":2091},"id\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",[2101,2017,2102,2103],"macOS","MDM","Zero Trust","g75vUIN1mRvIdprX3WwNzBHE5-tIZ2ZSJhOV0EsNCBM",[2106,3338,4240],{"id":2107,"title":2108,"author":424,"body":2109,"category":3300,"date":3303,"description":3304,"extension":849,"image":3305,"imageAlt":3306,"isPublished":513,"meta":3307,"minRead":534,"navigation":513,"path":355,"seo":3332,"stem":3334,"tags":3335,"updatedAt":865,"__hash__":3337},"article\u002Fid\u002Farticle\u002Fbringing-buzz-to-deepseek-harness.md","Hubungkan DeepSeek Harness ke Buzz Lewat Gateway Nostr",{"type":426,"value":2110,"toc":3284},[2111,2117,2138,2146,2149,2153,2159,2201,2204,2262,2266,2272,2538,2541,2545,2549,2555,2559,2572,2576,2586,2633,2640,2644,2647,2679,2683,2688,2730,2738,2744,2753,2759,2789,2802,2806,2815,2846,2868,2916,2923,2928,2934,2941,2947,2952,2959,2973,2979,2988,3027,3030,3036,3043,3049,3053,3056,3204,3208,3242,3246,3252,3255,3281],[434,2112,2113],{},[568,2114],{"alt":2115,"src":2116},"Tinjauan gateway pesan DeepSeek Harness terhubung ke saluran obrolan Block Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-nostr-gateway-overview.webp",[434,2118,2119,2120,2127,2128,2133,2134,618],{},"Plugin DeepSeek Harness (DSH), ",[438,2121,2122],{},[451,2123,2126],{"href":2124,"rel":2125},"https:\u002F\u002Fgithub.com\u002Fa792883583\u002Fdsh-message-gateway",[455],"dsh-message-gateway",", memperluas jangkauan asisten DeepSeek Harness ke berbagai platform perpesanan seperti Discord, Telegram, dan WeChat. Repositori plugin ini di-fork dan diperluas untuk menambahkan platform ",[438,2129,2130],{},[451,2131,2132],{"href":383},"Self-Host Buzz dari Block: Ruang Kerja Bersama Agen AI Anda"," ke dalam daftar. Repositori hasil fork tersedia di GitHub di ",[451,2135,2136],{"href":2136,"rel":2137},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fdsh-message-gateway",[455],[2139,2140],"article-card",{"description":2141,"image":2142,"image-alt":2143,"label":2144,"min-read":2145,"title":2132,"to":383},"Pelajari cara self-host relay Buzz Block pada Linux VPS di balik Cloudflare. Kelola ruang kerja berbasis Nostr tempat kolaborasi manusia dan agen AI.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002FID-Self-Hosting-Buzz-As-The-Workspace-Where-AI-Agents-Become-Colleagues.webp","Kartu teknologi premium 16:9 dengan aksen biru tua dan oranye yang mengilustrasikan cara self-host relay Buzz Block pada Ubuntu VPS, menampilkan panel bergaya glassmorphism bersih dengan tipografi terpusat.","Panduan prasyarat","12",[434,2147,2148],{},"Asisten DSH bergabung ke relay Buzz sebagai anggota, menerima pesan langsung (DM) serta pesan saluran tempat asisten di-@mention, dan menjawab melalui pipeline agen per-obrolan yang sama persis dengan yang digunakan oleh antarmuka Web.",[429,2150,2152],{"id":2151},"arsitektur-plugin-dsh-message-gateway","Arsitektur Plugin dsh-message-gateway",[434,2154,2155,2156,2158],{},"Arsitektur plugin ",[438,2157,2126],{}," terbagi menjadi dua bagian utama:",[733,2160,2161,2191],{},[581,2162,2163,2166,2167,2170,2171,2174,2175,2178,2179,2182,2183,2186,2187,2190],{},[438,2164,2165],{},"Host"," (Node): ",[443,2168,2169],{},"gateway-store"," (kredensial, ",[443,2172,2173],{},"~\u002F.dsh\u002Fgateway.json","), ",[443,2176,2177],{},"platforms.ts"," (definisi platform dan uji koneksi), ",[443,2180,2181],{},"routes.ts"," (endpoint ",[443,2184,2185],{},"\u002Fgateway\u002F*","), dan ",[443,2188,2189],{},"bridge-manager.ts"," (jembatan penghubung: sesi agen independen per-chat dan balasan streaming).",[581,2192,2193,2196,2197,2200],{},[438,2194,2195],{},"Client"," (browser): halaman \"",[438,2198,2199],{},"Message platforms","\" di bilah samping tempat Anda menyimpan kredensial, menguji koneksi, dan memantau status.",[434,2202,2203],{},"Menambahkan platform baru melibatkan langkah-langkah berikut:",[578,2205,2206,2223,2237],{},[581,2207,2208,2211,2212,2215,2216,2219,2220,618],{},[438,2209,2210],{},"Kelas jembatan (bridge class)",": menyediakan fungsi ",[443,2213,2214],{},"start\u002Fstop\u002Fstatus"," ditambah callback ",[443,2217,2218],{},"onText(text, frame)",", mencerminkan pola ",[443,2221,2222],{},"wecom-bridge.ts",[581,2224,2225,2228,2229,2232,2233,2236],{},[438,2226,2227],{},"Integrasi bridge-manager",": menggunakan kembali pipeline per-obrolan yang ada (",[443,2230,2231],{},"ensureAgentForKey"," + ",[443,2234,2235],{},"pendingMap",") dan menghubungkan reply sink milik platform.",[581,2238,2239,2242,2243,1930,2246,2249,2250,2253,2254,2257,2258,2261],{},[438,2240,2241],{},"Penyimpanan dan rute",": di dalam ",[443,2244,2245],{},"\u002Fgateway\u002Fsave",[443,2247,2248],{},"\u002Fgateway\u002Fdelete",": ",[438,2251,2252],{},"menyimpan kredensial akan memulai jembatan, menghapusnya akan menghentikan jembatan"," — ditambah flag ",[443,2255,2256],{},"autoStartXxx"," agar ",[443,2259,2260],{},"dsh web"," tersambung kembali saat boot.",[429,2263,2265],{"id":2264},"implementasi-jembatan-buzz-protokol-nostr-siklus-hidup-event","Implementasi Jembatan Buzz: Protokol Nostr & Siklus Hidup Event",[434,2267,2268,2271],{},[438,2269,2270],{},"DeepSeek Harness"," digunakan untuk mengimplementasikan jembatan Buzz. Implementasi ini sepenuhnya mematuhi spesifikasi protokol Nostr berikut:",[2273,2274,2275,2301],"table",{},[2276,2277,2278],"thead",{},[2279,2280,2281,2287],"tr",{},[2282,2283,2284],"th",{},[438,2285,2286],{},"Transportasi",[2282,2288,2289,2290,2293,2294,2297,2298],{},"Satu WebSocket yang diautentikasi NIP-42; default ",[443,2291,2292],{},"ws:\u002F\u002Flocalhost:3000","; ",[443,2295,2296],{},"http(s):\u002F\u002F"," dinormalkan menjadi ",[443,2299,2300],{},"ws(s):\u002F\u002F",[2302,2303,2304,2323,2351,2368,2390,2413,2438,2451,2464,2483,2500,2514],"tbody",{},[2279,2305,2306,2312],{},[2307,2308,2309],"td",{},[438,2310,2311],{},"Autentikasi",[2307,2313,2314,2315,2318,2319,2322],{},"Event AUTH ",[443,2316,2317],{},"kind 22242",", tag ",[443,2320,2321],{},"[[\"relay\", url], [\"challenge\", challenge]]",", konten kosong, ditandatangani dengan kunci agen",[2279,2324,2325,2330],{},[2307,2326,2327],{},[438,2328,2329],{},"Langganan (Subs)",[2307,2331,2332,2249,2335,2338,2339,2342,2343,2346,2347,2350],{},[438,2333,2334],{},"Cakupan saluran",[443,2336,2337],{},"REQ {\"kinds\":[9], \"#h\":[\u003Cuuid>]}"," — satu REQ per saluran. REQ global ",[443,2340,2341],{},"kinds:[9]"," menerima EOSE tetapi tidak membagikan event; filter ",[443,2344,2345],{},"#h"," multi-nilai ",[438,2348,2349],{},"tidak"," bekerja",[2279,2352,2353,2358],{},[2307,2354,2355],{},[438,2356,2357],{},"Penemuan (Discovery)",[2307,2359,2360,2363,2364,2367],{},[443,2361,2362],{},"REQ {kinds:[39000]}"," historis untuk metadata saluran (",[443,2365,2366],{},"type == \"dm\""," menandai saluran pesan langsung)",[2279,2369,2370,2375],{},[2307,2371,2372],{},[438,2373,2374],{},"Keanggotaan",[2307,2376,2377,2380,2381,1998,2383,2386,2387],{},[443,2378,2379],{},"REQ {kinds:[44100,44101], \"#p\":[pubkey kita], since: now-60s}"," live — 44100 = ditambahkan, 44101 = dihapus, membawa ",[443,2382,434],{},[443,2384,2385],{},"h","; perubahan keanggotaan memperbarui langganan ",[438,2388,2389],{},"tanpa reconnect",[2279,2391,2392,2397],{},[2307,2393,2394],{},[438,2395,2396],{},"Event Obrolan",[2307,2398,2399,2402,2403,2406,2407,770,2410],{},[443,2400,2401],{},"kind 9"," dengan tag ",[443,2404,2405],{},"[\"h\", channel]",", opsional ",[443,2408,2409],{},"[\"e\", replyTo]",[443,2411,2412],{},"[\"p\", mention]",[2279,2414,2415,2420],{},[2307,2416,2417],{},[438,2418,2419],{},"Edit In-Place",[2307,2421,2422,2425,2426,2232,2428,2431,2432,2434,2435,2437],{},[443,2423,2424],{},"kind 40003"," dengan ",[443,2427,2385],{},[443,2429,2430],{},"e","→target; konten diganti; batas relay 64 KB → jaga payload ≤ 60.000 B; balasan panjang dipecah — bagian 0 menggantikan edit, bagian sisa ditambahkan sebagai pesan ",[443,2433,2401],{}," berulir (",[443,2436,2430],{},"→root)",[2279,2439,2440,2445],{},[2307,2441,2442],{},[438,2443,2444],{},"Frame CLOSED",[2307,2446,2447,2450],{},[443,2448,2449],{},"auth-required"," pra-AUTH adalah bootstrap normal (selesaikan AUTH, buka kembali langganan); pasca-AUTH → langganan ulang terbatas (3 percobaan, jeda 0\u002F1\u002F2 detik); reconnect membangun ulang semua",[2279,2452,2453,2458],{},[2307,2454,2455],{},[438,2456,2457],{},"Batas Relay",[2307,2459,2460,2461],{},"≤ 2000 event historis per langganan, diurutkan dari yang terbaru bahkan saat menggunakan ",[443,2462,2463],{},"since",[2279,2465,2466,2471],{},[2307,2467,2468],{},[438,2469,2470],{},"Penyaringan Mention",[2307,2472,2473,2474,2476,2477,2479,2480,2482],{},"Proses event ",[443,2475,2401],{}," masuk hanya jika: (a) tag ",[443,2478,434],{}," menyertakan pubkey kita, (b) saluran adalah DM, atau (c) root ",[443,2481,2430],{}," adalah event kita sendiri. Abaikan pubkey sendiri (cegah loop)",[2279,2484,2485,2490],{},[2307,2486,2487],{},[438,2488,2489],{},"Mention Keluar",[2307,2491,2492,2493,2496,2497,2499],{},"Teks keluar dipublikasikan apa adanya — relay tidak memvalidasi token ",[443,2494,2495],{},"@","; tag ",[443,2498,434],{}," menyertakan penulis pesan masuk ditambah hingga 7 pubkey lain yang disebutkan (maksimal 8)",[2279,2501,2502,2507],{},[2307,2503,2504],{},[438,2505,2506],{},"Pesan Langsung (DM)",[2307,2508,2509,2510,2513],{},"Saluran teks biasa dengan cakupan relay (metadata ",[443,2511,2512],{},"type: \"dm\"",") — tanpa enkripsi NIP-04\u002F44 pada jembatan ini",[2279,2515,2516,2521],{},[2307,2517,2518],{},[438,2519,2520],{},"Lampiran (Masuk)",[2307,2522,2523,2524,2527,2528,770,2531,770,2534,2537],{},"NIP-92 ",[443,2525,2526],{},"imeta"," (",[443,2529,2530],{},"url",[443,2532,2533],{},"sha256",[443,2535,2536],{},"m",") → unduh http(s) biasa, verifikasi SHA-256, batas 20 MB, maksimal 4 per pesan; gambar keluar tidak didukung",[434,2539,2540],{},"Diagram berikut mengilustrasikan alur inisialisasi (bootstrap) jembatan Buzz:",[568,2542],{"src":2543,"alt":2544},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-bootstrap.webp","Diagram urutan yang mengilustrasikan proses bootstrap dan autentikasi NIP-42 jembatan Buzz",[573,2546,2548],{"id":2547},"streaming-real-time-lewat-pengeditan-in-place-nostr-kind-40003","Streaming Real-Time Lewat Pengeditan In-Place Nostr (Kind 40003)",[434,2550,2551,2552,487],{},"Nostr tidak memiliki indikator mengetik bawaan dan event-nya bersifat append-only. Untuk membuat balasan terasa responsif dan interaktif, jembatan Buzz ",[438,2553,2554],{},"mensimulasikan streaming menggunakan pengeditan in-place",[568,2556],{"src":2557,"alt":2558},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-reply.webp","Diagram alur pengeditan in-place yang mensimulasikan respons streaming dengan event kind 40003",[733,2560,2561],{},[581,2562,2563],{},[612,2564,2565,2566,2568,2569,2571],{},"Jembatan Buzz menerbitkan event placeholder ",[443,2567,2401],{},", kemudian secara progresif menulis ulang event tersebut dengan pengeditan in-place ",[443,2570,2424],{}," yang dibatasi lajunya, dan menuliskan edit final saat agen menyelesaikan tugasnya. Ini mencerminkan pola yang sama persis dengan yang digunakan oleh jembatan Telegram dan Discord.",[573,2573,2575],{"id":2574},"menghubungkan-workspace-deepseek-harness-lewat-perintah-chat","Menghubungkan Workspace DeepSeek Harness Lewat Perintah Chat",[434,2577,2578,2579,2527,2582,2585],{},"Fitur \"Workspaces\" pada antarmuka Web DSH dikelola oleh layanan ",[443,2580,2581],{},"workspaceRegistry",[443,2583,2584],{},"@deepseek-ai\u002Fdsh-workspace","):",[461,2587,2591],{"className":2588,"code":2589,"language":2590,"meta":424,"style":424},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const existing = await ctx.workspaceRegistry.resolveByPath(request.path);\n","typescript",[443,2592,2593],{"__ignoreMap":424},[469,2594,2595,2599,2602,2605,2609,2612,2614,2616,2618,2622,2625,2627,2630],{"class":471,"line":472},[469,2596,2598],{"class":2597},"spNyl","const",[469,2600,2601],{"class":973}," existing ",[469,2603,2604],{"class":486},"=",[469,2606,2608],{"class":2607},"s7zQu"," await",[469,2610,2611],{"class":973}," ctx",[469,2613,618],{"class":486},[469,2615,2581],{"class":973},[469,2617,618],{"class":486},[469,2619,2621],{"class":2620},"s2Zo4","resolveByPath",[469,2623,2624],{"class":973},"(request",[469,2626,618],{"class":486},[469,2628,2629],{"class":973},"path)",[469,2631,2632],{"class":486},";\n",[434,2634,2635,2636,2639],{},"Jembatan Buzz menyediakan perintah obrolan, ",[443,2637,2638],{},"\u002Fworkspace \u003Cfolder>",", yang mendaftarkan folder yang ada ke DSH. Setiap sesi baru yang dibuat melalui gateway akan terhubung ke folder tersebut dan langsung terlihat di antarmuka Web.",[568,2641],{"src":2642,"alt":2643},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-workspace.webp","Arsitektur pendaftaran workspace DeepSeek Harness dari perintah obrolan melalui gateway",[434,2645,2646],{},"Tiga pertimbangan desain yang perlu diperhatikan:",[733,2648,2649,2659,2669],{},[581,2650,2651,2654,2655,2658],{},[438,2652,2653],{},"Beralih folder = sesi baru."," Parameter ",[443,2656,2657],{},"cwd"," dicatat ke dalam header sesi saat pembuatan dan tidak dapat diubah setelahnya.",[581,2660,2661,2664,2665,2668],{},[438,2662,2663],{},"Folder harus sudah ada sebelumnya."," Fungsi ",[443,2666,2667],{},"create"," menolak jalur folder yang belum ada di disk.",[581,2670,2671,2674,2675,2678],{},[438,2672,2673],{},"Perintah sensitif keamanan."," Setiap sesi berjalan dengan kebijakan ",[438,2676,2677],{},"auto-approve",", yang memberikan akses baca dan tulis ke file di folder target.",[429,2680,2682],{"id":2681},"panduan-langkah-demi-langkah-instalasi-konfigurasi","Panduan Langkah Demi Langkah: Instalasi & Konfigurasi",[578,2684,2685],{},[581,2686,2687],{},"Jalankan perintah berikut di terminal Anda:",[461,2689,2691],{"className":897,"code":2690,"language":899,"meta":424,"style":424},"dsh plugin --profile web add https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fdsh-message-gateway.git\n\n# Start DSH web\ndsh web\n",[443,2692,2693,2713,2717,2723],{"__ignoreMap":424},[469,2694,2695,2698,2701,2704,2707,2710],{"class":471,"line":472},[469,2696,2697],{"class":475},"dsh",[469,2699,2700],{"class":490}," plugin",[469,2702,2703],{"class":490}," --profile",[469,2705,2706],{"class":490}," web",[469,2708,2709],{"class":490}," add",[469,2711,2712],{"class":490}," https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fdsh-message-gateway.git\n",[469,2714,2715],{"class":471,"line":479},[469,2716,514],{"emptyLinePlaceholder":513},[469,2718,2719],{"class":471,"line":494},[469,2720,2722],{"class":2721},"sHwdD","# Start DSH web\n",[469,2724,2725,2727],{"class":471,"line":505},[469,2726,2697],{"class":475},[469,2728,2729],{"class":490}," web\n",[578,2731,2732],{"start":479},[581,2733,2734,2735,2737],{},"Setelah antarmuka Web DSH terbuka di peramban web, klik ikon \"",[438,2736,2199],{},"\":",[434,2739,2740],{},[568,2741],{"alt":2742,"src":2743},"Bilah samping antarmuka Web DeepSeek Harness menyorot menu konfigurasi Message platforms","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-web-ui-message-platforms-sidebar-icon.webp",[578,2745,2746],{"start":494},[581,2747,2748,2749,2752],{},"Klik menu \"",[438,2750,2751],{},"Buzz","\" di panel sebelah kiri:",[434,2754,2755],{},[568,2756],{"alt":2757,"src":2758},"Panel pengaturan konfigurasi jembatan Buzz di gateway pesan DeepSeek Harness","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-message-gateway-buzz-config-panel.webp",[578,2760,2761,2772,2782],{"start":505},[581,2762,2763,2764,2767,2768,2771],{},"Klik \"",[438,2765,2766],{},"Generate keypair","\" untuk membuat pasangan kunci Nostr baru. Salin public key ",[443,2769,2770],{},"npub"," ke tempat yang aman.",[581,2773,2774,2775,1930,2778,2781],{},"Isi kolom ",[438,2776,2777],{},"Relay URL",[438,2779,2780],{},"Channels"," (daftar UUID saluran yang diizinkan untuk berlangganan).",[581,2783,2784,2785,2788],{},"Klik tombol \"",[438,2786,2787],{},"Save","\".",[434,2790,2791,2792,2795,2796,2799,2800,618],{},"Menyimpan formulir akan menyimpan kredensial dan ",[438,2793,2794],{},"menjalankan jembatan",". Kunci privat ",[443,2797,2798],{},"nsec"," diperlakukan sebagai rahasia dan disimpan secara eksklusif di ",[443,2801,2173],{},[573,2803,2805],{"id":2804},"mendaftarkan-pasangan-kunci-agen-ke-relay-nostr-buzz","Mendaftarkan Pasangan Kunci Agen ke Relay Nostr Buzz",[434,2807,2808,2811,2812,2814],{},[438,2809,2810],{},"Tambahkan asisten DSH ke relay sebagai anggota."," Gunakan pubkey ",[443,2813,2770],{}," yang telah dibuat sebelumnya:",[461,2816,2818],{"className":897,"code":2817,"language":899,"meta":424,"style":424},"docker compose exec relay buzz-admin add-member --pubkey npub123123123\n",[443,2819,2820],{"__ignoreMap":424},[469,2821,2822,2825,2828,2831,2834,2837,2840,2843],{"class":471,"line":472},[469,2823,2824],{"class":475},"docker",[469,2826,2827],{"class":490}," compose",[469,2829,2830],{"class":490}," exec",[469,2832,2833],{"class":490}," relay",[469,2835,2836],{"class":490}," buzz-admin",[469,2838,2839],{"class":490}," add-member",[469,2841,2842],{"class":490}," --pubkey",[469,2844,2845],{"class":490}," npub123123123\n",[434,2847,2848,2851,2852,2855,2856,2859,2860,2863,2864,2867],{},[438,2849,2850],{},"Tambahkan asisten DSH ke saluran tertentu."," Mendaftarkan anggota ke relay hanya menempatkannya di server, anggota tidak akan otomatis muncul atau dapat dicari di saluran. Saat menjalankan langkah ini menggunakan ",[443,2853,2854],{},"buzz-cli",", perhatikan bahwa parameter ",[443,2857,2858],{},"--pubkey"," harus dalam format ",[438,2861,2862],{},"HEX",", bukan npub (perintah ",[443,2865,2866],{},"buzz-admin add-member"," mencetak pubkey HEX anggota):",[461,2869,2871],{"className":897,"code":2870,"language":899,"meta":424,"style":424},"buzz channels add-member --channel \u003CCHANNEL_UUID> --pubkey \u003CAGENT_HEX> --role member\n",[443,2872,2873],{"__ignoreMap":424},[469,2874,2875,2878,2881,2883,2886,2889,2892,2895,2898,2900,2902,2905,2908,2910,2913],{"class":471,"line":472},[469,2876,2877],{"class":475},"buzz",[469,2879,2880],{"class":490}," channels",[469,2882,2839],{"class":490},[469,2884,2885],{"class":490}," --channel",[469,2887,2888],{"class":486}," \u003C",[469,2890,2891],{"class":490},"CHANNEL_UUI",[469,2893,2894],{"class":973},"D",[469,2896,2897],{"class":486},">",[469,2899,2842],{"class":490},[469,2901,2888],{"class":486},[469,2903,2904],{"class":490},"AGENT_HE",[469,2906,2907],{"class":973},"X",[469,2909,2897],{"class":486},[469,2911,2912],{"class":490}," --role",[469,2914,2915],{"class":490}," member\n",[2139,2917],{"description":2918,"image":2142,"image-alt":2143,"label":2919,"min-read":2920,"title":2921,"to":2922},"Petunjuk langkah demi langkah untuk menginstal dan mengonfigurasi buzz-cli untuk mengelola saluran Nostr, kunci anggota, dan izin agen AI.","Panduan CLI","5","Cara Menginstal dan Menggunakan buzz-cli","\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues#install-buzz-cli",[434,2924,2925,2926,487],{},"Perbarui profil asisten DSH di relay Nostr agar memiliki nama tampilan yang jelas dengan ",[443,2927,2854],{},[434,2929,2930],{},[568,2931],{"alt":2932,"src":2933},"Memperbarui nama tampilan asisten DeepSeek Harness pada relay Nostr menggunakan buzz-cli","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-assistant-buzz-cli-profile-update.webp",[434,2935,2936,2937,2940],{},"Kirim salam ",[438,2938,2939],{},"Wave"," (sapaan DM khas Buzz) ke asisten DSH. Balasan konfirmasi akan segera diterima:",[434,2942,2943],{},[568,2944],{"alt":2945,"src":2946},"Uji koneksi dengan mengirim sapaan Wave sebagai DM ke asisten DeepSeek Harness di Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-dm-wave-greeting-reply.webp",[434,2948,2949],{},[612,2950,2951],{},"Mengirim Wave sebagai pesan langsung ke asisten DSH — jembatan telah aktif.",[573,2953,2955,2956],{"id":2954},"mengaktifkan-akses-folder-lokal-dengan-workspace","Mengaktifkan Akses Folder Lokal dengan ",[443,2957,2958],{},"\u002Fworkspace",[434,2960,2961,2962,2965,2966,2969,2970,2972],{},"Karena opsi ",[443,2963,2964],{},"allowWorkspace"," dinonaktifkan (",[443,2967,2968],{},"false",") secara default, perintah ",[443,2971,2958],{}," awalnya akan ditolak:",[434,2974,2975],{},[568,2976],{"alt":2977,"src":2978},"Pemberitahuan kesalahan saat perintah workspace ditolak karena allowWorkspace dinonaktifkan","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-workspace-command-rejected-error.webp",[434,2980,2981,2982,2985,2986,487],{},"Aktifkan opsi tersebut di file ",[443,2983,2984],{},"~\u002F.dsh\u002Fprofiles\u002Fweb\u002Fcordis.patch.yml",", lalu mulai ulang ",[443,2987,2260],{},[461,2989,2993],{"className":2990,"code":2991,"language":2992,"meta":424,"style":424},"language-yml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","- id: ui-message-gateway\n  config:\n    allowWorkspace: true\n","yml",[443,2994,2995,3008,3016],{"__ignoreMap":424},[469,2996,2997,3000,3003,3005],{"class":471,"line":472},[469,2998,2999],{"class":486},"-",[469,3001,3002],{"class":482}," id",[469,3004,487],{"class":486},[469,3006,3007],{"class":490}," ui-message-gateway\n",[469,3009,3010,3013],{"class":471,"line":479},[469,3011,3012],{"class":482},"  config",[469,3014,3015],{"class":486},":\n",[469,3017,3018,3021,3023],{"class":471,"line":494},[469,3019,3020],{"class":482},"    allowWorkspace",[469,3022,487],{"class":486},[469,3024,3026],{"class":3025},"sfNiH"," true\n",[434,3028,3029],{},"Setelah dimulai ulang:",[434,3031,3032],{},[568,3033],{"alt":3034,"src":3035},"Pesan konfirmasi keberhasilan setelah menjalankan perintah pendaftaran workspace di Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-workspace-command-success-confirmation.webp",[434,3037,3038,3039,3042],{},"Catatan penting: konfigurasi ini mengasumsikan folder workspace (",[443,3040,3041],{},"TechVoyage"," pada tangkapan layar) berada di dalam direktori default pengguna. Jika tidak, tentukan jalur absolut lengkap. Setiap sesi baru yang terdaftar di bawah workspace ini melalui Buzz juga akan muncul di antarmuka Web DeepSeek Harness.",[434,3044,3045],{},[568,3046],{"alt":3047,"src":3048},"Antarmuka Web DeepSeek Harness menampilkan sesi workspace yang disinkronkan dari Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-web-ui-synced-workspace-session.webp",[573,3050,3052],{"id":3051},"perintah-yang-tersedia-di-buzz","Perintah yang Tersedia di Buzz",[434,3054,3055],{},"Semua perintah yang didukung di platform lain dapat digunakan secara mulus di Buzz:",[2273,3057,3058,3068],{},[2276,3059,3060],{},[2279,3061,3062,3065],{},[2282,3063,3064],{},"Perintah",[2282,3066,3067],{},"Fungsi",[2302,3069,3070,3079,3089,3099,3109,3119,3129,3139,3148,3168,3187],{},[2279,3071,3072,3076],{},[2307,3073,3074],{},[443,3075,2638],{},[2307,3077,3078],{},"Daftarkan folder yang ada sebagai workspace obrolan (wajib diaktifkan di konfigurasi)",[2279,3080,3081,3086],{},[2307,3082,3083],{},[443,3084,3085],{},"\u002Fhelp",[2307,3087,3088],{},"Tampilkan daftar perintah yang tersedia",[2279,3090,3091,3096],{},[2307,3092,3093],{},[443,3094,3095],{},"\u002Ftime",[2307,3097,3098],{},"Tampilkan waktu sistem saat ini",[2279,3100,3101,3106],{},[2307,3102,3103],{},[443,3104,3105],{},"\u002Fnew",[2307,3107,3108],{},"Mulai sesi obrolan baru yang bersih",[2279,3110,3111,3116],{},[2307,3112,3113],{},[443,3114,3115],{},"\u002Fclear",[2307,3117,3118],{},"Bersihkan riwayat percakapan saat ini",[2279,3120,3121,3126],{},[2307,3122,3123],{},[443,3124,3125],{},"\u002Fstatus",[2307,3127,3128],{},"Tampilkan status operasional jembatan",[2279,3130,3131,3136],{},[2307,3132,3133],{},[443,3134,3135],{},"\u002Fstats",[2307,3137,3138],{},"Tampilkan jumlah obrolan dan status per jembatan (semua platform, termasuk Buzz)",[2279,3140,3141,3145],{},[2307,3142,3143],{},[443,3144,1321],{},[2307,3146,3147],{},"Tampilkan deskripsi lengkap semua perintah",[2279,3149,3150,3155],{},[2307,3151,3152],{},[443,3153,3154],{},"@path\u002Fto\u002Ffile",[2307,3156,3157,3158,770,3160,3163,3164,3167],{},"Bekerja persis seperti mention file di Web: model membaca file relatif terhadap workspace obrolan; ",[443,3159,2495],{},[443,3161,3162],{},"@awalan",", atau ",[443,3165,3166],{},"\u002Ffiles \u003Cawalan>"," membalas dengan file\u002Ffolder yang cocok",[2279,3169,3170,3174],{},[2307,3171,3172],{},[443,3173,1331],{},[2307,3175,3176,3179,3180,3182,3183,3186],{},[443,3177,3178],{},"[provider model effort]"," — divalidasi terhadap katalog LLM aktif, mengubah model dan effort obrolan; ",[443,3181,1331],{}," menampilkan opsi, ",[443,3184,3185],{},"\u002Fmodel reset"," mengembalikan default",[2279,3188,3189,3194],{},[2307,3190,3191],{},[443,3192,3193],{},"\u002Feffort",[2307,3195,3196,3199,3200,3203],{},[443,3197,3198],{},"\u003Cid>"," menyesuaikan level penalaran model saja; ",[443,3201,3202],{},"\u002Feffort reset"," mengembalikan pengaturan default",[573,3205,3207],{"id":3206},"ikhtisar-keamanan","Ikhtisar Keamanan",[733,3209,3210,3223,3233],{},[581,3211,3212,3213,3215,3216,3218,3219,3222],{},"Kunci privat ",[438,3214,2798],{}," hanya tersimpan di ",[443,3217,2173],{}," (izin 0600, penulisan atomik) — tidak pernah diekspos di endpoint ",[443,3220,3221],{},"\u002Fgateway\u002Flist"," atau log sistem.",[581,3224,3225,3226,2527,3229,3232],{},"Setiap event masuk selalu ",[438,3227,3228],{},"diverifikasi tanda tangan kriptografinya",[443,3230,3231],{},"verifyEvent","), dideduplikasi, disaring dari pesan sendiri, dan divalidasi mention-nya sebelum sampai ke agen.",[581,3234,3235,2527,3238,3241],{},[438,3236,3237],{},"Pendaftaran workspace dikontrol ketat oleh konfigurasi",[443,3239,3240],{},"allowWorkspace: false"," secara default) karena sesi gateway otomatis menyetujui izin file.",[429,3243,3245],{"id":3244},"kesimpulan-kolaborasi-ai-terdesentralisasi-di-buzz","Kesimpulan: Kolaborasi AI Terdesentralisasi di Buzz",[434,3247,3248,3249,3251],{},"Tantangan utama dalam menambahkan Buzz ke ",[443,3250,2126],{}," terletak pada pemenuhan kontrak protokol Nostr. Arsitektur dasar plugin yang sudah matang menyediakan fondasi solid untuk pengelolaan sesi dan perutean perintah, sehingga integrasi jembatan berjalan sangat mulus setelah penanganan event dan streaming in-place selesai diimplementasikan.",[429,3253,3254],{"id":2045},"Referensi:",[733,3256,3257,3265,3273],{},[581,3258,3259,3264],{},[451,3260,3263],{"href":3261,"rel":3262},"https:\u002F\u002Fgithub.com\u002Fa792883583\u002Fdsh-message-gateway\u002Fblob\u002Fmain\u002Fdocs\u002Farchitecture.md",[455],"dsh-message-gateway architecture guide"," — panduan arsitektur, resep ekstensi, dan catatan keamanan",[581,3266,3267,3272],{},[451,3268,3271],{"href":3269,"rel":3270},"https:\u002F\u002Fgithub.com\u002Fnbd-wtf\u002Fnostr-tools",[455],"nostr-tools"," — pustaka Nostr yang digunakan di balik layar",[581,3274,3275,3280],{},[451,3276,3279],{"href":3277,"rel":3278},"https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fdeer-flow\u002Fblob\u002Fmain\u002Fbackend\u002Fdocs\u002FIM_CHANNEL_CONNECTIONS.md",[455],"deer-flow IM channel connections"," — referensi pola koneksi saluran pesan instan",[832,3282,3283],{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":424,"searchDepth":479,"depth":494,"links":3285},[3286,3287,3291,3298,3299],{"id":2151,"depth":479,"text":2152},{"id":2264,"depth":479,"text":2265,"children":3288},[3289,3290],{"id":2547,"depth":494,"text":2548},{"id":2574,"depth":494,"text":2575},{"id":2681,"depth":479,"text":2682,"children":3292},[3293,3294,3296,3297],{"id":2804,"depth":494,"text":2805},{"id":2954,"depth":494,"text":3295},"Mengaktifkan Akses Folder Lokal dengan \u002Fworkspace",{"id":3051,"depth":494,"text":3052},{"id":3206,"depth":494,"text":3207},{"id":3244,"depth":479,"text":3245},{"id":2045,"depth":479,"text":3254},[846,3301,2877,3302],"collaboration","deepseek-harness","2026-09-30","Integrasikan DeepSeek Harness ke Block Buzz lewat jembatan Nostr. Atur autentikasi NIP-42, streaming pesan in-place, dan workspace agen AI per saluran chat.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002FID-Bringing-Buzz-to-DeepSeek-Harness.webp","Kartu teknologi premium 16:9 dengan aksen nila gelap dan amber yang mengilustrasikan cara menghubungkan DeepSeek Harness ke Block Buzz melalui jembatan Nostr, menampilkan panel glassmorphism bersih dengan tipografi terpusat.",{"schemaOrg":3308,"robots":856,"sitemap":3331},[3309,3311],{"@type":3310,"headline":2108,"description":3304,"image":3305},"TechArticle",{"@type":855,"name":2108,"description":3304,"image":3305,"step":3312},[3313,3316,3319,3322,3325,3328],{"@type":1525,"name":3314,"text":3315},"Tahap 1: Instal Plugin Gateway","Instal plugin dsh-message-gateway dan jalankan layanan dsh web.",{"@type":1525,"name":3317,"text":3318},"Tahap 2: Buka Pengaturan Message Platforms","Buka antarmuka Web DSH dan navigasikan ke menu Message platforms.",{"@type":1525,"name":3320,"text":3321},"Tahap 3: Konfigurasi Jembatan Buzz","Buat pasangan kunci Nostr, masukkan URL Relay dan saluran obrolan.",{"@type":1525,"name":3323,"text":3324},"Tahap 4: Daftarkan Agen ke Relay","Tambahkan asisten DSH ke relay Nostr Buzz menggunakan buzz-admin.",{"@type":1525,"name":3326,"text":3327},"Tahap 5: Masukkan Agen ke Saluran","Tambahkan pubkey HEX agen ke saluran menggunakan buzz-cli.",{"@type":1525,"name":3329,"text":3330},"Tahap 6: Aktifkan Akses Workspace","Konfigurasikan allowWorkspace di cordis.patch.yml untuk mengaktifkan perintah folder lokal.",{"lastmod":3303},{"title":3333,"description":3304,"ogTitle":2108,"ogDescription":3304,"twitterTitle":2108,"twitterDescription":3304},"Plugin Buzz DeepSeek Harness: Bangun Jembatan Nostr","id\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",[2270,2751,3336,861,2126],"Nostr","BnizhIw7cSvKcKxHiADkwPNEWOKaEXB6F3bslN23VUg",{"id":3339,"title":3340,"author":424,"body":3341,"category":4194,"date":4195,"description":4196,"extension":849,"image":4197,"imageAlt":4198,"isPublished":513,"meta":4199,"minRead":528,"navigation":513,"path":363,"seo":4233,"stem":4235,"tags":4236,"updatedAt":4232,"__hash__":4239},"article\u002Fid\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp.md","Cara Mengekspos Hermes Agent secara Privat dengan WARP",{"type":426,"value":3342,"toc":4176},[3343,3355,3364,3368,3371,3383,3387,3395,3399,3403,3452,3456,3585,3589,3623,3627,3630,3694,3697,3733,3736,3763,3767,3777,3782,3821,3906,3910,3915,3929,3938,4001,4006,4050,4054,4099,4113,4117,4161,4163,4173],[434,3344,3345,3346,3348,3349,2425,3351,3354],{},"Sebuah tantangan umum muncul ketika Anda ingin mengakses ",[438,3347,1311],{}," Anda dari perangkat lain seperti laptop, tablet, atau ponsel tanpa mengeksposnya ke internet publik. Memanfaatkan ",[438,3350,2017],{},[438,3352,3353],{},"Cloudflare Zero Trust"," memungkinkan Anda untuk mengekspos Hermes Agent secara global tanpa membuka satu port masuk pun pada firewall Anda.",[434,3356,3357,3358,3360,3361,3363],{},"Jika Anda telah mengikuti panduan kami sebelumnya, '",[451,3359,871],{"href":375},"', maka Hermes Agent sudah berjalan 24\u002F7. Alih-alih berurusan dengan kerumitan VPN tradisional, kita akan menggunakan klien ",[438,3362,2017],{}," untuk mengekspos Hermes Agent ke jaringan privat melalui internet.",[429,3365,3367],{"id":3366},"memahami-arsitektur","Memahami Arsitektur",[434,3369,3370],{},"Komponen yang digunakan:",[578,3372,3373,3378],{},[581,3374,3375,3377],{},[438,3376,3353],{},": Dasbor di Cloudflare tempat Anda menentukan aturan perutean (routing) dan kebijakan akses.",[581,3379,3380,3382],{},[438,3381,2017],{},": Aplikasi klien yang diinstal pada perangkat Anda (VPS, laptop, ponsel). Aplikasi ini mencegat lalu lintas yang ditujukan ke jaringan privat Anda dan merutekannya dengan aman.",[573,3384,3386],{"id":3385},"prasyarat","Prasyarat",[733,3388,3389,3392],{},[581,3390,3391],{},"Hermes Agent yang sedang berjalan di VPS Anda.",[581,3393,3394],{},"Akun Cloudflare gratis.",[429,3396,3398],{"id":3397},"panduan-langkah-demi-langkah","Panduan Langkah demi Langkah",[573,3400,3402],{"id":3401},"langkah-1-siapkan-cloudflare-zero-trust","Langkah 1: Siapkan Cloudflare Zero Trust",[578,3404,3405,3414,3421,3431,3438,3445],{},[581,3406,3407,3408,3413],{},"Masuk ke ",[451,3409,3412],{"href":3410,"rel":3411},"https:\u002F\u002Fdash.cloudflare.com\u002F",[455],"Dasbor Cloudflare"," Anda.",[581,3415,3416,3417],{},"Klik 'Zero Trust' dari menu sebelah kiri.\n",[568,3418],{"alt":3419,"src":3420},"Menu navigasi bilah sisi kiri dasbor Cloudflare dengan opsi Zero Trust","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-left-menu.webp",[581,3422,3423,3424,1202,3427],{},"Jika ini adalah pertama kalinya, Anda akan diminta untuk memilih paket (tingkat Gratis sudah sangat cukup untuk pengaturan ini) dan memberi nama tim Anda (misal, ",[443,3425,3426],{},"ai-team",[568,3428],{"alt":3429,"src":3430},"Menyiapkan akun Cloudflare Zero Trust untuk pertama kali dan memberi nama tim","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-team-setup.webp",[581,3432,3433,3434],{},"Klik 'Access' lalu 'Policies' untuk membuat kebijakan akses yang menentukan siapa saja yang memiliki akses ke jaringan tersebut.\n",[568,3435],{"alt":3436,"src":3437},"Halaman Kebijakan Akses Cloudflare Zero Trust yang menampilkan aturan akses yang baru dikonfigurasi","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-access-policies-page.webp",[581,3439,3440,3441],{},"Klik 'Create new policy'.\n",[568,3442],{"alt":3443,"src":3444},"Cloudflare Access policies page showing no policies added and a button to create a new policy.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-no-policies-create-button.png",[581,3446,3447,3448],{},"Pilih 'Emails' dan masukkan email Anda pada 'Policy rules'.\n",[568,3449],{"alt":3450,"src":3451},"Cloudflare Access policy rule configuration screen with an email address specified as the inclusion criteria.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-rule-email.png",[573,3453,3455],{"id":3454},"langkah-2-siapkan-klien-cloudflare-warp-di-vps","Langkah 2: Siapkan Klien Cloudflare WARP di VPS",[578,3457,3458,3468,3474,3481,3484,3499,3502,3578],{},[581,3459,1106,3460,3463,3464,3467],{},[443,3461,3462],{},"sudo apt update"," and ",[443,3465,3466],{},"sudo apt install cloudflare-warp"," di terminal VPS Anda.",[581,3469,1106,3470,3473],{},[443,3471,3472],{},"warp-cli registration new \u003CTEAM-NAME>"," di terminal VPS Anda, perintah ini akan mencetak sebuah URL.",[581,3475,3476,3477,3480],{},"Salin URL yang dicetak, yang akan terlihat seperti ",[443,3478,3479],{},"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fwarp",", lalu tempelkan ke browser Anda untuk otentikasi.",[581,3482,3483],{},"Karena otentikasi email digunakan dalam pengaturan kebijakan di atas, masukkan email Anda untuk mengotentikasi.",[581,3485,3486,3487,3490,3491,3494,3495,3498],{},"Di halaman '",[438,3488,3489],{},"Success","' (Sukses) pada browser, klik kanan lalu pilih '",[438,3492,3493],{},"Inspect","' pada tombol biru '",[438,3496,3497],{},"Open Cloudflare WARP","'.",[581,3500,3501],{},"Salin token panjang yang terdapat di dalam tautan tombol tersebut.",[581,3503,1106,3504,3507,3508,3510,3511],{},[443,3505,3506],{},"warp-cli --accept-tos registration token \"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fauth?token=\u003Ccopied_token>\""," di terminal VPS Anda untuk menghubungkannya dengan Cloudflare Zero Trust.",[1975,3509],{},"Jika Anda menemui 'Error: Failed to communicate with the WARP API' di Ubuntu 26, jalankan perintah berikut:",[461,3512,3514],{"className":897,"code":3513,"language":899,"meta":424,"style":424},"sudo systemctl restart warp-svc.service\n\n# Check status\nsudo systemctl status warp-svc.service\n\n# Run the warp-cli registration token again\nwarp-cli --accept-tos registration token   \"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fauth?token=\u003Ccopied_token>\"\n",[443,3515,3516,3527,3531,3536,3546,3550,3555],{"__ignoreMap":424},[469,3517,3518,3520,3522,3524],{"class":471,"line":472},[469,3519,928],{"class":475},[469,3521,1047],{"class":490},[469,3523,1050],{"class":490},[469,3525,3526],{"class":490}," warp-svc.service\n",[469,3528,3529],{"class":471,"line":479},[469,3530,514],{"emptyLinePlaceholder":513},[469,3532,3533],{"class":471,"line":494},[469,3534,3535],{"class":2721},"# Check status\n",[469,3537,3538,3540,3542,3544],{"class":471,"line":505},[469,3539,928],{"class":475},[469,3541,1047],{"class":490},[469,3543,1493],{"class":490},[469,3545,3526],{"class":490},[469,3547,3548],{"class":471,"line":510},[469,3549,514],{"emptyLinePlaceholder":513},[469,3551,3552],{"class":471,"line":517},[469,3553,3554],{"class":2721},"# Run the warp-cli registration token again\n",[469,3556,3557,3560,3563,3566,3569,3572,3575],{"class":471,"line":523},[469,3558,3559],{"class":475},"warp-cli",[469,3561,3562],{"class":490}," --accept-tos",[469,3564,3565],{"class":490}," registration",[469,3567,3568],{"class":490}," token",[469,3570,3571],{"class":486},"   \"",[469,3573,3574],{"class":490},"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fauth?token=\u003Ccopied_token>",[469,3576,3577],{"class":486},"\"\n",[581,3579,3580,3581],{},"Kembali to dasbor Cloudflare Zero Trust, lalu klik 'Devices' (Perangkat). Perangkat VPS Anda kini seharusnya sudah ditampilkan.\n",[568,3582],{"alt":3583,"src":3584},"Dasbor Perangkat Zero Trust mengonfirmasi bahwa VPS Linux telah terhubung","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-devices-vps-connected.webp",[573,3586,3588],{"id":3587},"langkah-3-siapkan-perutean-lalu-lintas","Langkah 3: Siapkan Perutean Lalu Lintas",[578,3590,3591,3598,3605,3612],{},[581,3592,3593,3594],{},"Klik profil VPS Anda di dasbor Devices.\n",[568,3595],{"alt":3596,"src":3597},"Mengakses detail dan pengaturan split tunnel untuk perangkat VPS yang terdaftar","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-device-profile.webp",[581,3599,3600,3601],{},"Gulir ke bawah ke bagian 'Split Tunnels'.\n",[568,3602],{"alt":3603,"src":3604},"Bagian Split Tunnels di bawah pengaturan profil VPS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-split-tunnels-section.webp",[581,3606,3607,3608],{},"Klik tombol 'Manage' (Kelola) dan konfigurasikan pengaturannya seperti gambar di bawah ini. Ganti alamat IP jika perlu.\n",[568,3609],{"alt":3610,"src":3611},"Mengelola pengecualian IP dan nama host Split Tunnels di pengaturan Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-manage-split-tunnels.webp",[581,3613,3614,3615,3618,3619,3622],{},"Mengekspos ",[443,3616,3617],{},"address"," (alamat) dan ",[443,3620,3621],{},"host"," akan merutekan lalu lintas ke layanan Anda melalui jaringan privat yang sama.",[573,3624,3626],{"id":3625},"langkah-4-konfigurasi-firewall-di-vps","Langkah 4: Konfigurasi Firewall di VPS",[434,3628,3629],{},"Aktifkan firewall untuk mengizinkan subnet '100.96.0.0\u002F12' saja, dan memblokir seluruh akses masuk publik lainnya.",[461,3631,3633],{"className":897,"code":3632,"language":899,"meta":424,"style":424},"sudo ufw enable \nsudo ufw default allow outgoing \nsudo ufw default deny incoming\nsudo ufw allow in from 100.96.0.0\u002F12\n",[443,3634,3635,3646,3663,3677],{"__ignoreMap":424},[469,3636,3637,3639,3642,3644],{"class":471,"line":472},[469,3638,928],{"class":475},[469,3640,3641],{"class":490}," ufw",[469,3643,1470],{"class":490},[469,3645,974],{"class":973},[469,3647,3648,3650,3652,3655,3658,3661],{"class":471,"line":479},[469,3649,928],{"class":475},[469,3651,3641],{"class":490},[469,3653,3654],{"class":490}," default",[469,3656,3657],{"class":490}," allow",[469,3659,3660],{"class":490}," outgoing",[469,3662,974],{"class":973},[469,3664,3665,3667,3669,3671,3674],{"class":471,"line":494},[469,3666,928],{"class":475},[469,3668,3641],{"class":490},[469,3670,3654],{"class":490},[469,3672,3673],{"class":490}," deny",[469,3675,3676],{"class":490}," incoming\n",[469,3678,3679,3681,3683,3685,3688,3691],{"class":471,"line":505},[469,3680,928],{"class":475},[469,3682,3641],{"class":490},[469,3684,3657],{"class":490},[469,3686,3687],{"class":490}," in",[469,3689,3690],{"class":490}," from",[469,3692,3693],{"class":490}," 100.96.0.0\u002F12\n",[434,3695,3696],{},"Izinkan lalu lintas loopback untuk menghindari gangguan pada layanan lokal:",[461,3698,3700],{"className":897,"code":3699,"language":899,"meta":424,"style":424},"sudo ufw allow in on lo\nsudo ufw allow out on lo\n",[443,3701,3702,3718],{"__ignoreMap":424},[469,3703,3704,3706,3708,3710,3712,3715],{"class":471,"line":472},[469,3705,928],{"class":475},[469,3707,3641],{"class":490},[469,3709,3657],{"class":490},[469,3711,3687],{"class":490},[469,3713,3714],{"class":490}," on",[469,3716,3717],{"class":490}," lo\n",[469,3719,3720,3722,3724,3726,3729,3731],{"class":471,"line":479},[469,3721,928],{"class":475},[469,3723,3641],{"class":490},[469,3725,3657],{"class":490},[469,3727,3728],{"class":490}," out",[469,3730,3714],{"class":490},[469,3732,3717],{"class":490},[434,3734,3735],{},"Muat ulang firewall dan verifikasi statusnya:",[461,3737,3739],{"className":897,"code":3738,"language":899,"meta":424,"style":424},"sudo ufw reload \nsudo ufw status verbose\n",[443,3740,3741,3752],{"__ignoreMap":424},[469,3742,3743,3745,3747,3750],{"class":471,"line":472},[469,3744,928],{"class":475},[469,3746,3641],{"class":490},[469,3748,3749],{"class":490}," reload",[469,3751,974],{"class":973},[469,3753,3754,3756,3758,3760],{"class":471,"line":479},[469,3755,928],{"class":475},[469,3757,3641],{"class":490},[469,3759,1493],{"class":490},[469,3761,3762],{"class":490}," verbose\n",[573,3764,3766],{"id":3765},"langkah-5-ekspos-hermes-agent-ke-jaringan-privat","Langkah 5: Ekspos Hermes Agent ke Jaringan Privat",[434,3768,3769,3770,3773,3774,618],{},"Kita akan mengekspos ",[438,3771,3772],{},"Hermes Agent Web Dashboard"," ke jaringan privat kita dan menggunakan penyedia otentikasi default, ",[438,3775,3776],{},"Nous Research",[3778,3779,3781],"h4",{"id":3780},"siapkan-penyedia-otentikasi","Siapkan Penyedia Otentikasi",[578,3783,3784,3793,3800,3807,3814],{},[581,3785,3786,3787,3792],{},"Kunjungi ",[451,3788,3791],{"href":3789,"rel":3790},"https:\u002F\u002Fportal.nousresearch.com",[455],"portal.nousresearch.com"," untuk mendaftarkan sebuah akun.",[581,3794,3795,3796],{},"Pilih 'Local Dashboards' (Dasbor Lokal).\n",[568,3797],{"alt":3798,"src":3799},"Memilih opsi Local Dashboards di portal Nous Research","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fnous-portal-local-dashboards-selection.webp",[581,3801,3802,3803],{},"Klik 'Register Dashboard' (Daftarkan Dasbor).\n",[568,3804],{"alt":3805,"src":3806},"Mengklik tombol Register Dashboard untuk membuat entri dasbor baru","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fnous-portal-register-dashboard.webp",[581,3808,3809,3810],{},"Masukkan alamat IP jaringan privat VPS Anda sebagai 'Dashboard redirect URI' dan klik 'Save' (Simpan).\n",[568,3811],{"alt":3812,"src":3813},"Mendaftarkan alamat IP jaringan privat VPS sebagai redirect URI di portal Nous Research","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fnous-portal-register-redirect-uri.webp",[581,3815,3816,3817,3820],{},"Salin 'OAuth client ID' dan tempelkan ke dalam file ",[443,3818,3819],{},"config.yaml"," Anda:",[461,3822,3824],{"className":463,"code":3823,"language":465,"meta":424,"style":424},"dashboard:\n  theme: default\n  show_token_analytics: false\n  oauth:\n    client_id: agent:cmq02x7ha0002jk0ba3kfnb\n    portal_url: https:\u002F\u002Fportal.nousresearch.com\n  basic_auth:\n    username: ''\n    password_hash: ''\n",[443,3825,3826,3833,3843,3853,3860,3870,3880,3887,3897],{"__ignoreMap":424},[469,3827,3828,3831],{"class":471,"line":472},[469,3829,3830],{"class":482},"dashboard",[469,3832,3015],{"class":486},[469,3834,3835,3838,3840],{"class":471,"line":479},[469,3836,3837],{"class":482},"  theme",[469,3839,487],{"class":486},[469,3841,3842],{"class":490}," default\n",[469,3844,3845,3848,3850],{"class":471,"line":494},[469,3846,3847],{"class":482},"  show_token_analytics",[469,3849,487],{"class":486},[469,3851,3852],{"class":3025}," false\n",[469,3854,3855,3858],{"class":471,"line":505},[469,3856,3857],{"class":482},"  oauth",[469,3859,3015],{"class":486},[469,3861,3862,3865,3867],{"class":471,"line":510},[469,3863,3864],{"class":482},"    client_id",[469,3866,487],{"class":486},[469,3868,3869],{"class":490}," agent:cmq02x7ha0002jk0ba3kfnb\n",[469,3871,3872,3875,3877],{"class":471,"line":517},[469,3873,3874],{"class":482},"    portal_url",[469,3876,487],{"class":486},[469,3878,3879],{"class":490}," https:\u002F\u002Fportal.nousresearch.com\n",[469,3881,3882,3885],{"class":471,"line":523},[469,3883,3884],{"class":482},"  basic_auth",[469,3886,3015],{"class":486},[469,3888,3889,3892,3894],{"class":471,"line":528},[469,3890,3891],{"class":482},"    username",[469,3893,487],{"class":486},[469,3895,3896],{"class":486}," ''\n",[469,3898,3899,3902,3904],{"class":471,"line":534},[469,3900,3901],{"class":482},"    password_hash",[469,3903,487],{"class":486},[469,3905,3896],{"class":486},[3778,3907,3909],{"id":3908},"siapkan-systemd-agar-dasbor-hermes-autostart","Siapkan Systemd agar Dasbor Hermes Autostart",[578,3911,3912],{},[581,3913,3914],{},"Buat sebuah file layanan:",[461,3916,3918],{"className":1346,"code":3917,"language":1348,"meta":424,"style":424},"sudo nano \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-dashboard.service\n",[443,3919,3920],{"__ignoreMap":424},[469,3921,3922,3924,3926],{"class":471,"line":472},[469,3923,928],{"class":475},[469,3925,1007],{"class":490},[469,3927,3928],{"class":490}," \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-dashboard.service\n",[578,3930,3931],{"start":479},[581,3932,3933,3934,3937],{},"Tempelkan konfigurasi berikut, dan pastikan ",[443,3935,3936],{},"--host 0.0.0.0"," disertakan dalam perintah tersebut:",[461,3939,3941],{"className":1368,"code":3940,"language":1370,"meta":424,"style":424},"[Unit]\nDescription=Hermes Dashboard\nAfter=network.target\n\n[Service]\nUser=hermes\nWorkingDirectory=\u002Fhome\u002Fhermes\nExecStart=\u002Fhome\u002Fhermes\u002F.local\u002Fbin\u002Fhermes dashboard --host 0.0.0.0\nRestart=always\nRestartSec=10\nEnvironment=PATH=\u002Fhome\u002Fhermes\u002F.local\u002Fbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fbin:\u002Fbin\n\n[Install]\nWantedBy=multi-user.target\n",[443,3942,3943,3947,3952,3956,3960,3964,3968,3972,3977,3981,3985,3989,3993,3997],{"__ignoreMap":424},[469,3944,3945],{"class":471,"line":472},[469,3946,1377],{},[469,3948,3949],{"class":471,"line":479},[469,3950,3951],{},"Description=Hermes Dashboard\n",[469,3953,3954],{"class":471,"line":494},[469,3955,1387],{},[469,3957,3958],{"class":471,"line":505},[469,3959,514],{"emptyLinePlaceholder":513},[469,3961,3962],{"class":471,"line":510},[469,3963,1396],{},[469,3965,3966],{"class":471,"line":517},[469,3967,1401],{},[469,3969,3970],{"class":471,"line":523},[469,3971,1406],{},[469,3973,3974],{"class":471,"line":528},[469,3975,3976],{},"ExecStart=\u002Fhome\u002Fhermes\u002F.local\u002Fbin\u002Fhermes dashboard --host 0.0.0.0\n",[469,3978,3979],{"class":471,"line":534},[469,3980,1416],{},[469,3982,3983],{"class":471,"line":539},[469,3984,1421],{},[469,3986,3987],{"class":471,"line":1424},[469,3988,1427],{},[469,3990,3991],{"class":471,"line":1430},[469,3992,514],{"emptyLinePlaceholder":513},[469,3994,3995],{"class":471,"line":1435},[469,3996,1438],{},[469,3998,3999],{"class":471,"line":1441},[469,4000,1444],{},[578,4002,4003],{"start":494},[581,4004,4005],{},"Aktifkan dan jalankan layanan:",[461,4007,4009],{"className":1346,"code":4008,"language":1348,"meta":424,"style":424},"sudo systemctl daemon-reload\nsudo systemctl enable hermes-dashboard\nsudo systemctl start hermes-dashboard\nsudo systemctl status hermes-dashboard\n",[443,4010,4011,4019,4030,4040],{"__ignoreMap":424},[469,4012,4013,4015,4017],{"class":471,"line":472},[469,4014,928],{"class":475},[469,4016,1047],{"class":490},[469,4018,1461],{"class":490},[469,4020,4021,4023,4025,4027],{"class":471,"line":479},[469,4022,928],{"class":475},[469,4024,1047],{"class":490},[469,4026,1470],{"class":490},[469,4028,4029],{"class":490}," hermes-dashboard\n",[469,4031,4032,4034,4036,4038],{"class":471,"line":494},[469,4033,928],{"class":475},[469,4035,1047],{"class":490},[469,4037,1482],{"class":490},[469,4039,4029],{"class":490},[469,4041,4042,4044,4046,4048],{"class":471,"line":505},[469,4043,928],{"class":475},[469,4045,1047],{"class":490},[469,4047,1493],{"class":490},[469,4049,4029],{"class":490},[573,4051,4053],{"id":4052},"langkah-6-instal-klien-cloudflare-warp-di-desktop","Langkah 6: Instal Klien Cloudflare WARP di Desktop",[578,4055,4056,4064,4067,4074,4081,4088],{},[581,4057,4058,4059,618],{},"Unduh klien Cloudflare WARP dari ",[451,4060,4063],{"href":4061,"rel":4062},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fwarp-client\u002Fget-started\u002F",[455],"portal Cloudflare",[581,4065,4066],{},"Buka dan luncurkan klien Cloudflare WARP setelah proses instalasi.",[581,4068,4069,4070],{},"Masuk (Log in) ketika diminta.\n",[568,4071],{"alt":4072,"src":4073},"Perintah login klien Cloudflare WARP pada komputer desktop","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-warp-desktop-login-prompt.webp",[581,4075,4076,4077],{},"Halaman 'Success' (Sukses) akan ditampilkan setelah login berhasil.\n",[568,4078],{"alt":4079,"src":4080},"Halaman web sukses otentikasi setelah masuk ke Cloudflare Zero Trust di desktop","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-warp-desktop-login-success.webp",[581,4082,4083,4084],{},"Klien WARP seharusnya sekarang menunjukkan bahwa ia terhubung ke tim Zero Trust Anda.\n",[568,4085],{"alt":4086,"src":4087},"Klien Cloudflare WARP desktop mengonfirmasi koneksi aktif ke jaringan privat","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-warp-desktop-client-connected.webp",[581,4089,4090,4091,4094,4095],{},"Buka browser web Anda dan masukkan IP privat Anda (misalnya, ",[443,4092,4093],{},"100.96.0.3","). Hermes Web Dashboard akan dimuat dengan sukses.\n",[568,4096],{"alt":4097,"src":4098},"Mengakses Dasbor Web Hermes Agent privat di browser pada desktop","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fhermes-agent-dashboard-desktop-view.webp",[4100,4101,4102],"blockquote",{},[434,4103,4104,4107,4108,4112],{},[438,4105,4106],{},"Kiat Pro untuk Pengguna macOS:"," Jika Anda menggunakan klien WARP untuk mengakses beberapa akun Cloudflare, lihat panduan cepat kami mengenai ",[438,4109,4110],{},[451,4111,1546],{"href":399}," agar dapat beralih antar akun dengan mulus.",[573,4114,4116],{"id":4115},"langkah-7-instal-klien-cloudflare-warp-di-perangkat-ios","Langkah 7: Instal Klien Cloudflare WARP di Perangkat iOS",[578,4118,4119,4126,4134,4142,4150],{},[581,4120,4121,4122,4125],{},"Instal ",[438,4123,4124],{},"Cloudflare One"," dari App Store.",[581,4127,4128,4129],{},"Buka aplikasi Cloudflare One dan masukkan nama tim Anda saat diminta.\n",[568,4130],{"alt":4131,"src":4132,"width":4133},"Memasukkan nama tim Cloudflare Zero Trust di aplikasi Cloudflare One di iOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-one-ios-team-name-prompt.webp",239,[581,4135,4136,4137],{},"Log in menggunakan alamat email yang sama dengan yang telah dikonfigurasi pada aturan kebijakan di atas.\n",[568,4138],{"alt":4139,"src":4140,"width":4141},"Perintah otentikasi email untuk Cloudflare Zero Trust di iOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-one-ios-email-login.webp",229,[581,4143,4144,4145],{},"Setelah terhubung, tampilannya akan seperti ini:\n",[568,4146],{"alt":4147,"src":4148,"width":4149},"Aplikasi Cloudflare One menampilkan status terhubung pada perangkat seluler iOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-one-ios-client-connected.webp",322,[581,4151,4152,4153,4155,4156],{},"Buka browser web Anda dan masukkan IP privat ",[443,4154,4093],{}," untuk mengakses Hermes Web Dashboard di perangkat seluler Anda.\n",[568,4157],{"alt":4158,"src":4159,"width":4160},"Mengakses antarmuka Dasbor Web Hermes Agent di browser ponsel seluler","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fhermes-agent-dashboard-mobile-view.webp",345,[429,4162,816],{"id":815},[434,4164,4165,4166,4168,4169,4172],{},"Dengan ",[438,4167,3353],{}," yang menangani kebijakan identitas dan klien ",[438,4170,4171],{},"WARP"," yang merutekan lalu lintas melalui terowongan terenkripsi, Hermes Agent Anda sekarang dapat diakses secara aman dari perangkat Anda secara global. Pengaturan ini meletakkan fondasi yang aman dan kuat untuk membangun serta mengakses infrastruktur AI privat yang sepenuhnya dapat diakses dari jarak jauh.",[832,4174,4175],{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":424,"searchDepth":479,"depth":494,"links":4177},[4178,4181,4193],{"id":3366,"depth":479,"text":3367,"children":4179},[4180],{"id":3385,"depth":494,"text":3386},{"id":3397,"depth":479,"text":3398,"children":4182},[4183,4184,4185,4186,4187,4191,4192],{"id":3401,"depth":494,"text":3402},{"id":3454,"depth":494,"text":3455},{"id":3587,"depth":494,"text":3588},{"id":3625,"depth":494,"text":3626},{"id":3765,"depth":494,"text":3766,"children":4188},[4189,4190],{"id":3780,"depth":505,"text":3781},{"id":3908,"depth":505,"text":3909},{"id":4052,"depth":494,"text":4053},{"id":4115,"depth":494,"text":4116},{"id":815,"depth":479,"text":816},[846,2088],"2026-07-09","Pelajari cara mengekspos dan mengakses Hermes Agent Anda secara global dengan aman menggunakan Cloudflare WARP dan Zero Trust tanpa membuka port firewall masuk.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002FID-Exposing-Hermes-Agent-to-Private-Network-Using-Cloudflare-WARP.webp","Mengekspos Hermes Agent secara aman ke jaringan privat menggunakan Cloudflare Zero Trust dan terowongan WARP",{"schemaOrg":4200,"robots":856,"sitemap":4231},[4201],{"@type":855,"headline":3340,"description":4196,"name":3340,"image":4197,"step":4202},[4203,4207,4211,4215,4219,4223,4227],{"@type":1525,"name":4204,"text":4205,"url":4206,"image":3420},"Siapkan Cloudflare Zero Trust","Masuk ke Dasbor Cloudflare Anda. Klik 'Zero Trust' dari menu sebelah kiri. Jika ini adalah pertama kalinya, Anda akan diminta untuk memilih paket (tingkat Gratis sudah sangat cukup untuk pengaturan ini) dan memberi nama tim Anda (misal, ai-team). Kli","#step-1",{"@type":1525,"name":4208,"text":4209,"url":4210,"image":3584},"Siapkan Klien Cloudflare WARP di VPS","Jalankan sudo apt update and sudo apt install cloudflare-warp di terminal VPS Anda. Jalankan warp-cli registration new \u003CTEAM-NAME> di terminal VPS Anda, perintah ini akan mencetak sebuah URL. Salin URL yang dicetak, yang akan terlihat seperti https:\u002F","#step-2",{"@type":1525,"name":4212,"text":4213,"url":4214,"image":3597},"Siapkan Perutean Lalu Lintas","Klik profil VPS Anda di dasbor Devices. Gulir ke bawah ke bagian 'Split Tunnels'. Klik tombol 'Manage' (Kelola) dan konfigurasikan pengaturannya seperti gambar di bawah ini. Ganti alamat IP jika perlu. Mengekspos address (alamat) dan host akan merute","#step-3",{"@type":1525,"name":4216,"text":4217,"url":4218},"Konfigurasi Firewall di VPS","Aktifkan firewall untuk mengizinkan subnet '100.96.0.0\u002F12' saja, dan memblokir seluruh akses masuk publik lainnya. bash Izinkan lalu lintas loopback untuk menghindari gangguan pada layanan lokal: bash Muat ulang firewall dan verifikasi statusnya: bas","#step-4",{"@type":1525,"name":4220,"text":4221,"url":4222},"Ekspos Hermes Agent ke Jaringan Privat","Kita akan mengekspos Hermes Agent Web Dashboard ke jaringan privat kita dan menggunakan penyedia otentikasi default, Nous Research.","#step-5",{"@type":1525,"name":4224,"text":4225,"url":4226,"image":4073},"Instal Klien Cloudflare WARP di Desktop","Unduh klien Cloudflare WARP dari portal Cloudflare. Buka dan luncurkan klien Cloudflare WARP setelah proses instalasi. Masuk (Log in) ketika diminta. Halaman 'Success' (Sukses) akan ditampilkan setelah login berhasil. Klien WARP seharusnya sekarang m","#step-6",{"@type":1525,"name":4228,"text":4229,"url":4230,"image":4132},"Instal Klien Cloudflare WARP di Perangkat iOS","Instal Cloudflare One dari App Store. Buka aplikasi Cloudflare One dan masukkan nama tim Anda saat diminta. Log in menggunakan alamat email yang sama dengan yang telah dikonfigurasi pada aturan kebijakan di atas. Setelah terhubung, tampilannya akan s","#step-7",{"lastmod":4232},"2026-09-28",{"title":4234,"description":4196,"ogTitle":3340,"ogDescription":4196,"twitterTitle":3340,"twitterDescription":4196},"Akses Aman Hermes Agent dengan Cloudflare Zero Trust","id\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",[2017,2103,1311,4237,4238],"Jaringan privat","Tutorial","Wh3s_kiAj69-Gnv-QMhchTPh3C1rs2rSgTg22y7n9dE",{"id":4241,"title":2132,"author":424,"body":4242,"category":6383,"date":6384,"description":2141,"extension":849,"image":2142,"imageAlt":2143,"isPublished":513,"meta":6385,"minRead":1694,"navigation":513,"path":383,"seo":6407,"stem":6409,"tags":6410,"updatedAt":865,"__hash__":6414},"article\u002Fid\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues.md",{"type":426,"value":4243,"toc":6353},[4244,4247,4253,4258,4262,4265,4303,4307,4313,4351,4355,4359,4373,4379,4384,4388,4392,4406,4412,4460,4488,4492,4500,4506,4510,4513,4718,4722,4768,4775,4782,4788,4838,4844,4872,4876,4880,4907,4935,4940,4982,4991,5261,5265,5311,5316,5323,5328,5332,5356,5359,5365,5368,5372,5380,5386,5389,5395,5402,5426,5432,5438,5441,5447,5451,5454,5457,5460,5466,5469,5475,5481,5487,5492,5496,5507,5514,5520,5523,5529,5533,5540,5546,5552,5556,5564,5627,5640,5695,5698,5768,5774,5788,5794,5798,5843,5849,5852,5858,5861,5867,5871,5887,5903,5909,6006,6009,6015,6026,6072,6078,6084,6097,6113,6116,6122,6126,6133,6155,6165,6263,6274,6280,6287,6293,6296,6302,6305,6311,6315,6318,6320,6350],[434,4245,4246],{},"Fragmentasi konteks adalah kendala yang membuat frustrasi saat bekerja dengan beberapa agen AI. Dengan percakapan yang tersebar di berbagai alat, Anda akhirnya bertindak sebagai perute manusia (human router) dengan menyalin percakapan dari Claude Code untuk ditempelkan ke Gemini CLI, lalu menyalin dari Gemini CLI untuk ditempelkan ke Hermes Agent. Friksi ini meningkat ketika ada rekan manusia dalam tim yang sama.",[434,4248,4249],{},[568,4250],{"alt":4251,"src":4252},"Antarmuka pengguna ruang kerja kolaboratif Buzz yang menampilkan saluran obrolan dan agen AI yang aktif","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-workspace-interface.webp",[434,4254,4255,4257],{},[438,4256,2751],{},", sebuah ruang kerja kolaborasi sumber terbuka (open-source), menyatukan tim manusia dan agen AI ke dalam satu lingkungan yang terpadu. Di sini, rekan manusia dan agen AI berbagi riwayat tugas dan proyek yang sama, menyerahkan pekerjaan satu sama lain secara mulus.",[429,4259,4261],{"id":4260},"apa-itu-buzz-dari-block-ruang-kerja-kolaboratif-agen-ai","Apa itu Buzz dari Block? Ruang Kerja Kolaboratif Agen AI",[434,4263,4264],{},"Buzz adalah ruang kerja kolaborasi sumber terbuka dari Block (perusahaan milik Jack Dorsey) tempat manusia dan agen AI berbagi saluran dan proyek yang sama. Buzz menawarkan fitur-fitur utama berikut:",[733,4266,4267,4273,4279,4285,4291,4297],{},[581,4268,4269,4272],{},[438,4270,4271],{},"Konteks bersama:"," Saluran (channels) adalah tempat manusia dan agen berkolaborasi satu sama lain. Semua riwayat percakapan dan proyek terkandung di dalam saluran tersebut.",[581,4274,4275,4278],{},[438,4276,4277],{},"Komunikasi antar-agen:"," Agen dapat berkomunikasi satu sama lain, bahkan di mesin yang berbeda. Agen dapat me-@mention agen lain untuk menyerahkan pekerjaan atau memeriksa silang kode.",[581,4280,4281,4284],{},[438,4282,4283],{},"Aktivasi berbasis sebutan (mention-driven):"," Agen hanya bertindak ketika di-@mention, jika tidak, mereka akan tetap diam. Saat disebut, agen membaca konteks yang relevan di saluran tersebut dan mulai bekerja.",[581,4286,4287,4290],{},[438,4288,4289],{},"Sistem identitas terpadu:"," Manusia dan agen menggunakan sistem identitas yang sama, yang diautentikasi melalui kunci kriptografi.",[581,4292,4293,4296],{},[438,4294,4295],{},"Perintah yang didelegasikan:"," Anda dapat memberikan izin kepada rekan manusia untuk memerintah agen Anda, memungkinkan seluruh tim untuk memberi instruksi dan memanfaatkan asisten digital satu sama lain.",[581,4298,4299,4302],{},[438,4300,4301],{},"Server mandiri (self-hosted):"," Karena Anda meng-host server sendiri, data Anda tetap sepenuhnya berada di bawah kendali Anda. Anda memilih siapa yang bergabung dan menetapkan aturan operasional Anda sendiri.",[429,4304,4306],{"id":4305},"arsitektur-buzz-yang-kriptografis-dan-didukung-nostr","Arsitektur Buzz yang Kriptografis dan Didukung Nostr",[434,4308,4309],{},[568,4310],{"alt":4311,"src":4312},"Diagram arsitektur kriptografis berbasis Nostr dari ruang kerja kolaborasi Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-nostr-cryptographic-architecture.webp",[733,4314,4315,4321,4327,4333,4339,4345],{},[581,4316,4317,4320],{},[438,4318,4319],{},"Relay Nostr bertindak sebagai server:"," Pesan, alur kerja, repositori, dan peristiwa lainnya ditandatangani secara kriptografis, diverifikasi, dan disimpan di server relay Nostr. Protokol Nostr secara native mendukung komunikasi melalui WebSockets dan REST API.",[581,4322,4323,4326],{},[438,4324,4325],{},"Identitas kriptografis terpadu:"," Manusia dan agen mengautentikasi menggunakan kunci kriptografis mereka sendiri. Identitas ini tetap berada di sisi klien (client-side) dan tidak pernah disimpan di server.",[581,4328,4329,4332],{},[438,4330,4331],{},"Keanggotaan agen kelas satu:"," Setiap agen memiliki identitas, keanggotaan saluran, dan jejak auditnya sendiri. Agen terhubung ke ruang kerja menggunakan Agent Communication Protocol (ACP).",[581,4334,4335,4338],{},[438,4336,4337],{},"Repositori Git terdesentralisasi:"," Repositori kode disimpan pada penyimpanan objek yang kompatibel dengan S3, sedangkan tugas, pull request, dan ulasan kode dilacak dalam log aktivitas Nostr. Oleh karena itu, repositori Git Buzz di-host di relay Nostr, bukan di GitHub.",[581,4340,4341,4344],{},[438,4342,4343],{},"Aplikasi Buzz adalah klien Nostr:"," Buzz terpisah dari relay Nostr; ini adalah aplikasi klien desktop\u002Fseluler yang terhubung ke URL relay.",[581,4346,4347,4350],{},[438,4348,4349],{},"Stack infrastruktur:"," Database PostgreSQL menangani penyimpanan peristiwa dan pencarian teks lengkap, Redis mengelola pesan pub\u002Fsub, dan MinIO yang kompatibel dengan S3 digunakan untuk penyimpanan media.",[429,4352,4354],{"id":4353},"cara-self-host-relay-buzz-block-di-linux-vps","Cara Self-Host Relay Buzz Block di Linux VPS",[573,4356,4358],{"id":4357},"_0-prasyarat","0. Prasyarat",[733,4360,4361,4364,4367,4370],{},[581,4362,4363],{},"Sebuah Linux VPS",[581,4365,4366],{},"Domain yang mengarah ke server Anda",[581,4368,4369],{},"Docker dan plugin Docker Compose",[581,4371,4372],{},"Akun Cloudflare (paket gratis)",[434,4374,4375,4376,4378],{},"Dalam panduan ini, kita akan menjalankan relay Nostr di Ubuntu VPS di balik jaringan privat ",[451,4377,3340],{"href":363},". Stack-nya adalah empat layanan dalam Docker Compose — relay, PostgreSQL, Redis, dan MinIO — ditambah Caddy untuk HTTPS.",[2139,4380],{"description":4381,"image":4197,"image-alt":4198,"label":4382,"min-read":4383,"title":3340,"to":363},"Pelajari cara mengekspos dan mengakses Hermes Agent Anda secara aman secara global menggunakan Cloudflare WARP dan Zero Trust tanpa membuka port firewall masuk.","Panduan terkait","8",[573,4385,4387],{"id":4386},"_1-dns-cloudflare-dan-token-api","1. DNS Cloudflare dan Token API",[3778,4389,4391],{"id":4390},"membuat-token-api-cloudflare","Membuat Token API Cloudflare",[578,4393,4394,4401],{},[581,4395,4396,4397,4400],{},"Klik pada ",[438,4398,4399],{},"Profile"," di sudut kanan atas dari menu dropdown ikon pengguna.",[581,4402,4396,4403,618],{},[438,4404,4405],{},"API Tokens",[434,4407,4408],{},[568,4409],{"alt":4410,"src":4411},"Halaman profil pengguna Cloudflare yang menampilkan menu pembuatan Token API","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fcloudflare-profile-api-tokens.webp",[578,4413,4414,4419,4425,4445,4450,4454,4457],{"start":494},[581,4415,1184,4416,618],{},[438,4417,4418],{},"Create Token",[581,4420,4421,4422,618],{},"Gunakan templat ",[438,4423,4424],{},"Edit zone DNS",[581,4426,4427,4428],{},"Konfigurasikan templat sebagai berikut:\n",[733,4429,4430,4436],{},[581,4431,4432,4435],{},[438,4433,4434],{},"Permissions",": Zone — DNS — Edit",[581,4437,4438,4441,4442],{},[438,4439,4440],{},"Zone Resources",": Include — Specific zone — ",[443,4443,4444],{},"example.com",[581,4446,1184,4447,618],{},[438,4448,4449],{},"Continue to summary",[581,4451,1184,4452,618],{},[438,4453,4418],{},[581,4455,4456],{},"Salin token yang dihasilkan karena tidak akan ditampilkan lagi setelah halaman ditutup.",[581,4458,4459],{},"Uji token yang dihasilkan di terminal Anda untuk memastikan token berfungsi:",[461,4461,4463],{"className":897,"code":4462,"language":899,"meta":424,"style":424},"curl \"https:\u002F\u002Fapi.cloudflare.com\u002Fclient\u002Fv4\u002Fuser\u002Ftokens\u002Fverify\" -H \"Authorization: Bearer YOUR_TOKEN_HERE\"\n",[443,4464,4465],{"__ignoreMap":424},[469,4466,4467,4469,4472,4475,4478,4481,4483,4486],{"class":471,"line":472},[469,4468,1070],{"class":475},[469,4470,4471],{"class":486}," \"",[469,4473,4474],{"class":490},"https:\u002F\u002Fapi.cloudflare.com\u002Fclient\u002Fv4\u002Fuser\u002Ftokens\u002Fverify",[469,4476,4477],{"class":486},"\"",[469,4479,4480],{"class":490}," -H",[469,4482,4471],{"class":486},[469,4484,4485],{"class":490},"Authorization: Bearer YOUR_TOKEN_HERE",[469,4487,3577],{"class":486},[3778,4489,4491],{"id":4490},"catatan-dns","Catatan DNS",[733,4493,4494],{},[581,4495,4496,4497,618],{},"Buat catatan A dan atur ke ",[438,4498,4499],{},"DNS only",[434,4501,4502],{},[568,4503],{"alt":4504,"src":4505},"Mengonfigurasi catatan DNS A untuk domain Buzz di dasbor Cloudflare dengan status proksi diatur ke DNS saja","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fcloudflare-dns-a-record-configuration.webp",[573,4507,4509],{"id":4508},"_2-menginstal-docker-di-ubuntu","2. Menginstal Docker di Ubuntu",[434,4511,4512],{},"Jalankan perintah berikut untuk menginstal Docker di Ubuntu:",[461,4514,4516],{"className":897,"code":4515,"language":899,"meta":424,"style":424},"# Add Docker's official GPG key and set up the Docker repository\ncurl -fsSL https:\u002F\u002Fdownload.docker.com\u002Flinux\u002Fubuntu\u002Fgpg | sudo gpg --dearmor -o \u002Fusr\u002Fshare\u002Fkeyrings\u002Fdocker-archive-keyring.gpg\n\n# Add the official Docker repository\necho \"deb [arch=amd64 signed-by=\u002Fusr\u002Fshare\u002Fkeyrings\u002Fdocker-archive-keyring.gpg] https:\u002F\u002Fdownload.docker.com\u002Flinux\u002Fubuntu $(lsb_release -cs) stable\" | sudo tee \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fdocker.list > \u002Fdev\u002Fnull\n\n# Update package list\nsudo apt update\n\n# Install Docker Engine, Docker Community Edition, and containerd runtime\nsudo apt install docker-ce docker-ce-cli containerd.io -y\n\n# Start automatically when the system boots\nsudo systemctl enable docker\n\n# Verify docker is installed\ndocker --version\n\nsudo apt install -y docker-compose-plugin\n\n# Verify the compose plugin is installed\ndocker compose version\n\n",[443,4517,4518,4523,4548,4552,4557,4600,4604,4609,4618,4622,4627,4647,4651,4656,4667,4671,4676,4682,4686,4700,4704,4709],{"__ignoreMap":424},[469,4519,4520],{"class":471,"line":472},[469,4521,4522],{"class":2721},"# Add Docker's official GPG key and set up the Docker repository\n",[469,4524,4525,4527,4529,4532,4534,4536,4539,4542,4545],{"class":471,"line":479},[469,4526,1070],{"class":475},[469,4528,1073],{"class":490},[469,4530,4531],{"class":490}," https:\u002F\u002Fdownload.docker.com\u002Flinux\u002Fubuntu\u002Fgpg",[469,4533,1079],{"class":486},[469,4535,940],{"class":475},[469,4537,4538],{"class":490}," gpg",[469,4540,4541],{"class":490}," --dearmor",[469,4543,4544],{"class":490}," -o",[469,4546,4547],{"class":490}," \u002Fusr\u002Fshare\u002Fkeyrings\u002Fdocker-archive-keyring.gpg\n",[469,4549,4550],{"class":471,"line":494},[469,4551,514],{"emptyLinePlaceholder":513},[469,4553,4554],{"class":471,"line":505},[469,4555,4556],{"class":2721},"# Add the official Docker repository\n",[469,4558,4559,4562,4564,4567,4570,4573,4576,4579,4582,4584,4586,4588,4591,4594,4597],{"class":471,"line":510},[469,4560,4561],{"class":2620},"echo",[469,4563,4471],{"class":486},[469,4565,4566],{"class":490},"deb [arch=amd64 signed-by=\u002Fusr\u002Fshare\u002Fkeyrings\u002Fdocker-archive-keyring.gpg] https:\u002F\u002Fdownload.docker.com\u002Flinux\u002Fubuntu ",[469,4568,4569],{"class":486},"$(",[469,4571,4572],{"class":475},"lsb_release",[469,4574,4575],{"class":490}," -cs",[469,4577,4578],{"class":486},")",[469,4580,4581],{"class":490}," stable",[469,4583,4477],{"class":486},[469,4585,1079],{"class":486},[469,4587,940],{"class":475},[469,4589,4590],{"class":490}," tee",[469,4592,4593],{"class":490}," \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fdocker.list",[469,4595,4596],{"class":486}," >",[469,4598,4599],{"class":490}," \u002Fdev\u002Fnull\n",[469,4601,4602],{"class":471,"line":517},[469,4603,514],{"emptyLinePlaceholder":513},[469,4605,4606],{"class":471,"line":523},[469,4607,4608],{"class":2721},"# Update package list\n",[469,4610,4611,4613,4615],{"class":471,"line":528},[469,4612,928],{"class":475},[469,4614,931],{"class":490},[469,4616,4617],{"class":490}," update\n",[469,4619,4620],{"class":471,"line":534},[469,4621,514],{"emptyLinePlaceholder":513},[469,4623,4624],{"class":471,"line":539},[469,4625,4626],{"class":2721},"# Install Docker Engine, Docker Community Edition, and containerd runtime\n",[469,4628,4629,4631,4633,4636,4639,4642,4645],{"class":471,"line":1424},[469,4630,928],{"class":475},[469,4632,931],{"class":490},[469,4634,4635],{"class":490}," install",[469,4637,4638],{"class":490}," docker-ce",[469,4640,4641],{"class":490}," docker-ce-cli",[469,4643,4644],{"class":490}," containerd.io",[469,4646,948],{"class":490},[469,4648,4649],{"class":471,"line":1430},[469,4650,514],{"emptyLinePlaceholder":513},[469,4652,4653],{"class":471,"line":1435},[469,4654,4655],{"class":2721},"# Start automatically when the system boots\n",[469,4657,4658,4660,4662,4664],{"class":471,"line":1441},[469,4659,928],{"class":475},[469,4661,1047],{"class":490},[469,4663,1470],{"class":490},[469,4665,4666],{"class":490}," docker\n",[469,4668,4669],{"class":471,"line":1688},[469,4670,514],{"emptyLinePlaceholder":513},[469,4672,4673],{"class":471,"line":1694},[469,4674,4675],{"class":2721},"# Verify docker is installed\n",[469,4677,4678,4680],{"class":471,"line":1700},[469,4679,2824],{"class":475},[469,4681,1103],{"class":490},[469,4683,4684],{"class":471,"line":1706},[469,4685,514],{"emptyLinePlaceholder":513},[469,4687,4688,4690,4692,4694,4697],{"class":471,"line":1712},[469,4689,928],{"class":475},[469,4691,931],{"class":490},[469,4693,4635],{"class":490},[469,4695,4696],{"class":490}," -y",[469,4698,4699],{"class":490}," docker-compose-plugin\n",[469,4701,4702],{"class":471,"line":1718},[469,4703,514],{"emptyLinePlaceholder":513},[469,4705,4706],{"class":471,"line":1724},[469,4707,4708],{"class":2721},"# Verify the compose plugin is installed\n",[469,4710,4711,4713,4715],{"class":471,"line":1730},[469,4712,2824],{"class":475},[469,4714,2827],{"class":490},[469,4716,4717],{"class":490}," version\n",[573,4719,4721],{"id":4720},"_3-kloning-dan-konfigurasi","3. Kloning dan Konfigurasi",[461,4723,4725],{"className":897,"code":4724,"language":899,"meta":424,"style":424},"git clone https:\u002F\u002Fgithub.com\u002Fblock\u002Fbuzz.git\n\ncd buzz\u002Fdeploy\u002Fcompose\ncp .env.example .env\nnano .env\n",[443,4726,4727,4738,4742,4750,4761],{"__ignoreMap":424},[469,4728,4729,4732,4735],{"class":471,"line":472},[469,4730,4731],{"class":475},"git",[469,4733,4734],{"class":490}," clone",[469,4736,4737],{"class":490}," https:\u002F\u002Fgithub.com\u002Fblock\u002Fbuzz.git\n",[469,4739,4740],{"class":471,"line":479},[469,4741,514],{"emptyLinePlaceholder":513},[469,4743,4744,4747],{"class":471,"line":494},[469,4745,4746],{"class":2620},"cd",[469,4748,4749],{"class":490}," buzz\u002Fdeploy\u002Fcompose\n",[469,4751,4752,4755,4758],{"class":471,"line":505},[469,4753,4754],{"class":475},"cp",[469,4756,4757],{"class":490}," .env.example",[469,4759,4760],{"class":490}," .env\n",[469,4762,4763,4766],{"class":471,"line":510},[469,4764,4765],{"class":475},"nano",[469,4767,4760],{"class":490},[434,4769,4770,4771,4774],{},"Edit ",[443,4772,4773],{},".env"," dalam beberapa kelompok:",[733,4776,4777],{},[581,4778,4779],{},[438,4780,4781],{},"Domain:",[461,4783,4786],{"className":4784,"code":4785,"language":1028},[1026],"BUZZ_DOMAIN=buzz.pafor.me\nRELAY_URL=wss:\u002F\u002Fbuzz.pafor.me\nBUZZ_PAIRING_RELAY_URL=wss:\u002F\u002Fbuzz.pafor.me\u002Fpair\nBUZZ_MEDIA_BASE_URL=https:\u002F\u002Fbuzz.pafor.me\u002Fmedia\nBUZZ_MEDIA_SERVER_DOMAIN=buzz.pafor.me\nBUZZ_CORS_ORIGINS=https:\u002F\u002Fbuzz.pafor.me\n",[443,4787,4785],{"__ignoreMap":424},[733,4789,4790,4800],{},[581,4791,4792,4795,4796,4799],{},[438,4793,4794],{},"Kunci pemilik:"," ",[443,4797,4798],{},"RELAY_OWNER_PUBKEY"," memerlukan kunci publik hex 64-karakter Anda. Buat identitas di aplikasi desktop terlebih dahulu ('Create a new identity key' → salin ID publik Anda, yang dalam format npub), lalu konversikan ke hex.",[581,4801,4802,4805],{},[438,4803,4804],{},"Rahasia (Secrets):",[733,4806,4807,4819,4832],{},[581,4808,4809,4810,4814,4815,4818],{},"Hasilkan rahasia menggunakan ",[451,4811,4813],{"href":4812},"\u002Fid\u002Ftools\u002Fsecret-key-hex","alat kustom online"," ini atau dengan ",[443,4816,4817],{},"openssl rand -hex 32"," (jalankan tujuh kali)",[581,4820,4821,4822,2249,4825,770,4828,4831],{},"Ganti setiap placeholder ",[443,4823,4824],{},"CHANGE_ME",[443,4826,4827],{},"BUZZ_RELAY_PRIVATE_KEY",[443,4829,4830],{},"BUZZ_GIT_HOOK_HMAC_SECRET",", kata sandi Postgres\u002FRedis\u002FTypesense, dan kunci akses\u002Frahasia S3.",[581,4833,4834,4835,618],{},"Placeholder yang tersisa adalah penyebab paling umum dari loop mulai ulang kontainer; verifikasi milik Anda dengan ",[443,4836,4837],{},"grep CHANGE_ME .env",[461,4839,4842],{"className":4840,"code":4841,"language":1028},[1026],"    BUZZ_RELAY_PRIVATE_KEY=CHANGE_ME_64_HEX_PRIVATE_KEY\n    BUZZ_GIT_HOOK_HMAC_SECRET=CHANGE_ME_RANDOM_64_HEX\n    POSTGRES_PASSWORD=CHANGE_ME_RANDOM_PASSWORD\n    REDIS_PASSWORD=CHANGE_ME_RANDOM_PASSWORD\n    TYPESENSE_API_KEY=CHANGE_ME_RANDOM_API_KEY\n    BUZZ_S3_ACCESS_KEY=CHANGE_ME_RANDOM_ACCESS_KEY\n    BUZZ_S3_SECRET_KEY=CHANGE_ME_RANDOM_SECRET_KEY\n",[443,4843,4841],{"__ignoreMap":424},[733,4845,4846],{},[581,4847,4848,4851],{},[438,4849,4850],{},"Lainnya:",[733,4852,4853,4860],{},[581,4854,4855,4856,4859],{},"Tambahkan ",[443,4857,4858],{},"CLOUDFLARE_API_TOKEN"," sebagai variabel lingkungan dan tetapkan token API yang dibuat sebelumnya. Ini diperlukan untuk Caddy.",[581,4861,4862,4863,770,4865,4868,4869,618],{},"Buzz dikirimkan dengan default terbuka — siapa pun yang mengetahui URL relay Anda dapat mengautentikasi dan bergabung. Atur ",[443,4864,4798],{},[443,4866,4867],{},"BUZZ_REQUIRE_RELAY_MEMBERSHIP=true",", dan ",[443,4870,4871],{},"BUZZ_REQUIRE_AUTH_TOKEN=true",[573,4873,4875],{"id":4874},"_4-mengaktifkan-https-dengan-caddy","4. Mengaktifkan HTTPS dengan Caddy",[3778,4877,4879],{"id":4878},"membangun-image-caddy-kustom-dengan-modul-dns-cloudflare","Membangun Image Caddy Kustom dengan Modul DNS Cloudflare",[733,4881,4882,4893,4904],{},[581,4883,4884,4885,4888,4889,4892],{},"Kita menyiapkan DNS-01 dengan Cloudflare untuk Caddy. DNS-01 bekerja dengan meminta plugin menulis catatan TXT ",[443,4886,4887],{},"_acme-challenge.buzz.pafor.me"," ke ",[438,4890,4891],{},"DNS publik",";",[581,4894,4895,4896,4899,4900,4903],{},"Let's Encrypt kemudian mencari catatan tersebut dari internet publik untuk memverifikasi kontrol domain. Ini berarti ",[443,4897,4898],{},"pafor.me"," harus berupa zona publik di akun Cloudflare Anda — bukan hanya nama host privat yang hanya ada di DNS privat Zero Trust \u002F WARP. Jika ",[443,4901,4902],{},"buzz.pafor.me"," hanya diselesaikan secara privat dan tidak ada zona publik, DNS-01 akan gagal, sehingga memerlukan pendekatan yang berbeda.",[581,4905,4906],{},"Tambahkan berikut ini ke Caddyfile:",[461,4908,4910],{"className":2990,"code":4909,"language":2992,"meta":424,"style":424},"{\n  acme_dns cloudflare {env.CLOUDFLARE_API_TOKEN}\n}\n",[443,4911,4912,4917,4931],{"__ignoreMap":424},[469,4913,4914],{"class":471,"line":472},[469,4915,4916],{"class":486},"{\n",[469,4918,4919,4922,4925,4928],{"class":471,"line":479},[469,4920,4921],{"class":490},"  acme_dns cloudflare",[469,4923,4924],{"class":486}," {",[469,4926,4927],{"class":490},"env.CLOUDFLARE_API_TOKEN",[469,4929,4930],{"class":486},"}\n",[469,4932,4933],{"class":471,"line":494},[469,4934,4930],{"class":486},[733,4936,4937],{},[581,4938,4939],{},"Buat Dockerfile.caddy dengan konten berikut, yang diperlukan oleh compose.caddy.yml:",[461,4941,4943],{"className":2990,"code":4942,"language":2992,"meta":424,"style":424},"FROM caddy:2-builder AS builder\n\nRUN xcaddy build \\\n    --with github.com\u002Fcaddy-dns\u002Fcloudflare\n\nFROM caddy:2-alpine\n\nCOPY --from=builder \u002Fusr\u002Fbin\u002Fcaddy \u002Fusr\u002Fbin\u002Fcaddy\n",[443,4944,4945,4950,4954,4959,4964,4968,4973,4977],{"__ignoreMap":424},[469,4946,4947],{"class":471,"line":472},[469,4948,4949],{"class":490},"FROM caddy:2-builder AS builder\n",[469,4951,4952],{"class":471,"line":479},[469,4953,514],{"emptyLinePlaceholder":513},[469,4955,4956],{"class":471,"line":494},[469,4957,4958],{"class":490},"RUN xcaddy build \\\n",[469,4960,4961],{"class":471,"line":505},[469,4962,4963],{"class":490},"    --with github.com\u002Fcaddy-dns\u002Fcloudflare\n",[469,4965,4966],{"class":471,"line":510},[469,4967,514],{"emptyLinePlaceholder":513},[469,4969,4970],{"class":471,"line":517},[469,4971,4972],{"class":490},"FROM caddy:2-alpine\n",[469,4974,4975],{"class":471,"line":523},[469,4976,514],{"emptyLinePlaceholder":513},[469,4978,4979],{"class":471,"line":528},[469,4980,4981],{"class":490},"COPY --from=builder \u002Fusr\u002Fbin\u002Fcaddy \u002Fusr\u002Fbin\u002Fcaddy\n",[733,4983,4984],{},[581,4985,4986,4987,4990],{},"Modifikasi ",[443,4988,4989],{},"compose.caddy.yml"," untuk menggunakan image dengan modul Cloudflare dan meneruskan token API Cloudflare:",[461,4992,4994],{"className":2990,"code":4993,"language":2992,"meta":424,"style":424},"services:\n  relay:\n    ports: !reset []\n\n  caddy:\n    build:\n      context: .\n      dockerfile: Dockerfile.caddy\n    image: buzz-caddy:cloudflare\n    depends_on:\n      relay:\n        condition: service_healthy\n    environment:\n      BUZZ_DOMAIN: ${BUZZ_DOMAIN:?set BUZZ_DOMAIN}\n      CLOUDFLARE_API_TOKEN: ${CLOUDFLARE_API_TOKEN:?set CLOUDFLARE_API_TOKEN}\n    ports:\n      - \"${CADDY_HTTP_PORT:-80}:80\"\n      - \"${CADDY_HTTPS_PORT:-443}:443\"\n    volumes:\n      - .\u002FCaddyfile:\u002Fetc\u002Fcaddy\u002FCaddyfile:ro\n      - buzz-caddy-data:\u002Fdata\n      - buzz-caddy-config:\u002Fconfig\n    restart: unless-stopped\n    networks:\n      - buzz-net\n\nvolumes:\n  buzz-caddy-data:\n    labels:\n      com.buzz.volume: caddy-data\n  buzz-caddy-config:\n    labels:\n      com.buzz.volume: caddy-config\n",[443,4995,4996,5003,5010,5023,5027,5034,5041,5052,5062,5072,5079,5086,5096,5103,5113,5123,5129,5141,5152,5159,5166,5173,5180,5190,5197,5204,5208,5215,5222,5229,5239,5246,5252],{"__ignoreMap":424},[469,4997,4998,5001],{"class":471,"line":472},[469,4999,5000],{"class":482},"services",[469,5002,3015],{"class":486},[469,5004,5005,5008],{"class":471,"line":479},[469,5006,5007],{"class":482},"  relay",[469,5009,3015],{"class":486},[469,5011,5012,5015,5017,5020],{"class":471,"line":494},[469,5013,5014],{"class":482},"    ports",[469,5016,487],{"class":486},[469,5018,5019],{"class":2597}," !reset",[469,5021,5022],{"class":486}," []\n",[469,5024,5025],{"class":471,"line":505},[469,5026,514],{"emptyLinePlaceholder":513},[469,5028,5029,5032],{"class":471,"line":510},[469,5030,5031],{"class":482},"  caddy",[469,5033,3015],{"class":486},[469,5035,5036,5039],{"class":471,"line":517},[469,5037,5038],{"class":482},"    build",[469,5040,3015],{"class":486},[469,5042,5043,5046,5048],{"class":471,"line":523},[469,5044,5045],{"class":482},"      context",[469,5047,487],{"class":486},[469,5049,5051],{"class":5050},"sbssI"," .\n",[469,5053,5054,5057,5059],{"class":471,"line":528},[469,5055,5056],{"class":482},"      dockerfile",[469,5058,487],{"class":486},[469,5060,5061],{"class":490}," Dockerfile.caddy\n",[469,5063,5064,5067,5069],{"class":471,"line":534},[469,5065,5066],{"class":482},"    image",[469,5068,487],{"class":486},[469,5070,5071],{"class":490}," buzz-caddy:cloudflare\n",[469,5073,5074,5077],{"class":471,"line":539},[469,5075,5076],{"class":482},"    depends_on",[469,5078,3015],{"class":486},[469,5080,5081,5084],{"class":471,"line":1424},[469,5082,5083],{"class":482},"      relay",[469,5085,3015],{"class":486},[469,5087,5088,5091,5093],{"class":471,"line":1430},[469,5089,5090],{"class":482},"        condition",[469,5092,487],{"class":486},[469,5094,5095],{"class":490}," service_healthy\n",[469,5097,5098,5101],{"class":471,"line":1435},[469,5099,5100],{"class":482},"    environment",[469,5102,3015],{"class":486},[469,5104,5105,5108,5110],{"class":471,"line":1441},[469,5106,5107],{"class":482},"      BUZZ_DOMAIN",[469,5109,487],{"class":486},[469,5111,5112],{"class":490}," ${BUZZ_DOMAIN:?set BUZZ_DOMAIN}\n",[469,5114,5115,5118,5120],{"class":471,"line":1688},[469,5116,5117],{"class":482},"      CLOUDFLARE_API_TOKEN",[469,5119,487],{"class":486},[469,5121,5122],{"class":490}," ${CLOUDFLARE_API_TOKEN:?set CLOUDFLARE_API_TOKEN}\n",[469,5124,5125,5127],{"class":471,"line":1694},[469,5126,5014],{"class":482},[469,5128,3015],{"class":486},[469,5130,5131,5134,5136,5139],{"class":471,"line":1700},[469,5132,5133],{"class":486},"      -",[469,5135,4471],{"class":486},[469,5137,5138],{"class":490},"${CADDY_HTTP_PORT:-80}:80",[469,5140,3577],{"class":486},[469,5142,5143,5145,5147,5150],{"class":471,"line":1706},[469,5144,5133],{"class":486},[469,5146,4471],{"class":486},[469,5148,5149],{"class":490},"${CADDY_HTTPS_PORT:-443}:443",[469,5151,3577],{"class":486},[469,5153,5154,5157],{"class":471,"line":1712},[469,5155,5156],{"class":482},"    volumes",[469,5158,3015],{"class":486},[469,5160,5161,5163],{"class":471,"line":1718},[469,5162,5133],{"class":486},[469,5164,5165],{"class":490}," .\u002FCaddyfile:\u002Fetc\u002Fcaddy\u002FCaddyfile:ro\n",[469,5167,5168,5170],{"class":471,"line":1724},[469,5169,5133],{"class":486},[469,5171,5172],{"class":490}," buzz-caddy-data:\u002Fdata\n",[469,5174,5175,5177],{"class":471,"line":1730},[469,5176,5133],{"class":486},[469,5178,5179],{"class":490}," buzz-caddy-config:\u002Fconfig\n",[469,5181,5182,5185,5187],{"class":471,"line":1736},[469,5183,5184],{"class":482},"    restart",[469,5186,487],{"class":486},[469,5188,5189],{"class":490}," unless-stopped\n",[469,5191,5192,5195],{"class":471,"line":1742},[469,5193,5194],{"class":482},"    networks",[469,5196,3015],{"class":486},[469,5198,5199,5201],{"class":471,"line":1748},[469,5200,5133],{"class":486},[469,5202,5203],{"class":490}," buzz-net\n",[469,5205,5206],{"class":471,"line":1754},[469,5207,514],{"emptyLinePlaceholder":513},[469,5209,5210,5213],{"class":471,"line":1760},[469,5211,5212],{"class":482},"volumes",[469,5214,3015],{"class":486},[469,5216,5217,5220],{"class":471,"line":1766},[469,5218,5219],{"class":482},"  buzz-caddy-data",[469,5221,3015],{"class":486},[469,5223,5224,5227],{"class":471,"line":1771},[469,5225,5226],{"class":482},"    labels",[469,5228,3015],{"class":486},[469,5230,5231,5234,5236],{"class":471,"line":1776},[469,5232,5233],{"class":482},"      com.buzz.volume",[469,5235,487],{"class":486},[469,5237,5238],{"class":490}," caddy-data\n",[469,5240,5241,5244],{"class":471,"line":1782},[469,5242,5243],{"class":482},"  buzz-caddy-config",[469,5245,3015],{"class":486},[469,5247,5248,5250],{"class":471,"line":1787},[469,5249,5226],{"class":482},[469,5251,3015],{"class":486},[469,5253,5254,5256,5258],{"class":471,"line":1793},[469,5255,5233],{"class":482},[469,5257,487],{"class":486},[469,5259,5260],{"class":490}," caddy-config\n",[3778,5262,5264],{"id":5263},"memulai-kontainer-docker","Memulai kontainer Docker",[461,5266,5268],{"className":897,"code":5267,"language":899,"meta":424,"style":424},"docker compose -f compose.yml -f compose.caddy.yml up -d\n\n#Check the Docker status\ndocker compose ps\n",[443,5269,5270,5293,5297,5302],{"__ignoreMap":424},[469,5271,5272,5274,5276,5279,5282,5284,5287,5290],{"class":471,"line":472},[469,5273,2824],{"class":475},[469,5275,2827],{"class":490},[469,5277,5278],{"class":490}," -f",[469,5280,5281],{"class":490}," compose.yml",[469,5283,5278],{"class":490},[469,5285,5286],{"class":490}," compose.caddy.yml",[469,5288,5289],{"class":490}," up",[469,5291,5292],{"class":490}," -d\n",[469,5294,5295],{"class":471,"line":479},[469,5296,514],{"emptyLinePlaceholder":513},[469,5298,5299],{"class":471,"line":494},[469,5300,5301],{"class":2721},"#Check the Docker status\n",[469,5303,5304,5306,5308],{"class":471,"line":505},[469,5305,2824],{"class":475},[469,5307,2827],{"class":490},[469,5309,5310],{"class":490}," ps\n",[568,5312],{"src":5313,"alt":5314,"style":5315},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fdocker-compose-ps-status-terminal.webp","Jendela terminal yang menampilkan kontainer yang berjalan untuk layanan Buzz melalui docker compose ps","max-width: 700px; width: 100%; height: auto;",[434,5317,5318,5319,5322],{},"Buka browser web Anda dan navigasikan ke ",[443,5320,5321],{},"http:\u002F\u002Fbuzz.pafor.me"," untuk memverifikasi bahwa relay berjalan.",[568,5324],{"src":5325,"alt":5326,"style":5327},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-relay-running-browser-verification.webp","Verifikasi browser yang menunjukkan respons sukses dari relay Buzz Block yang di-self-host","max-width: 500px; width: 100%; height: auto;",[573,5329,5331],{"id":5330},"langkah-5-cadangkan-back-up-sejak-hari-pertama","Langkah 5: Cadangkan (Back up) sejak hari pertama",[461,5333,5335],{"className":897,"code":5334,"language":899,"meta":424,"style":424},"mkdir -p \u002Fbuzz_backups\ncrontab -e\n",[443,5336,5337,5348],{"__ignoreMap":424},[469,5338,5339,5342,5345],{"class":471,"line":472},[469,5340,5341],{"class":475},"mkdir",[469,5343,5344],{"class":490}," -p",[469,5346,5347],{"class":490}," \u002Fbuzz_backups\n",[469,5349,5350,5353],{"class":471,"line":479},[469,5351,5352],{"class":475},"crontab",[469,5354,5355],{"class":490}," -e\n",[434,5357,5358],{},"Tambahkan tugas cron dump database harian:",[461,5360,5363],{"className":5361,"code":5362,"language":1028},[1026],"0 3 * * * cd \u002Fhome\u002F\u003Cuser>\u002Fbuzz\u002Fdeploy\u002Fcompose && docker compose exec -T postgres pg_dump -U buzz buzz > \u002Fbuzz_backups\u002Fbuzz-$(date +\\%Y\\%m\\%d).sql\n",[443,5364,5362],{"__ignoreMap":424},[434,5366,5367],{},"Catatan: Perlakukan BUZZ_RELAY_PRIVATE_KEY sebagai permanen. Peristiwa yang ditandatangani olehnya akan gagal verifikasi jika kuncinya berubah; database yang dipulihkan yang dipasangkan dengan kunci baru tidak akan dianggap sebagai relay yang sama.",[429,5369,5371],{"id":5370},"menyiapkan-klien-desktop-buzz-dan-identitas-nostr","Menyiapkan Klien Desktop Buzz dan Identitas Nostr",[434,5373,5374,5375,5379],{},"Unduh aplikasi desktop Buzz dari ",[451,5376,5377],{"href":5377,"rel":5378},"https:\u002F\u002Fgithub.com\u002Fblock\u002Fbuzz\u002Freleases",[455]," dan jalankan. Isi detail profil hingga Anda mencapai halaman \"Join or create a community\".",[434,5381,5382],{},[568,5383],{"alt":5384,"src":5385},"Layar pengaturan awal Klien Desktop Buzz untuk bergabung atau membuat komunitas","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-setup-community.webp",[434,5387,5388],{},"Klik \"Join a community\" dan salin kunci publik Anda.",[434,5390,5391],{},[568,5392],{"alt":5393,"src":5394},"Tampilan klien Buzz yang menunjukkan identitas kunci publik sebelum bergabung dengan komunitas","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-join-community-public-key.webp",[434,5396,5397,5398,5401],{},"Jalankan perintah berikut di ",[438,5399,5400],{},"VPS"," untuk menambahkan diri Anda sebagai anggota pertama:",[461,5403,5405],{"className":897,"code":5404,"language":899,"meta":424,"style":424},"docker compose exec relay buzz-admin add-member --pubkey npub1yourkeyhere\n",[443,5406,5407],{"__ignoreMap":424},[469,5408,5409,5411,5413,5415,5417,5419,5421,5423],{"class":471,"line":472},[469,5410,2824],{"class":475},[469,5412,2827],{"class":490},[469,5414,2830],{"class":490},[469,5416,2833],{"class":490},[469,5418,2836],{"class":490},[469,5420,2839],{"class":490},[469,5422,2842],{"class":490},[469,5424,5425],{"class":490}," npub1yourkeyhere\n",[434,5427,4855,5428,5431],{},[443,5429,5430],{},"wss:\u002F\u002Fbuzz.pafor.me"," as the community URL and click \"Next\".",[434,5433,5434],{},[568,5435],{"alt":5436,"src":5437},"Memasukkan URL relay komunitas yang di-self-host di aplikasi desktop Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-input-community-url.webp",[434,5439,5440],{},"Masukkan nama dan klik tombol Next.",[434,5442,5443],{},[568,5444],{"alt":5445,"src":5446},"Layar konfigurasi profil di aplikasi Buzz untuk memasukkan nama tampilan","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-profile-name-input.webp",[573,5448,5450],{"id":5449},"saluran-channels-dan-agen","Saluran (Channels) dan Agen",[434,5452,5453],{},"Saluran adalah grup tugas atau grup proyek. Buat saluran per tugas atau proyek dan masukkan manusia serta agen ke dalamnya.",[434,5455,5456],{},"Semua hal dalam saluran dibagikan secara otomatis, menghilangkan kebutuhan untuk memberikan pengarahan kepada setiap anggota secara individual. Setiap agen dapat disebut menggunakan @ dan membaca pesan yang relevan. Selain itu, agen dapat me-@mention satu sama lain.",[434,5458,5459],{},"Mari kirim DM ke agen yang telah dikonfigurasi sebelumnya",[434,5461,5462],{},[568,5463],{"alt":5464,"src":5465},"Mengirim pesan langsung ke agen AI di klien desktop kolaboratif Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-dm-agent.webp",[434,5467,5468],{},"Mari buat saluran dan tambahkan beberapa agen ke dalamnya",[434,5470,5471],{},[568,5472],{"alt":5473,"src":5474},"Membuat saluran tugas atau proyek baru di dalam aplikasi desktop Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-create-channel-dialog.webp",[434,5476,5477],{},[568,5478],{"alt":5479,"src":5480},"Menambahkan anggota manusia dan agen AI ke saluran yang baru dibuat","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-add-agents-to-channel.webp",[434,5482,5483],{},[568,5484],{"alt":5485,"src":5486},"Tampilan saluran aktif yang menampilkan riwayat obrolan terkonsolidasi dan tugas proyek","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-channel-view.webp",[568,5488],{"src":5489,"alt":5490,"style":5491},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-channel-active-agents.webp","Tampilan detail agen AI aktif yang terintegrasi ke dalam saluran proyek kolaboratif","max-width: 367px; width: 100%; height: auto;",[573,5493,5495],{"id":5494},"mengaktifkan-runtime-agen","Mengaktifkan Runtime Agen",[434,5497,5498,5499,5502,5503,5506],{},"Runtime default mengandalkan deteksi otomatis yang mencari biner peluncur (misalnya ",[443,5500,5501],{},"hermes-acp",") di direktori standar seperti ",[443,5504,5505],{},"~\u002F.local\u002Fbin",". Jika suatu alat diinstal di lokasi non-standar, Buzz tidak dapat menyelesaikannya.",[434,5508,5509,5510,5513],{},"Untuk Kimi Code, ID agennya adalah kimi, dan Buzz mencari binernya di ",[443,5511,5512],{},"~\u002F.local\u002Fbin\u002Fkimi",". Tautan simbolis (symbolic link) dapat melakukannya:",[461,5515,5518],{"className":5516,"code":5517,"language":1028},[1026],"ln -s kimi-cli \u002FUsers\u002F\u003Cuser>\u002F.local\u002Fbin\u002Fkimi\n",[443,5519,5517],{"__ignoreMap":424},[434,5521,5522],{},"Kimi Code sekarang muncul di bawah runtime Agen.",[434,5524,5525],{},[568,5526],{"alt":5527,"src":5528},"Pengaturan aplikasi Buzz yang menampilkan runtime Agen AI yang dikonfigurasi termasuk Kimi","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-settings-agent-runtimes-list.webp",[573,5530,5532],{"id":5531},"proyek-dan-repositori","Proyek dan Repositori",[434,5534,5535,5536,5539],{},"Aktifkan fitur '",[438,5537,5538],{},"Projects","' di Settings → Experiments terlebih dahulu:",[434,5541,5542],{},[568,5543],{"alt":5544,"src":5545},"Mengaktifkan fitur eksperimental Projects di tab pengaturan Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-settings-experiments-projects.webp",[434,5547,5548,5549,5551],{},"Saat ini, proyek harus dibuat menggunakan ",[443,5550,2854],{}," (meskipun pembuatan proyek langsung dari UI direnkanakan untuk rilis mendatang).",[3778,5553,5555],{"id":5554},"menginstal-buzz-cli","Menginstal buzz-cli",[434,5557,5558,5559,5561,5562,487],{},"Jalankan perintah berikut untuk menginstal ",[443,5560,2854],{}," di ",[438,5563,5400],{},[461,5565,5567],{"className":897,"code":5566,"language":899,"meta":424,"style":424},"sudo apt install cargo\ncd ~\u002Fbuzz\ncargo install --path crates\u002Fbuzz-cli\necho 'export PATH=\"$HOME\u002F.cargo\u002Fbin:$PATH\"' >> ~\u002F.bashrc && source ~\u002F.bashrc\n",[443,5568,5569,5580,5587,5600],{"__ignoreMap":424},[469,5570,5571,5573,5575,5577],{"class":471,"line":472},[469,5572,928],{"class":475},[469,5574,931],{"class":490},[469,5576,4635],{"class":490},[469,5578,5579],{"class":490}," cargo\n",[469,5581,5582,5584],{"class":471,"line":479},[469,5583,4746],{"class":2620},[469,5585,5586],{"class":490}," ~\u002Fbuzz\n",[469,5588,5589,5592,5594,5597],{"class":471,"line":494},[469,5590,5591],{"class":475},"cargo",[469,5593,4635],{"class":490},[469,5595,5596],{"class":490}," --path",[469,5598,5599],{"class":490}," crates\u002Fbuzz-cli\n",[469,5601,5602,5604,5607,5610,5613,5616,5619,5621,5624],{"class":471,"line":505},[469,5603,4561],{"class":2620},[469,5605,5606],{"class":486}," '",[469,5608,5609],{"class":490},"export PATH=\"$HOME\u002F.cargo\u002Fbin:$PATH\"",[469,5611,5612],{"class":486},"'",[469,5614,5615],{"class":486}," >>",[469,5617,5618],{"class":490}," ~\u002F.bashrc",[469,5620,937],{"class":486},[469,5622,5623],{"class":2620}," source",[469,5625,5626],{"class":490}," ~\u002F.bashrc\n",[434,5628,5629,5630,5633,5634,5636,5637,5639],{},"Hasilkan sepasang kunci privat dan publik menggunakan ",[451,5631,4813],{"href":5632},"\u002Fid\u002Ftools\u002Fnostr-key-generator"," atau ",[443,5635,2854],{},". Pasangan ini adalah identitas ",[443,5638,2854],{}," di relay Nostr.",[461,5641,5643],{"className":897,"code":5642,"language":899,"meta":424,"style":424},"docker run --rm --entrypoint \u002Fusr\u002Flocal\u002Fbin\u002Fbuzz-admin ghcr.io\u002Fblock\u002Fbuzz:main generate-key\n\n# Use the generated Public Key\ndocker compose exec relay buzz-admin add-member --pubkey generated_Public_key\n",[443,5644,5645,5667,5671,5676],{"__ignoreMap":424},[469,5646,5647,5649,5652,5655,5658,5661,5664],{"class":471,"line":472},[469,5648,2824],{"class":475},[469,5650,5651],{"class":490}," run",[469,5653,5654],{"class":490}," --rm",[469,5656,5657],{"class":490}," --entrypoint",[469,5659,5660],{"class":490}," \u002Fusr\u002Flocal\u002Fbin\u002Fbuzz-admin",[469,5662,5663],{"class":490}," ghcr.io\u002Fblock\u002Fbuzz:main",[469,5665,5666],{"class":490}," generate-key\n",[469,5668,5669],{"class":471,"line":479},[469,5670,514],{"emptyLinePlaceholder":513},[469,5672,5673],{"class":471,"line":494},[469,5674,5675],{"class":2721},"# Use the generated Public Key\n",[469,5677,5678,5680,5682,5684,5686,5688,5690,5692],{"class":471,"line":505},[469,5679,2824],{"class":475},[469,5681,2827],{"class":490},[469,5683,2830],{"class":490},[469,5685,2833],{"class":490},[469,5687,2836],{"class":490},[469,5689,2839],{"class":490},[469,5691,2842],{"class":490},[469,5693,5694],{"class":490}," generated_Public_key\n",[434,5696,5697],{},"Mengonfigurasi CLI:",[461,5699,5701],{"className":897,"code":5700,"language":899,"meta":424,"style":424},"# Copy the Secret key as the BUZZ_PRIVATE_KEY\necho 'export BUZZ_PRIVATE_KEY=\"nsec1...\"'  >> \u002Fhome\u002F\u003Cuser>\u002F.bashrc\n\necho 'export BUZZ_RELAY_URL=\"wss:\u002F\u002Fbuzz.pafor.me\"'  >> \u002Fhome\u002F\u003Cuser>\u002F.bashrc\n",[443,5702,5703,5708,5739,5743],{"__ignoreMap":424},[469,5704,5705],{"class":471,"line":472},[469,5706,5707],{"class":2721},"# Copy the Secret key as the BUZZ_PRIVATE_KEY\n",[469,5709,5710,5712,5714,5717,5719,5722,5725,5728,5731,5734,5736],{"class":471,"line":479},[469,5711,4561],{"class":2620},[469,5713,5606],{"class":486},[469,5715,5716],{"class":490},"export BUZZ_PRIVATE_KEY=\"nsec1...\"",[469,5718,5612],{"class":486},[469,5720,5721],{"class":486},"  >>",[469,5723,5724],{"class":490}," \u002Fhome\u002F",[469,5726,5727],{"class":486},"\u003C",[469,5729,5730],{"class":490},"use",[469,5732,5733],{"class":973},"r",[469,5735,2897],{"class":486},[469,5737,5738],{"class":490},"\u002F.bashrc\n",[469,5740,5741],{"class":471,"line":494},[469,5742,514],{"emptyLinePlaceholder":513},[469,5744,5745,5747,5749,5752,5754,5756,5758,5760,5762,5764,5766],{"class":471,"line":505},[469,5746,4561],{"class":2620},[469,5748,5606],{"class":486},[469,5750,5751],{"class":490},"export BUZZ_RELAY_URL=\"wss:\u002F\u002Fbuzz.pafor.me\"",[469,5753,5612],{"class":486},[469,5755,5721],{"class":486},[469,5757,5724],{"class":490},[469,5759,5727],{"class":486},[469,5761,5730],{"class":490},[469,5763,5733],{"class":973},[469,5765,2897],{"class":486},[469,5767,5738],{"class":490},[434,5769,5770,5771,5773],{},"Jalankan perintah berikut untuk memverifikasi bahwa ",[443,5772,2854],{}," dikonfigurasi dengan benar:",[461,5775,5777],{"className":897,"code":5776,"language":899,"meta":424,"style":424},"buzz channels list\n",[443,5778,5779],{"__ignoreMap":424},[469,5780,5781,5783,5785],{"class":471,"line":472},[469,5782,2877],{"class":475},[469,5784,2880],{"class":490},[469,5786,5787],{"class":490}," list\n",[434,5789,5790],{},[568,5791],{"alt":5792,"src":5793},"Eksekusi perintah terminal yang memverifikasi konfigurasi buzz-cli dengan mencantumkan saluran aktif","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-cli-channels-list-terminal.webp",[3778,5795,5797],{"id":5796},"membuat-proyek-dengan-buzz-cli","Membuat Proyek dengan buzz-cli",[461,5799,5801],{"className":897,"code":5800,"language":899,"meta":424,"style":424},"# --channel refers to the UUID of the channel\nbuzz repos create --id TestKOA --name 'Display Name' --channel \"bd92b3d1-8fac-441c-a9ac-2b2f3aac5c5b\"\n",[443,5802,5803,5808],{"__ignoreMap":424},[469,5804,5805],{"class":471,"line":472},[469,5806,5807],{"class":2721},"# --channel refers to the UUID of the channel\n",[469,5809,5810,5812,5815,5818,5821,5824,5827,5829,5832,5834,5836,5838,5841],{"class":471,"line":479},[469,5811,2877],{"class":475},[469,5813,5814],{"class":490}," repos",[469,5816,5817],{"class":490}," create",[469,5819,5820],{"class":490}," --id",[469,5822,5823],{"class":490}," TestKOA",[469,5825,5826],{"class":490}," --name",[469,5828,5606],{"class":486},[469,5830,5831],{"class":490},"Display Name",[469,5833,5612],{"class":486},[469,5835,2885],{"class":490},[469,5837,4471],{"class":486},[469,5839,5840],{"class":490},"bd92b3d1-8fac-441c-a9ac-2b2f3aac5c5b",[469,5842,3577],{"class":486},[434,5844,5845,5846,5848],{},"Proyek hanya dapat dihapus oleh pemiliknya. Karena proyek \"Display Name\" dibuat oleh ",[443,5847,2854],{}," yang tidak memiliki perintah penghapusan, proyek tersebut tidak dapat dihapus dengan cara ini.",[434,5850,5851],{},"Periksa kembali aplikasi desktop Buzz untuk memverifikasi bahwa proyek telah dibuat.",[434,5853,5854],{},[568,5855],{"alt":5856,"src":5857},"Tampilan proyek aplikasi desktop Buzz yang mengonfirmasi keberhasilan pembuatan proyek","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-project-view.webp",[434,5859,5860],{},"Setelah proyek tersedia di Projects, proyek tambahan dapat ditambahkan menggunakan tombol \"+\" di sudut kanan atas.",[434,5862,5863],{},[568,5864],{"alt":5865,"src":5866},"Menambahkan proyek pengembang baru menggunakan ikon plus di klien desktop Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-add-project-button.webp",[3778,5868,5870],{"id":5869},"menghubungkan-repositori-git-yang-ada","Menghubungkan Repositori Git yang Ada",[434,5872,4121,5873,5876,5877,5880,5881,5886],{},[443,5874,5875],{},"git-credential-nostr"," pada mesin tempat repositori git berada. Ini memerlukan ",[438,5878,5879],{},"git 2.46+"," dan toolchain Rust. Silakan rujuk ",[451,5882,5885],{"href":5883,"rel":5884},"https:\u002F\u002Fgithub.com\u002Fblock\u002Fbuzz\u002Ftree\u002Fmain\u002Fcrates\u002Fgit-credential-nostr",[455],"Readme"," ini:",[461,5888,5890],{"className":897,"code":5889,"language":899,"meta":424,"style":424},"cargo install --path crates\u002Fgit-credential-nostr\n",[443,5891,5892],{"__ignoreMap":424},[469,5893,5894,5896,5898,5900],{"class":471,"line":472},[469,5895,5591],{"class":475},[469,5897,4635],{"class":490},[469,5899,5596],{"class":490},[469,5901,5902],{"class":490}," crates\u002Fgit-credential-nostr\n",[434,5904,5905,5906,5908],{},"Siapkan ",[443,5907,5875],{}," untuk otorisasi relay Buzz:",[461,5910,5912],{"className":897,"code":5911,"language":899,"meta":424,"style":424},"# 1. Register the helper and enable per-path credentials.\ngit config --global credential.helper nostr\ngit config --global credential.useHttpPath true\n\n# 2. Store your nsec in a key file (must be 0600). Replace \"nsec1...\" with your private key\nmkdir -p ~\u002F.nostr\necho \"nsec1...\" > ~\u002F.nostr\u002Fkey && chmod 600 ~\u002F.nostr\u002Fkey\ngit config --global nostr.keyfile ~\u002F.nostr\u002Fkey\n",[443,5913,5914,5919,5935,5948,5952,5957,5966,5993],{"__ignoreMap":424},[469,5915,5916],{"class":471,"line":472},[469,5917,5918],{"class":2721},"# 1. Register the helper and enable per-path credentials.\n",[469,5920,5921,5923,5926,5929,5932],{"class":471,"line":479},[469,5922,4731],{"class":475},[469,5924,5925],{"class":490}," config",[469,5927,5928],{"class":490}," --global",[469,5930,5931],{"class":490}," credential.helper",[469,5933,5934],{"class":490}," nostr\n",[469,5936,5937,5939,5941,5943,5946],{"class":471,"line":494},[469,5938,4731],{"class":475},[469,5940,5925],{"class":490},[469,5942,5928],{"class":490},[469,5944,5945],{"class":490}," credential.useHttpPath",[469,5947,3026],{"class":486},[469,5949,5950],{"class":471,"line":505},[469,5951,514],{"emptyLinePlaceholder":513},[469,5953,5954],{"class":471,"line":510},[469,5955,5956],{"class":2721},"# 2. Store your nsec in a key file (must be 0600). Replace \"nsec1...\" with your private key\n",[469,5958,5959,5961,5963],{"class":471,"line":517},[469,5960,5341],{"class":475},[469,5962,5344],{"class":490},[469,5964,5965],{"class":490}," ~\u002F.nostr\n",[469,5967,5968,5970,5972,5975,5977,5979,5982,5984,5987,5990],{"class":471,"line":523},[469,5969,4561],{"class":2620},[469,5971,4471],{"class":486},[469,5973,5974],{"class":490},"nsec1...",[469,5976,4477],{"class":486},[469,5978,4596],{"class":486},[469,5980,5981],{"class":490}," ~\u002F.nostr\u002Fkey",[469,5983,937],{"class":486},[469,5985,5986],{"class":475}," chmod",[469,5988,5989],{"class":5050}," 600",[469,5991,5992],{"class":490}," ~\u002F.nostr\u002Fkey\n",[469,5994,5995,5997,5999,6001,6004],{"class":471,"line":528},[469,5996,4731],{"class":475},[469,5998,5925],{"class":490},[469,6000,5928],{"class":490},[469,6002,6003],{"class":490}," nostr.keyfile",[469,6005,5992],{"class":490},[434,6007,6008],{},"Crea un repositorio en el relay de Buzz:",[461,6010,6013],{"className":6011,"code":6012,"language":1028},[1026],"buzz repos create --id koa-email-routing --name \"KOA Email Routing\" --clone \"https:\u002F\u002Fbuzz.pafor.me\u002Fgit\u002F\u003Cpub_key>\u002Fkoa-email-routing\" --nostr-relay \"wss:\u002F\u002Fbuzz.pafor.me\"\n",[443,6014,6012],{"__ignoreMap":424},[434,6016,6017,6018,6021,6022,6025],{},"Pada ",[443,6019,6020],{},"git push"," pertama Anda, Anda akan menemui kesalahan ",[443,6023,6024],{},"remote: missing Authorization header",". Untuk mengatasi ini, Anda perlu mengikat ID repositori ke saluran Buzz, karena keanggotaan saluran menentukan izin menulis Git (ACLs):",[461,6027,6029],{"className":897,"code":6028,"language":899,"meta":424,"style":424},"buzz repos bind --id koa-email-routing --channel \u003CCHANNEL_UUID>\n\n# push the code again\ngit push\n",[443,6030,6031,6056,6060,6065],{"__ignoreMap":424},[469,6032,6033,6035,6037,6040,6042,6045,6047,6049,6051,6053],{"class":471,"line":472},[469,6034,2877],{"class":475},[469,6036,5814],{"class":490},[469,6038,6039],{"class":490}," bind",[469,6041,5820],{"class":490},[469,6043,6044],{"class":490}," koa-email-routing",[469,6046,2885],{"class":490},[469,6048,2888],{"class":486},[469,6050,2891],{"class":490},[469,6052,2894],{"class":973},[469,6054,6055],{"class":486},">\n",[469,6057,6058],{"class":471,"line":479},[469,6059,514],{"emptyLinePlaceholder":513},[469,6061,6062],{"class":471,"line":494},[469,6063,6064],{"class":2721},"# push the code again\n",[469,6066,6067,6069],{"class":471,"line":505},[469,6068,4731],{"class":475},[469,6070,6071],{"class":490}," push\n",[434,6073,6074,6075,6077],{},"Memeriksa proyek di aplikasi desktop Buzz menunjukkan hal berikut, karena aplikasi memerlukan ",[438,6076,5879],{}," — meluncurkan aplikasi secara langsung mungkin mendeteksi versi Git yang lebih lama:",[434,6079,6080],{},[568,6081],{"alt":6082,"src":6083},"Klien Buzz menampilkan kesalahan pemuatan Git karena versi Git lokal yang kedaluwarsa di bawah 2.46","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-git-version-error.webp",[434,6085,6086,6087,6090,6091,6096],{},"Ekspor PATH via ",[443,6088,6089],{},"launchctl setenv PATH \"\u002Fopt\u002Fhomebrew\u002Fbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fbin:\u002Fbin:\u002Fusr\u002Fsbin:\u002Fsbin\""," di profil shell dan luncurkan aplikasi Buzz dari shell. Rujuk ke ",[451,6092,6095],{"href":6093,"rel":6094},"https:\u002F\u002Fgithub.com\u002Fblock\u002Fbuzz\u002Fissues\u002F5348",[455],"issue"," ini.",[461,6098,6100],{"className":897,"code":6099,"language":899,"meta":424,"style":424},"open -a Buzz\n",[443,6101,6102],{"__ignoreMap":424},[469,6103,6104,6107,6110],{"class":471,"line":472},[469,6105,6106],{"class":475},"open",[469,6108,6109],{"class":490}," -a",[469,6111,6112],{"class":490}," Buzz\n",[434,6114,6115],{},"Periksa kembali Projects di aplikasi Buzz, detail repositori sekarang telah dimuat.",[434,6117,6118],{},[568,6119],{"alt":6120,"src":6121},"Antarmuka desktop Buzz dengan detail repositório Git dan log komit yang berhasil dimuat","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-repository-details-loaded.webp",[429,6123,6125],{"id":6124},"menyinkronkan-agen-ai-dengan-aplikasi-seluler-buzz-via-kode-qr","Menyinkronkan Agen AI dengan Aplikasi Seluler Buzz via Kode QR",[434,6127,6128,6129,6132],{},"Penyandingan aplikasi seluler Buzz hanya menerima protokol HTTPS dan ",[443,6130,6131],{},"buzz-pair-relay"," tidak dimulai secara default di VPS.",[461,6134,6136],{"className":897,"code":6135,"language":899,"meta":424,"style":424},"cd ~\u002Fbuzz\ncargo install --path crates\u002Fbuzz-pair-relay\n",[443,6137,6138,6144],{"__ignoreMap":424},[469,6139,6140,6142],{"class":471,"line":472},[469,6141,4746],{"class":2620},[469,6143,5586],{"class":490},[469,6145,6146,6148,6150,6152],{"class":471,"line":479},[469,6147,5591],{"class":475},[469,6149,4635],{"class":490},[469,6151,5596],{"class":490},[469,6153,6154],{"class":490}," crates\u002Fbuzz-pair-relay\n",[434,6156,6157,6158,6161,6162,6164],{},"Add the following to ",[443,6159,6160],{},"compose.yml"," to start the ",[443,6163,6131],{}," service:",[461,6166,6168],{"className":2990,"code":6167,"language":2992,"meta":424,"style":424},"  pair:\n    image: ${BUZZ_IMAGE:-ghcr.io\u002Fblock\u002Fbuzz:main}\n    entrypoint: [\"\u002Fusr\u002Flocal\u002Fbin\u002Fbuzz-pair-relay\"]\n    environment:\n      BUZZ_PAIR_RELAY_BIND_ADDR: 0.0.0.0:5000\n    ports:\n      - \"${BUZZ_PAIR_RELAY_PORT:-5000}:5000\"\n    restart: unless-stopped\n    networks:\n      [buzz-net]\n",[443,6169,6170,6177,6186,6206,6212,6222,6228,6239,6247,6253],{"__ignoreMap":424},[469,6171,6172,6175],{"class":471,"line":472},[469,6173,6174],{"class":482},"  pair",[469,6176,3015],{"class":486},[469,6178,6179,6181,6183],{"class":471,"line":479},[469,6180,5066],{"class":482},[469,6182,487],{"class":486},[469,6184,6185],{"class":490}," ${BUZZ_IMAGE:-ghcr.io\u002Fblock\u002Fbuzz:main}\n",[469,6187,6188,6191,6193,6196,6198,6201,6203],{"class":471,"line":494},[469,6189,6190],{"class":482},"    entrypoint",[469,6192,487],{"class":486},[469,6194,6195],{"class":486}," [",[469,6197,4477],{"class":486},[469,6199,6200],{"class":490},"\u002Fusr\u002Flocal\u002Fbin\u002Fbuzz-pair-relay",[469,6202,4477],{"class":486},[469,6204,6205],{"class":486},"]\n",[469,6207,6208,6210],{"class":471,"line":505},[469,6209,5100],{"class":482},[469,6211,3015],{"class":486},[469,6213,6214,6217,6219],{"class":471,"line":510},[469,6215,6216],{"class":482},"      BUZZ_PAIR_RELAY_BIND_ADDR",[469,6218,487],{"class":486},[469,6220,6221],{"class":490}," 0.0.0.0:5000\n",[469,6223,6224,6226],{"class":471,"line":517},[469,6225,5014],{"class":482},[469,6227,3015],{"class":486},[469,6229,6230,6232,6234,6237],{"class":471,"line":523},[469,6231,5133],{"class":486},[469,6233,4471],{"class":486},[469,6235,6236],{"class":490},"${BUZZ_PAIR_RELAY_PORT:-5000}:5000",[469,6238,3577],{"class":486},[469,6240,6241,6243,6245],{"class":471,"line":528},[469,6242,5184],{"class":482},[469,6244,487],{"class":486},[469,6246,5189],{"class":490},[469,6248,6249,6251],{"class":471,"line":534},[469,6250,5194],{"class":482},[469,6252,3015],{"class":486},[469,6254,6255,6258,6261],{"class":471,"line":539},[469,6256,6257],{"class":486},"      [",[469,6259,6260],{"class":490},"buzz-net",[469,6262,6205],{"class":486},[434,6264,4855,6265,1930,6268,6271,6272,487],{},[443,6266,6267],{},"BUZZ_PAIRING_RELAY_URL",[443,6269,6270],{},"BUZZ_PAIR_RELAY_PORT"," ke file ",[443,6273,4773],{},[461,6275,6278],{"className":6276,"code":6277,"language":1028},[1026],"BUZZ_PAIRING_RELAY_URL=wss:\u002F\u002Fbuzz.pafor.me\u002Fpair\nBUZZ_PAIR_RELAY_PORT=5000\n",[443,6279,6277],{"__ignoreMap":424},[434,6281,6282,6283,6286],{},"Buka bagian '",[438,6284,6285],{},"Mobile","' di Pengaturan desktop Buzz:",[434,6288,6289],{},[568,6290],{"alt":6291,"src":6292},"Dialog pengaturan di aplikasi Buzz yang menampilkan tab konfigurasi perangkat seluler","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-settings-mobile-tab.webp",[434,6294,6295],{},"Klik \"Start pairing\" — kode QR akan dihasilkan; pindai kode QR ini dengan aplikasi Buzz di perangkat seluler. Pendaftaran akan disandingkan setelah Anda mengklik \"Code Match\".",[434,6297,6298],{},[568,6299],{"alt":6300,"src":6301},"Menghasilkan kode QR penyandingan aman di klien desktop untuk sinkronisasi seluler Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-pairing-qr-code.webp",[434,6303,6304],{},"Agen di aplikasi seluler Buzz hanya tersedia jika mereka berjalan di aplikasi desktop Buzz. Mesin desktop harus tetap menyala agar agen dapat bekerja.",[434,6306,6307],{},[568,6308],{"alt":6309,"src":6310},"Antarmuka aplikasi seluler Buzz yang menampilkan agen pendamping AI aktif yang disinkronkan","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-mobile-app-active-agents.webp",[429,6312,6314],{"id":6313},"pemikiran-akhir","Pemikiran Akhir",[434,6316,6317],{},"Meskipun Buzz masih terlalu dini untuk lingkungan produksi skala besar dengan beberapa bug dan batasan antarmuka pengguna (UI), ini adalah pengalaman yang menarik bagi tim kecil dan pengembang solo. Buzz menawarkan pratinjau tentang bagaimana rasanya ruang kerja kolaboratif yang mengutamakan AI.",[429,6319,2046],{"id":2045},[733,6321,6322,6329,6336,6343],{},[581,6323,6324],{},[451,6325,6328],{"href":6326,"rel":6327},"https:\u002F\u002Fgithub.com\u002Fblock\u002Fbuzz",[455],"Buzz releases",[581,6330,6331],{},[451,6332,6335],{"href":6333,"rel":6334},"https:\u002F\u002Fblock.xyz\u002Finside\u002Fintroducing-buzz-where-humans-and-agents-work-together",[455],"Introducing Buzz",[581,6337,6338],{},[451,6339,6342],{"href":6340,"rel":6341},"https:\u002F\u002Fwww.hostinger.com\u002Ftutorials\u002Fwhat-is-buzz",[455],"What is buzz",[581,6344,6345],{},[451,6346,6349],{"href":6347,"rel":6348},"https:\u002F\u002Fmiget.com\u002Fblog\u002Fhow-to-self-host-buzz",[455],"How to self-host Buzz (Miget)",[832,6351,6352],{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":424,"searchDepth":479,"depth":494,"links":6354},[6355,6356,6357,6371,6380,6381,6382],{"id":4260,"depth":479,"text":4261},{"id":4305,"depth":479,"text":4306},{"id":4353,"depth":479,"text":4354,"children":6358},[6359,6360,6364,6365,6366,6370],{"id":4357,"depth":494,"text":4358},{"id":4386,"depth":494,"text":4387,"children":6361},[6362,6363],{"id":4390,"depth":505,"text":4391},{"id":4490,"depth":505,"text":4491},{"id":4508,"depth":494,"text":4509},{"id":4720,"depth":494,"text":4721},{"id":4874,"depth":494,"text":4875,"children":6367},[6368,6369],{"id":4878,"depth":505,"text":4879},{"id":5263,"depth":505,"text":5264},{"id":5330,"depth":494,"text":5331},{"id":5370,"depth":479,"text":5371,"children":6372},[6373,6374,6375],{"id":5449,"depth":494,"text":5450},{"id":5494,"depth":494,"text":5495},{"id":5531,"depth":494,"text":5532,"children":6376},[6377,6378,6379],{"id":5554,"depth":505,"text":5555},{"id":5796,"depth":505,"text":5797},{"id":5869,"depth":505,"text":5870},{"id":6124,"depth":479,"text":6125},{"id":6313,"depth":479,"text":6314},{"id":2045,"depth":479,"text":2046},[3301,846,2877],"2026-09-08",{"schemaOrg":6386,"robots":856,"sitemap":6405},[6387,6388],{"@type":3310,"headline":2132,"description":2141,"image":2142},{"@type":855,"name":2132,"description":2141,"image":2142,"step":6389},[6390,6393,6396,6399,6402],{"@type":1525,"name":6391,"text":6392},"Langkah 1: Pengaturan Cloudflare","Buat Token API Cloudflare dan konfigurasikan pengaturan DNS.",{"@type":1525,"name":6394,"text":6395},"Langkah 2: Instal Docker","Siapkan dan instal Docker Engine di VPS Ubuntu.",{"@type":1525,"name":6397,"text":6398},"Langkah 3: Kloning dan Konfigurasi","Kloning repositori dan konfigurasikan variabel compose.",{"@type":1525,"name":6400,"text":6401},"Langkah 4: Integrasi Caddy","Bangun Caddy kustom dengan modul tantangan DNS Cloudflare.",{"@type":1525,"name":6403,"text":6404},"Langkah 5: Cadangan Otomatis","Konfigurasikan cron job untuk mencadangkan PostgreSQL secara otomatis.",{"lastmod":6406},"2026-09-03",{"title":6408,"description":2141,"ogTitle":2132,"ogDescription":2141,"twitterTitle":2132,"twitterDescription":2141},"Cara Install dan Self-Host Relay Buzz Block di VPS Ubuntu","id\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",[3336,6411,2751,6412,6413],"Docker","Caddy","Cloudflare","lAxLGSDiA8d43UunUr_JbjVjtCsvGEe0ttXN_h25Swk",1792489986247]