[{"data":1,"prerenderedAt":14277},["ShallowReactive",2],{"published-article-paths":3,"search-navigation":348,"category-articles-id-productivity":421},[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",[422,1701,2648,4097,6260,8138,8711,9487,10017,10414,11038,11490,11701,11923,12265,12961,13394,13694],{"id":423,"title":424,"author":425,"body":426,"category":1655,"date":1659,"description":1660,"extension":1661,"image":1662,"imageAlt":1663,"isPublished":1063,"meta":1664,"minRead":1692,"navigation":1063,"path":147,"seo":1693,"stem":1695,"tags":1696,"updatedAt":1699,"__hash__":1700},"article\u002Fid\u002Farticle\u002Fbringing-buzz-to-deepseek-harness.md","Hubungkan DeepSeek Harness ke Buzz Lewat Gateway Nostr","",{"type":427,"value":428,"toc":1639},"minimark",[429,437,462,470,473,478,484,529,532,592,596,602,870,873,877,882,889,893,907,911,921,974,981,985,988,1020,1024,1029,1080,1088,1094,1103,1109,1139,1152,1156,1165,1196,1218,1266,1273,1278,1284,1291,1297,1302,1309,1323,1329,1338,1378,1381,1387,1394,1400,1404,1407,1557,1561,1595,1599,1605,1609,1635],[430,431,432],"p",{},[433,434],"img",{"alt":435,"src":436},"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",[430,438,439,440,450,451,456,457,461],{},"Plugin DeepSeek Harness (DSH), ",[441,442,443],"strong",{},[444,445,449],"a",{"href":446,"rel":447},"https:\u002F\u002Fgithub.com\u002Fa792883583\u002Fdsh-message-gateway",[448],"nofollow","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 ",[441,452,453],{},[444,454,455],{"href":383},"Self-Host Buzz dari Block: Ruang Kerja Bersama Agen AI Anda"," ke dalam daftar. Repositori hasil fork tersedia di GitHub di ",[444,458,459],{"href":459,"rel":460},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fdsh-message-gateway",[448],".",[463,464],"article-card",{"description":465,"image":466,"image-alt":467,"label":468,"min-read":469,"title":455,"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",[430,471,472],{},"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.",[474,475,477],"h2",{"id":476},"arsitektur-plugin-dsh-message-gateway","Arsitektur Plugin dsh-message-gateway",[430,479,480,481,483],{},"Arsitektur plugin ",[441,482,449],{}," terbagi menjadi dua bagian utama:",[485,486,487,519],"ul",{},[488,489,490,493,494,498,499,502,503,506,507,510,511,514,515,518],"li",{},[441,491,492],{},"Host"," (Node): ",[495,496,497],"code",{},"gateway-store"," (kredensial, ",[495,500,501],{},"~\u002F.dsh\u002Fgateway.json","), ",[495,504,505],{},"platforms.ts"," (definisi platform dan uji koneksi), ",[495,508,509],{},"routes.ts"," (endpoint ",[495,512,513],{},"\u002Fgateway\u002F*","), dan ",[495,516,517],{},"bridge-manager.ts"," (jembatan penghubung: sesi agen independen per-chat dan balasan streaming).",[488,520,521,524,525,528],{},[441,522,523],{},"Client"," (browser): halaman \"",[441,526,527],{},"Message platforms","\" di bilah samping tempat Anda menyimpan kredensial, menguji koneksi, dan memantau status.",[430,530,531],{},"Menambahkan platform baru melibatkan langkah-langkah berikut:",[533,534,535,552,566],"ol",{},[488,536,537,540,541,544,545,548,549,461],{},[441,538,539],{},"Kelas jembatan (bridge class)",": menyediakan fungsi ",[495,542,543],{},"start\u002Fstop\u002Fstatus"," ditambah callback ",[495,546,547],{},"onText(text, frame)",", mencerminkan pola ",[495,550,551],{},"wecom-bridge.ts",[488,553,554,557,558,561,562,565],{},[441,555,556],{},"Integrasi bridge-manager",": menggunakan kembali pipeline per-obrolan yang ada (",[495,559,560],{},"ensureAgentForKey"," + ",[495,563,564],{},"pendingMap",") dan menghubungkan reply sink milik platform.",[488,567,568,571,572,575,576,579,580,583,584,587,588,591],{},[441,569,570],{},"Penyimpanan dan rute",": di dalam ",[495,573,574],{},"\u002Fgateway\u002Fsave"," dan ",[495,577,578],{},"\u002Fgateway\u002Fdelete",": ",[441,581,582],{},"menyimpan kredensial akan memulai jembatan, menghapusnya akan menghentikan jembatan"," — ditambah flag ",[495,585,586],{},"autoStartXxx"," agar ",[495,589,590],{},"dsh web"," tersambung kembali saat boot.",[474,593,595],{"id":594},"implementasi-jembatan-buzz-protokol-nostr-siklus-hidup-event","Implementasi Jembatan Buzz: Protokol Nostr & Siklus Hidup Event",[430,597,598,601],{},[441,599,600],{},"DeepSeek Harness"," digunakan untuk mengimplementasikan jembatan Buzz. Implementasi ini sepenuhnya mematuhi spesifikasi protokol Nostr berikut:",[603,604,605,631],"table",{},[606,607,608],"thead",{},[609,610,611,617],"tr",{},[612,613,614],"th",{},[441,615,616],{},"Transportasi",[612,618,619,620,623,624,627,628],{},"Satu WebSocket yang diautentikasi NIP-42; default ",[495,621,622],{},"ws:\u002F\u002Flocalhost:3000","; ",[495,625,626],{},"http(s):\u002F\u002F"," dinormalkan menjadi ",[495,629,630],{},"ws(s):\u002F\u002F",[632,633,634,653,681,698,721,745,770,783,796,815,832,846],"tbody",{},[609,635,636,642],{},[637,638,639],"td",{},[441,640,641],{},"Autentikasi",[637,643,644,645,648,649,652],{},"Event AUTH ",[495,646,647],{},"kind 22242",", tag ",[495,650,651],{},"[[\"relay\", url], [\"challenge\", challenge]]",", konten kosong, ditandatangani dengan kunci agen",[609,654,655,660],{},[637,656,657],{},[441,658,659],{},"Langganan (Subs)",[637,661,662,579,665,668,669,672,673,676,677,680],{},[441,663,664],{},"Cakupan saluran",[495,666,667],{},"REQ {\"kinds\":[9], \"#h\":[\u003Cuuid>]}"," — satu REQ per saluran. REQ global ",[495,670,671],{},"kinds:[9]"," menerima EOSE tetapi tidak membagikan event; filter ",[495,674,675],{},"#h"," multi-nilai ",[441,678,679],{},"tidak"," bekerja",[609,682,683,688],{},[637,684,685],{},[441,686,687],{},"Penemuan (Discovery)",[637,689,690,693,694,697],{},[495,691,692],{},"REQ {kinds:[39000]}"," historis untuk metadata saluran (",[495,695,696],{},"type == \"dm\""," menandai saluran pesan langsung)",[609,699,700,705],{},[637,701,702],{},[441,703,704],{},"Keanggotaan",[637,706,707,710,711,713,714,717,718],{},[495,708,709],{},"REQ {kinds:[44100,44101], \"#p\":[pubkey kita], since: now-60s}"," live — 44100 = ditambahkan, 44101 = dihapus, membawa ",[495,712,430],{},"+",[495,715,716],{},"h","; perubahan keanggotaan memperbarui langganan ",[441,719,720],{},"tanpa reconnect",[609,722,723,728],{},[637,724,725],{},[441,726,727],{},"Event Obrolan",[637,729,730,733,734,737,738,741,742],{},[495,731,732],{},"kind 9"," dengan tag ",[495,735,736],{},"[\"h\", channel]",", opsional ",[495,739,740],{},"[\"e\", replyTo]",", ",[495,743,744],{},"[\"p\", mention]",[609,746,747,752],{},[637,748,749],{},[441,750,751],{},"Edit In-Place",[637,753,754,757,758,561,760,763,764,766,767,769],{},[495,755,756],{},"kind 40003"," dengan ",[495,759,716],{},[495,761,762],{},"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 ",[495,765,732],{}," berulir (",[495,768,762],{},"→root)",[609,771,772,777],{},[637,773,774],{},[441,775,776],{},"Frame CLOSED",[637,778,779,782],{},[495,780,781],{},"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",[609,784,785,790],{},[637,786,787],{},[441,788,789],{},"Batas Relay",[637,791,792,793],{},"≤ 2000 event historis per langganan, diurutkan dari yang terbaru bahkan saat menggunakan ",[495,794,795],{},"since",[609,797,798,803],{},[637,799,800],{},[441,801,802],{},"Penyaringan Mention",[637,804,805,806,808,809,811,812,814],{},"Proses event ",[495,807,732],{}," masuk hanya jika: (a) tag ",[495,810,430],{}," menyertakan pubkey kita, (b) saluran adalah DM, atau (c) root ",[495,813,762],{}," adalah event kita sendiri. Abaikan pubkey sendiri (cegah loop)",[609,816,817,822],{},[637,818,819],{},[441,820,821],{},"Mention Keluar",[637,823,824,825,828,829,831],{},"Teks keluar dipublikasikan apa adanya — relay tidak memvalidasi token ",[495,826,827],{},"@","; tag ",[495,830,430],{}," menyertakan penulis pesan masuk ditambah hingga 7 pubkey lain yang disebutkan (maksimal 8)",[609,833,834,839],{},[637,835,836],{},[441,837,838],{},"Pesan Langsung (DM)",[637,840,841,842,845],{},"Saluran teks biasa dengan cakupan relay (metadata ",[495,843,844],{},"type: \"dm\"",") — tanpa enkripsi NIP-04\u002F44 pada jembatan ini",[609,847,848,853],{},[637,849,850],{},[441,851,852],{},"Lampiran (Masuk)",[637,854,855,856,859,860,741,863,741,866,869],{},"NIP-92 ",[495,857,858],{},"imeta"," (",[495,861,862],{},"url",[495,864,865],{},"sha256",[495,867,868],{},"m",") → unduh http(s) biasa, verifikasi SHA-256, batas 20 MB, maksimal 4 per pesan; gambar keluar tidak didukung",[430,871,872],{},"Diagram berikut mengilustrasikan alur inisialisasi (bootstrap) jembatan Buzz:",[433,874],{"src":875,"alt":876},"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",[878,879,881],"h3",{"id":880},"streaming-real-time-lewat-pengeditan-in-place-nostr-kind-40003","Streaming Real-Time Lewat Pengeditan In-Place Nostr (Kind 40003)",[430,883,884,885,888],{},"Nostr tidak memiliki indikator mengetik bawaan dan event-nya bersifat append-only. Untuk membuat balasan terasa responsif dan interaktif, jembatan Buzz ",[441,886,887],{},"mensimulasikan streaming menggunakan pengeditan in-place",":",[433,890],{"src":891,"alt":892},"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",[485,894,895],{},[488,896,897],{},[898,899,900,901,903,904,906],"em",{},"Jembatan Buzz menerbitkan event placeholder ",[495,902,732],{},", kemudian secara progresif menulis ulang event tersebut dengan pengeditan in-place ",[495,905,756],{}," 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.",[878,908,910],{"id":909},"menghubungkan-workspace-deepseek-harness-lewat-perintah-chat","Menghubungkan Workspace DeepSeek Harness Lewat Perintah Chat",[430,912,913,914,859,917,920],{},"Fitur \"Workspaces\" pada antarmuka Web DSH dikelola oleh layanan ",[495,915,916],{},"workspaceRegistry",[495,918,919],{},"@deepseek-ai\u002Fdsh-workspace","):",[922,923,927],"pre",{"className":924,"code":925,"language":926,"meta":425,"style":425},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const existing = await ctx.workspaceRegistry.resolveByPath(request.path);\n","typescript",[495,928,929],{"__ignoreMap":425},[930,931,934,938,942,946,950,953,955,957,959,963,966,968,971],"span",{"class":932,"line":933},"line",1,[930,935,937],{"class":936},"spNyl","const",[930,939,941],{"class":940},"sTEyZ"," existing ",[930,943,945],{"class":944},"sMK4o","=",[930,947,949],{"class":948},"s7zQu"," await",[930,951,952],{"class":940}," ctx",[930,954,461],{"class":944},[930,956,916],{"class":940},[930,958,461],{"class":944},[930,960,962],{"class":961},"s2Zo4","resolveByPath",[930,964,965],{"class":940},"(request",[930,967,461],{"class":944},[930,969,970],{"class":940},"path)",[930,972,973],{"class":944},";\n",[430,975,976,977,980],{},"Jembatan Buzz menyediakan perintah obrolan, ",[495,978,979],{},"\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.",[433,982],{"src":983,"alt":984},"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",[430,986,987],{},"Tiga pertimbangan desain yang perlu diperhatikan:",[485,989,990,1000,1010],{},[488,991,992,995,996,999],{},[441,993,994],{},"Beralih folder = sesi baru."," Parameter ",[495,997,998],{},"cwd"," dicatat ke dalam header sesi saat pembuatan dan tidak dapat diubah setelahnya.",[488,1001,1002,1005,1006,1009],{},[441,1003,1004],{},"Folder harus sudah ada sebelumnya."," Fungsi ",[495,1007,1008],{},"create"," menolak jalur folder yang belum ada di disk.",[488,1011,1012,1015,1016,1019],{},[441,1013,1014],{},"Perintah sensitif keamanan."," Setiap sesi berjalan dengan kebijakan ",[441,1017,1018],{},"auto-approve",", yang memberikan akses baca dan tulis ke file di folder target.",[474,1021,1023],{"id":1022},"panduan-langkah-demi-langkah-instalasi-konfigurasi","Panduan Langkah Demi Langkah: Instalasi & Konfigurasi",[533,1025,1026],{},[488,1027,1028],{},"Jalankan perintah berikut di terminal Anda:",[922,1030,1034],{"className":1031,"code":1032,"language":1033,"meta":425,"style":425},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","dsh plugin --profile web add https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fdsh-message-gateway.git\n\n# Start DSH web\ndsh web\n","bash",[495,1035,1036,1058,1065,1072],{"__ignoreMap":425},[930,1037,1038,1042,1046,1049,1052,1055],{"class":932,"line":933},[930,1039,1041],{"class":1040},"sBMFI","dsh",[930,1043,1045],{"class":1044},"sfazB"," plugin",[930,1047,1048],{"class":1044}," --profile",[930,1050,1051],{"class":1044}," web",[930,1053,1054],{"class":1044}," add",[930,1056,1057],{"class":1044}," https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fdsh-message-gateway.git\n",[930,1059,1061],{"class":932,"line":1060},2,[930,1062,1064],{"emptyLinePlaceholder":1063},true,"\n",[930,1066,1068],{"class":932,"line":1067},3,[930,1069,1071],{"class":1070},"sHwdD","# Start DSH web\n",[930,1073,1075,1077],{"class":932,"line":1074},4,[930,1076,1041],{"class":1040},[930,1078,1079],{"class":1044}," web\n",[533,1081,1082],{"start":1060},[488,1083,1084,1085,1087],{},"Setelah antarmuka Web DSH terbuka di peramban web, klik ikon \"",[441,1086,527],{},"\":",[430,1089,1090],{},[433,1091],{"alt":1092,"src":1093},"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",[533,1095,1096],{"start":1067},[488,1097,1098,1099,1102],{},"Klik menu \"",[441,1100,1101],{},"Buzz","\" di panel sebelah kiri:",[430,1104,1105],{},[433,1106],{"alt":1107,"src":1108},"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",[533,1110,1111,1122,1132],{"start":1074},[488,1112,1113,1114,1117,1118,1121],{},"Klik \"",[441,1115,1116],{},"Generate keypair","\" untuk membuat pasangan kunci Nostr baru. Salin public key ",[495,1119,1120],{},"npub"," ke tempat yang aman.",[488,1123,1124,1125,575,1128,1131],{},"Isi kolom ",[441,1126,1127],{},"Relay URL",[441,1129,1130],{},"Channels"," (daftar UUID saluran yang diizinkan untuk berlangganan).",[488,1133,1134,1135,1138],{},"Klik tombol \"",[441,1136,1137],{},"Save","\".",[430,1140,1141,1142,1145,1146,1149,1150,461],{},"Menyimpan formulir akan menyimpan kredensial dan ",[441,1143,1144],{},"menjalankan jembatan",". Kunci privat ",[495,1147,1148],{},"nsec"," diperlakukan sebagai rahasia dan disimpan secara eksklusif di ",[495,1151,501],{},[878,1153,1155],{"id":1154},"mendaftarkan-pasangan-kunci-agen-ke-relay-nostr-buzz","Mendaftarkan Pasangan Kunci Agen ke Relay Nostr Buzz",[430,1157,1158,1161,1162,1164],{},[441,1159,1160],{},"Tambahkan asisten DSH ke relay sebagai anggota."," Gunakan pubkey ",[495,1163,1120],{}," yang telah dibuat sebelumnya:",[922,1166,1168],{"className":1031,"code":1167,"language":1033,"meta":425,"style":425},"docker compose exec relay buzz-admin add-member --pubkey npub123123123\n",[495,1169,1170],{"__ignoreMap":425},[930,1171,1172,1175,1178,1181,1184,1187,1190,1193],{"class":932,"line":933},[930,1173,1174],{"class":1040},"docker",[930,1176,1177],{"class":1044}," compose",[930,1179,1180],{"class":1044}," exec",[930,1182,1183],{"class":1044}," relay",[930,1185,1186],{"class":1044}," buzz-admin",[930,1188,1189],{"class":1044}," add-member",[930,1191,1192],{"class":1044}," --pubkey",[930,1194,1195],{"class":1044}," npub123123123\n",[430,1197,1198,1201,1202,1205,1206,1209,1210,1213,1214,1217],{},[441,1199,1200],{},"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 ",[495,1203,1204],{},"buzz-cli",", perhatikan bahwa parameter ",[495,1207,1208],{},"--pubkey"," harus dalam format ",[441,1211,1212],{},"HEX",", bukan npub (perintah ",[495,1215,1216],{},"buzz-admin add-member"," mencetak pubkey HEX anggota):",[922,1219,1221],{"className":1031,"code":1220,"language":1033,"meta":425,"style":425},"buzz channels add-member --channel \u003CCHANNEL_UUID> --pubkey \u003CAGENT_HEX> --role member\n",[495,1222,1223],{"__ignoreMap":425},[930,1224,1225,1228,1231,1233,1236,1239,1242,1245,1248,1250,1252,1255,1258,1260,1263],{"class":932,"line":933},[930,1226,1227],{"class":1040},"buzz",[930,1229,1230],{"class":1044}," channels",[930,1232,1189],{"class":1044},[930,1234,1235],{"class":1044}," --channel",[930,1237,1238],{"class":944}," \u003C",[930,1240,1241],{"class":1044},"CHANNEL_UUI",[930,1243,1244],{"class":940},"D",[930,1246,1247],{"class":944},">",[930,1249,1192],{"class":1044},[930,1251,1238],{"class":944},[930,1253,1254],{"class":1044},"AGENT_HE",[930,1256,1257],{"class":940},"X",[930,1259,1247],{"class":944},[930,1261,1262],{"class":1044}," --role",[930,1264,1265],{"class":1044}," member\n",[463,1267],{"description":1268,"image":466,"image-alt":467,"label":1269,"min-read":1270,"title":1271,"to":1272},"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",[430,1274,1275,1276,888],{},"Perbarui profil asisten DSH di relay Nostr agar memiliki nama tampilan yang jelas dengan ",[495,1277,1204],{},[430,1279,1280],{},[433,1281],{"alt":1282,"src":1283},"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",[430,1285,1286,1287,1290],{},"Kirim salam ",[441,1288,1289],{},"Wave"," (sapaan DM khas Buzz) ke asisten DSH. Balasan konfirmasi akan segera diterima:",[430,1292,1293],{},[433,1294],{"alt":1295,"src":1296},"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",[430,1298,1299],{},[898,1300,1301],{},"Mengirim Wave sebagai pesan langsung ke asisten DSH — jembatan telah aktif.",[878,1303,1305,1306],{"id":1304},"mengaktifkan-akses-folder-lokal-dengan-workspace","Mengaktifkan Akses Folder Lokal dengan ",[495,1307,1308],{},"\u002Fworkspace",[430,1310,1311,1312,1315,1316,1319,1320,1322],{},"Karena opsi ",[495,1313,1314],{},"allowWorkspace"," dinonaktifkan (",[495,1317,1318],{},"false",") secara default, perintah ",[495,1321,1308],{}," awalnya akan ditolak:",[430,1324,1325],{},[433,1326],{"alt":1327,"src":1328},"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",[430,1330,1331,1332,1335,1336,888],{},"Aktifkan opsi tersebut di file ",[495,1333,1334],{},"~\u002F.dsh\u002Fprofiles\u002Fweb\u002Fcordis.patch.yml",", lalu mulai ulang ",[495,1337,590],{},[922,1339,1343],{"className":1340,"code":1341,"language":1342,"meta":425,"style":425},"language-yml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","- id: ui-message-gateway\n  config:\n    allowWorkspace: true\n","yml",[495,1344,1345,1359,1367],{"__ignoreMap":425},[930,1346,1347,1350,1354,1356],{"class":932,"line":933},[930,1348,1349],{"class":944},"-",[930,1351,1353],{"class":1352},"swJcz"," id",[930,1355,888],{"class":944},[930,1357,1358],{"class":1044}," ui-message-gateway\n",[930,1360,1361,1364],{"class":932,"line":1060},[930,1362,1363],{"class":1352},"  config",[930,1365,1366],{"class":944},":\n",[930,1368,1369,1372,1374],{"class":932,"line":1067},[930,1370,1371],{"class":1352},"    allowWorkspace",[930,1373,888],{"class":944},[930,1375,1377],{"class":1376},"sfNiH"," true\n",[430,1379,1380],{},"Setelah dimulai ulang:",[430,1382,1383],{},[433,1384],{"alt":1385,"src":1386},"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",[430,1388,1389,1390,1393],{},"Catatan penting: konfigurasi ini mengasumsikan folder workspace (",[495,1391,1392],{},"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.",[430,1395,1396],{},[433,1397],{"alt":1398,"src":1399},"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",[878,1401,1403],{"id":1402},"perintah-yang-tersedia-di-buzz","Perintah yang Tersedia di Buzz",[430,1405,1406],{},"Semua perintah yang didukung di platform lain dapat digunakan secara mulus di Buzz:",[603,1408,1409,1419],{},[606,1410,1411],{},[609,1412,1413,1416],{},[612,1414,1415],{},"Perintah",[612,1417,1418],{},"Fungsi",[632,1420,1421,1430,1440,1450,1460,1470,1480,1490,1500,1520,1540],{},[609,1422,1423,1427],{},[637,1424,1425],{},[495,1426,979],{},[637,1428,1429],{},"Daftarkan folder yang ada sebagai workspace obrolan (wajib diaktifkan di konfigurasi)",[609,1431,1432,1437],{},[637,1433,1434],{},[495,1435,1436],{},"\u002Fhelp",[637,1438,1439],{},"Tampilkan daftar perintah yang tersedia",[609,1441,1442,1447],{},[637,1443,1444],{},[495,1445,1446],{},"\u002Ftime",[637,1448,1449],{},"Tampilkan waktu sistem saat ini",[609,1451,1452,1457],{},[637,1453,1454],{},[495,1455,1456],{},"\u002Fnew",[637,1458,1459],{},"Mulai sesi obrolan baru yang bersih",[609,1461,1462,1467],{},[637,1463,1464],{},[495,1465,1466],{},"\u002Fclear",[637,1468,1469],{},"Bersihkan riwayat percakapan saat ini",[609,1471,1472,1477],{},[637,1473,1474],{},[495,1475,1476],{},"\u002Fstatus",[637,1478,1479],{},"Tampilkan status operasional jembatan",[609,1481,1482,1487],{},[637,1483,1484],{},[495,1485,1486],{},"\u002Fstats",[637,1488,1489],{},"Tampilkan jumlah obrolan dan status per jembatan (semua platform, termasuk Buzz)",[609,1491,1492,1497],{},[637,1493,1494],{},[495,1495,1496],{},"\u002Fcommands",[637,1498,1499],{},"Tampilkan deskripsi lengkap semua perintah",[609,1501,1502,1507],{},[637,1503,1504],{},[495,1505,1506],{},"@path\u002Fto\u002Ffile",[637,1508,1509,1510,741,1512,1515,1516,1519],{},"Bekerja persis seperti mention file di Web: model membaca file relatif terhadap workspace obrolan; ",[495,1511,827],{},[495,1513,1514],{},"@awalan",", atau ",[495,1517,1518],{},"\u002Ffiles \u003Cawalan>"," membalas dengan file\u002Ffolder yang cocok",[609,1521,1522,1527],{},[637,1523,1524],{},[495,1525,1526],{},"\u002Fmodel",[637,1528,1529,1532,1533,1535,1536,1539],{},[495,1530,1531],{},"[provider model effort]"," — divalidasi terhadap katalog LLM aktif, mengubah model dan effort obrolan; ",[495,1534,1526],{}," menampilkan opsi, ",[495,1537,1538],{},"\u002Fmodel reset"," mengembalikan default",[609,1541,1542,1547],{},[637,1543,1544],{},[495,1545,1546],{},"\u002Feffort",[637,1548,1549,1552,1553,1556],{},[495,1550,1551],{},"\u003Cid>"," menyesuaikan level penalaran model saja; ",[495,1554,1555],{},"\u002Feffort reset"," mengembalikan pengaturan default",[878,1558,1560],{"id":1559},"ikhtisar-keamanan","Ikhtisar Keamanan",[485,1562,1563,1576,1586],{},[488,1564,1565,1566,1568,1569,1571,1572,1575],{},"Kunci privat ",[441,1567,1148],{}," hanya tersimpan di ",[495,1570,501],{}," (izin 0600, penulisan atomik) — tidak pernah diekspos di endpoint ",[495,1573,1574],{},"\u002Fgateway\u002Flist"," atau log sistem.",[488,1577,1578,1579,859,1582,1585],{},"Setiap event masuk selalu ",[441,1580,1581],{},"diverifikasi tanda tangan kriptografinya",[495,1583,1584],{},"verifyEvent","), dideduplikasi, disaring dari pesan sendiri, dan divalidasi mention-nya sebelum sampai ke agen.",[488,1587,1588,859,1591,1594],{},[441,1589,1590],{},"Pendaftaran workspace dikontrol ketat oleh konfigurasi",[495,1592,1593],{},"allowWorkspace: false"," secara default) karena sesi gateway otomatis menyetujui izin file.",[474,1596,1598],{"id":1597},"kesimpulan-kolaborasi-ai-terdesentralisasi-di-buzz","Kesimpulan: Kolaborasi AI Terdesentralisasi di Buzz",[430,1600,1601,1602,1604],{},"Tantangan utama dalam menambahkan Buzz ke ",[495,1603,449],{}," 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.",[474,1606,1608],{"id":1607},"referensi","Referensi:",[485,1610,1611,1619,1627],{},[488,1612,1613,1618],{},[444,1614,1617],{"href":1615,"rel":1616},"https:\u002F\u002Fgithub.com\u002Fa792883583\u002Fdsh-message-gateway\u002Fblob\u002Fmain\u002Fdocs\u002Farchitecture.md",[448],"dsh-message-gateway architecture guide"," — panduan arsitektur, resep ekstensi, dan catatan keamanan",[488,1620,1621,1626],{},[444,1622,1625],{"href":1623,"rel":1624},"https:\u002F\u002Fgithub.com\u002Fnbd-wtf\u002Fnostr-tools",[448],"nostr-tools"," — pustaka Nostr yang digunakan di balik layar",[488,1628,1629,1634],{},[444,1630,1633],{"href":1631,"rel":1632},"https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fdeer-flow\u002Fblob\u002Fmain\u002Fbackend\u002Fdocs\u002FIM_CHANNEL_CONNECTIONS.md",[448],"deer-flow IM channel connections"," — referensi pola koneksi saluran pesan instan",[1636,1637,1638],"style",{},"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":425,"searchDepth":1060,"depth":1067,"links":1640},[1641,1642,1646,1653,1654],{"id":476,"depth":1060,"text":477},{"id":594,"depth":1060,"text":595,"children":1643},[1644,1645],{"id":880,"depth":1067,"text":881},{"id":909,"depth":1067,"text":910},{"id":1022,"depth":1060,"text":1023,"children":1647},[1648,1649,1651,1652],{"id":1154,"depth":1067,"text":1155},{"id":1304,"depth":1067,"text":1650},"Mengaktifkan Akses Folder Lokal dengan \u002Fworkspace",{"id":1402,"depth":1067,"text":1403},{"id":1559,"depth":1067,"text":1560},{"id":1597,"depth":1060,"text":1598},{"id":1607,"depth":1060,"text":1608},[1656,1657,1227,1658],"ai-agents","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.","md","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":1665,"robots":1690,"sitemap":1691},[1666,1668],{"@type":1667,"headline":424,"description":1660,"image":1662},"TechArticle",{"@type":1669,"name":424,"description":1660,"image":1662,"step":1670},"HowTo",[1671,1675,1678,1681,1684,1687],{"@type":1672,"name":1673,"text":1674},"HowToStep","Tahap 1: Instal Plugin Gateway","Instal plugin dsh-message-gateway dan jalankan layanan dsh web.",{"@type":1672,"name":1676,"text":1677},"Tahap 2: Buka Pengaturan Message Platforms","Buka antarmuka Web DSH dan navigasikan ke menu Message platforms.",{"@type":1672,"name":1679,"text":1680},"Tahap 3: Konfigurasi Jembatan Buzz","Buat pasangan kunci Nostr, masukkan URL Relay dan saluran obrolan.",{"@type":1672,"name":1682,"text":1683},"Tahap 4: Daftarkan Agen ke Relay","Tambahkan asisten DSH ke relay Nostr Buzz menggunakan buzz-admin.",{"@type":1672,"name":1685,"text":1686},"Tahap 5: Masukkan Agen ke Saluran","Tambahkan pubkey HEX agen ke saluran menggunakan buzz-cli.",{"@type":1672,"name":1688,"text":1689},"Tahap 6: Aktifkan Akses Workspace","Konfigurasikan allowWorkspace di cordis.patch.yml untuk mengaktifkan perintah folder lokal.","index, follow",{"lastmod":1659},9,{"title":1694,"description":1660,"ogTitle":424,"ogDescription":1660,"twitterTitle":424,"twitterDescription":1660},"Plugin Buzz DeepSeek Harness: Bangun Jembatan Nostr","id\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",[600,1101,1697,1698,449],"Nostr","Agen AI",null,"BnizhIw7cSvKcKxHiADkwPNEWOKaEXB6F3bslN23VUg",{"id":1702,"title":1703,"author":425,"body":1704,"category":2600,"date":2602,"description":2603,"extension":1661,"image":2604,"imageAlt":2605,"isPublished":1063,"meta":2606,"minRead":2269,"navigation":1063,"path":151,"seo":2640,"stem":2642,"tags":2643,"updatedAt":2639,"__hash__":2647},"article\u002Fid\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp.md","Cara Mengekspos Hermes Agent secara Privat dengan WARP",{"type":427,"value":1705,"toc":2582},[1706,1720,1730,1734,1737,1749,1753,1761,1765,1769,1819,1823,1961,1965,1999,2003,2006,2072,2075,2111,2114,2141,2145,2155,2160,2199,2287,2291,2296,2313,2322,2402,2407,2453,2457,2502,2517,2521,2565,2569,2579],[430,1707,1708,1709,1712,1713,757,1716,1719],{},"Sebuah tantangan umum muncul ketika Anda ingin mengakses ",[441,1710,1711],{},"Hermes Agent"," Anda dari perangkat lain seperti laptop, tablet, atau ponsel tanpa mengeksposnya ke internet publik. Memanfaatkan ",[441,1714,1715],{},"Cloudflare WARP",[441,1717,1718],{},"Cloudflare Zero Trust"," memungkinkan Anda untuk mengekspos Hermes Agent secara global tanpa membuka satu port masuk pun pada firewall Anda.",[430,1721,1722,1723,1726,1727,1729],{},"Jika Anda telah mengikuti panduan kami sebelumnya, '",[444,1724,1725],{"href":375},"Cara Menginstal dan Mendeploy Hermes Agent di VPS Linux","', maka Hermes Agent sudah berjalan 24\u002F7. Alih-alih berurusan dengan kerumitan VPN tradisional, kita akan menggunakan klien ",[441,1728,1715],{}," untuk mengekspos Hermes Agent ke jaringan privat melalui internet.",[474,1731,1733],{"id":1732},"memahami-arsitektur","Memahami Arsitektur",[430,1735,1736],{},"Komponen yang digunakan:",[533,1738,1739,1744],{},[488,1740,1741,1743],{},[441,1742,1718],{},": Dasbor di Cloudflare tempat Anda menentukan aturan perutean (routing) dan kebijakan akses.",[488,1745,1746,1748],{},[441,1747,1715],{},": 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.",[878,1750,1752],{"id":1751},"prasyarat","Prasyarat",[485,1754,1755,1758],{},[488,1756,1757],{},"Hermes Agent yang sedang berjalan di VPS Anda.",[488,1759,1760],{},"Akun Cloudflare gratis.",[474,1762,1764],{"id":1763},"panduan-langkah-demi-langkah","Panduan Langkah demi Langkah",[878,1766,1768],{"id":1767},"langkah-1-siapkan-cloudflare-zero-trust","Langkah 1: Siapkan Cloudflare Zero Trust",[533,1770,1771,1780,1787,1798,1805,1812],{},[488,1772,1773,1774,1779],{},"Masuk ke ",[444,1775,1778],{"href":1776,"rel":1777},"https:\u002F\u002Fdash.cloudflare.com\u002F",[448],"Dasbor Cloudflare"," Anda.",[488,1781,1782,1783],{},"Klik 'Zero Trust' dari menu sebelah kiri.\n",[433,1784],{"alt":1785,"src":1786},"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",[488,1788,1789,1790,1793,1794],{},"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, ",[495,1791,1792],{},"ai-team",").\n",[433,1795],{"alt":1796,"src":1797},"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",[488,1799,1800,1801],{},"Klik 'Access' lalu 'Policies' untuk membuat kebijakan akses yang menentukan siapa saja yang memiliki akses ke jaringan tersebut.\n",[433,1802],{"alt":1803,"src":1804},"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",[488,1806,1807,1808],{},"Klik 'Create new policy'.\n",[433,1809],{"alt":1810,"src":1811},"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",[488,1813,1814,1815],{},"Pilih 'Emails' dan masukkan email Anda pada 'Policy rules'.\n",[433,1816],{"alt":1817,"src":1818},"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",[878,1820,1822],{"id":1821},"langkah-2-siapkan-klien-cloudflare-warp-di-vps","Langkah 2: Siapkan Klien Cloudflare WARP di VPS",[533,1824,1825,1836,1842,1849,1852,1867,1870,1954],{},[488,1826,1827,1828,1831,1832,1835],{},"Jalankan ",[495,1829,1830],{},"sudo apt update"," and ",[495,1833,1834],{},"sudo apt install cloudflare-warp"," di terminal VPS Anda.",[488,1837,1827,1838,1841],{},[495,1839,1840],{},"warp-cli registration new \u003CTEAM-NAME>"," di terminal VPS Anda, perintah ini akan mencetak sebuah URL.",[488,1843,1844,1845,1848],{},"Salin URL yang dicetak, yang akan terlihat seperti ",[495,1846,1847],{},"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fwarp",", lalu tempelkan ke browser Anda untuk otentikasi.",[488,1850,1851],{},"Karena otentikasi email digunakan dalam pengaturan kebijakan di atas, masukkan email Anda untuk mengotentikasi.",[488,1853,1854,1855,1858,1859,1862,1863,1866],{},"Di halaman '",[441,1856,1857],{},"Success","' (Sukses) pada browser, klik kanan lalu pilih '",[441,1860,1861],{},"Inspect","' pada tombol biru '",[441,1864,1865],{},"Open Cloudflare WARP","'.",[488,1868,1869],{},"Salin token panjang yang terdapat di dalam tautan tombol tersebut.",[488,1871,1827,1872,1875,1876,1879,1880],{},[495,1873,1874],{},"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.",[1877,1878],"br",{},"Jika Anda menemui 'Error: Failed to communicate with the WARP API' di Ubuntu 26, jalankan perintah berikut:",[922,1881,1883],{"className":1031,"code":1882,"language":1033,"meta":425,"style":425},"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",[495,1884,1885,1899,1903,1908,1919,1924,1930],{"__ignoreMap":425},[930,1886,1887,1890,1893,1896],{"class":932,"line":933},[930,1888,1889],{"class":1040},"sudo",[930,1891,1892],{"class":1044}," systemctl",[930,1894,1895],{"class":1044}," restart",[930,1897,1898],{"class":1044}," warp-svc.service\n",[930,1900,1901],{"class":932,"line":1060},[930,1902,1064],{"emptyLinePlaceholder":1063},[930,1904,1905],{"class":932,"line":1067},[930,1906,1907],{"class":1070},"# Check status\n",[930,1909,1910,1912,1914,1917],{"class":932,"line":1074},[930,1911,1889],{"class":1040},[930,1913,1892],{"class":1044},[930,1915,1916],{"class":1044}," status",[930,1918,1898],{"class":1044},[930,1920,1922],{"class":932,"line":1921},5,[930,1923,1064],{"emptyLinePlaceholder":1063},[930,1925,1927],{"class":932,"line":1926},6,[930,1928,1929],{"class":1070},"# Run the warp-cli registration token again\n",[930,1931,1933,1936,1939,1942,1945,1948,1951],{"class":932,"line":1932},7,[930,1934,1935],{"class":1040},"warp-cli",[930,1937,1938],{"class":1044}," --accept-tos",[930,1940,1941],{"class":1044}," registration",[930,1943,1944],{"class":1044}," token",[930,1946,1947],{"class":944},"   \"",[930,1949,1950],{"class":1044},"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fauth?token=\u003Ccopied_token>",[930,1952,1953],{"class":944},"\"\n",[488,1955,1956,1957],{},"Kembali to dasbor Cloudflare Zero Trust, lalu klik 'Devices' (Perangkat). Perangkat VPS Anda kini seharusnya sudah ditampilkan.\n",[433,1958],{"alt":1959,"src":1960},"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",[878,1962,1964],{"id":1963},"langkah-3-siapkan-perutean-lalu-lintas","Langkah 3: Siapkan Perutean Lalu Lintas",[533,1966,1967,1974,1981,1988],{},[488,1968,1969,1970],{},"Klik profil VPS Anda di dasbor Devices.\n",[433,1971],{"alt":1972,"src":1973},"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",[488,1975,1976,1977],{},"Gulir ke bawah ke bagian 'Split Tunnels'.\n",[433,1978],{"alt":1979,"src":1980},"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",[488,1982,1983,1984],{},"Klik tombol 'Manage' (Kelola) dan konfigurasikan pengaturannya seperti gambar di bawah ini. Ganti alamat IP jika perlu.\n",[433,1985],{"alt":1986,"src":1987},"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",[488,1989,1990,1991,1994,1995,1998],{},"Mengekspos ",[495,1992,1993],{},"address"," (alamat) dan ",[495,1996,1997],{},"host"," akan merutekan lalu lintas ke layanan Anda melalui jaringan privat yang sama.",[878,2000,2002],{"id":2001},"langkah-4-konfigurasi-firewall-di-vps","Langkah 4: Konfigurasi Firewall di VPS",[430,2004,2005],{},"Aktifkan firewall untuk mengizinkan subnet '100.96.0.0\u002F12' saja, dan memblokir seluruh akses masuk publik lainnya.",[922,2007,2009],{"className":1031,"code":2008,"language":1033,"meta":425,"style":425},"sudo ufw enable \nsudo ufw default allow outgoing \nsudo ufw default deny incoming\nsudo ufw allow in from 100.96.0.0\u002F12\n",[495,2010,2011,2024,2041,2055],{"__ignoreMap":425},[930,2012,2013,2015,2018,2021],{"class":932,"line":933},[930,2014,1889],{"class":1040},[930,2016,2017],{"class":1044}," ufw",[930,2019,2020],{"class":1044}," enable",[930,2022,2023],{"class":940}," \n",[930,2025,2026,2028,2030,2033,2036,2039],{"class":932,"line":1060},[930,2027,1889],{"class":1040},[930,2029,2017],{"class":1044},[930,2031,2032],{"class":1044}," default",[930,2034,2035],{"class":1044}," allow",[930,2037,2038],{"class":1044}," outgoing",[930,2040,2023],{"class":940},[930,2042,2043,2045,2047,2049,2052],{"class":932,"line":1067},[930,2044,1889],{"class":1040},[930,2046,2017],{"class":1044},[930,2048,2032],{"class":1044},[930,2050,2051],{"class":1044}," deny",[930,2053,2054],{"class":1044}," incoming\n",[930,2056,2057,2059,2061,2063,2066,2069],{"class":932,"line":1074},[930,2058,1889],{"class":1040},[930,2060,2017],{"class":1044},[930,2062,2035],{"class":1044},[930,2064,2065],{"class":1044}," in",[930,2067,2068],{"class":1044}," from",[930,2070,2071],{"class":1044}," 100.96.0.0\u002F12\n",[430,2073,2074],{},"Izinkan lalu lintas loopback untuk menghindari gangguan pada layanan lokal:",[922,2076,2078],{"className":1031,"code":2077,"language":1033,"meta":425,"style":425},"sudo ufw allow in on lo\nsudo ufw allow out on lo\n",[495,2079,2080,2096],{"__ignoreMap":425},[930,2081,2082,2084,2086,2088,2090,2093],{"class":932,"line":933},[930,2083,1889],{"class":1040},[930,2085,2017],{"class":1044},[930,2087,2035],{"class":1044},[930,2089,2065],{"class":1044},[930,2091,2092],{"class":1044}," on",[930,2094,2095],{"class":1044}," lo\n",[930,2097,2098,2100,2102,2104,2107,2109],{"class":932,"line":1060},[930,2099,1889],{"class":1040},[930,2101,2017],{"class":1044},[930,2103,2035],{"class":1044},[930,2105,2106],{"class":1044}," out",[930,2108,2092],{"class":1044},[930,2110,2095],{"class":1044},[430,2112,2113],{},"Muat ulang firewall dan verifikasi statusnya:",[922,2115,2117],{"className":1031,"code":2116,"language":1033,"meta":425,"style":425},"sudo ufw reload \nsudo ufw status verbose\n",[495,2118,2119,2130],{"__ignoreMap":425},[930,2120,2121,2123,2125,2128],{"class":932,"line":933},[930,2122,1889],{"class":1040},[930,2124,2017],{"class":1044},[930,2126,2127],{"class":1044}," reload",[930,2129,2023],{"class":940},[930,2131,2132,2134,2136,2138],{"class":932,"line":1060},[930,2133,1889],{"class":1040},[930,2135,2017],{"class":1044},[930,2137,1916],{"class":1044},[930,2139,2140],{"class":1044}," verbose\n",[878,2142,2144],{"id":2143},"langkah-5-ekspos-hermes-agent-ke-jaringan-privat","Langkah 5: Ekspos Hermes Agent ke Jaringan Privat",[430,2146,2147,2148,2151,2152,461],{},"Kita akan mengekspos ",[441,2149,2150],{},"Hermes Agent Web Dashboard"," ke jaringan privat kita dan menggunakan penyedia otentikasi default, ",[441,2153,2154],{},"Nous Research",[2156,2157,2159],"h4",{"id":2158},"siapkan-penyedia-otentikasi","Siapkan Penyedia Otentikasi",[533,2161,2162,2171,2178,2185,2192],{},[488,2163,2164,2165,2170],{},"Kunjungi ",[444,2166,2169],{"href":2167,"rel":2168},"https:\u002F\u002Fportal.nousresearch.com",[448],"portal.nousresearch.com"," untuk mendaftarkan sebuah akun.",[488,2172,2173,2174],{},"Pilih 'Local Dashboards' (Dasbor Lokal).\n",[433,2175],{"alt":2176,"src":2177},"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",[488,2179,2180,2181],{},"Klik 'Register Dashboard' (Daftarkan Dasbor).\n",[433,2182],{"alt":2183,"src":2184},"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",[488,2186,2187,2188],{},"Masukkan alamat IP jaringan privat VPS Anda sebagai 'Dashboard redirect URI' dan klik 'Save' (Simpan).\n",[433,2189],{"alt":2190,"src":2191},"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",[488,2193,2194,2195,2198],{},"Salin 'OAuth client ID' dan tempelkan ke dalam file ",[495,2196,2197],{},"config.yaml"," Anda:",[922,2200,2204],{"className":2201,"code":2202,"language":2203,"meta":425,"style":425},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","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","yaml",[495,2205,2206,2213,2223,2233,2240,2250,2260,2267,2278],{"__ignoreMap":425},[930,2207,2208,2211],{"class":932,"line":933},[930,2209,2210],{"class":1352},"dashboard",[930,2212,1366],{"class":944},[930,2214,2215,2218,2220],{"class":932,"line":1060},[930,2216,2217],{"class":1352},"  theme",[930,2219,888],{"class":944},[930,2221,2222],{"class":1044}," default\n",[930,2224,2225,2228,2230],{"class":932,"line":1067},[930,2226,2227],{"class":1352},"  show_token_analytics",[930,2229,888],{"class":944},[930,2231,2232],{"class":1376}," false\n",[930,2234,2235,2238],{"class":932,"line":1074},[930,2236,2237],{"class":1352},"  oauth",[930,2239,1366],{"class":944},[930,2241,2242,2245,2247],{"class":932,"line":1921},[930,2243,2244],{"class":1352},"    client_id",[930,2246,888],{"class":944},[930,2248,2249],{"class":1044}," agent:cmq02x7ha0002jk0ba3kfnb\n",[930,2251,2252,2255,2257],{"class":932,"line":1926},[930,2253,2254],{"class":1352},"    portal_url",[930,2256,888],{"class":944},[930,2258,2259],{"class":1044}," https:\u002F\u002Fportal.nousresearch.com\n",[930,2261,2262,2265],{"class":932,"line":1932},[930,2263,2264],{"class":1352},"  basic_auth",[930,2266,1366],{"class":944},[930,2268,2270,2273,2275],{"class":932,"line":2269},8,[930,2271,2272],{"class":1352},"    username",[930,2274,888],{"class":944},[930,2276,2277],{"class":944}," ''\n",[930,2279,2280,2283,2285],{"class":932,"line":1692},[930,2281,2282],{"class":1352},"    password_hash",[930,2284,888],{"class":944},[930,2286,2277],{"class":944},[2156,2288,2290],{"id":2289},"siapkan-systemd-agar-dasbor-hermes-autostart","Siapkan Systemd agar Dasbor Hermes Autostart",[533,2292,2293],{},[488,2294,2295],{},"Buat sebuah file layanan:",[922,2297,2301],{"className":2298,"code":2299,"language":2300,"meta":425,"style":425},"language-shell shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","sudo nano \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-dashboard.service\n","shell",[495,2302,2303],{"__ignoreMap":425},[930,2304,2305,2307,2310],{"class":932,"line":933},[930,2306,1889],{"class":1040},[930,2308,2309],{"class":1044}," nano",[930,2311,2312],{"class":1044}," \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-dashboard.service\n",[533,2314,2315],{"start":1060},[488,2316,2317,2318,2321],{},"Tempelkan konfigurasi berikut, dan pastikan ",[495,2319,2320],{},"--host 0.0.0.0"," disertakan dalam perintah tersebut:",[922,2323,2327],{"className":2324,"code":2325,"language":2326,"meta":425,"style":425},"language-ini shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[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","ini",[495,2328,2329,2334,2339,2344,2348,2353,2358,2363,2368,2373,2379,2385,2390,2396],{"__ignoreMap":425},[930,2330,2331],{"class":932,"line":933},[930,2332,2333],{},"[Unit]\n",[930,2335,2336],{"class":932,"line":1060},[930,2337,2338],{},"Description=Hermes Dashboard\n",[930,2340,2341],{"class":932,"line":1067},[930,2342,2343],{},"After=network.target\n",[930,2345,2346],{"class":932,"line":1074},[930,2347,1064],{"emptyLinePlaceholder":1063},[930,2349,2350],{"class":932,"line":1921},[930,2351,2352],{},"[Service]\n",[930,2354,2355],{"class":932,"line":1926},[930,2356,2357],{},"User=hermes\n",[930,2359,2360],{"class":932,"line":1932},[930,2361,2362],{},"WorkingDirectory=\u002Fhome\u002Fhermes\n",[930,2364,2365],{"class":932,"line":2269},[930,2366,2367],{},"ExecStart=\u002Fhome\u002Fhermes\u002F.local\u002Fbin\u002Fhermes dashboard --host 0.0.0.0\n",[930,2369,2370],{"class":932,"line":1692},[930,2371,2372],{},"Restart=always\n",[930,2374,2376],{"class":932,"line":2375},10,[930,2377,2378],{},"RestartSec=10\n",[930,2380,2382],{"class":932,"line":2381},11,[930,2383,2384],{},"Environment=PATH=\u002Fhome\u002Fhermes\u002F.local\u002Fbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fbin:\u002Fbin\n",[930,2386,2388],{"class":932,"line":2387},12,[930,2389,1064],{"emptyLinePlaceholder":1063},[930,2391,2393],{"class":932,"line":2392},13,[930,2394,2395],{},"[Install]\n",[930,2397,2399],{"class":932,"line":2398},14,[930,2400,2401],{},"WantedBy=multi-user.target\n",[533,2403,2404],{"start":1067},[488,2405,2406],{},"Aktifkan dan jalankan layanan:",[922,2408,2410],{"className":2298,"code":2409,"language":2300,"meta":425,"style":425},"sudo systemctl daemon-reload\nsudo systemctl enable hermes-dashboard\nsudo systemctl start hermes-dashboard\nsudo systemctl status hermes-dashboard\n",[495,2411,2412,2421,2432,2443],{"__ignoreMap":425},[930,2413,2414,2416,2418],{"class":932,"line":933},[930,2415,1889],{"class":1040},[930,2417,1892],{"class":1044},[930,2419,2420],{"class":1044}," daemon-reload\n",[930,2422,2423,2425,2427,2429],{"class":932,"line":1060},[930,2424,1889],{"class":1040},[930,2426,1892],{"class":1044},[930,2428,2020],{"class":1044},[930,2430,2431],{"class":1044}," hermes-dashboard\n",[930,2433,2434,2436,2438,2441],{"class":932,"line":1067},[930,2435,1889],{"class":1040},[930,2437,1892],{"class":1044},[930,2439,2440],{"class":1044}," start",[930,2442,2431],{"class":1044},[930,2444,2445,2447,2449,2451],{"class":932,"line":1074},[930,2446,1889],{"class":1040},[930,2448,1892],{"class":1044},[930,2450,1916],{"class":1044},[930,2452,2431],{"class":1044},[878,2454,2456],{"id":2455},"langkah-6-instal-klien-cloudflare-warp-di-desktop","Langkah 6: Instal Klien Cloudflare WARP di Desktop",[533,2458,2459,2467,2470,2477,2484,2491],{},[488,2460,2461,2462,461],{},"Unduh klien Cloudflare WARP dari ",[444,2463,2466],{"href":2464,"rel":2465},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fwarp-client\u002Fget-started\u002F",[448],"portal Cloudflare",[488,2468,2469],{},"Buka dan luncurkan klien Cloudflare WARP setelah proses instalasi.",[488,2471,2472,2473],{},"Masuk (Log in) ketika diminta.\n",[433,2474],{"alt":2475,"src":2476},"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",[488,2478,2479,2480],{},"Halaman 'Success' (Sukses) akan ditampilkan setelah login berhasil.\n",[433,2481],{"alt":2482,"src":2483},"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",[488,2485,2486,2487],{},"Klien WARP seharusnya sekarang menunjukkan bahwa ia terhubung ke tim Zero Trust Anda.\n",[433,2488],{"alt":2489,"src":2490},"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",[488,2492,2493,2494,2497,2498],{},"Buka browser web Anda dan masukkan IP privat Anda (misalnya, ",[495,2495,2496],{},"100.96.0.3","). Hermes Web Dashboard akan dimuat dengan sukses.\n",[433,2499],{"alt":2500,"src":2501},"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",[2503,2504,2505],"blockquote",{},[430,2506,2507,2510,2511,2516],{},[441,2508,2509],{},"Kiat Pro untuk Pengguna macOS:"," Jika Anda menggunakan klien WARP untuk mengakses beberapa akun Cloudflare, lihat panduan cepat kami mengenai ",[441,2512,2513],{},[444,2514,2515],{"href":399},"Beralih di antara beberapa profil Cloudflare WARP pada macOS"," agar dapat beralih antar akun dengan mulus.",[878,2518,2520],{"id":2519},"langkah-7-instal-klien-cloudflare-warp-di-perangkat-ios","Langkah 7: Instal Klien Cloudflare WARP di Perangkat iOS",[533,2522,2523,2530,2538,2546,2554],{},[488,2524,2525,2526,2529],{},"Instal ",[441,2527,2528],{},"Cloudflare One"," dari App Store.",[488,2531,2532,2533],{},"Buka aplikasi Cloudflare One dan masukkan nama tim Anda saat diminta.\n",[433,2534],{"alt":2535,"src":2536,"width":2537},"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,[488,2539,2540,2541],{},"Log in menggunakan alamat email yang sama dengan yang telah dikonfigurasi pada aturan kebijakan di atas.\n",[433,2542],{"alt":2543,"src":2544,"width":2545},"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,[488,2547,2548,2549],{},"Setelah terhubung, tampilannya akan seperti ini:\n",[433,2550],{"alt":2551,"src":2552,"width":2553},"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,[488,2555,2556,2557,2559,2560],{},"Buka browser web Anda dan masukkan IP privat ",[495,2558,2496],{}," untuk mengakses Hermes Web Dashboard di perangkat seluler Anda.\n",[433,2561],{"alt":2562,"src":2563,"width":2564},"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,[474,2566,2568],{"id":2567},"kesimpulan","Kesimpulan",[430,2570,2571,2572,2574,2575,2578],{},"Dengan ",[441,2573,1718],{}," yang menangani kebijakan identitas dan klien ",[441,2576,2577],{},"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.",[1636,2580,2581],{},"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":425,"searchDepth":1060,"depth":1067,"links":2583},[2584,2587,2599],{"id":1732,"depth":1060,"text":1733,"children":2585},[2586],{"id":1751,"depth":1067,"text":1752},{"id":1763,"depth":1060,"text":1764,"children":2588},[2589,2590,2591,2592,2593,2597,2598],{"id":1767,"depth":1067,"text":1768},{"id":1821,"depth":1067,"text":1822},{"id":1963,"depth":1067,"text":1964},{"id":2001,"depth":1067,"text":2002},{"id":2143,"depth":1067,"text":2144,"children":2594},[2595,2596],{"id":2158,"depth":1074,"text":2159},{"id":2289,"depth":1074,"text":2290},{"id":2455,"depth":1067,"text":2456},{"id":2519,"depth":1067,"text":2520},{"id":2567,"depth":1060,"text":2568},[1656,2601],"security","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":2607,"robots":1690,"sitemap":2638},[2608],{"@type":1669,"headline":1703,"description":2603,"name":1703,"image":2604,"step":2609},[2610,2614,2618,2622,2626,2630,2634],{"@type":1672,"name":2611,"text":2612,"url":2613,"image":1786},"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":1672,"name":2615,"text":2616,"url":2617,"image":1960},"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":1672,"name":2619,"text":2620,"url":2621,"image":1973},"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":1672,"name":2623,"text":2624,"url":2625},"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":1672,"name":2627,"text":2628,"url":2629},"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":1672,"name":2631,"text":2632,"url":2633,"image":2476},"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":1672,"name":2635,"text":2636,"url":2637,"image":2536},"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":2639},"2026-09-28",{"title":2641,"description":2603,"ogTitle":1703,"ogDescription":2603,"twitterTitle":1703,"twitterDescription":2603},"Akses Aman Hermes Agent dengan Cloudflare Zero Trust","id\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",[1715,2644,1711,2645,2646],"Zero Trust","Jaringan privat","Tutorial","Wh3s_kiAj69-Gnv-QMhchTPh3C1rs2rSgTg22y7n9dE",{"id":2649,"title":2650,"author":425,"body":2651,"category":4076,"date":4078,"description":4079,"extension":1661,"image":4080,"imageAlt":4081,"isPublished":1063,"meta":4082,"minRead":2392,"navigation":1063,"path":171,"seo":4089,"stem":4091,"tags":4092,"updatedAt":1699,"__hash__":4096},"article\u002Fid\u002Farticle\u002Fsync-obsidian-across-devices.md","Cara sinkronisasi vault Obsidian antar perangkat aman",{"type":427,"value":2652,"toc":4054},[2653,2656,2661,2670,2679,2696,2701,2709,2713,2718,2732,2748,2751,2755,2759,2766,2771,2775,2780,2837,2844,2876,2880,2888,2894,2901,2963,2966,2983,2990,3002,3006,3010,3021,3026,3036,3058,3063,3077,3082,3088,3093,3108,3111,3116,3119,3124,3128,3133,3147,3151,3165,3175,3179,3184,3187,3197,3230,3234,3241,3383,3416,3421,3442,3453,3458,3462,3472,3543,3547,3552,3588,3719,3726,3732,3738,3744,3747,3753,3759,3773,3784,3791,3797,3804,3933,3939,3944,3947,3952,3955,3959,3964,3969,3975,3986,3996,4000,4011,4016,4022,4025,4028,4051],[430,2654,2655],{},"Obsidian adalah aplikasi manajemen pengetahuan lokal-first (mengutamakan penyimpanan lokal). Setiap catatan adalah berkas markdown di perangkat Anda dan sepenuhnya berada di bawah kendali Anda. Namun, sering kali kita menginginkan vault yang sama di laptop, ponsel, dan perangkat lain, atau dapat mengaksesnya dari jarak jauh melalui browser web.",[433,2657],{"src":2658,"alt":2659,"style":2660},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fobsidian-multi-device-sync-illustration.webp","Ilustrasi vault Obsidian yang disinkronkan di berbagai perangkat","max-width: 667px; width: 100%; height: auto;",[430,2662,2663,2664,2669],{},"Sejumlah solusi sinkronisasi tersedia untuk Obsidian, tetapi semuanya memiliki kompromi terkait penanganan konflik, enkripsi, atau kedaulatan data. ",[444,2665,2668],{"href":2666,"rel":2667},"https:\u002F\u002Fgithub.com\u002Fhjinco\u002Fsynch",[448],"Synch"," adalah aplikasi sumber terbuka (open-source) yang menyinkronkan vault Obsidian Anda dengan enkripsi ujung-ke-ujung (end-to-end encryption) dan penanganan konflik otomatis pada server mandiri (self-hosted).",[430,2671,2672,2673,2678],{},"Meskipun pendekatan lokal-first dari Obsidian bekerja dengan sempurna di sebagian besar waktu, kita mungkin masih perlu mengakses vault kita dari jarak jauh melalui browser web pada beberapa kesempatan. ",[444,2674,2677],{"href":2675,"rel":2676},"https:\u002F\u002Fgithub.com\u002FNystik-gh\u002Fignis",[448],"Ignis"," adalah aplikasi sumber terbuka yang menjalankan Obsidian di dalam browser web dalam format yang sangat mirip dengan aslinya, memungkinkan Anda untuk membaca dan mengedit vault Anda dari mana saja.",[430,2680,2681,2682,575,2684,2686,2687,2690,2691,2695],{},"Dalam panduan ini, kita akan menyiapkan ",[441,2683,2668],{},[441,2685,2677],{}," pada sebuah ",[441,2688,2689],{},"VPS"," (Virtual Private Server), menampungnya secara aman di dalam jaringan pribadi ",[441,2692,2693],{},[444,2694,1718],{"href":363}," daripada mengeksposnya ke internet terbuka.",[433,2697],{"src":2698,"alt":2699,"style":2700},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fobsidian-sync-cloudflare-zero-trust-architecture.webp","Diagram arsitektur sinkronisasi Obsidian menggunakan Cloudflare Zero Trust","max-width: 671px; width: 100%; height: auto;",[463,2702],{"description":2703,"image":2704,"image-alt":2705,"label":2706,"min-read":2707,"title":2708,"to":363},"Pelajari cara mengekspos dan mengakses Hermes Agent Anda secara global dan 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\u002FEN-Exposing-Hermes-Agent-to-Private-Network-Using-Cloudflare-WARP.webp","Mengekspos Hermes Agent secara aman ke jaringan pribadi menggunakan Cloudflare Zero Trust dan terowongan WARP","Panduan terkait","8","Cara Mengekspos Hermes Agent Secara Privat dengan Cloudflare WARP",[474,2710,2712],{"id":2711},"sinkronisasi-vault-obsidian-yang-aman-dengan-synch","Sinkronisasi Vault Obsidian yang Aman dengan Synch",[430,2714,2715,2717],{},[441,2716,2668],{}," menyediakan fitur-fitur berikut:",[485,2719,2720,2723,2726,2729],{},[488,2721,2722],{},"Menyinkronkan vault Anda segera setelah perubahan terdeteksi",[488,2724,2725],{},"Mengenkripsi data vault sebelum diunggah",[488,2727,2728],{},"Memungkinkan pemulihan dari riwayat versi",[488,2730,2731],{},"Menyertakan penanganan konflik otomatis",[430,2733,2734,2736,2737,2740,2741,2744,2745,2747],{},[441,2735,2668],{}," menghasilkan ",[441,2738,2739],{},"kunci vault"," 32-byte acak di perangkat Anda, yang digunakan untuk mengenkripsi data vault Anda. Saat Anda membuat vault jarak jauh, Anda memilih ",[441,2742,2743],{},"kata sandi vault","; kata sandi ini digunakan untuk melindungi ",[441,2746,2739],{}," sehingga kunci tersebut dapat disimpan dengan aman di server dan dibuka di perangkat lain.",[430,2749,2750],{},"Harap dicatat bahwa penyelesaian konflik ditangani di perangkat klien Anda, bukan di server. Jika dua perangkat mengedit catatan yang sama secara bersamaan, server akan menyimpan versi mana pun yang tiba lebih dulu dan menandai perangkat lainnya sebagai usang (out of date). Perangkat yang usang tersebut kemudian secara otomatis menggabungkan versi yang lebih baru dengan perubahan lokalnya sebelum mengunggah catatan hasil penggabungan akhir.",[878,2752,2754],{"id":2753},"menyiapkan-synch-di-vps-anda","Menyiapkan Synch di VPS Anda",[2156,2756,2758],{"id":2757},"membuat-nama-domain","Membuat Nama Domain",[430,2760,2761,2762,2765],{},"Buat catatan A (A record) di Cloudflare dan atur status proksinya ke ",[441,2763,2764],{},"Hanya DNS"," (DNS only - melewati CDN Cloudflare).",[433,2767],{"src":2768,"alt":2769,"style":2770},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fcloudflare-dns-a-record-synch-server.webp","Mengonfigurasi data DNS A untuk server Synch di Cloudflare","max-width: 538px; width: 100%; height: auto;",[2156,2772,2774],{"id":2773},"menginstal-synch-docker-di-ubuntu","Menginstal Synch Docker di Ubuntu",[2776,2777,2779],"h5",{"id":2778},"mengklon-repositori","Mengklon Repositori",[922,2781,2783],{"className":1031,"code":2782,"language":1033,"meta":425,"style":425},"git clone https:\u002F\u002Fgithub.com\u002Fhjinco\u002Fsynch.git       \n        \n# Masuk ke folder API\ncd synch\u002Fapps\u002Fapi\n        \n# Salin berkas lingkungan contoh:\ncp .env.example .env\n",[495,2784,2785,2799,2804,2809,2817,2821,2826],{"__ignoreMap":425},[930,2786,2787,2790,2793,2796],{"class":932,"line":933},[930,2788,2789],{"class":1040},"git",[930,2791,2792],{"class":1044}," clone",[930,2794,2795],{"class":1044}," https:\u002F\u002Fgithub.com\u002Fhjinco\u002Fsynch.git",[930,2797,2798],{"class":940},"       \n",[930,2800,2801],{"class":932,"line":1060},[930,2802,2803],{"class":940},"        \n",[930,2805,2806],{"class":932,"line":1067},[930,2807,2808],{"class":1070},"# Masuk ke folder API\n",[930,2810,2811,2814],{"class":932,"line":1074},[930,2812,2813],{"class":961},"cd",[930,2815,2816],{"class":1044}," synch\u002Fapps\u002Fapi\n",[930,2818,2819],{"class":932,"line":1921},[930,2820,2803],{"class":940},[930,2822,2823],{"class":932,"line":1926},[930,2824,2825],{"class":1070},"# Salin berkas lingkungan contoh:\n",[930,2827,2828,2831,2834],{"class":932,"line":1932},[930,2829,2830],{"class":1040},"cp",[930,2832,2833],{"class":1044}," .env.example",[930,2835,2836],{"class":1044}," .env\n",[2776,2838,2840,2841],{"id":2839},"mengedit-nilai-env","Mengedit Nilai ",[495,2842,2843],{},".env",[485,2845,2846,2852,2870],{},[488,2847,2848,2851],{},[495,2849,2850],{},"PUBLIC_URL=synch.pafor.me",": Masukkan nama domain publik server Synch Anda (nama domain yang dibuat pada langkah sebelumnya).",[488,2853,2854,575,2857,2860,2861,2865,2866,2869],{},[495,2855,2856],{},"BETTER_AUTH_SECRET",[495,2858,2859],{},"SYNC_TOKEN_SECRET",": Hasilkan kunci aman menggunakan ",[444,2862,2864],{"href":2863},"\u002Fid\u002Ftools\u002Fsecret-key-hex","alat kunci rahasia online"," ini atau dengan menjalankan ",[495,2867,2868],{},"openssl rand -hex 32"," dua kali di terminal Anda.",[488,2871,2872,2875],{},[495,2873,2874],{},"AUTH_ALLOWED_EMAILS",": Daftar alamat email yang diizinkan untuk mendaftar dan membuat akun, dipisahkan dengan koma.",[2776,2877,2879],{"id":2878},"menambahkan-domain-ke-caddyfile","Menambahkan Domain ke Caddyfile",[430,2881,2882,2883,2887],{},"Detail tentang bagaimana modul DNS Cloudflare diintegrasikan dengan Caddy dan dijalankan di dalam kontainer dapat ditemukan di ",[444,2884,2886],{"href":2885},"\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues#_4-enable-https-with-caddy","artikel Buzz self-hosting"," kami.",[463,2889],{"description":2890,"image":2891,"image-alt":2892,"label":2893,"min-read":469,"title":455,"to":2885},"Pelajari cara mengonfigurasi Caddy untuk menyediakan sertifikat SSL\u002FTLS secara otomatis menggunakan tantangan DNS Cloudflare dalam wadah Docker.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002FEN-Self-Hosting-Buzz-As-The-Workspace-Where-AI-Agents-Become-Colleagues.webp","Mengonfigurasi Caddy dengan token API Cloudflare DNS untuk pembuatan sertifikat SSL\u002FTLS otomatis di ruang kerja mandiri","Panduan self-hosting",[430,2895,2896,2897,2900],{},"Sertakan arahan ",[495,2898,2899],{},"SYNCH_DOMAIN"," di Caddyfile Anda, yang mengarah ke port 8787 (port yang digunakan oleh kontainer Synch):",[922,2902,2906],{"className":2903,"code":2904,"language":2905,"meta":425,"style":425},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  acme_dns cloudflare {env.CLOUDFLARE_API_TOKEN}\n}\n\n{$SYNCH_DOMAIN} {\n  encode zstd gzip\n  reverse_proxy host.docker.internal:8787\n}\n","json",[495,2907,2908,2913,2921,2925,2929,2943,2948,2959],{"__ignoreMap":425},[930,2909,2910],{"class":932,"line":933},[930,2911,2912],{"class":944},"{\n",[930,2914,2915,2918],{"class":932,"line":1060},[930,2916,2917],{"class":940},"  acme_dns cloudflare {env.CLOUDFLARE_API_TOKEN",[930,2919,2920],{"class":944},"}\n",[930,2922,2923],{"class":932,"line":1067},[930,2924,2920],{"class":940},[930,2926,2927],{"class":932,"line":1074},[930,2928,1064],{"emptyLinePlaceholder":1063},[930,2930,2931,2934,2937,2940],{"class":932,"line":1921},[930,2932,2933],{"class":944},"{",[930,2935,2936],{"class":940},"$SYNCH_DOMAIN",[930,2938,2939],{"class":944},"}",[930,2941,2942],{"class":944}," {\n",[930,2944,2945],{"class":932,"line":1926},[930,2946,2947],{"class":940},"  encode zstd gzip\n",[930,2949,2950,2953,2955],{"class":932,"line":1932},[930,2951,2952],{"class":940},"  reverse_proxy host.docker.internal",[930,2954,888],{"class":944},[930,2956,2958],{"class":2957},"sbssI","8787\n",[930,2960,2961],{"class":932,"line":2269},[930,2962,2920],{"class":944},[430,2964,2965],{},"Jalankan kontainer:",[922,2967,2969],{"className":1031,"code":2968,"language":1033,"meta":425,"style":425},"docker compose up -d\n",[495,2970,2971],{"__ignoreMap":425},[930,2972,2973,2975,2977,2980],{"class":932,"line":933},[930,2974,1174],{"class":1040},[930,2976,1177],{"class":1044},[930,2978,2979],{"class":1044}," up",[930,2981,2982],{"class":1044}," -d\n",[430,2984,2985,2986,2989],{},"Jalankan perintah ",[495,2987,2988],{},"curl"," berikut untuk memeriksa ketersediaannya:",[922,2991,2993],{"className":1031,"code":2992,"language":1033,"meta":425,"style":425},"curl https:\u002F\u002Fsynch.pafor.me\u002Fhealth\n",[495,2994,2995],{"__ignoreMap":425},[930,2996,2997,2999],{"class":932,"line":933},[930,2998,2988],{"class":1040},[930,3000,3001],{"class":1044}," https:\u002F\u002Fsynch.pafor.me\u002Fhealth\n",[878,3003,3005],{"id":3004},"menghubungkan-obsidian-ke-server-synch-anda","Menghubungkan Obsidian ke Server Synch Anda",[2156,3007,3009],{"id":3008},"menginstal-plugin-synch-di-obsidian","Menginstal Plugin Synch di Obsidian",[430,3011,3012,3013,3016,3017,3020],{},"Buka Pengaturan Obsidian, navigasikan ke ",[441,3014,3015],{},"Community plugins"," (Plugin komunitas), lalu klik tombol ",[441,3018,3019],{},"'Browse'"," (Telusuri):",[433,3022],{"src":3023,"alt":3024,"style":3025},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fobsidian-community-plugins-browse.webp","Menjelajahi plugin komunitas dalam pengaturan Obsidian","max-width: 523px; width: 100%; height: auto;",[430,3027,3028,3029,1366,3032],{},"Cari dan instal ",[441,3030,3031],{},"'Synchrun'",[433,3033],{"src":3034,"alt":3035,"style":2770},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fobsidian-install-synchrun-plugin.webp","Menginstal plugin Synchrun di Obsidian",[430,3037,3038,3039,3041,3042,3045,3046,3049,3050,3053,3054,3057],{},"Setelah ",[441,3040,3031],{}," terinstal, buka pengaturan plugin dan aktifkan ",[441,3043,3044],{},"'Use a self-hosted server'"," (Gunakan server mandiri). Kemudian, masukkan ",[495,3047,3048],{},"https:\u002F\u002Fsynch.pafor.me"," di bidang ",[441,3051,3052],{},"'Server URL'"," dan klik ",[441,3055,3056],{},"'Save'"," (Simpan).",[433,3059],{"src":3060,"alt":3061,"style":3062},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fobsidian-synchrun-plugin-settings-self-hosted.webp","Mengonfigurasi URL server mandiri pada pengaturan plugin Synchrun","max-width: 525px; width: 100%; height: auto;",[430,3064,3065,3066,3069,3070,3073,3074,3076],{},"Klik tombol ",[441,3067,3068],{},"'Sign in on this device'"," (Masuk di perangkat ini) di bawah ",[441,3071,3072],{},"'Account'"," (Akun). Selanjutnya, daftar akun menggunakan alamat email yang Anda tentukan dalam daftar ",[495,3075,2874],{},"; Anda kemudian akan diarahkan ke halaman otorisasi berikut:",[433,3078],{"src":3079,"alt":3080,"style":3081},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fsynchrun-account-authorization-page.webp","Halaman otorisasi akun untuk Synchrun","max-width: 494px; width: 100%; height: auto;",[430,3083,3065,3084,3087],{},[441,3085,3086],{},"'Allow Obsidian sign-in'"," (Izinkan masuk Obsidian):",[433,3089],{"src":3090,"alt":3091,"style":3092},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fsynchrun-allow-obsidian-signin.webp","Mengizinkan masuk (login) Obsidian untuk Synch","max-width: 498px; width: 100%; height: auto;",[430,3094,3065,3095,3098,3099,3102,3103],{},[441,3096,3097],{},"'Return to Obsidian'"," (Kembali ke Obsidian), lalu klik ",[441,3100,3101],{},"'Create vault'"," (Buat vault):\n",[433,3104],{"src":3105,"alt":3106,"style":3107},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fobsidian-synchrun-create-remote-vault.webp","Membuat vault jarak jauh baru di Synchrun","max-width: 496px; width: 100%; height: auto;",[430,3109,3110],{},"Masukkan nama dan kata sandi yang aman untuk membuat vault jarak jauh Anda.",[433,3112],{"src":3113,"alt":3114,"style":3115},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fobsidian-synchrun-vault-password-setup.webp","Menyiapkan kata sandi aman untuk vault jarak jauh Obsidian","max-width: 500px; width: 100%; height: auto;",[430,3117,3118],{},"Proses sinkronisasi akan segera dimulai dan mungkin memerlukan beberapa waktu tergantung pada ukuran vault Anda. Setelah selesai, total penggunaan penyimpanan Anda akan ditampilkan.",[433,3120],{"src":3121,"alt":3122,"style":3123},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fobsidian-synchrun-sync-completed-storage.webp","Sinkronisasi selesai menunjukkan total penyimpanan yang digunakan","max-width: 508px; width: 100%; height: auto;",[474,3125,3127],{"id":3126},"akses-obsidian-berbasis-browser-dengan-ignis","Akses Obsidian Berbasis Browser dengan Ignis",[430,3129,3130,3132],{},[441,3131,2677],{}," menggantikan API Electron milik Obsidian dengan API Web, yang memungkinkan kode JavaScript milik Obsidian dijalankan langsung di dalam browser web standar. Semua berkas markdown dan lampiran Anda disimpan langsung di sistem berkas server host.",[430,3134,3135,3136,575,3141,3146],{},"Namun, ada beberapa batasan dibandingkan dengan aplikasi desktop Obsidian mandiri. Fitur atau plugin tertentu yang memerlukan API Electron atau Node.js—yang tidak memiliki padanan langsung di lingkungan browser—tidak akan berfungsi. Silakan merujuk ke panduan Ignis ",[444,3137,3140],{"href":3138,"rel":3139},"https:\u002F\u002Fignis.thiefling.com\u002Fdocs\u002Fusing\u002Flimitations\u002F",[448],"Limitations",[444,3142,3145],{"href":3143,"rel":3144},"https:\u002F\u002Fignis.thiefling.com\u002Fdocs\u002Fusing\u002Fplugin-compatibility\u002F",[448],"Plugin compatibility"," untuk daftar kompatibilitas terperinci.",[878,3148,3150],{"id":3149},"penyiapan-ignis","Penyiapan Ignis",[430,3152,3153,3154,3156,3157,3160,3161,3164],{},"Kita akan menginstal ",[441,3155,2677],{}," di VPS kita menggunakan Docker, memasangnya ke folder lokal ",[495,3158,3159],{},".\u002Fvaults",". Direktori vault ini akan disinkronkan menggunakan ",[441,3162,3163],{},"Synch CLI"," untuk menarik pembaruan catatan dari vault jarak jauh yang kita siapkan sebelumnya.",[430,3166,3167,3168,3170,3171,461],{},"Karena ",[441,3169,2677],{}," tidak memiliki autentikasi bawaan, ia harus diamankan di balik jaringan pribadi ",[441,3172,3173],{},[444,3174,1718],{"href":363},[2156,3176,3178],{"id":3177},"membuat-catatan-dns","Membuat Catatan DNS",[433,3180],{"src":3181,"alt":3182,"style":3183},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fcloudflare-dns-a-record-ignis.webp","Mengonfigurasi data DNS A untuk web client Ignis di Cloudflare","max-width: 552px; width: 100%; height: auto;",[2156,3185,2879],{"id":3186},"menambahkan-domain-ke-caddyfile-1",[430,3188,3189,3190,3193,3194,888],{},"Tambahkan ",[495,3191,3192],{},"obsidian.pafor.me"," ke Caddyfile Anda dengan cara yang sama seperti ",[495,3195,3196],{},"synch.pafor.me",[922,3198,3200],{"className":2903,"code":3199,"language":2905,"meta":425,"style":425},"{$OBSIDIAN_DOMAIN} {\n  encode zstd gzip\n  reverse_proxy host.docker.internal:9898\n}\n",[495,3201,3202,3213,3217,3226],{"__ignoreMap":425},[930,3203,3204,3206,3209,3211],{"class":932,"line":933},[930,3205,2933],{"class":944},[930,3207,3208],{"class":940},"$OBSIDIAN_DOMAIN",[930,3210,2939],{"class":944},[930,3212,2942],{"class":944},[930,3214,3215],{"class":932,"line":1060},[930,3216,2947],{"class":940},[930,3218,3219,3221,3223],{"class":932,"line":1067},[930,3220,2952],{"class":940},[930,3222,888],{"class":944},[930,3224,3225],{"class":2957},"9898\n",[930,3227,3228],{"class":932,"line":1074},[930,3229,2920],{"class":944},[2156,3231,3233],{"id":3232},"menjalankan-ignis-menggunakan-docker","Menjalankan Ignis menggunakan Docker",[430,3235,3236,3237,3240],{},"Simpan yml docker compose berikut sebagai ",[495,3238,3239],{},"ignis-docker-compose.yml"," di VPS:",[922,3242,3244],{"className":1340,"code":3243,"language":1342,"meta":425,"style":425},"services:\n  ignis:\n    image: nobbe\u002Fignis:latest\n    ports:\n      - \"9898:8080\"\n    environment:\n      # sesuaikan ini dengan pengguna host Anda (jalankan: id)\n      - PUID=1000\n      - PGID=1000\n      - WS_ORIGINS=https:\u002F\u002Fobsidian.pafor.me\n    volumes:\n      - .\u002Fvaults:\u002Fvaults\n      - .\u002Fdata:\u002Fapp\u002Fdata\n      - obsidian-app:\u002Fapp\u002Fobsidian-app\n    restart: unless-stopped\n\nvolumes:\n  obsidian-app:\n",[495,3245,3246,3253,3260,3270,3277,3290,3297,3302,3309,3316,3323,3330,3337,3344,3351,3362,3367,3375],{"__ignoreMap":425},[930,3247,3248,3251],{"class":932,"line":933},[930,3249,3250],{"class":1352},"services",[930,3252,1366],{"class":944},[930,3254,3255,3258],{"class":932,"line":1060},[930,3256,3257],{"class":1352},"  ignis",[930,3259,1366],{"class":944},[930,3261,3262,3265,3267],{"class":932,"line":1067},[930,3263,3264],{"class":1352},"    image",[930,3266,888],{"class":944},[930,3268,3269],{"class":1044}," nobbe\u002Fignis:latest\n",[930,3271,3272,3275],{"class":932,"line":1074},[930,3273,3274],{"class":1352},"    ports",[930,3276,1366],{"class":944},[930,3278,3279,3282,3285,3288],{"class":932,"line":1921},[930,3280,3281],{"class":944},"      -",[930,3283,3284],{"class":944}," \"",[930,3286,3287],{"class":1044},"9898:8080",[930,3289,1953],{"class":944},[930,3291,3292,3295],{"class":932,"line":1926},[930,3293,3294],{"class":1352},"    environment",[930,3296,1366],{"class":944},[930,3298,3299],{"class":932,"line":1932},[930,3300,3301],{"class":1070},"      # sesuaikan ini dengan pengguna host Anda (jalankan: id)\n",[930,3303,3304,3306],{"class":932,"line":2269},[930,3305,3281],{"class":944},[930,3307,3308],{"class":1044}," PUID=1000\n",[930,3310,3311,3313],{"class":932,"line":1692},[930,3312,3281],{"class":944},[930,3314,3315],{"class":1044}," PGID=1000\n",[930,3317,3318,3320],{"class":932,"line":2375},[930,3319,3281],{"class":944},[930,3321,3322],{"class":1044}," WS_ORIGINS=https:\u002F\u002Fobsidian.pafor.me\n",[930,3324,3325,3328],{"class":932,"line":2381},[930,3326,3327],{"class":1352},"    volumes",[930,3329,1366],{"class":944},[930,3331,3332,3334],{"class":932,"line":2387},[930,3333,3281],{"class":944},[930,3335,3336],{"class":1044}," .\u002Fvaults:\u002Fvaults\n",[930,3338,3339,3341],{"class":932,"line":2392},[930,3340,3281],{"class":944},[930,3342,3343],{"class":1044}," .\u002Fdata:\u002Fapp\u002Fdata\n",[930,3345,3346,3348],{"class":932,"line":2398},[930,3347,3281],{"class":944},[930,3349,3350],{"class":1044}," obsidian-app:\u002Fapp\u002Fobsidian-app\n",[930,3352,3354,3357,3359],{"class":932,"line":3353},15,[930,3355,3356],{"class":1352},"    restart",[930,3358,888],{"class":944},[930,3360,3361],{"class":1044}," unless-stopped\n",[930,3363,3365],{"class":932,"line":3364},16,[930,3366,1064],{"emptyLinePlaceholder":1063},[930,3368,3370,3373],{"class":932,"line":3369},17,[930,3371,3372],{"class":1352},"volumes",[930,3374,1366],{"class":944},[930,3376,3378,3381],{"class":932,"line":3377},18,[930,3379,3380],{"class":1352},"  obsidian-app",[930,3382,1366],{"class":944},[485,3384,3385,3396,3409],{},[488,3386,3387,3388,3391,3392,3395],{},"Gunakan port ",[495,3389,3390],{},"9898"," pada host, karena ",[495,3393,3394],{},"8080"," biasanya digunakan oleh layanan lain.",[488,3397,2985,3398,3401,3402,575,3405,3408],{},[495,3399,3400],{},"id"," di VPS Anda untuk memverifikasi ",[495,3403,3404],{},"UID",[495,3406,3407],{},"GID"," pengguna host Anda untuk memastikan izin sistem berkas yang benar.",[488,3410,3411,3412,3415],{},"Atur ",[495,3413,3414],{},"WS_ORIGINS"," hanya untuk mengizinkan koneksi WebSocket yang berasal dari nama domain spesifik Anda.",[430,3417,3418,3419,888],{},"Jalankan docker ",[441,3420,2677],{},[922,3422,3424],{"className":1031,"code":3423,"language":1033,"meta":425,"style":425},"docker compose -f ignis-docker-compose.yml up -d\n",[495,3425,3426],{"__ignoreMap":425},[930,3427,3428,3430,3432,3435,3438,3440],{"class":932,"line":933},[930,3429,1174],{"class":1040},[930,3431,1177],{"class":1044},[930,3433,3434],{"class":1044}," -f",[930,3436,3437],{"class":1044}," ignis-docker-compose.yml",[930,3439,2979],{"class":1044},[930,3441,2982],{"class":1044},[430,3443,3444,3445,3448,3449,3452],{},"Saat Anda menavigasi ke domain Anda di browser web, ",[441,3446,3447],{},"'Vault Manager'"," akan muncul. Ini akan kosong karena belum ada vault yang dikonfigurasi. Kita akan menyiapkan ",[441,3450,3451],{},"'Synch CLI'"," di bagian berikutnya untuk menyinkronkan konten dari vault jarak jauh kita.",[433,3454],{"src":3455,"alt":3456,"style":3457},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fignis-vault-manager-empty.webp","Antarmuka Vault Manager kosong pada web client Ignis","max-width: 466px; width: 100%; height: auto;",[2156,3459,3461],{"id":3460},"masalah-firewall","Masalah Firewall",[430,3463,3464,3465,3468,3469,888],{},"Secara default, Docker secara otomatis menyisipkan aturan DNAT dan FORWARD miliknya sendiri, yang merutekan lalu lintas publik secara langsung ke kontainer aktif. Ini melewati rantai ",[495,3466,3467],{},"INPUT"," standar Ubuntu UFW\u002Fiptables. Untuk memblokir lalu lintas publik eksternal dan menjaga agar kontainer tetap privat, tambahkan aturan berikut secara manual ke ",[495,3470,3471],{},"iptables",[922,3473,3475],{"className":1031,"code":3474,"language":1033,"meta":425,"style":425},"# Blokir semua lalu lintas publik eksternal\nsudo iptables -I DOCKER-USER -i ext_if -j DROP \n\n# Izinkan lalu lintas hanya dari IP privat klien Cloudflare WARP Anda\nsudo iptables -I DOCKER-USER -i ext_if -s 100.96.0.10 -j ACCEPT\n",[495,3476,3477,3482,3509,3513,3518],{"__ignoreMap":425},[930,3478,3479],{"class":932,"line":933},[930,3480,3481],{"class":1070},"# Blokir semua lalu lintas publik eksternal\n",[930,3483,3484,3486,3489,3492,3495,3498,3501,3504,3507],{"class":932,"line":1060},[930,3485,1889],{"class":1040},[930,3487,3488],{"class":1044}," iptables",[930,3490,3491],{"class":1044}," -I",[930,3493,3494],{"class":1044}," DOCKER-USER",[930,3496,3497],{"class":1044}," -i",[930,3499,3500],{"class":1044}," ext_if",[930,3502,3503],{"class":1044}," -j",[930,3505,3506],{"class":1044}," DROP",[930,3508,2023],{"class":940},[930,3510,3511],{"class":932,"line":1067},[930,3512,1064],{"emptyLinePlaceholder":1063},[930,3514,3515],{"class":932,"line":1074},[930,3516,3517],{"class":1070},"# Izinkan lalu lintas hanya dari IP privat klien Cloudflare WARP Anda\n",[930,3519,3520,3522,3524,3526,3528,3530,3532,3535,3538,3540],{"class":932,"line":1921},[930,3521,1889],{"class":1040},[930,3523,3488],{"class":1044},[930,3525,3491],{"class":1044},[930,3527,3494],{"class":1044},[930,3529,3497],{"class":1044},[930,3531,3500],{"class":1044},[930,3533,3534],{"class":1044}," -s",[930,3536,3537],{"class":2957}," 100.96.0.10",[930,3539,3503],{"class":1044},[930,3541,3542],{"class":1044}," ACCEPT\n",[2156,3544,3546],{"id":3545},"konfigurasi-synch-cli","Konfigurasi Synch CLI",[430,3548,3549,3551],{},[441,3550,3163],{}," adalah alat tanpa kepala (headless tool) yang memungkinkan direktori vault Obsidian disinkronkan langsung di server jarak jauh tanpa memerlukan aplikasi desktop penuh untuk diinstal.",[430,3553,3554,3555,3557,3558,3561,3562,3565,3566,3569,3570,741,3573,3576,3577,3580,3581,3584,3585,920],{},"Bangun ",[441,3556,3163],{}," dari repositori ",[495,3559,3560],{},"synch"," yang Anda klon. Membangun memerlukan ",[441,3563,3564],{},"Node.js >= 22.5"," (karena CLI bergantung pada ",[495,3567,3568],{},"node:sqlite"," dan API browser global seperti ",[495,3571,3572],{},"fetch",[495,3574,3575],{},"WebSocket",", dan ",[495,3578,3579],{},"WebCrypto",") dan ",[441,3582,3583],{},"pnpm"," (karena repositori terstruktur sebagai ruang kerja pnpm menggunakan versi ",[495,3586,3587],{},"10.33.0",[922,3589,3591],{"className":1031,"code":3590,"language":1033,"meta":425,"style":425},"# Periksa versi\nnode --version   # harus >= 22.5\npnpm --version\n\n# Di root repositori\npnpm install\n\n# Bangun bundel CLI\npnpm -C apps\u002Fcli build\n\n# Setelah pembangunan berhasil, Anda akan memiliki `apps\u002Fcli\u002Fdist\u002Fsynch.js`. Jadikan dapat dieksekusi dan masukkan ke PATH Anda\nchmod +x apps\u002Fcli\u002Fdist\u002Fsynch.js\nln -sf \"$PWD\u002Fapps\u002Fcli\u002Fdist\u002Fsynch.js\" \"$HOME\u002F.local\u002Fbin\u002Fsynch\"\n\n# Verifikasi\nsynch --help\n",[495,3592,3593,3598,3609,3616,3620,3625,3632,3636,3641,3654,3658,3663,3674,3703,3707,3712],{"__ignoreMap":425},[930,3594,3595],{"class":932,"line":933},[930,3596,3597],{"class":1070},"# Periksa versi\n",[930,3599,3600,3603,3606],{"class":932,"line":1060},[930,3601,3602],{"class":1040},"node",[930,3604,3605],{"class":1044}," --version",[930,3607,3608],{"class":1070},"   # harus >= 22.5\n",[930,3610,3611,3613],{"class":932,"line":1067},[930,3612,3583],{"class":1040},[930,3614,3615],{"class":1044}," --version\n",[930,3617,3618],{"class":932,"line":1074},[930,3619,1064],{"emptyLinePlaceholder":1063},[930,3621,3622],{"class":932,"line":1921},[930,3623,3624],{"class":1070},"# Di root repositori\n",[930,3626,3627,3629],{"class":932,"line":1926},[930,3628,3583],{"class":1040},[930,3630,3631],{"class":1044}," install\n",[930,3633,3634],{"class":932,"line":1932},[930,3635,1064],{"emptyLinePlaceholder":1063},[930,3637,3638],{"class":932,"line":2269},[930,3639,3640],{"class":1070},"# Bangun bundel CLI\n",[930,3642,3643,3645,3648,3651],{"class":932,"line":1692},[930,3644,3583],{"class":1040},[930,3646,3647],{"class":1044}," -C",[930,3649,3650],{"class":1044}," apps\u002Fcli",[930,3652,3653],{"class":1044}," build\n",[930,3655,3656],{"class":932,"line":2375},[930,3657,1064],{"emptyLinePlaceholder":1063},[930,3659,3660],{"class":932,"line":2381},[930,3661,3662],{"class":1070},"# Setelah pembangunan berhasil, Anda akan memiliki `apps\u002Fcli\u002Fdist\u002Fsynch.js`. Jadikan dapat dieksekusi dan masukkan ke PATH Anda\n",[930,3664,3665,3668,3671],{"class":932,"line":2387},[930,3666,3667],{"class":1040},"chmod",[930,3669,3670],{"class":1044}," +x",[930,3672,3673],{"class":1044}," apps\u002Fcli\u002Fdist\u002Fsynch.js\n",[930,3675,3676,3679,3682,3684,3687,3690,3693,3695,3698,3701],{"class":932,"line":2392},[930,3677,3678],{"class":1040},"ln",[930,3680,3681],{"class":1044}," -sf",[930,3683,3284],{"class":944},[930,3685,3686],{"class":940},"$PWD",[930,3688,3689],{"class":1044},"\u002Fapps\u002Fcli\u002Fdist\u002Fsynch.js",[930,3691,3692],{"class":944},"\"",[930,3694,3284],{"class":944},[930,3696,3697],{"class":940},"$HOME",[930,3699,3700],{"class":1044},"\u002F.local\u002Fbin\u002Fsynch",[930,3702,1953],{"class":944},[930,3704,3705],{"class":932,"line":2398},[930,3706,1064],{"emptyLinePlaceholder":1063},[930,3708,3709],{"class":932,"line":3353},[930,3710,3711],{"class":1070},"# Verifikasi\n",[930,3713,3714,3716],{"class":932,"line":3364},[930,3715,3560],{"class":1040},[930,3717,3718],{"class":1044}," --help\n",[430,3720,3721,3722,3725],{},"Karena Synch CLI berjalan di VPS yang sama dengan vault jarak jauh Synch Anda, ia dapat terhubung ke server API lokal secara langsung. Jika Anda mengonfigurasi server yang berbeda, jalankan ",[495,3723,3724],{},"synch login --api-url \u003Cremote-synch-api-url>"," untuk menentukan endpoint API target Anda.",[430,3727,3728],{},[433,3729],{"alt":3730,"src":3731},"Menjalankan synch login dengan URL API khusus pada terminal","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fsynch-login-api-url-terminal.webp",[430,3733,1827,3734,3737],{},[495,3735,3736],{},"synch login"," di terminal Anda, dan Anda akan menerima URL autentikasi:",[430,3739,3740],{},[433,3741],{"alt":3742,"src":3743},"Tampilan terminal menunjukkan URL otentikasi untuk Synch CLI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fsynch-login-auth-url-terminal.webp",[430,3745,3746],{},"Masuk melalui halaman web menggunakan alamat email yang sama yang terdaftar dengan plugin Synchrun desktop Obsidian Anda.",[430,3748,3749],{},[433,3750],{"alt":3751,"src":3752},"Otentikasi berhasil melalui web login untuk Synch CLI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fsynch-web-login-success.webp",[430,3754,1827,3755,3758],{},[495,3756,3757],{},"synch vault connect --vault ~\u002Fvaults\u002F\u003Cnama-vault> --vault-id asadqe-7b29-4677-fsad-234asdafasd"," untuk menautkan direktori vault lokal Anda di VPS ke vault jarak jauh.",[430,3760,3761,3762,3765,3766,3769,3770,920],{},"ID vault jarak jauh dapat ditemukan di dalam pengaturan plugin ",[441,3763,3764],{},"Synchrun"," dengan mengklik ",[441,3767,3768],{},"'Manage remote vaults'"," (Kelola vault jarak jauh). Ini akan menampilkan halaman web yang menunjukkan daftar vault jarak jauh Anda, masing-masing diidentifikasi oleh GUID unik (misalnya, ",[495,3771,3772],{},"123e4567-e89b-12d3-a456-426614174000",[430,3774,3775,3780],{},[433,3776],{"src":3777,"alt":3778,"style":3779},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fsynchrun-manage-remote-vaults.webp","Mengelola vault jarak jauh melalui plugin Synchrun","max-width: 582px; width: 100%; height: auto;",[433,3781],{"alt":3782,"src":3783},"Mencari ID vault jarak jauh yang unik di Synchrun","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fsynchrun-remote-vault-id.webp",[430,3785,3786,3787,3790],{},"Masukkan kata sandi vault Anda saat diminta untuk membuat tautan. Setelah terhubung, jalankan ",[495,3788,3789],{},"synch sync --vault ~\u002Fvaults\u002F\u003Cnama-vault>"," untuk melakukan sinkronisasi awal Anda. Sinkronisasi pertama ini mungkin memakan waktu cukup lama tergantung pada ukuran vault Anda.",[430,3792,3793],{},[433,3794],{"alt":3795,"src":3796},"Kemajuan awal sinkronisasi vault pada Synch CLI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fsynch-cli-initial-sync-progress.webp",[430,3798,3799,3800,3803],{},"Untuk mengotomatiskan ini, siapkan dan aktifkan layanan systemd untuk menjalankan ",[495,3801,3802],{},"synch watch"," secara terus-menerus, memastikan perubahan disinkronkan secara instan saat boot:",[922,3805,3807],{"className":1031,"code":3806,"language":1033,"meta":425,"style":425},"sudo tee \u002Fetc\u002Fsystemd\u002Fsystem\u002Fsynch-watch.service \u003C\u003C'EOF'\n[Unit]\nDescription=Synch vault watcher\nAfter=network-online.target\nWants=network-online.target\n\n[Service]\nType=simple\nUser=\u003Cusername>\nExecStart=\u002Fhome\u002F\u003Cusername>\u002F.local\u002Fbin\u002Fsynch watch --vault \u002Fhome\u002F\u003Cusername>\u002Fvaults\u002F\u003Cvault-name>\nWorkingDirectory=\u002Fhome\u002F\u003Cusername>\u002Fvaults\nEnvironment=\"PATH=\u002Fhome\u002F\u003Cusername>\u002F.local\u002Fbin:\u002Fhome\u002F\u003Cusername>\u002F.cargo\u002Fbin:\u002Fusr\u002Flocal\u002Fsbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fsbin:\u002Fusr\u002Fbin:\u002Fsbin:\u002Fbin\"\nEnvironment=\"HOME=\u002Fhome\u002F\u003Cusername>\"\nRestart=always\nRestartSec=5\n\n[Install]\nWantedBy=multi-user.target\nEOF\nsudo systemctl daemon-reload\nsudo systemctl enable --now synch-watch.service\n",[495,3808,3809,3825,3829,3834,3839,3844,3848,3852,3857,3862,3867,3872,3877,3882,3886,3891,3895,3899,3903,3909,3918],{"__ignoreMap":425},[930,3810,3811,3813,3816,3819,3822],{"class":932,"line":933},[930,3812,1889],{"class":1040},[930,3814,3815],{"class":1044}," tee",[930,3817,3818],{"class":1044}," \u002Fetc\u002Fsystemd\u002Fsystem\u002Fsynch-watch.service",[930,3820,3821],{"class":944}," \u003C\u003C",[930,3823,3824],{"class":944},"'EOF'\n",[930,3826,3827],{"class":932,"line":1060},[930,3828,2333],{"class":1044},[930,3830,3831],{"class":932,"line":1067},[930,3832,3833],{"class":1044},"Description=Synch vault watcher\n",[930,3835,3836],{"class":932,"line":1074},[930,3837,3838],{"class":1044},"After=network-online.target\n",[930,3840,3841],{"class":932,"line":1921},[930,3842,3843],{"class":1044},"Wants=network-online.target\n",[930,3845,3846],{"class":932,"line":1926},[930,3847,1064],{"emptyLinePlaceholder":1063},[930,3849,3850],{"class":932,"line":1932},[930,3851,2352],{"class":1044},[930,3853,3854],{"class":932,"line":2269},[930,3855,3856],{"class":1044},"Type=simple\n",[930,3858,3859],{"class":932,"line":1692},[930,3860,3861],{"class":1044},"User=\u003Cusername>\n",[930,3863,3864],{"class":932,"line":2375},[930,3865,3866],{"class":1044},"ExecStart=\u002Fhome\u002F\u003Cusername>\u002F.local\u002Fbin\u002Fsynch watch --vault \u002Fhome\u002F\u003Cusername>\u002Fvaults\u002F\u003Cvault-name>\n",[930,3868,3869],{"class":932,"line":2381},[930,3870,3871],{"class":1044},"WorkingDirectory=\u002Fhome\u002F\u003Cusername>\u002Fvaults\n",[930,3873,3874],{"class":932,"line":2387},[930,3875,3876],{"class":1044},"Environment=\"PATH=\u002Fhome\u002F\u003Cusername>\u002F.local\u002Fbin:\u002Fhome\u002F\u003Cusername>\u002F.cargo\u002Fbin:\u002Fusr\u002Flocal\u002Fsbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fsbin:\u002Fusr\u002Fbin:\u002Fsbin:\u002Fbin\"\n",[930,3878,3879],{"class":932,"line":2392},[930,3880,3881],{"class":1044},"Environment=\"HOME=\u002Fhome\u002F\u003Cusername>\"\n",[930,3883,3884],{"class":932,"line":2398},[930,3885,2372],{"class":1044},[930,3887,3888],{"class":932,"line":3353},[930,3889,3890],{"class":1044},"RestartSec=5\n",[930,3892,3893],{"class":932,"line":3364},[930,3894,1064],{"emptyLinePlaceholder":1063},[930,3896,3897],{"class":932,"line":3369},[930,3898,2395],{"class":1044},[930,3900,3901],{"class":932,"line":3377},[930,3902,2401],{"class":1044},[930,3904,3906],{"class":932,"line":3905},19,[930,3907,3908],{"class":944},"EOF\n",[930,3910,3912,3914,3916],{"class":932,"line":3911},20,[930,3913,1889],{"class":1040},[930,3915,1892],{"class":1044},[930,3917,2420],{"class":1044},[930,3919,3921,3923,3925,3927,3930],{"class":932,"line":3920},21,[930,3922,1889],{"class":1040},[930,3924,1892],{"class":1044},[930,3926,2020],{"class":1044},[930,3928,3929],{"class":1044}," --now",[930,3931,3932],{"class":1044}," synch-watch.service\n",[430,3934,3935,3936,3938],{},"Buka ",[495,3937,3192],{}," di browser web Anda. Anda akan menemukan bahwa antarmuka pengguna dan tata letaknya hampir identik dengan aplikasi desktop:",[433,3940],{"src":3941,"alt":3942,"style":3943},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fignis-web-interface-desktop-view.webp","Antarmuka web Ignis menampilkan vault Obsidian di desktop","max-width: 593px; width: 100%; height: auto;",[430,3945,3946],{},"Mengklik ikon pengaturan mengungkapkan bahwa hampir semua konfigurasi inti masih utuh, meskipun plugin komunitas Anda perlu diinstal ulang:",[433,3948],{"src":3949,"alt":3950,"style":3951},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fignis-settings-community-plugins.webp","Pengaturan plugin komunitas di antarmuka web Ignis","max-width: 597px; width: 100%; height: auto;",[430,3953,3954],{},"Untuk menguji penyiapan, Anda dapat menambahkan catatan baru melalui antarmuka web:",[433,3956],{"src":3957,"alt":3958,"style":3951},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fignis-create-new-note-web.webp","Membuat catatan markdown baru menggunakan antarmuka web Ignis",[430,3960,3961,3962,461],{},"Catatan tersebut segera disinkronkan kembali ke aplikasi desktop Obsidian Anda. Perhatikan bahwa folder kosong tidak muncul di ",[441,3963,2677],{},[433,3965],{"src":3966,"alt":3967,"style":3968},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fobsidian-desktop-synced-note.webp","Catatan yang baru dibuat sukses disinkronkan ke aplikasi desktop Obsidian","max-width: 502px; width: 100%; height: auto;",[430,3970,3971,3972,3974],{},"Melihat ",[495,3973,3192],{}," di browser web seluler:",[430,3976,3977,3982],{},[433,3978],{"src":3979,"alt":3980,"style":3981},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fignis-mobile-view-sidebar.webp","Navigasi menu bilah sisi web client Ignis pada perangkat seluler","max-width: 269px; width: 100%; height: auto;",[433,3983],{"src":3984,"alt":3985,"style":3981},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fignis-mobile-view-editor.webp","Editor catatan markdown dari web client Ignis pada perangkat seluler",[430,3987,3988,3989,3991,3992,3995],{},"Saat Anda menghapus catatan di ",[441,3990,2677],{},", catatan tersebut dipindahkan dengan aman ke folder ",[495,3993,3994],{},"~\u002Fvaults\u002F\u003Cnama-vault>\u002F.trash"," vault lokal Anda.",[474,3997,3999],{"id":3998},"pemikiran-akhir-tentang-vault-yang-di-host-sendiri","Pemikiran Akhir tentang Vault yang Di-host Sendiri",[430,4001,4002,4003,575,4005,4007,4008,4010],{},"Bersama-sama, ",[441,4004,2668],{},[441,4006,2677],{}," membuat vault Obsidian utama Anda tersedia dengan mulus di semua perangkat Anda, sepenuhnya di-host pada infrastruktur di bawah kendali langsung Anda. Menempatkan layanan ini di dalam jaringan pribadi ",[441,4009,1718],{}," memastikan bahwa catatan pribadi Anda sepenuhnya terlindungi dari internet publik.",[430,4012,4013,4015],{},[441,4014,2677],{}," tidak dimaksudkan untuk sepenuhnya menggantikan aplikasi desktop Obsidian asli. Sebaliknya, ia berfungsi sebagai klien web ringan dan sementara untuk mengakses dan mengedit vault Anda saat Anda berada jauh dari komputer utama Anda. Untuk penulisan sehari-hari dan pengelolaan vault yang ekstensif, aplikasi Obsidian asli tetap menjadi pilihan yang paling nyaman.",[430,4017,4018,4019,4021],{},"Karena Synch menggunakan enkripsi ujung-ke-ujung, kata sandi vault jarak jauh Anda harus sangat aman untuk melindungi dari serangan tebakan brutal (brute-force). Sangat penting bagi Anda untuk tidak pernah kehilangan kata sandi ini—server tidak menyimpan ",[441,4020,2739],{}," yang tidak terenkripsi, dan jika terlupa, data Anda sama sekali tidak akan dapat dipulihkan. Selain itu, pastikan instance VPS Anda, bersama dengan snapshot atau cadangan otomatis apa pun, diamankan dan dipelihara dengan benar.",[430,4023,4024],{},"Meskipun riwayat versi terenkripsi dari Synch dan alat pemulihan berkas yang dihapus mencakup sebagian besar kehilangan yang tidak disengaja, menyimpan cadangan terpisah dan independen dari vault Obsidian Anda tetap sangat disarankan.",[474,4026,4027],{"id":1607},"Referensi",[485,4029,4030,4037,4044],{},[488,4031,4032],{},[444,4033,4036],{"href":4034,"rel":4035},"https:\u002F\u002Fsynch.run\u002Fself-hosting-docker\u002F",[448],"Synch Deploy dengan Docker Compose",[488,4038,4039],{},[444,4040,4043],{"href":4041,"rel":4042},"https:\u002F\u002Fignis.thiefling.com\u002Fdocs\u002Fserver\u002Fdeploy\u002F",[448],"Ignis Deploy dengan Docker",[488,4045,4046],{},[444,4047,4050],{"href":4048,"rel":4049},"https:\u002F\u002Fsynch.run\u002Fblog\u002Fencryption-and-decryption\u002F",[448],"Bagaimana cara kerja enkripsi ujung-ke-ujung di Synch?",[1636,4052,4053],{},"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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":425,"searchDepth":1060,"depth":1067,"links":4055},[4056,4065,4074,4075],{"id":2711,"depth":1060,"text":2712,"children":4057},[4058,4062],{"id":2753,"depth":1067,"text":2754,"children":4059},[4060,4061],{"id":2757,"depth":1074,"text":2758},{"id":2773,"depth":1074,"text":2774},{"id":3004,"depth":1067,"text":3005,"children":4063},[4064],{"id":3008,"depth":1074,"text":3009},{"id":3126,"depth":1060,"text":3127,"children":4066},[4067],{"id":3149,"depth":1067,"text":3150,"children":4068},[4069,4070,4071,4072,4073],{"id":3177,"depth":1074,"text":3178},{"id":3186,"depth":1074,"text":2879},{"id":3232,"depth":1074,"text":3233},{"id":3460,"depth":1074,"text":3461},{"id":3545,"depth":1074,"text":3546},{"id":3998,"depth":1060,"text":3999},{"id":1607,"depth":1060,"text":4027},[4077],"productivity","2026-09-15","Sinkronkan vault Obsidian antar perangkat Anda dan akses catatan di web secara aman menggunakan Synch & Ignis self-hosted di dalam Cloudflare Zero Trust privat.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002FID-Sync-Obsidian-Across-Devices.webp","Sinkronisasi aman vault Obsidian di beberapa perangkat menggunakan Synch mandiri dan web client Ignis dalam jaringan pribadi Cloudflare Zero Trust",{"schemaOrg":4083,"robots":1690,"sitemap":4087},[4084,4086],{"@type":4085,"headline":2650,"description":4079,"image":4080},"Article",{"@type":1669,"name":2650,"description":4079,"image":4080},{"lastmod":4088},"2026-09-16",{"title":4090,"description":4079,"ogTitle":2650,"ogDescription":4079,"twitterTitle":2650,"twitterDescription":4079},"Sinkronisasi Obsidian self-hosted aman dengan Synch & Ignis","id\u002Farticle\u002Fsync-obsidian-across-devices",[4093,4094,4095,2644],"Self-hosting","Obsidian","Sync","9Can2wM6cs-QbSlkrLrcjEMJNA45Jugpea-xFOP69mw",{"id":4098,"title":455,"author":425,"body":4099,"category":6228,"date":6229,"description":465,"extension":1661,"image":466,"imageAlt":467,"isPublished":1063,"meta":6230,"minRead":3364,"navigation":1063,"path":161,"seo":6252,"stem":6254,"tags":6255,"updatedAt":1699,"__hash__":6259},"article\u002Fid\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues.md",{"type":427,"value":4100,"toc":6198},[4101,4104,4110,4115,4119,4122,4160,4164,4170,4208,4212,4216,4230,4236,4239,4243,4247,4261,4267,4316,4342,4346,4354,4360,4364,4367,4577,4581,4621,4627,4634,4642,4690,4696,4722,4726,4730,4757,4783,4788,4830,4839,5110,5114,5157,5162,5169,5173,5177,5201,5204,5210,5213,5217,5225,5231,5234,5240,5246,5270,5276,5282,5285,5291,5295,5298,5301,5304,5310,5313,5319,5325,5331,5336,5340,5351,5358,5364,5367,5373,5377,5384,5390,5396,5400,5408,5472,5485,5540,5543,5613,5619,5633,5639,5643,5688,5694,5697,5703,5706,5712,5716,5732,5748,5754,5851,5854,5860,5871,5917,5923,5929,5942,5958,5961,5967,5971,5978,6000,6010,6108,6119,6125,6132,6138,6141,6147,6150,6156,6160,6163,6165,6195],[430,4102,4103],{},"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.",[430,4105,4106],{},[433,4107],{"alt":4108,"src":4109},"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",[430,4111,4112,4114],{},[441,4113,1101],{},", 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.",[474,4116,4118],{"id":4117},"apa-itu-buzz-dari-block-ruang-kerja-kolaboratif-agen-ai","Apa itu Buzz dari Block? Ruang Kerja Kolaboratif Agen AI",[430,4120,4121],{},"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:",[485,4123,4124,4130,4136,4142,4148,4154],{},[488,4125,4126,4129],{},[441,4127,4128],{},"Konteks bersama:"," Saluran (channels) adalah tempat manusia dan agen berkolaborasi satu sama lain. Semua riwayat percakapan dan proyek terkandung di dalam saluran tersebut.",[488,4131,4132,4135],{},[441,4133,4134],{},"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.",[488,4137,4138,4141],{},[441,4139,4140],{},"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.",[488,4143,4144,4147],{},[441,4145,4146],{},"Sistem identitas terpadu:"," Manusia dan agen menggunakan sistem identitas yang sama, yang diautentikasi melalui kunci kriptografi.",[488,4149,4150,4153],{},[441,4151,4152],{},"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.",[488,4155,4156,4159],{},[441,4157,4158],{},"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.",[474,4161,4163],{"id":4162},"arsitektur-buzz-yang-kriptografis-dan-didukung-nostr","Arsitektur Buzz yang Kriptografis dan Didukung Nostr",[430,4165,4166],{},[433,4167],{"alt":4168,"src":4169},"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",[485,4171,4172,4178,4184,4190,4196,4202],{},[488,4173,4174,4177],{},[441,4175,4176],{},"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.",[488,4179,4180,4183],{},[441,4181,4182],{},"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.",[488,4185,4186,4189],{},[441,4187,4188],{},"Keanggotaan agen kelas satu:"," Setiap agen memiliki identitas, keanggotaan saluran, dan jejak auditnya sendiri. Agen terhubung ke ruang kerja menggunakan Agent Communication Protocol (ACP).",[488,4191,4192,4195],{},[441,4193,4194],{},"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.",[488,4197,4198,4201],{},[441,4199,4200],{},"Aplikasi Buzz adalah klien Nostr:"," Buzz terpisah dari relay Nostr; ini adalah aplikasi klien desktop\u002Fseluler yang terhubung ke URL relay.",[488,4203,4204,4207],{},[441,4205,4206],{},"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.",[474,4209,4211],{"id":4210},"cara-self-host-relay-buzz-block-di-linux-vps","Cara Self-Host Relay Buzz Block di Linux VPS",[878,4213,4215],{"id":4214},"_0-prasyarat","0. Prasyarat",[485,4217,4218,4221,4224,4227],{},[488,4219,4220],{},"Sebuah Linux VPS",[488,4222,4223],{},"Domain yang mengarah ke server Anda",[488,4225,4226],{},"Docker dan plugin Docker Compose",[488,4228,4229],{},"Akun Cloudflare (paket gratis)",[430,4231,4232,4233,4235],{},"Dalam panduan ini, kita akan menjalankan relay Nostr di Ubuntu VPS di balik jaringan privat ",[444,4234,1703],{"href":363},". Stack-nya adalah empat layanan dalam Docker Compose — relay, PostgreSQL, Redis, dan MinIO — ditambah Caddy untuk HTTPS.",[463,4237],{"description":4238,"image":2604,"image-alt":2605,"label":2706,"min-read":2707,"title":1703,"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.",[878,4240,4242],{"id":4241},"_1-dns-cloudflare-dan-token-api","1. DNS Cloudflare dan Token API",[2156,4244,4246],{"id":4245},"membuat-token-api-cloudflare","Membuat Token API Cloudflare",[533,4248,4249,4256],{},[488,4250,4251,4252,4255],{},"Klik pada ",[441,4253,4254],{},"Profile"," di sudut kanan atas dari menu dropdown ikon pengguna.",[488,4257,4251,4258,461],{},[441,4259,4260],{},"API Tokens",[430,4262,4263],{},[433,4264],{"alt":4265,"src":4266},"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",[533,4268,4269,4275,4281,4301,4306,4310,4313],{"start":1067},[488,4270,4271,4272,461],{},"Klik ",[441,4273,4274],{},"Create Token",[488,4276,4277,4278,461],{},"Gunakan templat ",[441,4279,4280],{},"Edit zone DNS",[488,4282,4283,4284],{},"Konfigurasikan templat sebagai berikut:\n",[485,4285,4286,4292],{},[488,4287,4288,4291],{},[441,4289,4290],{},"Permissions",": Zone — DNS — Edit",[488,4293,4294,4297,4298],{},[441,4295,4296],{},"Zone Resources",": Include — Specific zone — ",[495,4299,4300],{},"example.com",[488,4302,4271,4303,461],{},[441,4304,4305],{},"Continue to summary",[488,4307,4271,4308,461],{},[441,4309,4274],{},[488,4311,4312],{},"Salin token yang dihasilkan karena tidak akan ditampilkan lagi setelah halaman ditutup.",[488,4314,4315],{},"Uji token yang dihasilkan di terminal Anda untuk memastikan token berfungsi:",[922,4317,4319],{"className":1031,"code":4318,"language":1033,"meta":425,"style":425},"curl \"https:\u002F\u002Fapi.cloudflare.com\u002Fclient\u002Fv4\u002Fuser\u002Ftokens\u002Fverify\" -H \"Authorization: Bearer YOUR_TOKEN_HERE\"\n",[495,4320,4321],{"__ignoreMap":425},[930,4322,4323,4325,4327,4330,4332,4335,4337,4340],{"class":932,"line":933},[930,4324,2988],{"class":1040},[930,4326,3284],{"class":944},[930,4328,4329],{"class":1044},"https:\u002F\u002Fapi.cloudflare.com\u002Fclient\u002Fv4\u002Fuser\u002Ftokens\u002Fverify",[930,4331,3692],{"class":944},[930,4333,4334],{"class":1044}," -H",[930,4336,3284],{"class":944},[930,4338,4339],{"class":1044},"Authorization: Bearer YOUR_TOKEN_HERE",[930,4341,1953],{"class":944},[2156,4343,4345],{"id":4344},"catatan-dns","Catatan DNS",[485,4347,4348],{},[488,4349,4350,4351,461],{},"Buat catatan A dan atur ke ",[441,4352,4353],{},"DNS only",[430,4355,4356],{},[433,4357],{"alt":4358,"src":4359},"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",[878,4361,4363],{"id":4362},"_2-menginstal-docker-di-ubuntu","2. Menginstal Docker di Ubuntu",[430,4365,4366],{},"Jalankan perintah berikut untuk menginstal Docker di Ubuntu:",[922,4368,4370],{"className":1031,"code":4369,"language":1033,"meta":425,"style":425},"# 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",[495,4371,4372,4377,4405,4409,4414,4456,4460,4465,4475,4479,4484,4505,4509,4514,4525,4529,4534,4540,4544,4558,4562,4567],{"__ignoreMap":425},[930,4373,4374],{"class":932,"line":933},[930,4375,4376],{"class":1070},"# Add Docker's official GPG key and set up the Docker repository\n",[930,4378,4379,4381,4384,4387,4390,4393,4396,4399,4402],{"class":932,"line":1060},[930,4380,2988],{"class":1040},[930,4382,4383],{"class":1044}," -fsSL",[930,4385,4386],{"class":1044}," https:\u002F\u002Fdownload.docker.com\u002Flinux\u002Fubuntu\u002Fgpg",[930,4388,4389],{"class":944}," |",[930,4391,4392],{"class":1040}," sudo",[930,4394,4395],{"class":1044}," gpg",[930,4397,4398],{"class":1044}," --dearmor",[930,4400,4401],{"class":1044}," -o",[930,4403,4404],{"class":1044}," \u002Fusr\u002Fshare\u002Fkeyrings\u002Fdocker-archive-keyring.gpg\n",[930,4406,4407],{"class":932,"line":1067},[930,4408,1064],{"emptyLinePlaceholder":1063},[930,4410,4411],{"class":932,"line":1074},[930,4412,4413],{"class":1070},"# Add the official Docker repository\n",[930,4415,4416,4419,4421,4424,4427,4430,4433,4436,4439,4441,4443,4445,4447,4450,4453],{"class":932,"line":1921},[930,4417,4418],{"class":961},"echo",[930,4420,3284],{"class":944},[930,4422,4423],{"class":1044},"deb [arch=amd64 signed-by=\u002Fusr\u002Fshare\u002Fkeyrings\u002Fdocker-archive-keyring.gpg] https:\u002F\u002Fdownload.docker.com\u002Flinux\u002Fubuntu ",[930,4425,4426],{"class":944},"$(",[930,4428,4429],{"class":1040},"lsb_release",[930,4431,4432],{"class":1044}," -cs",[930,4434,4435],{"class":944},")",[930,4437,4438],{"class":1044}," stable",[930,4440,3692],{"class":944},[930,4442,4389],{"class":944},[930,4444,4392],{"class":1040},[930,4446,3815],{"class":1044},[930,4448,4449],{"class":1044}," \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fdocker.list",[930,4451,4452],{"class":944}," >",[930,4454,4455],{"class":1044}," \u002Fdev\u002Fnull\n",[930,4457,4458],{"class":932,"line":1926},[930,4459,1064],{"emptyLinePlaceholder":1063},[930,4461,4462],{"class":932,"line":1932},[930,4463,4464],{"class":1070},"# Update package list\n",[930,4466,4467,4469,4472],{"class":932,"line":2269},[930,4468,1889],{"class":1040},[930,4470,4471],{"class":1044}," apt",[930,4473,4474],{"class":1044}," update\n",[930,4476,4477],{"class":932,"line":1692},[930,4478,1064],{"emptyLinePlaceholder":1063},[930,4480,4481],{"class":932,"line":2375},[930,4482,4483],{"class":1070},"# Install Docker Engine, Docker Community Edition, and containerd runtime\n",[930,4485,4486,4488,4490,4493,4496,4499,4502],{"class":932,"line":2381},[930,4487,1889],{"class":1040},[930,4489,4471],{"class":1044},[930,4491,4492],{"class":1044}," install",[930,4494,4495],{"class":1044}," docker-ce",[930,4497,4498],{"class":1044}," docker-ce-cli",[930,4500,4501],{"class":1044}," containerd.io",[930,4503,4504],{"class":1044}," -y\n",[930,4506,4507],{"class":932,"line":2387},[930,4508,1064],{"emptyLinePlaceholder":1063},[930,4510,4511],{"class":932,"line":2392},[930,4512,4513],{"class":1070},"# Start automatically when the system boots\n",[930,4515,4516,4518,4520,4522],{"class":932,"line":2398},[930,4517,1889],{"class":1040},[930,4519,1892],{"class":1044},[930,4521,2020],{"class":1044},[930,4523,4524],{"class":1044}," docker\n",[930,4526,4527],{"class":932,"line":3353},[930,4528,1064],{"emptyLinePlaceholder":1063},[930,4530,4531],{"class":932,"line":3364},[930,4532,4533],{"class":1070},"# Verify docker is installed\n",[930,4535,4536,4538],{"class":932,"line":3369},[930,4537,1174],{"class":1040},[930,4539,3615],{"class":1044},[930,4541,4542],{"class":932,"line":3377},[930,4543,1064],{"emptyLinePlaceholder":1063},[930,4545,4546,4548,4550,4552,4555],{"class":932,"line":3905},[930,4547,1889],{"class":1040},[930,4549,4471],{"class":1044},[930,4551,4492],{"class":1044},[930,4553,4554],{"class":1044}," -y",[930,4556,4557],{"class":1044}," docker-compose-plugin\n",[930,4559,4560],{"class":932,"line":3911},[930,4561,1064],{"emptyLinePlaceholder":1063},[930,4563,4564],{"class":932,"line":3920},[930,4565,4566],{"class":1070},"# Verify the compose plugin is installed\n",[930,4568,4570,4572,4574],{"class":932,"line":4569},22,[930,4571,1174],{"class":1040},[930,4573,1177],{"class":1044},[930,4575,4576],{"class":1044}," version\n",[878,4578,4580],{"id":4579},"_3-kloning-dan-konfigurasi","3. Kloning dan Konfigurasi",[922,4582,4584],{"className":1031,"code":4583,"language":1033,"meta":425,"style":425},"git clone https:\u002F\u002Fgithub.com\u002Fblock\u002Fbuzz.git\n\ncd buzz\u002Fdeploy\u002Fcompose\ncp .env.example .env\nnano .env\n",[495,4585,4586,4595,4599,4606,4614],{"__ignoreMap":425},[930,4587,4588,4590,4592],{"class":932,"line":933},[930,4589,2789],{"class":1040},[930,4591,2792],{"class":1044},[930,4593,4594],{"class":1044}," https:\u002F\u002Fgithub.com\u002Fblock\u002Fbuzz.git\n",[930,4596,4597],{"class":932,"line":1060},[930,4598,1064],{"emptyLinePlaceholder":1063},[930,4600,4601,4603],{"class":932,"line":1067},[930,4602,2813],{"class":961},[930,4604,4605],{"class":1044}," buzz\u002Fdeploy\u002Fcompose\n",[930,4607,4608,4610,4612],{"class":932,"line":1074},[930,4609,2830],{"class":1040},[930,4611,2833],{"class":1044},[930,4613,2836],{"class":1044},[930,4615,4616,4619],{"class":932,"line":1921},[930,4617,4618],{"class":1040},"nano",[930,4620,2836],{"class":1044},[430,4622,4623,4624,4626],{},"Edit ",[495,4625,2843],{}," dalam beberapa kelompok:",[485,4628,4629],{},[488,4630,4631],{},[441,4632,4633],{},"Domain:",[922,4635,4640],{"className":4636,"code":4638,"language":4639},[4637],"language-text","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","text",[495,4641,4638],{"__ignoreMap":425},[485,4643,4644,4654],{},[488,4645,4646,4649,4650,4653],{},[441,4647,4648],{},"Kunci pemilik:"," ",[495,4651,4652],{},"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.",[488,4655,4656,4659],{},[441,4657,4658],{},"Rahasia (Secrets):",[485,4660,4661,4671,4684],{},[488,4662,4663,4664,4667,4668,4670],{},"Hasilkan rahasia menggunakan ",[444,4665,4666],{"href":2863},"alat kustom online"," ini atau dengan ",[495,4669,2868],{}," (jalankan tujuh kali)",[488,4672,4673,4674,579,4677,741,4680,4683],{},"Ganti setiap placeholder ",[495,4675,4676],{},"CHANGE_ME",[495,4678,4679],{},"BUZZ_RELAY_PRIVATE_KEY",[495,4681,4682],{},"BUZZ_GIT_HOOK_HMAC_SECRET",", kata sandi Postgres\u002FRedis\u002FTypesense, dan kunci akses\u002Frahasia S3.",[488,4685,4686,4687,461],{},"Placeholder yang tersisa adalah penyebab paling umum dari loop mulai ulang kontainer; verifikasi milik Anda dengan ",[495,4688,4689],{},"grep CHANGE_ME .env",[922,4691,4694],{"className":4692,"code":4693,"language":4639},[4637],"    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",[495,4695,4693],{"__ignoreMap":425},[485,4697,4698],{},[488,4699,4700,4703],{},[441,4701,4702],{},"Lainnya:",[485,4704,4705,4711],{},[488,4706,3189,4707,4710],{},[495,4708,4709],{},"CLOUDFLARE_API_TOKEN"," sebagai variabel lingkungan dan tetapkan token API yang dibuat sebelumnya. Ini diperlukan untuk Caddy.",[488,4712,4713,4714,741,4716,3576,4719,461],{},"Buzz dikirimkan dengan default terbuka — siapa pun yang mengetahui URL relay Anda dapat mengautentikasi dan bergabung. Atur ",[495,4715,4652],{},[495,4717,4718],{},"BUZZ_REQUIRE_RELAY_MEMBERSHIP=true",[495,4720,4721],{},"BUZZ_REQUIRE_AUTH_TOKEN=true",[878,4723,4725],{"id":4724},"_4-mengaktifkan-https-dengan-caddy","4. Mengaktifkan HTTPS dengan Caddy",[2156,4727,4729],{"id":4728},"membangun-image-caddy-kustom-dengan-modul-dns-cloudflare","Membangun Image Caddy Kustom dengan Modul DNS Cloudflare",[485,4731,4732,4743,4754],{},[488,4733,4734,4735,4738,4739,4742],{},"Kita menyiapkan DNS-01 dengan Cloudflare untuk Caddy. DNS-01 bekerja dengan meminta plugin menulis catatan TXT ",[495,4736,4737],{},"_acme-challenge.buzz.pafor.me"," ke ",[441,4740,4741],{},"DNS publik",";",[488,4744,4745,4746,4749,4750,4753],{},"Let's Encrypt kemudian mencari catatan tersebut dari internet publik untuk memverifikasi kontrol domain. Ini berarti ",[495,4747,4748],{},"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 ",[495,4751,4752],{},"buzz.pafor.me"," hanya diselesaikan secara privat dan tidak ada zona publik, DNS-01 akan gagal, sehingga memerlukan pendekatan yang berbeda.",[488,4755,4756],{},"Tambahkan berikut ini ke Caddyfile:",[922,4758,4760],{"className":1340,"code":4759,"language":1342,"meta":425,"style":425},"{\n  acme_dns cloudflare {env.CLOUDFLARE_API_TOKEN}\n}\n",[495,4761,4762,4766,4779],{"__ignoreMap":425},[930,4763,4764],{"class":932,"line":933},[930,4765,2912],{"class":944},[930,4767,4768,4771,4774,4777],{"class":932,"line":1060},[930,4769,4770],{"class":1044},"  acme_dns cloudflare",[930,4772,4773],{"class":944}," {",[930,4775,4776],{"class":1044},"env.CLOUDFLARE_API_TOKEN",[930,4778,2920],{"class":944},[930,4780,4781],{"class":932,"line":1067},[930,4782,2920],{"class":944},[485,4784,4785],{},[488,4786,4787],{},"Buat Dockerfile.caddy dengan konten berikut, yang diperlukan oleh compose.caddy.yml:",[922,4789,4791],{"className":1340,"code":4790,"language":1342,"meta":425,"style":425},"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",[495,4792,4793,4798,4802,4807,4812,4816,4821,4825],{"__ignoreMap":425},[930,4794,4795],{"class":932,"line":933},[930,4796,4797],{"class":1044},"FROM caddy:2-builder AS builder\n",[930,4799,4800],{"class":932,"line":1060},[930,4801,1064],{"emptyLinePlaceholder":1063},[930,4803,4804],{"class":932,"line":1067},[930,4805,4806],{"class":1044},"RUN xcaddy build \\\n",[930,4808,4809],{"class":932,"line":1074},[930,4810,4811],{"class":1044},"    --with github.com\u002Fcaddy-dns\u002Fcloudflare\n",[930,4813,4814],{"class":932,"line":1921},[930,4815,1064],{"emptyLinePlaceholder":1063},[930,4817,4818],{"class":932,"line":1926},[930,4819,4820],{"class":1044},"FROM caddy:2-alpine\n",[930,4822,4823],{"class":932,"line":1932},[930,4824,1064],{"emptyLinePlaceholder":1063},[930,4826,4827],{"class":932,"line":2269},[930,4828,4829],{"class":1044},"COPY --from=builder \u002Fusr\u002Fbin\u002Fcaddy \u002Fusr\u002Fbin\u002Fcaddy\n",[485,4831,4832],{},[488,4833,4834,4835,4838],{},"Modifikasi ",[495,4836,4837],{},"compose.caddy.yml"," untuk menggunakan image dengan modul Cloudflare dan meneruskan token API Cloudflare:",[922,4840,4842],{"className":1340,"code":4841,"language":1342,"meta":425,"style":425},"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",[495,4843,4844,4850,4857,4869,4873,4880,4887,4897,4907,4916,4923,4930,4940,4946,4956,4966,4972,4983,4994,5000,5007,5014,5021,5030,5038,5046,5051,5058,5066,5074,5085,5093,5100],{"__ignoreMap":425},[930,4845,4846,4848],{"class":932,"line":933},[930,4847,3250],{"class":1352},[930,4849,1366],{"class":944},[930,4851,4852,4855],{"class":932,"line":1060},[930,4853,4854],{"class":1352},"  relay",[930,4856,1366],{"class":944},[930,4858,4859,4861,4863,4866],{"class":932,"line":1067},[930,4860,3274],{"class":1352},[930,4862,888],{"class":944},[930,4864,4865],{"class":936}," !reset",[930,4867,4868],{"class":944}," []\n",[930,4870,4871],{"class":932,"line":1074},[930,4872,1064],{"emptyLinePlaceholder":1063},[930,4874,4875,4878],{"class":932,"line":1921},[930,4876,4877],{"class":1352},"  caddy",[930,4879,1366],{"class":944},[930,4881,4882,4885],{"class":932,"line":1926},[930,4883,4884],{"class":1352},"    build",[930,4886,1366],{"class":944},[930,4888,4889,4892,4894],{"class":932,"line":1932},[930,4890,4891],{"class":1352},"      context",[930,4893,888],{"class":944},[930,4895,4896],{"class":2957}," .\n",[930,4898,4899,4902,4904],{"class":932,"line":2269},[930,4900,4901],{"class":1352},"      dockerfile",[930,4903,888],{"class":944},[930,4905,4906],{"class":1044}," Dockerfile.caddy\n",[930,4908,4909,4911,4913],{"class":932,"line":1692},[930,4910,3264],{"class":1352},[930,4912,888],{"class":944},[930,4914,4915],{"class":1044}," buzz-caddy:cloudflare\n",[930,4917,4918,4921],{"class":932,"line":2375},[930,4919,4920],{"class":1352},"    depends_on",[930,4922,1366],{"class":944},[930,4924,4925,4928],{"class":932,"line":2381},[930,4926,4927],{"class":1352},"      relay",[930,4929,1366],{"class":944},[930,4931,4932,4935,4937],{"class":932,"line":2387},[930,4933,4934],{"class":1352},"        condition",[930,4936,888],{"class":944},[930,4938,4939],{"class":1044}," service_healthy\n",[930,4941,4942,4944],{"class":932,"line":2392},[930,4943,3294],{"class":1352},[930,4945,1366],{"class":944},[930,4947,4948,4951,4953],{"class":932,"line":2398},[930,4949,4950],{"class":1352},"      BUZZ_DOMAIN",[930,4952,888],{"class":944},[930,4954,4955],{"class":1044}," ${BUZZ_DOMAIN:?set BUZZ_DOMAIN}\n",[930,4957,4958,4961,4963],{"class":932,"line":3353},[930,4959,4960],{"class":1352},"      CLOUDFLARE_API_TOKEN",[930,4962,888],{"class":944},[930,4964,4965],{"class":1044}," ${CLOUDFLARE_API_TOKEN:?set CLOUDFLARE_API_TOKEN}\n",[930,4967,4968,4970],{"class":932,"line":3364},[930,4969,3274],{"class":1352},[930,4971,1366],{"class":944},[930,4973,4974,4976,4978,4981],{"class":932,"line":3369},[930,4975,3281],{"class":944},[930,4977,3284],{"class":944},[930,4979,4980],{"class":1044},"${CADDY_HTTP_PORT:-80}:80",[930,4982,1953],{"class":944},[930,4984,4985,4987,4989,4992],{"class":932,"line":3377},[930,4986,3281],{"class":944},[930,4988,3284],{"class":944},[930,4990,4991],{"class":1044},"${CADDY_HTTPS_PORT:-443}:443",[930,4993,1953],{"class":944},[930,4995,4996,4998],{"class":932,"line":3905},[930,4997,3327],{"class":1352},[930,4999,1366],{"class":944},[930,5001,5002,5004],{"class":932,"line":3911},[930,5003,3281],{"class":944},[930,5005,5006],{"class":1044}," .\u002FCaddyfile:\u002Fetc\u002Fcaddy\u002FCaddyfile:ro\n",[930,5008,5009,5011],{"class":932,"line":3920},[930,5010,3281],{"class":944},[930,5012,5013],{"class":1044}," buzz-caddy-data:\u002Fdata\n",[930,5015,5016,5018],{"class":932,"line":4569},[930,5017,3281],{"class":944},[930,5019,5020],{"class":1044}," buzz-caddy-config:\u002Fconfig\n",[930,5022,5024,5026,5028],{"class":932,"line":5023},23,[930,5025,3356],{"class":1352},[930,5027,888],{"class":944},[930,5029,3361],{"class":1044},[930,5031,5033,5036],{"class":932,"line":5032},24,[930,5034,5035],{"class":1352},"    networks",[930,5037,1366],{"class":944},[930,5039,5041,5043],{"class":932,"line":5040},25,[930,5042,3281],{"class":944},[930,5044,5045],{"class":1044}," buzz-net\n",[930,5047,5049],{"class":932,"line":5048},26,[930,5050,1064],{"emptyLinePlaceholder":1063},[930,5052,5054,5056],{"class":932,"line":5053},27,[930,5055,3372],{"class":1352},[930,5057,1366],{"class":944},[930,5059,5061,5064],{"class":932,"line":5060},28,[930,5062,5063],{"class":1352},"  buzz-caddy-data",[930,5065,1366],{"class":944},[930,5067,5069,5072],{"class":932,"line":5068},29,[930,5070,5071],{"class":1352},"    labels",[930,5073,1366],{"class":944},[930,5075,5077,5080,5082],{"class":932,"line":5076},30,[930,5078,5079],{"class":1352},"      com.buzz.volume",[930,5081,888],{"class":944},[930,5083,5084],{"class":1044}," caddy-data\n",[930,5086,5088,5091],{"class":932,"line":5087},31,[930,5089,5090],{"class":1352},"  buzz-caddy-config",[930,5092,1366],{"class":944},[930,5094,5096,5098],{"class":932,"line":5095},32,[930,5097,5071],{"class":1352},[930,5099,1366],{"class":944},[930,5101,5103,5105,5107],{"class":932,"line":5102},33,[930,5104,5079],{"class":1352},[930,5106,888],{"class":944},[930,5108,5109],{"class":1044}," caddy-config\n",[2156,5111,5113],{"id":5112},"memulai-kontainer-docker","Memulai kontainer Docker",[922,5115,5117],{"className":1031,"code":5116,"language":1033,"meta":425,"style":425},"docker compose -f compose.yml -f compose.caddy.yml up -d\n\n#Check the Docker status\ndocker compose ps\n",[495,5118,5119,5139,5143,5148],{"__ignoreMap":425},[930,5120,5121,5123,5125,5127,5130,5132,5135,5137],{"class":932,"line":933},[930,5122,1174],{"class":1040},[930,5124,1177],{"class":1044},[930,5126,3434],{"class":1044},[930,5128,5129],{"class":1044}," compose.yml",[930,5131,3434],{"class":1044},[930,5133,5134],{"class":1044}," compose.caddy.yml",[930,5136,2979],{"class":1044},[930,5138,2982],{"class":1044},[930,5140,5141],{"class":932,"line":1060},[930,5142,1064],{"emptyLinePlaceholder":1063},[930,5144,5145],{"class":932,"line":1067},[930,5146,5147],{"class":1070},"#Check the Docker status\n",[930,5149,5150,5152,5154],{"class":932,"line":1074},[930,5151,1174],{"class":1040},[930,5153,1177],{"class":1044},[930,5155,5156],{"class":1044}," ps\n",[433,5158],{"src":5159,"alt":5160,"style":5161},"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;",[430,5163,5164,5165,5168],{},"Buka browser web Anda dan navigasikan ke ",[495,5166,5167],{},"http:\u002F\u002Fbuzz.pafor.me"," untuk memverifikasi bahwa relay berjalan.",[433,5170],{"src":5171,"alt":5172,"style":3115},"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",[878,5174,5176],{"id":5175},"langkah-5-cadangkan-back-up-sejak-hari-pertama","Langkah 5: Cadangkan (Back up) sejak hari pertama",[922,5178,5180],{"className":1031,"code":5179,"language":1033,"meta":425,"style":425},"mkdir -p \u002Fbuzz_backups\ncrontab -e\n",[495,5181,5182,5193],{"__ignoreMap":425},[930,5183,5184,5187,5190],{"class":932,"line":933},[930,5185,5186],{"class":1040},"mkdir",[930,5188,5189],{"class":1044}," -p",[930,5191,5192],{"class":1044}," \u002Fbuzz_backups\n",[930,5194,5195,5198],{"class":932,"line":1060},[930,5196,5197],{"class":1040},"crontab",[930,5199,5200],{"class":1044}," -e\n",[430,5202,5203],{},"Tambahkan tugas cron dump database harian:",[922,5205,5208],{"className":5206,"code":5207,"language":4639},[4637],"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",[495,5209,5207],{"__ignoreMap":425},[430,5211,5212],{},"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.",[474,5214,5216],{"id":5215},"menyiapkan-klien-desktop-buzz-dan-identitas-nostr","Menyiapkan Klien Desktop Buzz dan Identitas Nostr",[430,5218,5219,5220,5224],{},"Unduh aplikasi desktop Buzz dari ",[444,5221,5222],{"href":5222,"rel":5223},"https:\u002F\u002Fgithub.com\u002Fblock\u002Fbuzz\u002Freleases",[448]," dan jalankan. Isi detail profil hingga Anda mencapai halaman \"Join or create a community\".",[430,5226,5227],{},[433,5228],{"alt":5229,"src":5230},"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",[430,5232,5233],{},"Klik \"Join a community\" dan salin kunci publik Anda.",[430,5235,5236],{},[433,5237],{"alt":5238,"src":5239},"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",[430,5241,5242,5243,5245],{},"Jalankan perintah berikut di ",[441,5244,2689],{}," untuk menambahkan diri Anda sebagai anggota pertama:",[922,5247,5249],{"className":1031,"code":5248,"language":1033,"meta":425,"style":425},"docker compose exec relay buzz-admin add-member --pubkey npub1yourkeyhere\n",[495,5250,5251],{"__ignoreMap":425},[930,5252,5253,5255,5257,5259,5261,5263,5265,5267],{"class":932,"line":933},[930,5254,1174],{"class":1040},[930,5256,1177],{"class":1044},[930,5258,1180],{"class":1044},[930,5260,1183],{"class":1044},[930,5262,1186],{"class":1044},[930,5264,1189],{"class":1044},[930,5266,1192],{"class":1044},[930,5268,5269],{"class":1044}," npub1yourkeyhere\n",[430,5271,3189,5272,5275],{},[495,5273,5274],{},"wss:\u002F\u002Fbuzz.pafor.me"," as the community URL and click \"Next\".",[430,5277,5278],{},[433,5279],{"alt":5280,"src":5281},"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",[430,5283,5284],{},"Masukkan nama dan klik tombol Next.",[430,5286,5287],{},[433,5288],{"alt":5289,"src":5290},"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",[878,5292,5294],{"id":5293},"saluran-channels-dan-agen","Saluran (Channels) dan Agen",[430,5296,5297],{},"Saluran adalah grup tugas atau grup proyek. Buat saluran per tugas atau proyek dan masukkan manusia serta agen ke dalamnya.",[430,5299,5300],{},"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.",[430,5302,5303],{},"Mari kirim DM ke agen yang telah dikonfigurasi sebelumnya",[430,5305,5306],{},[433,5307],{"alt":5308,"src":5309},"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",[430,5311,5312],{},"Mari buat saluran dan tambahkan beberapa agen ke dalamnya",[430,5314,5315],{},[433,5316],{"alt":5317,"src":5318},"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",[430,5320,5321],{},[433,5322],{"alt":5323,"src":5324},"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",[430,5326,5327],{},[433,5328],{"alt":5329,"src":5330},"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",[433,5332],{"src":5333,"alt":5334,"style":5335},"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;",[878,5337,5339],{"id":5338},"mengaktifkan-runtime-agen","Mengaktifkan Runtime Agen",[430,5341,5342,5343,5346,5347,5350],{},"Runtime default mengandalkan deteksi otomatis yang mencari biner peluncur (misalnya ",[495,5344,5345],{},"hermes-acp",") di direktori standar seperti ",[495,5348,5349],{},"~\u002F.local\u002Fbin",". Jika suatu alat diinstal di lokasi non-standar, Buzz tidak dapat menyelesaikannya.",[430,5352,5353,5354,5357],{},"Untuk Kimi Code, ID agennya adalah kimi, dan Buzz mencari binernya di ",[495,5355,5356],{},"~\u002F.local\u002Fbin\u002Fkimi",". Tautan simbolis (symbolic link) dapat melakukannya:",[922,5359,5362],{"className":5360,"code":5361,"language":4639},[4637],"ln -s kimi-cli \u002FUsers\u002F\u003Cuser>\u002F.local\u002Fbin\u002Fkimi\n",[495,5363,5361],{"__ignoreMap":425},[430,5365,5366],{},"Kimi Code sekarang muncul di bawah runtime Agen.",[430,5368,5369],{},[433,5370],{"alt":5371,"src":5372},"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",[878,5374,5376],{"id":5375},"proyek-dan-repositori","Proyek dan Repositori",[430,5378,5379,5380,5383],{},"Aktifkan fitur '",[441,5381,5382],{},"Projects","' di Settings → Experiments terlebih dahulu:",[430,5385,5386],{},[433,5387],{"alt":5388,"src":5389},"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",[430,5391,5392,5393,5395],{},"Saat ini, proyek harus dibuat menggunakan ",[495,5394,1204],{}," (meskipun pembuatan proyek langsung dari UI direnkanakan untuk rilis mendatang).",[2156,5397,5399],{"id":5398},"menginstal-buzz-cli","Menginstal buzz-cli",[430,5401,5402,5403,5405,5406,888],{},"Jalankan perintah berikut untuk menginstal ",[495,5404,1204],{}," di ",[441,5407,2689],{},[922,5409,5411],{"className":1031,"code":5410,"language":1033,"meta":425,"style":425},"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",[495,5412,5413,5424,5431,5444],{"__ignoreMap":425},[930,5414,5415,5417,5419,5421],{"class":932,"line":933},[930,5416,1889],{"class":1040},[930,5418,4471],{"class":1044},[930,5420,4492],{"class":1044},[930,5422,5423],{"class":1044}," cargo\n",[930,5425,5426,5428],{"class":932,"line":1060},[930,5427,2813],{"class":961},[930,5429,5430],{"class":1044}," ~\u002Fbuzz\n",[930,5432,5433,5436,5438,5441],{"class":932,"line":1067},[930,5434,5435],{"class":1040},"cargo",[930,5437,4492],{"class":1044},[930,5439,5440],{"class":1044}," --path",[930,5442,5443],{"class":1044}," crates\u002Fbuzz-cli\n",[930,5445,5446,5448,5451,5454,5457,5460,5463,5466,5469],{"class":932,"line":1074},[930,5447,4418],{"class":961},[930,5449,5450],{"class":944}," '",[930,5452,5453],{"class":1044},"export PATH=\"$HOME\u002F.cargo\u002Fbin:$PATH\"",[930,5455,5456],{"class":944},"'",[930,5458,5459],{"class":944}," >>",[930,5461,5462],{"class":1044}," ~\u002F.bashrc",[930,5464,5465],{"class":944}," &&",[930,5467,5468],{"class":961}," source",[930,5470,5471],{"class":1044}," ~\u002F.bashrc\n",[430,5473,5474,5475,5478,5479,5481,5482,5484],{},"Hasilkan sepasang kunci privat dan publik menggunakan ",[444,5476,4666],{"href":5477},"\u002Fid\u002Ftools\u002Fnostr-key-generator"," atau ",[495,5480,1204],{},". Pasangan ini adalah identitas ",[495,5483,1204],{}," di relay Nostr.",[922,5486,5488],{"className":1031,"code":5487,"language":1033,"meta":425,"style":425},"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",[495,5489,5490,5512,5516,5521],{"__ignoreMap":425},[930,5491,5492,5494,5497,5500,5503,5506,5509],{"class":932,"line":933},[930,5493,1174],{"class":1040},[930,5495,5496],{"class":1044}," run",[930,5498,5499],{"class":1044}," --rm",[930,5501,5502],{"class":1044}," --entrypoint",[930,5504,5505],{"class":1044}," \u002Fusr\u002Flocal\u002Fbin\u002Fbuzz-admin",[930,5507,5508],{"class":1044}," ghcr.io\u002Fblock\u002Fbuzz:main",[930,5510,5511],{"class":1044}," generate-key\n",[930,5513,5514],{"class":932,"line":1060},[930,5515,1064],{"emptyLinePlaceholder":1063},[930,5517,5518],{"class":932,"line":1067},[930,5519,5520],{"class":1070},"# Use the generated Public Key\n",[930,5522,5523,5525,5527,5529,5531,5533,5535,5537],{"class":932,"line":1074},[930,5524,1174],{"class":1040},[930,5526,1177],{"class":1044},[930,5528,1180],{"class":1044},[930,5530,1183],{"class":1044},[930,5532,1186],{"class":1044},[930,5534,1189],{"class":1044},[930,5536,1192],{"class":1044},[930,5538,5539],{"class":1044}," generated_Public_key\n",[430,5541,5542],{},"Mengonfigurasi CLI:",[922,5544,5546],{"className":1031,"code":5545,"language":1033,"meta":425,"style":425},"# 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",[495,5547,5548,5553,5584,5588],{"__ignoreMap":425},[930,5549,5550],{"class":932,"line":933},[930,5551,5552],{"class":1070},"# Copy the Secret key as the BUZZ_PRIVATE_KEY\n",[930,5554,5555,5557,5559,5562,5564,5567,5570,5573,5576,5579,5581],{"class":932,"line":1060},[930,5556,4418],{"class":961},[930,5558,5450],{"class":944},[930,5560,5561],{"class":1044},"export BUZZ_PRIVATE_KEY=\"nsec1...\"",[930,5563,5456],{"class":944},[930,5565,5566],{"class":944},"  >>",[930,5568,5569],{"class":1044}," \u002Fhome\u002F",[930,5571,5572],{"class":944},"\u003C",[930,5574,5575],{"class":1044},"use",[930,5577,5578],{"class":940},"r",[930,5580,1247],{"class":944},[930,5582,5583],{"class":1044},"\u002F.bashrc\n",[930,5585,5586],{"class":932,"line":1067},[930,5587,1064],{"emptyLinePlaceholder":1063},[930,5589,5590,5592,5594,5597,5599,5601,5603,5605,5607,5609,5611],{"class":932,"line":1074},[930,5591,4418],{"class":961},[930,5593,5450],{"class":944},[930,5595,5596],{"class":1044},"export BUZZ_RELAY_URL=\"wss:\u002F\u002Fbuzz.pafor.me\"",[930,5598,5456],{"class":944},[930,5600,5566],{"class":944},[930,5602,5569],{"class":1044},[930,5604,5572],{"class":944},[930,5606,5575],{"class":1044},[930,5608,5578],{"class":940},[930,5610,1247],{"class":944},[930,5612,5583],{"class":1044},[430,5614,5615,5616,5618],{},"Jalankan perintah berikut untuk memverifikasi bahwa ",[495,5617,1204],{}," dikonfigurasi dengan benar:",[922,5620,5622],{"className":1031,"code":5621,"language":1033,"meta":425,"style":425},"buzz channels list\n",[495,5623,5624],{"__ignoreMap":425},[930,5625,5626,5628,5630],{"class":932,"line":933},[930,5627,1227],{"class":1040},[930,5629,1230],{"class":1044},[930,5631,5632],{"class":1044}," list\n",[430,5634,5635],{},[433,5636],{"alt":5637,"src":5638},"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",[2156,5640,5642],{"id":5641},"membuat-proyek-dengan-buzz-cli","Membuat Proyek dengan buzz-cli",[922,5644,5646],{"className":1031,"code":5645,"language":1033,"meta":425,"style":425},"# --channel refers to the UUID of the channel\nbuzz repos create --id TestKOA --name 'Display Name' --channel \"bd92b3d1-8fac-441c-a9ac-2b2f3aac5c5b\"\n",[495,5647,5648,5653],{"__ignoreMap":425},[930,5649,5650],{"class":932,"line":933},[930,5651,5652],{"class":1070},"# --channel refers to the UUID of the channel\n",[930,5654,5655,5657,5660,5663,5666,5669,5672,5674,5677,5679,5681,5683,5686],{"class":932,"line":1060},[930,5656,1227],{"class":1040},[930,5658,5659],{"class":1044}," repos",[930,5661,5662],{"class":1044}," create",[930,5664,5665],{"class":1044}," --id",[930,5667,5668],{"class":1044}," TestKOA",[930,5670,5671],{"class":1044}," --name",[930,5673,5450],{"class":944},[930,5675,5676],{"class":1044},"Display Name",[930,5678,5456],{"class":944},[930,5680,1235],{"class":1044},[930,5682,3284],{"class":944},[930,5684,5685],{"class":1044},"bd92b3d1-8fac-441c-a9ac-2b2f3aac5c5b",[930,5687,1953],{"class":944},[430,5689,5690,5691,5693],{},"Proyek hanya dapat dihapus oleh pemiliknya. Karena proyek \"Display Name\" dibuat oleh ",[495,5692,1204],{}," yang tidak memiliki perintah penghapusan, proyek tersebut tidak dapat dihapus dengan cara ini.",[430,5695,5696],{},"Periksa kembali aplikasi desktop Buzz untuk memverifikasi bahwa proyek telah dibuat.",[430,5698,5699],{},[433,5700],{"alt":5701,"src":5702},"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",[430,5704,5705],{},"Setelah proyek tersedia di Projects, proyek tambahan dapat ditambahkan menggunakan tombol \"+\" di sudut kanan atas.",[430,5707,5708],{},[433,5709],{"alt":5710,"src":5711},"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",[2156,5713,5715],{"id":5714},"menghubungkan-repositori-git-yang-ada","Menghubungkan Repositori Git yang Ada",[430,5717,2525,5718,5721,5722,5725,5726,5731],{},[495,5719,5720],{},"git-credential-nostr"," pada mesin tempat repositori git berada. Ini memerlukan ",[441,5723,5724],{},"git 2.46+"," dan toolchain Rust. Silakan rujuk ",[444,5727,5730],{"href":5728,"rel":5729},"https:\u002F\u002Fgithub.com\u002Fblock\u002Fbuzz\u002Ftree\u002Fmain\u002Fcrates\u002Fgit-credential-nostr",[448],"Readme"," ini:",[922,5733,5735],{"className":1031,"code":5734,"language":1033,"meta":425,"style":425},"cargo install --path crates\u002Fgit-credential-nostr\n",[495,5736,5737],{"__ignoreMap":425},[930,5738,5739,5741,5743,5745],{"class":932,"line":933},[930,5740,5435],{"class":1040},[930,5742,4492],{"class":1044},[930,5744,5440],{"class":1044},[930,5746,5747],{"class":1044}," crates\u002Fgit-credential-nostr\n",[430,5749,5750,5751,5753],{},"Siapkan ",[495,5752,5720],{}," untuk otorisasi relay Buzz:",[922,5755,5757],{"className":1031,"code":5756,"language":1033,"meta":425,"style":425},"# 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",[495,5758,5759,5764,5780,5793,5797,5802,5811,5838],{"__ignoreMap":425},[930,5760,5761],{"class":932,"line":933},[930,5762,5763],{"class":1070},"# 1. Register the helper and enable per-path credentials.\n",[930,5765,5766,5768,5771,5774,5777],{"class":932,"line":1060},[930,5767,2789],{"class":1040},[930,5769,5770],{"class":1044}," config",[930,5772,5773],{"class":1044}," --global",[930,5775,5776],{"class":1044}," credential.helper",[930,5778,5779],{"class":1044}," nostr\n",[930,5781,5782,5784,5786,5788,5791],{"class":932,"line":1067},[930,5783,2789],{"class":1040},[930,5785,5770],{"class":1044},[930,5787,5773],{"class":1044},[930,5789,5790],{"class":1044}," credential.useHttpPath",[930,5792,1377],{"class":944},[930,5794,5795],{"class":932,"line":1074},[930,5796,1064],{"emptyLinePlaceholder":1063},[930,5798,5799],{"class":932,"line":1921},[930,5800,5801],{"class":1070},"# 2. Store your nsec in a key file (must be 0600). Replace \"nsec1...\" with your private key\n",[930,5803,5804,5806,5808],{"class":932,"line":1926},[930,5805,5186],{"class":1040},[930,5807,5189],{"class":1044},[930,5809,5810],{"class":1044}," ~\u002F.nostr\n",[930,5812,5813,5815,5817,5820,5822,5824,5827,5829,5832,5835],{"class":932,"line":1932},[930,5814,4418],{"class":961},[930,5816,3284],{"class":944},[930,5818,5819],{"class":1044},"nsec1...",[930,5821,3692],{"class":944},[930,5823,4452],{"class":944},[930,5825,5826],{"class":1044}," ~\u002F.nostr\u002Fkey",[930,5828,5465],{"class":944},[930,5830,5831],{"class":1040}," chmod",[930,5833,5834],{"class":2957}," 600",[930,5836,5837],{"class":1044}," ~\u002F.nostr\u002Fkey\n",[930,5839,5840,5842,5844,5846,5849],{"class":932,"line":2269},[930,5841,2789],{"class":1040},[930,5843,5770],{"class":1044},[930,5845,5773],{"class":1044},[930,5847,5848],{"class":1044}," nostr.keyfile",[930,5850,5837],{"class":1044},[430,5852,5853],{},"Crea un repositorio en el relay de Buzz:",[922,5855,5858],{"className":5856,"code":5857,"language":4639},[4637],"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",[495,5859,5857],{"__ignoreMap":425},[430,5861,5862,5863,5866,5867,5870],{},"Pada ",[495,5864,5865],{},"git push"," pertama Anda, Anda akan menemui kesalahan ",[495,5868,5869],{},"remote: missing Authorization header",". Untuk mengatasi ini, Anda perlu mengikat ID repositori ke saluran Buzz, karena keanggotaan saluran menentukan izin menulis Git (ACLs):",[922,5872,5874],{"className":1031,"code":5873,"language":1033,"meta":425,"style":425},"buzz repos bind --id koa-email-routing --channel \u003CCHANNEL_UUID>\n\n# push the code again\ngit push\n",[495,5875,5876,5901,5905,5910],{"__ignoreMap":425},[930,5877,5878,5880,5882,5885,5887,5890,5892,5894,5896,5898],{"class":932,"line":933},[930,5879,1227],{"class":1040},[930,5881,5659],{"class":1044},[930,5883,5884],{"class":1044}," bind",[930,5886,5665],{"class":1044},[930,5888,5889],{"class":1044}," koa-email-routing",[930,5891,1235],{"class":1044},[930,5893,1238],{"class":944},[930,5895,1241],{"class":1044},[930,5897,1244],{"class":940},[930,5899,5900],{"class":944},">\n",[930,5902,5903],{"class":932,"line":1060},[930,5904,1064],{"emptyLinePlaceholder":1063},[930,5906,5907],{"class":932,"line":1067},[930,5908,5909],{"class":1070},"# push the code again\n",[930,5911,5912,5914],{"class":932,"line":1074},[930,5913,2789],{"class":1040},[930,5915,5916],{"class":1044}," push\n",[430,5918,5919,5920,5922],{},"Memeriksa proyek di aplikasi desktop Buzz menunjukkan hal berikut, karena aplikasi memerlukan ",[441,5921,5724],{}," — meluncurkan aplikasi secara langsung mungkin mendeteksi versi Git yang lebih lama:",[430,5924,5925],{},[433,5926],{"alt":5927,"src":5928},"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",[430,5930,5931,5932,5935,5936,5941],{},"Ekspor PATH via ",[495,5933,5934],{},"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 ",[444,5937,5940],{"href":5938,"rel":5939},"https:\u002F\u002Fgithub.com\u002Fblock\u002Fbuzz\u002Fissues\u002F5348",[448],"issue"," ini.",[922,5943,5945],{"className":1031,"code":5944,"language":1033,"meta":425,"style":425},"open -a Buzz\n",[495,5946,5947],{"__ignoreMap":425},[930,5948,5949,5952,5955],{"class":932,"line":933},[930,5950,5951],{"class":1040},"open",[930,5953,5954],{"class":1044}," -a",[930,5956,5957],{"class":1044}," Buzz\n",[430,5959,5960],{},"Periksa kembali Projects di aplikasi Buzz, detail repositori sekarang telah dimuat.",[430,5962,5963],{},[433,5964],{"alt":5965,"src":5966},"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",[474,5968,5970],{"id":5969},"menyinkronkan-agen-ai-dengan-aplikasi-seluler-buzz-via-kode-qr","Menyinkronkan Agen AI dengan Aplikasi Seluler Buzz via Kode QR",[430,5972,5973,5974,5977],{},"Penyandingan aplikasi seluler Buzz hanya menerima protokol HTTPS dan ",[495,5975,5976],{},"buzz-pair-relay"," tidak dimulai secara default di VPS.",[922,5979,5981],{"className":1031,"code":5980,"language":1033,"meta":425,"style":425},"cd ~\u002Fbuzz\ncargo install --path crates\u002Fbuzz-pair-relay\n",[495,5982,5983,5989],{"__ignoreMap":425},[930,5984,5985,5987],{"class":932,"line":933},[930,5986,2813],{"class":961},[930,5988,5430],{"class":1044},[930,5990,5991,5993,5995,5997],{"class":932,"line":1060},[930,5992,5435],{"class":1040},[930,5994,4492],{"class":1044},[930,5996,5440],{"class":1044},[930,5998,5999],{"class":1044}," crates\u002Fbuzz-pair-relay\n",[430,6001,6002,6003,6006,6007,6009],{},"Add the following to ",[495,6004,6005],{},"compose.yml"," to start the ",[495,6008,5976],{}," service:",[922,6011,6013],{"className":1340,"code":6012,"language":1342,"meta":425,"style":425},"  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",[495,6014,6015,6022,6031,6051,6057,6067,6073,6084,6092,6098],{"__ignoreMap":425},[930,6016,6017,6020],{"class":932,"line":933},[930,6018,6019],{"class":1352},"  pair",[930,6021,1366],{"class":944},[930,6023,6024,6026,6028],{"class":932,"line":1060},[930,6025,3264],{"class":1352},[930,6027,888],{"class":944},[930,6029,6030],{"class":1044}," ${BUZZ_IMAGE:-ghcr.io\u002Fblock\u002Fbuzz:main}\n",[930,6032,6033,6036,6038,6041,6043,6046,6048],{"class":932,"line":1067},[930,6034,6035],{"class":1352},"    entrypoint",[930,6037,888],{"class":944},[930,6039,6040],{"class":944}," [",[930,6042,3692],{"class":944},[930,6044,6045],{"class":1044},"\u002Fusr\u002Flocal\u002Fbin\u002Fbuzz-pair-relay",[930,6047,3692],{"class":944},[930,6049,6050],{"class":944},"]\n",[930,6052,6053,6055],{"class":932,"line":1074},[930,6054,3294],{"class":1352},[930,6056,1366],{"class":944},[930,6058,6059,6062,6064],{"class":932,"line":1921},[930,6060,6061],{"class":1352},"      BUZZ_PAIR_RELAY_BIND_ADDR",[930,6063,888],{"class":944},[930,6065,6066],{"class":1044}," 0.0.0.0:5000\n",[930,6068,6069,6071],{"class":932,"line":1926},[930,6070,3274],{"class":1352},[930,6072,1366],{"class":944},[930,6074,6075,6077,6079,6082],{"class":932,"line":1932},[930,6076,3281],{"class":944},[930,6078,3284],{"class":944},[930,6080,6081],{"class":1044},"${BUZZ_PAIR_RELAY_PORT:-5000}:5000",[930,6083,1953],{"class":944},[930,6085,6086,6088,6090],{"class":932,"line":2269},[930,6087,3356],{"class":1352},[930,6089,888],{"class":944},[930,6091,3361],{"class":1044},[930,6093,6094,6096],{"class":932,"line":1692},[930,6095,5035],{"class":1352},[930,6097,1366],{"class":944},[930,6099,6100,6103,6106],{"class":932,"line":2375},[930,6101,6102],{"class":944},"      [",[930,6104,6105],{"class":1044},"buzz-net",[930,6107,6050],{"class":944},[430,6109,3189,6110,575,6113,6116,6117,888],{},[495,6111,6112],{},"BUZZ_PAIRING_RELAY_URL",[495,6114,6115],{},"BUZZ_PAIR_RELAY_PORT"," ke file ",[495,6118,2843],{},[922,6120,6123],{"className":6121,"code":6122,"language":4639},[4637],"BUZZ_PAIRING_RELAY_URL=wss:\u002F\u002Fbuzz.pafor.me\u002Fpair\nBUZZ_PAIR_RELAY_PORT=5000\n",[495,6124,6122],{"__ignoreMap":425},[430,6126,6127,6128,6131],{},"Buka bagian '",[441,6129,6130],{},"Mobile","' di Pengaturan desktop Buzz:",[430,6133,6134],{},[433,6135],{"alt":6136,"src":6137},"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",[430,6139,6140],{},"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\".",[430,6142,6143],{},[433,6144],{"alt":6145,"src":6146},"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",[430,6148,6149],{},"Agen di aplikasi seluler Buzz hanya tersedia jika mereka berjalan di aplikasi desktop Buzz. Mesin desktop harus tetap menyala agar agen dapat bekerja.",[430,6151,6152],{},[433,6153],{"alt":6154,"src":6155},"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",[474,6157,6159],{"id":6158},"pemikiran-akhir","Pemikiran Akhir",[430,6161,6162],{},"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.",[474,6164,4027],{"id":1607},[485,6166,6167,6174,6181,6188],{},[488,6168,6169],{},[444,6170,6173],{"href":6171,"rel":6172},"https:\u002F\u002Fgithub.com\u002Fblock\u002Fbuzz",[448],"Buzz releases",[488,6175,6176],{},[444,6177,6180],{"href":6178,"rel":6179},"https:\u002F\u002Fblock.xyz\u002Finside\u002Fintroducing-buzz-where-humans-and-agents-work-together",[448],"Introducing Buzz",[488,6182,6183],{},[444,6184,6187],{"href":6185,"rel":6186},"https:\u002F\u002Fwww.hostinger.com\u002Ftutorials\u002Fwhat-is-buzz",[448],"What is buzz",[488,6189,6190],{},[444,6191,6194],{"href":6192,"rel":6193},"https:\u002F\u002Fmiget.com\u002Fblog\u002Fhow-to-self-host-buzz",[448],"How to self-host Buzz (Miget)",[1636,6196,6197],{},"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":425,"searchDepth":1060,"depth":1067,"links":6199},[6200,6201,6202,6216,6225,6226,6227],{"id":4117,"depth":1060,"text":4118},{"id":4162,"depth":1060,"text":4163},{"id":4210,"depth":1060,"text":4211,"children":6203},[6204,6205,6209,6210,6211,6215],{"id":4214,"depth":1067,"text":4215},{"id":4241,"depth":1067,"text":4242,"children":6206},[6207,6208],{"id":4245,"depth":1074,"text":4246},{"id":4344,"depth":1074,"text":4345},{"id":4362,"depth":1067,"text":4363},{"id":4579,"depth":1067,"text":4580},{"id":4724,"depth":1067,"text":4725,"children":6212},[6213,6214],{"id":4728,"depth":1074,"text":4729},{"id":5112,"depth":1074,"text":5113},{"id":5175,"depth":1067,"text":5176},{"id":5215,"depth":1060,"text":5216,"children":6217},[6218,6219,6220],{"id":5293,"depth":1067,"text":5294},{"id":5338,"depth":1067,"text":5339},{"id":5375,"depth":1067,"text":5376,"children":6221},[6222,6223,6224],{"id":5398,"depth":1074,"text":5399},{"id":5641,"depth":1074,"text":5642},{"id":5714,"depth":1074,"text":5715},{"id":5969,"depth":1060,"text":5970},{"id":6158,"depth":1060,"text":6159},{"id":1607,"depth":1060,"text":4027},[1657,1656,1227],"2026-09-08",{"schemaOrg":6231,"robots":1690,"sitemap":6250},[6232,6233],{"@type":1667,"headline":455,"description":465,"image":466},{"@type":1669,"name":455,"description":465,"image":466,"step":6234},[6235,6238,6241,6244,6247],{"@type":1672,"name":6236,"text":6237},"Langkah 1: Pengaturan Cloudflare","Buat Token API Cloudflare dan konfigurasikan pengaturan DNS.",{"@type":1672,"name":6239,"text":6240},"Langkah 2: Instal Docker","Siapkan dan instal Docker Engine di VPS Ubuntu.",{"@type":1672,"name":6242,"text":6243},"Langkah 3: Kloning dan Konfigurasi","Kloning repositori dan konfigurasikan variabel compose.",{"@type":1672,"name":6245,"text":6246},"Langkah 4: Integrasi Caddy","Bangun Caddy kustom dengan modul tantangan DNS Cloudflare.",{"@type":1672,"name":6248,"text":6249},"Langkah 5: Cadangan Otomatis","Konfigurasikan cron job untuk mencadangkan PostgreSQL secara otomatis.",{"lastmod":6251},"2026-09-03",{"title":6253,"description":465,"ogTitle":455,"ogDescription":465,"twitterTitle":455,"twitterDescription":465},"Cara Install dan Self-Host Relay Buzz Block di VPS Ubuntu","id\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",[1697,6256,1101,6257,6258],"Docker","Caddy","Cloudflare","lAxLGSDiA8d43UunUr_JbjVjtCsvGEe0ttXN_h25Swk",{"id":6261,"title":6262,"author":1699,"body":6263,"category":8121,"date":8123,"description":8124,"extension":1661,"image":8125,"imageAlt":8126,"isPublished":1063,"meta":8127,"minRead":4569,"navigation":1063,"path":159,"seo":8133,"stem":8134,"tags":8135,"updatedAt":6251,"__hash__":8137},"article\u002Fid\u002Farticle\u002Fself-hosted-travel-planner-trek.md","Host Sendiri Rencana Perjalanan Anda dengan TREK dan Docker",{"type":427,"value":6264,"toc":8080},[6265,6268,6271,6274,6278,6282,6424,6428,6435,6454,6457,6461,6565,6576,6579,6584,6587,6598,6602,6606,6609,6612,6645,6649,6652,6683,6686,6726,6729,6734,6745,6749,6756,6760,6763,6856,6860,6865,6869,6876,6880,6883,6901,6911,6915,6918,6928,6932,6936,6945,6949,6953,6956,6960,6964,6967,6972,6975,6980,6986,6990,6994,6997,7001,7014,7019,7025,7030,7034,7037,7042,7047,7050,7057,7061,7064,7067,7077,7084,7089,7095,7100,7104,7109,7114,7117,7122,7126,7132,7136,7141,7145,7148,7151,7156,7161,7166,7170,7177,7182,7187,7192,7197,7201,7206,7211,7217,7221,7224,7228,7234,7239,7244,7250,7255,7260,7265,7277,7281,7286,7306,7311,7314,7318,7321,7326,7329,7376,7380,7387,7393,7398,7404,7409,7415,7420,7426,7429,7434,7440,7445,7451,7455,7461,7466,7471,7475,7479,7482,7486,7489,7496,7500,7507,7511,7522,7524,7528,7532,7542,7551,7556,7563,7568,7575,7579,7582,7746,7752,7756,7759,7764,7767,7773,7777,7784,7788,7791,7796,7803,7808,7812,7822,7893,7908,7911,7916,7920,7924,7935,8011,8021,8024,8028,8032,8035,8037,8040,8043,8052,8054,8077],[430,6266,6267],{},"Bagian yang menjengkelkan dari merencanakan perjalanan adalah PDF pemesanan penerbangan, konfirmasi hotel, obrolan dengan rekan perjalanan, dan daftar tempat yang ingin dikunjungi tersebar di lokasi yang berbeda-beda. Saat tiba waktunya untuk menghitung total pengeluaran dan membagi tagihan, dibutuhkan usaha ekstra besar untuk menelusuri semua data perjalanan tersebut.",[430,6269,6270],{},"TREK adalah perencana perjalanan open-source yang dapat di-self-host, mengemas rencana perjalanan, pemesanan, anggaran, dan daftar bawaan Anda semua ke dalam satu tempat. Server MCP bawaan memungkinkan agen AI (seperti Claude Desktop) untuk langsung mengelola data perjalanan Anda.",[430,6272,6273],{},"Panduan ini akan memandu Anda melalui segalanya, mulai dari instalasi hingga mengelola perjalanan nyata sepenuhnya dari awal hingga selesai.",[878,6275,6277],{"id":6276},"_1-cara-deploy-perencana-perjalanan-trek-menggunakan-docker","1. Cara Deploy Perencana Perjalanan TREK Menggunakan Docker",[2156,6279,6281],{"id":6280},"instal-docker-di-vps-ubuntu","Instal Docker di VPS Ubuntu",[922,6283,6285],{"className":1031,"code":6284,"language":1033,"meta":425,"style":425},"# 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# Verify docker is installed\ndocker --version\n\n# Starts automatically when your system boots\nsudo systemctl enable docker\n",[495,6286,6287,6291,6311,6315,6319,6351,6355,6359,6367,6371,6375,6391,6395,6399,6405,6409,6414],{"__ignoreMap":425},[930,6288,6289],{"class":932,"line":933},[930,6290,4376],{"class":1070},[930,6292,6293,6295,6297,6299,6301,6303,6305,6307,6309],{"class":932,"line":1060},[930,6294,2988],{"class":1040},[930,6296,4383],{"class":1044},[930,6298,4386],{"class":1044},[930,6300,4389],{"class":944},[930,6302,4392],{"class":1040},[930,6304,4395],{"class":1044},[930,6306,4398],{"class":1044},[930,6308,4401],{"class":1044},[930,6310,4404],{"class":1044},[930,6312,6313],{"class":932,"line":1067},[930,6314,1064],{"emptyLinePlaceholder":1063},[930,6316,6317],{"class":932,"line":1074},[930,6318,4413],{"class":1070},[930,6320,6321,6323,6325,6327,6329,6331,6333,6335,6337,6339,6341,6343,6345,6347,6349],{"class":932,"line":1921},[930,6322,4418],{"class":961},[930,6324,3284],{"class":944},[930,6326,4423],{"class":1044},[930,6328,4426],{"class":944},[930,6330,4429],{"class":1040},[930,6332,4432],{"class":1044},[930,6334,4435],{"class":944},[930,6336,4438],{"class":1044},[930,6338,3692],{"class":944},[930,6340,4389],{"class":944},[930,6342,4392],{"class":1040},[930,6344,3815],{"class":1044},[930,6346,4449],{"class":1044},[930,6348,4452],{"class":944},[930,6350,4455],{"class":1044},[930,6352,6353],{"class":932,"line":1926},[930,6354,1064],{"emptyLinePlaceholder":1063},[930,6356,6357],{"class":932,"line":1932},[930,6358,4464],{"class":1070},[930,6360,6361,6363,6365],{"class":932,"line":2269},[930,6362,1889],{"class":1040},[930,6364,4471],{"class":1044},[930,6366,4474],{"class":1044},[930,6368,6369],{"class":932,"line":1692},[930,6370,1064],{"emptyLinePlaceholder":1063},[930,6372,6373],{"class":932,"line":2375},[930,6374,4483],{"class":1070},[930,6376,6377,6379,6381,6383,6385,6387,6389],{"class":932,"line":2381},[930,6378,1889],{"class":1040},[930,6380,4471],{"class":1044},[930,6382,4492],{"class":1044},[930,6384,4495],{"class":1044},[930,6386,4498],{"class":1044},[930,6388,4501],{"class":1044},[930,6390,4504],{"class":1044},[930,6392,6393],{"class":932,"line":2387},[930,6394,1064],{"emptyLinePlaceholder":1063},[930,6396,6397],{"class":932,"line":2392},[930,6398,4533],{"class":1070},[930,6400,6401,6403],{"class":932,"line":2398},[930,6402,1174],{"class":1040},[930,6404,3615],{"class":1044},[930,6406,6407],{"class":932,"line":3353},[930,6408,1064],{"emptyLinePlaceholder":1063},[930,6410,6411],{"class":932,"line":3364},[930,6412,6413],{"class":1070},"# Starts automatically when your system boots\n",[930,6415,6416,6418,6420,6422],{"class":932,"line":3369},[930,6417,1889],{"class":1040},[930,6419,1892],{"class":1044},[930,6421,2020],{"class":1044},[930,6423,4524],{"class":1044},[2156,6425,6427],{"id":6426},"hasilkan-kunci-enkripsi","Hasilkan Kunci Enkripsi",[430,6429,6430,6431,6434],{},"TREK menggunakan kunci untuk mengenkripsi data sensitif. Gunakan perintah berikut atau ",[444,6432,6433],{"href":2863},"alat online"," ini untuk menghasilkan kunci enkripsi:",[922,6436,6438],{"className":1031,"code":6437,"language":1033,"meta":425,"style":425},"openssl rand -hex 32\n",[495,6439,6440],{"__ignoreMap":425},[930,6441,6442,6445,6448,6451],{"class":932,"line":933},[930,6443,6444],{"class":1040},"openssl",[930,6446,6447],{"class":1044}," rand",[930,6449,6450],{"class":1044}," -hex",[930,6452,6453],{"class":2957}," 32\n",[430,6455,6456],{},"Simpan di tempat yang aman; kehilangan kunci ini berarti Anda akan kehilangan akses ke data yang terenkripsi.",[2156,6458,6460],{"id":6459},"jalankan-kontainer","Jalankan Kontainer",[922,6462,6464],{"className":1031,"code":6463,"language":1033,"meta":425,"style":425},"docker run -d \\\n  --name trek \\\n  -p 3000:3000 \\\n  -e ENCRYPTION_KEY=\"\u003Cgenerated_key>\" \\\n  -e APP_URL=\"https:\u002F\u002Ftrek.pafor.me\" \\\n  -v .\u002Fdata:\u002Fapp\u002Fdata \\\n  -v .\u002Fuploads:\u002Fapp\u002Fuploads \\\n  --restart unless-stopped \\\n  mauriceboe\u002Ftrek:latest\n",[495,6465,6466,6478,6488,6498,6515,6531,6541,6550,6560],{"__ignoreMap":425},[930,6467,6468,6470,6472,6475],{"class":932,"line":933},[930,6469,1174],{"class":1040},[930,6471,5496],{"class":1044},[930,6473,6474],{"class":1044}," -d",[930,6476,6477],{"class":940}," \\\n",[930,6479,6480,6483,6486],{"class":932,"line":1060},[930,6481,6482],{"class":1044},"  --name",[930,6484,6485],{"class":1044}," trek",[930,6487,6477],{"class":940},[930,6489,6490,6493,6496],{"class":932,"line":1067},[930,6491,6492],{"class":1044},"  -p",[930,6494,6495],{"class":1044}," 3000:3000",[930,6497,6477],{"class":940},[930,6499,6500,6503,6506,6508,6511,6513],{"class":932,"line":1074},[930,6501,6502],{"class":1044},"  -e",[930,6504,6505],{"class":1044}," ENCRYPTION_KEY=",[930,6507,3692],{"class":944},[930,6509,6510],{"class":1044},"\u003Cgenerated_key>",[930,6512,3692],{"class":944},[930,6514,6477],{"class":940},[930,6516,6517,6519,6522,6524,6527,6529],{"class":932,"line":1921},[930,6518,6502],{"class":1044},[930,6520,6521],{"class":1044}," APP_URL=",[930,6523,3692],{"class":944},[930,6525,6526],{"class":1044},"https:\u002F\u002Ftrek.pafor.me",[930,6528,3692],{"class":944},[930,6530,6477],{"class":940},[930,6532,6533,6536,6539],{"class":932,"line":1926},[930,6534,6535],{"class":1044},"  -v",[930,6537,6538],{"class":1044}," .\u002Fdata:\u002Fapp\u002Fdata",[930,6540,6477],{"class":940},[930,6542,6543,6545,6548],{"class":932,"line":1932},[930,6544,6535],{"class":1044},[930,6546,6547],{"class":1044}," .\u002Fuploads:\u002Fapp\u002Fuploads",[930,6549,6477],{"class":940},[930,6551,6552,6555,6558],{"class":932,"line":2269},[930,6553,6554],{"class":1044},"  --restart",[930,6556,6557],{"class":1044}," unless-stopped",[930,6559,6477],{"class":940},[930,6561,6562],{"class":932,"line":1692},[930,6563,6564],{"class":1044},"  mauriceboe\u002Ftrek:latest\n",[485,6566,6567],{},[488,6568,6569,6575],{},[441,6570,6571,6574],{},[495,6572,6573],{},"APP_URL"," harus diatur dengan benar"," — alur penemuan OAuth server MCP bergantung padanya. Atur ke alamat HTTPS publik akhir Anda sejak awal.",[430,6577,6578],{},"Proses pertama membutuhkan waktu beberapa saat untuk mengunduh image:",[433,6580],{"src":6581,"alt":6582,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-docker-pull-image.webp","Log docker pull dan run untuk TREK","max-width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,6585,6586],{},"Verifikasi bahwa kontainer sedang berjalan:",[922,6588,6590],{"className":1031,"code":6589,"language":1033,"meta":425,"style":425},"docker ps\n",[495,6591,6592],{"__ignoreMap":425},[930,6593,6594,6596],{"class":932,"line":933},[930,6595,1174],{"class":1040},[930,6597,5156],{"class":1044},[433,6599],{"src":6600,"alt":6601,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-docker-ps-status.webp","Memverifikasi status container yang berjalan melalui docker ps",[878,6603,6605],{"id":6604},"_2-mengonfigurasi-perutean-domain-ssl-dengan-caddy-reverse-proxy","2. Mengonfigurasi Perutean Domain & SSL dengan Caddy Reverse Proxy",[430,6607,6608],{},"HTTPS diperlukan untuk passkey, dan OAuth untuk MCP. Nama domain di-host di Cloudflare yang menyediakan sertifikat SSL gratis dan perlindungan DDoS.",[430,6610,6611],{},"Caddy dikonfigurasi sebagai server reverse proxy yang aman untuk mengarah ke port 3000. Contoh file Caddyfile adalah sebagai berikut:",[922,6613,6615],{"className":2903,"code":6614,"language":2905,"meta":425,"style":425},"{$TREK_DOMAIN} {\n  encode zstd gzip\n  reverse_proxy host.docker.internal:3000\n}\n",[495,6616,6617,6628,6632,6641],{"__ignoreMap":425},[930,6618,6619,6621,6624,6626],{"class":932,"line":933},[930,6620,2933],{"class":944},[930,6622,6623],{"class":940},"$TREK_DOMAIN",[930,6625,2939],{"class":944},[930,6627,2942],{"class":944},[930,6629,6630],{"class":932,"line":1060},[930,6631,2947],{"class":940},[930,6633,6634,6636,6638],{"class":932,"line":1067},[930,6635,2952],{"class":940},[930,6637,888],{"class":944},[930,6639,6640],{"class":2957},"3000\n",[930,6642,6643],{"class":932,"line":1074},[930,6644,2920],{"class":944},[878,6646,6648],{"id":6647},"_3-konfigurasi-awal-penyiapan-admin-yang-aman","3. Konfigurasi Awal & Penyiapan Admin yang Aman",[430,6650,6651],{},"Ada dua cara untuk membuat akun admin:",[485,6653,6654,6665],{},[488,6655,6656,6664],{},[441,6657,6658,575,6661],{},[495,6659,6660],{},"ADMIN_EMAIL",[495,6662,6663],{},"ADMIN_PASSWORD"," diatur sebagai variabel lingkungan (environment variables); nilai-nilai tersebut akan digunakan secara langsung.",[488,6666,6667,6668,6671,6672,3576,6675,6678,6679,6682],{},"TREK membuat email ",[495,6669,6670],{},"admin@trek.local",", nama pengguna ",[495,6673,6674],{},"admin",[441,6676,6677],{},"kata sandi acak yang tercetak di log kontainer",". Jalankan ",[495,6680,6681],{},"docker logs trek"," untuk mendapatkannya.",[430,6684,6685],{},"Jika kata sandi tidak dapat ditemukan di log, setel ulang dengan perintah:",[922,6687,6689],{"className":1031,"code":6688,"language":1033,"meta":425,"style":425},"docker exec -it -e RESET_ADMIN_EMAIL=admin@trek.local -e RESET_ADMIN_PASSWORD='YourNewPassword' trek node server\u002Freset-admin.js\n",[495,6690,6691],{"__ignoreMap":425},[930,6692,6693,6695,6697,6700,6703,6706,6708,6711,6713,6716,6718,6720,6723],{"class":932,"line":933},[930,6694,1174],{"class":1040},[930,6696,1180],{"class":1044},[930,6698,6699],{"class":1044}," -it",[930,6701,6702],{"class":1044}," -e",[930,6704,6705],{"class":1044}," RESET_ADMIN_EMAIL=admin@trek.local",[930,6707,6702],{"class":1044},[930,6709,6710],{"class":1044}," RESET_ADMIN_PASSWORD=",[930,6712,5456],{"class":944},[930,6714,6715],{"class":1044},"YourNewPassword",[930,6717,5456],{"class":944},[930,6719,6485],{"class":1044},[930,6721,6722],{"class":1044}," node",[930,6724,6725],{"class":1044}," server\u002Freset-admin.js\n",[430,6727,6728],{},"Anda akan diminta untuk mengubah kata sandi pada log masuk pertama.",[433,6730],{"src":6731,"alt":6732,"style":6733},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-initial-login-password-prompt.webp","Prompt login awal dan reset kata sandi admin","max-width: 215px; width:100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,6735,4251,6736,6739,6740],{},[441,6737,6738],{},"Admin"," dan perbarui email:",[433,6741],{"src":6742,"alt":6743,"style":6744},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-admin-email-update-panel.webp","Mengatur email khusus di pengaturan admin TREK","max-width: 700px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[2156,6746,6748],{"id":6747},"_31-cadangan-backups","3.1 Cadangan (Backups)",[430,6750,6751,6752],{},"Konfigurasikan pencadangan otomatis dengan kebijakan retensi di panel admin:\n",[433,6753],{"src":6754,"alt":6755,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-admin-backup-retention-policy.webp","Mengonfigurasi jadwal pencadangan otomatis dan aturan retensi",[2156,6757,6759],{"id":6758},"_32-simpan-file-unggahan-ke-cloudflare-r2","3.2 Simpan File Unggahan ke Cloudflare R2",[430,6761,6762],{},"Menyimpan file unggahan, foto, dan cadangan di Cloudflare R2 menjaga penyimpanan VPS Anda tetap bersih dan ringan. TREK mendukung backend yang kompatibel dengan S3, dan Cloudflare R2 sangat cocok untuk ini.",[533,6764,6765,6771,6784,6794,6805,6819,6830,6845],{},[488,6766,6767,6768,461],{},"Buat bucket R2 bernama ",[495,6769,6770],{},"trek",[488,6772,6773,6774,6777,6778,6779],{},"Di bagian ",[441,6775,6776],{},"Account Details",", temukan ID akun Anda:","\n  ",[433,6780],{"src":6781,"alt":6782,"style":6783},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Fcloudflare-r2-account-details-id.webp","Menemukan ID akun Cloudflare di portal","max-width: 325px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[488,6785,4271,6786,888,6778,6789],{},[441,6787,6788],{},"Manage API Tokens",[433,6790],{"src":6791,"alt":6792,"style":6793},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Fcloudflare-r2-manage-api-tokens-button.webp","Tampilan Kelola Token API di portal Cloudflare","max-width: 282px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[488,6795,4271,6796,6799,6778,6800],{},[441,6797,6798],{},"Create Account API token"," dengan izin baca\u002Ftulis (read\u002Fwrite) untuk bucket tersebut:",[433,6801],{"src":6802,"alt":6803,"style":6804},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Fcloudflare-r2-create-token-permissions.webp","Membuat token akses R2 dengan izin baca dan tulis","max-width: 360px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[488,6806,4271,6807,6810,6811,888,6778,6814],{},[441,6808,6809],{},"Storage"," pada panel ",[441,6812,6813],{},"ADMINISTRATION",[433,6815],{"src":6816,"alt":6817,"style":6818},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-administration-storage-menu.webp","Menavigasi ke pengaturan penyimpanan di panel kontrol TREK","max-width: 539px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[488,6820,3065,6821,6824,6778,6825],{},[441,6822,6823],{},"Add Backend"," dan isi endpoint, bucket, beserta kredensial Anda:",[433,6826],{"src":6827,"alt":6828,"style":6829},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-add-storage-backend-credentials.webp","Mengonfigurasi backend penyimpanan Cloudflare R2 yang kompatibel dengan S3","max-width: 445px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[488,6831,4271,6832,6835,6836,6839,6778,6840],{},[441,6833,6834],{},"Apply",", lalu klik tombol tautan ",[441,6837,6838],{},"Test",". Anda harus melihat status \"Connection OK\":",[433,6841],{"src":6842,"alt":6843,"style":6844},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-test-storage-backend-connection-ok.webp","Uji koneksi penyimpanan berhasil menunjukkan Connection OK","max-width: 677px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[488,6846,6847,6848,888,6778,6851],{},"Alihkan semua kategori penyimpanan ke Cloudflare R2 dan klik ",[441,6849,6850],{},"Save changes",[433,6852],{"src":6853,"alt":6854,"style":6855},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-switch-storage-categories-r2.webp","Mengarahkan semua kategori penyimpanan file ke Cloudflare R2","max-width: 653px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[2156,6857,6859],{"id":6858},"_33-log-masuk-passkey","3.3 Log Masuk Passkey",[430,6861,6862,6863,888],{},"TREK mendukung passkey, autentikasi dua faktor (2FA), dan OIDC single sign-on. Untuk passkey, masukkan nama domain Anda dan asal yang diizinkan (allowed origins) di pengaturan, lalu klik ",[441,6864,1137],{},[433,6866],{"src":6867,"alt":6868,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-passkey-allowed-origins-settings.webp","Mendaftarkan origin yang diizinkan untuk autentikasi Passkey yang aman",[430,6870,6871,6872,6875],{},"Tanpa mengonfigurasi ",[441,6873,6874],{},"allowed origins",", pendaftaran passkey akan gagal.",[2156,6877,6879],{"id":6878},"_34-google-maps-api-key","3.4 Google Maps API Key",[430,6881,6882],{},"Kunci Google Maps memperkaya pencarian tempat dengan peringkat, jam buka, dan foto. TREK secara otomatis menggunakan OpenStreetMap jika tidak ada kunci yang dimasukkan, hanya saja tanpa peringkat dan foto.",[430,6884,6885,6886,6891,6892,6895,6896],{},"Ikuti ",[444,6887,6890],{"href":6888,"rel":6889},"https:\u002F\u002Fmapsplatform.google.com\u002Fmaps-demo-key\u002F",[448],"tautan"," ini dan klik ",[441,6893,6894],{},"Get demo key"," untuk memintanya:                                                  ",[433,6897],{"src":6898,"alt":6899,"style":6900},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Fgoogle-maps-get-demo-api-key.webp","Meminta kunci API Google Maps Platform","max-width: 176px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,6902,6903,6904,6906,6907],{},"Tempel kunci di pengaturan and klik ",[441,6905,6838],{}," untuk mengonfirmasi koneksi:\n",[433,6908],{"src":6909,"alt":6910,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-google-maps-key-test-connection.webp","Memverifikasi konektivitas kunci API Google Maps di pengaturan",[2156,6912,6914],{"id":6913},"_35-integrasi-ai","3.5 Integrasi AI",[430,6916,6917],{},"Model AI digunakan untuk mengurai email konfirmasi pemesanan dan PDF menjadi data reservasi yang terstruktur.",[430,6919,4271,6920,6923,6924,6927],{},[441,6921,6922],{},"Addons"," di menu kiri dan aktifkan ",[441,6925,6926],{},"AI Parsing",". Pilih \"OpenAI\" (atau penyedia lain yang kompatibel) dan isi detail penyedia:",[433,6929],{"src":6930,"alt":6931,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-addons-enable-ai-parsing-openai.webp","Mengaktifkan addon AI Parsing dengan integrasi OpenAI",[2156,6933,6935],{"id":6934},"_36-akses-mcp","3.6 Akses MCP",[430,6937,6938,6939,6941,6942,888],{},"Di bawah ",[441,6940,6922],{},", aktifkan ",[441,6943,6944],{},"MCP",[433,6946],{"src":6947,"alt":6948,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-addons-enable-mcp.webp","Mengaktifkan addon server MCP Model Context Protocol",[2156,6950,6952],{"id":6951},"_37-plugin","3.7 Plugin",[430,6954,6955],{},"Plugin berikut sangat direkomendasikan dan layak untuk diaktifkan:",[433,6957],{"src":6958,"alt":6959,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-recommended-addons-plugins-activation.webp","Daftar plugin dan addon rekomendasi yang aktif",[2156,6961,6963],{"id":6962},"_38-buat-pengguna-harian-anda","3.8 Buat Pengguna Harian Anda",[430,6965,6966],{},"Rencanakan perjalanan sebagai pengguna biasa, bukan sebagai admin. Buat pengguna reguler dan masuk dengannya:",[433,6968],{"src":6969,"alt":6970,"style":6971},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-create-regular-user-form.webp","Membuat akun pengguna biasa di panel TREK","max-width: 420px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,6973,6974],{},"Setelah masuk, tambahkan passkey atau siapkan 2FA untuk memperkuat keamanan akun:",[433,6976],{"src":6977,"alt":6978,"style":6979},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-user-security-passkey-2fa-setup.webp","Mengonfigurasi pengaturan keamanan pengguna dengan Passkey dan 2FA","max-width: 381px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,6981,4271,6982,6985],{},[441,6983,6984],{},"+ Add a passkey",", masukkan kata sandi saat ini, dan konfirmasi:",[433,6987],{"src":6988,"alt":6989,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-add-passkey-confirm-password.webp","Mengonfirmasi kata sandi untuk mendaftarkan Passkey perangkat keras baru",[878,6991,6993],{"id":6992},"_4-menguji-deployment-anda-mengimpor-data-perjalanan-historis","4. Menguji Deployment Anda: Mengimpor Data Perjalanan Historis",[430,6995,6996],{},"Cara yang baik untuk mempelajari TREK adalah dengan membangun riwayat perjalanan Anda.",[2156,6998,7000],{"id":6999},"_41-buat-rencana-perjalanan","4.1 Buat rencana perjalanan",[430,7002,4271,7003,7006,7007,575,7010,7013],{},[441,7004,7005],{},"+ New Trip"," dan atur ",[441,7008,7009],{},"Start Date",[441,7011,7012],{},"End Date"," ke tanggal masa lalu dari perjalanan Anda:",[433,7015],{"src":7016,"alt":7017,"style":7018},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-create-new-trip-details.webp","Membuat perjalanan baru dengan rentang tanggal khusus","max-width: 334px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7020,7021,7022,888],{},"Tambahkan gambar sampul (seret gambar ke dalam, atau tempel dari papan klip) dan klik ",[441,7023,7024],{},"Create New Trip",[433,7026],{"src":7027,"alt":7028,"style":7029},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-trip-cover-image-upload.webp","Mengatur gambar sampul perjalanan berkualitas tinggi","max-width: 608px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[2156,7031,7033],{"id":7032},"_42-impor-data-pemesanan","4.2 Impor data pemesanan",[430,7035,7036],{},"Masukkan semua berkas penerbangan, kereta api, dan transportasi lainnya ke dalam:",[433,7038],{"src":7039,"alt":7040,"style":7041},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-import-travel-booking-files.webp","Area seret dan lepas untuk mengimpor PDF perjalanan dan pemesanan","max-width: 570px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[433,7043],{"src":7044,"alt":7045,"style":7046},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-import-booking-pdf-processing-status.webp","Jendela pemrosesan reservasi yang diunggah menunjukkan ekstraksi","max-width: 377px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7048,7049],{},"Dengan mengaktifkan model AI, berkas PDF konfirmasi pemesanan akan diurai dan diekstrak menjadi reservasi terstruktur.",[430,7051,7052,7053,7056],{},"Tinjau hasil yang diurai dan klik ",[441,7054,7055],{},"Add"," untuk menyimpan detail pemesanan:",[433,7058],{"src":7059,"alt":7060,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-review-parsed-booking-details.webp","Meninjau detail pemesanan terstruktur yang diekstraksi oleh AI",[430,7062,7063],{},"Jika pemesanan hanya ada di email, ekspor email tersebut sebagai PDF dan masukkan ke sistem — alur ekstraksi yang sama akan berlaku.",[430,7065,7066],{},"Tangkapan layar berikut menunjukkan bagaimana pemesanan ditampilkan:",[430,7068,7069,7073],{},[433,7070],{"src":7071,"alt":7072,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-trip-bookings-timeline-view.webp","Tampilan lini masa komprehensif dari pemesanan perjalanan",[433,7074],{"src":7075,"alt":7076,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-booking-confirmation-details.webp","Tampilan detail dari reservasi transportasi yang terkonfirmasi",[430,7078,7079,7080,7083],{},"Pada halaman ",[441,7081,7082],{},"Plan",", semua akomodasi akan ditampilkan di peta:",[433,7085],{"src":7086,"alt":7087,"style":7088},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-plan-accommodations-map-display.webp","Peta interaktif yang memplot semua akomodasi hotel","max-width: 546px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7090,4271,7091,7094],{},[441,7092,7093],{},"Atlas"," di bilah menu atas untuk melihat daftar (dan peta) dari setiap negara yang telah Anda kunjungi:",[433,7096],{"src":7097,"alt":7098,"style":7099},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-atlas-countries-visited-summary.webp","Ikhtisar riwayat perjalanan di pelacak Atlas pribadi","max-width: 407px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[2156,7101,7103],{"id":7102},"_43-tambahkan-rekan-perjalanan","4.3 Tambahkan rekan perjalanan",[430,7105,3065,7106,888],{},[441,7107,7108],{},"Share",[433,7110],{"src":7111,"alt":7112,"style":7113},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-trip-share-options-button.webp","Membuka dialog berbagi perjalanan di TREK","max-width: 224px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7115,7116],{},"Di bagian bawah dialog, tamu (guests) dapat ditambahkan:",[433,7118],{"src":7119,"alt":7120,"style":7121},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-trip-add-companions-guests.webp","Menambahkan teman perjalanan dan tamu khusus","max-width: 635px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[2156,7123,7125],{"id":7124},"_44-catat-pengeluaran","4.4 Catat pengeluaran",[430,7127,4271,7128,7131],{},[441,7129,7130],{},"Add expense"," untuk menambahkan biaya selain pemesanan, seperti asuransi kesehatan, transportasi lokal, kartu SIM:",[433,7133],{"src":7134,"alt":7135,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-add-custom-expense-form.webp","Memasukkan data pengeluaran terperinci dalam formulir pengeluaran",[433,7137],{"src":7138,"alt":7139,"style":7140},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-expenses-list-billing-split.webp","Rincian pembagian tagihan dan buku besar pelacakan biaya","max-width: 526px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[2156,7142,7144],{"id":7143},"_45-segmen-perjalanan","4.5 Segmen perjalanan",[430,7146,7147],{},"Fitur ini memerlukan plugin Trip Segment untuk diinstal.",[430,7149,7150],{},"Perjalanan panjang dapat dibagi menjadi segmen-segmen dengan rapi, di mana setiap bagian menampilkan pemesanan, tempat, dan biayanya sendiri:",[433,7152],{"src":7153,"alt":7154,"style":7155},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-trip-segments-overview-display.webp","Membagi rencana perjalanan yang kompleks menjadi segmen perjalanan","max-width: 465px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[433,7157],{"src":7158,"alt":7159,"style":7160},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-trip-segment-itinerary-details.webp","Segmen perjalanan aktif yang menampilkan tempat dan jadwal","max-width: 596px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[433,7162],{"src":7163,"alt":7164,"style":7165},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-trip-segments-interactive-map.webp","Memetakan berbagai tahapan perjalanan di lini masa","max-width: 605px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[2156,7167,7169],{"id":7168},"_46-buat-journey-dan-periksa-atlas-anda","4.6 Buat journey dan periksa atlas Anda",[430,7171,7172,7173,7176],{},"Kelompokkan perjalanan ke dalam ",[441,7174,7175],{},"Journey"," dan tulis cerita perjalanan untuk membagikan petualangan Anda dengan teman-teman:",[433,7178],{"src":7179,"alt":7180,"style":7181},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-create-new-journey-group.webp","Menggabungkan beberapa perjalanan menjadi satu perjalanan visual (Journey)","max-width: 441px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[433,7183],{"src":7184,"alt":7185,"style":7186},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-journey-timeline-story-writing.webp","Menulis cerita visual di panel perjalanan (Journey)","max-width: 443px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[433,7188],{"src":7189,"alt":7190,"style":7191},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-journey-gallery-media-grid.webp","Koleksi media dan kisi galeri di dalam perjalanan (Journey)","max-width: 440px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[433,7193],{"src":7194,"alt":7195,"style":7196},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-journey-public-share-link.webp","Membuat tautan berbagi publik untuk perjalanan kolaboratif","max-width: 532px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[878,7198,7200],{"id":7199},"_5-merancang-rencana-perjalanan-dan-daftar-bawaan-kustom","5. Merancang Rencana Perjalanan dan Daftar Bawaan Kustom",[430,7202,4271,7203,7205],{},[441,7204,7005],{},", masukkan nama, dan atur tanggalnya:",[433,7207],{"src":7208,"alt":7209,"style":7210},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-planning-new-trip-setup.webp","Dialog prompt awal untuk membuat perjalanan tanpa tanggal","max-width: 432px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7212,7213,7216],{},[441,7214,7215],{},"Jika Anda belum menentukan tanggal pastinya, biarkan keduanya kosong."," Kolom \"jumlah hari\" akan muncul (hingga 365 hari). Rencanakan dulu, jadwalkan belakangan.",[2156,7218,7220],{"id":7219},"_51-menambahkan-tempat","5.1 Menambahkan tempat",[430,7222,7223],{},"Ini adalah langkah yang paling memakan waktu dalam perencanaan perjalanan apa pun, dan TREK memiliki beberapa cara untuk melakukannya:",[433,7225],{"src":7226,"alt":7227,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-add-places-methods-overview.webp","Metode multi-saluran untuk menambahkan tempat baru ke rencana perjalanan",[430,7229,7230,7233],{},[441,7231,7232],{},"1. Klik kanan pada peta"," untuk membuat tempat di lokasi persis tersebut — alamatnya akan di-reverse-geocode secara otomatis:",[433,7235],{"src":7236,"alt":7237,"style":7238},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-right-click-map-location.webp","Mengklik kanan antarmuka peta untuk menentukan lokasi","max-width: 632px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[433,7240],{"src":7241,"alt":7242,"style":7243},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-right-click-reverse-geocode-address.webp","Geocoding terbalik otomatis untuk koordinat peta yang dipilih","max-width: 628px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7245,7246,7249],{},[441,7247,7248],{},"2. Klik + Add Place\u002FActivity"," dan cari berdasarkan nama",[433,7251],{"src":7252,"alt":7253,"style":7254},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-search-place-by-name-input.webp","Mencari tempat nyata menggunakan input teks","max-width: 642px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[433,7256],{"src":7257,"alt":7258,"style":7259},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-select-place-search-results-list.webp","Menampilkan hasil pencarian tempat dengan info alamat","max-width: 594px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[433,7261],{"src":7262,"alt":7263,"style":7264},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-place-details-rich-info-card.webp","Kartu informasi tempat komprehensif dengan ulasan dan peringkat","max-width: 568px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7266,7267,859,7270,5478,7273,7276],{},[441,7268,7269],{},"3. Tempel URL Google Maps",[495,7271,7272],{},"maps.app.goo.gl\u002F…",[495,7274,7275],{},"maps.google.com\u002F…",") ke dalam kolom pencarian. TREK akan mengurai nama, alamat, dan koordinatnya:",[433,7278],{"src":7279,"alt":7280,"style":6844},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-paste-google-maps-share-link.webp","Mengurai lokasi langsung dari tautan berbagi Google Maps yang ditempelkan",[433,7282],{"src":7283,"alt":7284,"style":7285},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-google-maps-parsed-location.webp","Ekstraksi koordinat berhasil dari URL peta","max-width: 543px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7287,7288,7291,7292,859,7295,575,7298,7301,7302,7305],{},[441,7289,7290],{},"4. Impor massal (Bulk import)"," — cara termudah dari semuanya. Jika Anda sudah memiliki daftar tempat \"ingin dikunjungi\" di Google Maps, ekspor sebagai ",[495,7293,7294],{},".gpx",[495,7296,7297],{},".kml",[495,7299,7300],{},".kmz"," juga didukung) dan klik ",[441,7303,7304],{},"Import file"," pada panel kanan untuk menarik semuanya sekaligus:",[433,7307],{"src":7308,"alt":7309,"style":7310},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-bulk-import-places-gpx-file.webp","Melakukan impor tempat massal menggunakan file GPX atau KML","max-width: 389px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7312,7313],{},"Tambahkan semua hal menarik terlebih dahulu, terlepas dari apakah itu sesuai dengan jadwal. Alokasikan tempat ke hari kunjungan nanti.",[2156,7315,7317],{"id":7316},"_52-rencana-hari-dan-catatan","5.2 Rencana hari dan catatan",[430,7319,7320],{},"Rencana Hari (Day Plan) mengatur tempat ke dalam hari secara berurutan. Ini berupa daftar yang dapat diciutkan per hari, dan semuanya menggunakan metode seret-dan-lepas (drag-and-drop):",[433,7322],{"src":7323,"alt":7324,"style":7325},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-day-plan-drag-drop-ordering.webp","Menyesuaikan rute harian dengan tindakan seret-dan-lepas","max-width: 496px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7327,7328],{},"Detail yang membuatnya sangat berguna:",[485,7330,7331,7341,7351,7361],{},[488,7332,7333,7336,7337],{},[441,7334,7335],{},"Transportasi antartempat",": ikon bus di kiri atas bagian hari berfungsi untuk menambahkan moda transportasi (segmen kereta, bus, penerbangan dalam hari tersebut):\n",[433,7338],{"src":7339,"alt":7340,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-day-plan-commuting-transport-button.webp","Mendaftarkan transportasi komuter antar segmen hari",[488,7342,7343,7346,7347],{},[441,7344,7345],{},"Catatan harian",": ikon catatan di kiri bawah berfungsi untuk menyisipkan catatan ber-emoji — \"berangkat pagi hari ini\", \"museum ini memerlukan reservasi\":\n",[433,7348],{"src":7349,"alt":7350,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-day-plan-icon-tagged-notes-button.webp","Menambahkan catatan khusus ber-ikon yang sangat terlihat ke hari",[488,7352,7353,7356,7357],{},[441,7354,7355],{},"Slot waktu",": seret tempat dari panel kanan ke dalam hari, lalu tetapkan waktunya. Tempat dengan waktu yang ditentukan akan terhubung secara otomatis di peta:\n",[433,7358],{"src":7359,"alt":7360,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-day-plan-timed-places-routing.webp","Rute transit yang dihitung otomatis antara lokasi yang dijadwalkan",[488,7362,7363,7364,7369,7370,575,7373,461],{},"Silakan merujuk ke ",[444,7365,7368],{"href":7366,"rel":7367},"https:\u002F\u002Fgithub.com\u002Fliketrek\u002FTREK\u002Fwiki\u002FDay-Plans-and-Notes",[448],"halaman wiki Day Plans and Notes"," untuk ",[441,7371,7372],{},"Optimasi rute",[441,7374,7375],{},"Cuaca",[2156,7377,7379],{"id":7378},"_53-collections-daftar-tempat-yang-dapat-digunakan-kembali","5.3 Collections: Daftar tempat yang dapat digunakan kembali",[430,7381,7382,7383,7386],{},"Collections memungkinkan pengguna untuk menyimpan daftar tempat di luar rencana perjalanan mana pun. Ini dapat dibagikan dengan teman-teman, dan siap digunakan untuk perjalanan berikutnya. Tempat-tempat ini akan ",[441,7384,7385],{},"disalin"," ke dalam rencana perjalanan, sehingga mengedit entri dalam perjalanan tidak akan pernah mengubah koleksi Anda dan sebaliknya.",[430,7388,4271,7389,7392],{},[441,7390,7391],{},"Collections"," di bilah menu atas:",[433,7394],{"src":7395,"alt":7396,"style":7397},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-collections-dashboard-view.webp","Mengakses koleksi khusus pengguna untuk tempat yang disimpan","max-width: 495px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7399,4271,7400,7403],{},[441,7401,7402],{},"+ New list"," untuk membuatnya:",[433,7405],{"src":7406,"alt":7407,"style":7408},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-collections-create-new-list.webp","Membuat daftar khusus di koleksi pengguna","max-width: 269px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7410,4271,7411,7414],{},[441,7412,7413],{},"+ Add a place"," dan isi detailnya:",[433,7416],{"src":7417,"alt":7418,"style":7419},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-collections-add-place-manually-form.webp","Input formulir manual untuk mengisi daftar koleksi khusus","max-width: 271px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7421,7422,7425],{},[441,7423,7424],{},"Catatan:"," pencarian di dalam dialog \"Add a place\" tampaknya tidak berfungsi, jadi Anda harus memasukkan detailnya secara manual.",[430,7427,7428],{},"Jika koordinat geografis dari tempat tersebut tersedia, tempat tersebut akan muncul di peta:",[433,7430],{"src":7431,"alt":7432,"style":7433},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-collections-map-places-display.webp","Memvisualisasikan tempat koleksi khusus pada peta interaktif","max-width: 592px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7435,7436,7437,888],{},"Untuk mengatur tempat dengan label, klik ikon ",[441,7438,7439],{},"kotak centang (tick-box)",[433,7441],{"src":7442,"alt":7443,"style":7444},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-collections-select-places-tickbox.webp","Mode pilihan untuk pelabelan massal tempat yang disimpan","max-width: 662px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7446,7447,7448,888],{},"Pilih tempat yang ingin dikelompokkan, lalu klik ",[441,7449,7450],{},"Assign label",[433,7452],{"src":7453,"alt":7454,"style":7285},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-collections-group-assign-label.webp","Menetapkan label deskriptif ke tempat koleksi yang dipilih",[430,7456,4271,7457,7460],{},[441,7458,7459],{},"Manage labels"," untuk membuat label terlebih dahulu:",[433,7462],{"src":7463,"alt":7464,"style":7465},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-collections-manage-custom-labels.webp","Pembuatan dan pengelolaan label khusus","max-width: 411px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7467,7468,7469,888],{},"Pilih label dan klik ",[441,7470,7450],{},[433,7472],{"src":7473,"alt":7474,"style":7099},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-collections-confirm-label-selection.webp","Menerapkan label khusus untuk mengelompokkan tempat",[2156,7476,7478],{"id":7477},"_54-biaya-dan-anggaran","5.4 Biaya dan anggaran",[430,7480,7481],{},"Kita dapat menambahkan pengeluaran lain untuk perjalanan di halaman 'Costs'.",[433,7483],{"src":7484,"alt":7485,"style":7325},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-costs-budget-overall-expenses-list.webp","Tabel pengeluaran komprehensif dan buku besar penyelesaian saldo",[430,7487,7488],{},"Pembayaran yang dilakukan oleh rekan perjalanan dapat ditambahkan dan dibagi di halaman yang sama.",[430,7490,7491,7492,7495],{},"Panel pelunasan menjalankan algoritma greedy-matching untuk menghitung ",[441,7493,7494],{},"jumlah transfer minimum"," mengenai siapa yang berutang kepada siapa, dan berapa nominalnya.",[878,7497,7499],{"id":7498},"_6-memanfaatkan-model-context-protocol-mcp-untuk-perencanaan-perjalanan-berbasis-ai","6. Memanfaatkan Model Context Protocol (MCP) untuk Perencanaan Perjalanan Berbasis AI",[430,7501,7502,7503,7506],{},"TREK memiliki ",[441,7504,7505],{},"server MCP (Model Context Protocol) bawaan",", yang memungkinkan agen AI membaca dan menulis data perjalanan Anda secara langsung — mencakup lebih dari 150 alat dan 30 sumber daya terkait perjalanan, tempat, anggaran, daftar barang bawaan, pemesanan, dan kolaborasi.",[2156,7508,7510],{"id":7509},"_61-cloudflare-zero-trust","6.1 Cloudflare Zero Trust",[430,7512,7513,7514,7516,7517,461],{},"Karena TREK berjalan di belakang jaringan ",[444,7515,1718],{"href":363},", Anda harus menambahkan domain ke dalam daftar inklusi split tunnel. Jika tidak, Anda akan mengalami masalah dengan otorisasi OAuth. Silakan merujuk ke isu GitHub ini: ",[444,7518,7521],{"href":7519,"rel":7520},"https:\u002F\u002Fgithub.com\u002Fliketrek\u002FTREK\u002Fissues\u002F1463",[448],"github issue",[463,7523],{"description":2603,"image":2604,"image-alt":2605,"label":2706,"min-read":2707,"title":1703,"to":363},[433,7525],{"src":7526,"alt":7527,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Fcloudflare-zero-trust-split-tunnels-domain.webp","Menambahkan domain khusus ke Split Tunnel Cloudflare Warp",[2156,7529,7531],{"id":7530},"_62-claude-desktop","6.2 Claude Desktop",[430,7533,4271,7534,7537,7538],{},[441,7535,7536],{},"+ New Client"," untuk membuat klien agen AI:\n",[433,7539],{"src":7540,"alt":7541,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-register-new-mcp-client.webp","Mendaftarkan token klien khusus baru di pengaturan",[430,7543,7544,7545,3053,7548,888],{},"Pilih tab ",[441,7546,7547],{},"Claude Desktop",[441,7549,7550],{},"Register Client",[433,7552],{"src":7553,"alt":7554,"style":7555},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-mcp-claude-desktop-client-credentials.webp","Membuat kredensial klien Claude Desktop","max-width: 354px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7557,7558,7559,7562],{},"Sepasang ID klien dan rahasia klien (client secret) akan ditampilkan. Salin keduanya di tempat yang aman. Kemudian klik ",[441,7560,7561],{},"Client Configuration"," untuk menampilkan konfigurasi MCP:",[433,7564],{"src":7565,"alt":7566,"style":7567},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-mcp-client-configuration-block.webp","Mengambil blok konfigurasi server MCP yang sudah diformat","max-width: 508px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7569,7570,7571,7574],{},"Di Claude Desktop, klik ",[441,7572,7573],{},"Edit Config"," untuk membuka berkas konfigurasi server MCP lokal:",[433,7576],{"src":7577,"alt":7578,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Fclaude-desktop-mcp-config-json.webp","Mengedit file json konfigurasi MCP lokal Claude Desktop",[430,7580,7581],{},"Tempel konfigurasi TREK, ganti placeholder dengan kredensial Anda:",[922,7583,7585],{"className":2903,"code":7584,"language":2905,"meta":425,"style":425},"  \"mcpServers\": {\n    \"trek\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"mcp-remote\",\n        \"https:\u002F\u002Ftrek.pafor.me\u002Fmcp\",\n        \"--static-oauth-client-info\",\n        \"{\\\"client_id\\\": \\\"\u003Cyour_client_id>\\\", \\\"client_secret\\\": \\\"\u003Cyour_client_secret>\\\"}\"\n      ]\n    }\n  },\n",[495,7586,7587,7601,7614,7636,7650,7662,7673,7684,7729,7734,7739],{"__ignoreMap":425},[930,7588,7589,7592,7595,7597,7599],{"class":932,"line":933},[930,7590,7591],{"class":944},"  \"",[930,7593,7594],{"class":1044},"mcpServers",[930,7596,3692],{"class":944},[930,7598,579],{"class":940},[930,7600,2912],{"class":944},[930,7602,7603,7606,7608,7610,7612],{"class":932,"line":1060},[930,7604,7605],{"class":944},"    \"",[930,7607,6770],{"class":936},[930,7609,3692],{"class":944},[930,7611,888],{"class":944},[930,7613,2942],{"class":944},[930,7615,7616,7619,7622,7624,7626,7628,7631,7633],{"class":932,"line":1067},[930,7617,7618],{"class":944},"      \"",[930,7620,7621],{"class":1040},"command",[930,7623,3692],{"class":944},[930,7625,888],{"class":944},[930,7627,3284],{"class":944},[930,7629,7630],{"class":1044},"npx",[930,7632,3692],{"class":944},[930,7634,7635],{"class":944},",\n",[930,7637,7638,7640,7643,7645,7647],{"class":932,"line":1074},[930,7639,7618],{"class":944},[930,7641,7642],{"class":1040},"args",[930,7644,3692],{"class":944},[930,7646,888],{"class":944},[930,7648,7649],{"class":944}," [\n",[930,7651,7652,7655,7658,7660],{"class":932,"line":1921},[930,7653,7654],{"class":944},"        \"",[930,7656,7657],{"class":1044},"mcp-remote",[930,7659,3692],{"class":944},[930,7661,7635],{"class":944},[930,7663,7664,7666,7669,7671],{"class":932,"line":1926},[930,7665,7654],{"class":944},[930,7667,7668],{"class":1044},"https:\u002F\u002Ftrek.pafor.me\u002Fmcp",[930,7670,3692],{"class":944},[930,7672,7635],{"class":944},[930,7674,7675,7677,7680,7682],{"class":932,"line":1932},[930,7676,7654],{"class":944},[930,7678,7679],{"class":1044},"--static-oauth-client-info",[930,7681,3692],{"class":944},[930,7683,7635],{"class":944},[930,7685,7686,7688,7690,7693,7696,7698,7700,7702,7705,7707,7709,7711,7714,7716,7718,7720,7723,7725,7727],{"class":932,"line":2269},[930,7687,7654],{"class":944},[930,7689,2933],{"class":1044},[930,7691,7692],{"class":940},"\\\"",[930,7694,7695],{"class":1044},"client_id",[930,7697,7692],{"class":940},[930,7699,579],{"class":1044},[930,7701,7692],{"class":940},[930,7703,7704],{"class":1044},"\u003Cyour_client_id>",[930,7706,7692],{"class":940},[930,7708,741],{"class":1044},[930,7710,7692],{"class":940},[930,7712,7713],{"class":1044},"client_secret",[930,7715,7692],{"class":940},[930,7717,579],{"class":1044},[930,7719,7692],{"class":940},[930,7721,7722],{"class":1044},"\u003Cyour_client_secret>",[930,7724,7692],{"class":940},[930,7726,2939],{"class":1044},[930,7728,1953],{"class":944},[930,7730,7731],{"class":932,"line":1692},[930,7732,7733],{"class":944},"      ]\n",[930,7735,7736],{"class":932,"line":2375},[930,7737,7738],{"class":944},"    }\n",[930,7740,7741,7744],{"class":932,"line":2381},[930,7742,7743],{"class":944},"  }",[930,7745,7635],{"class":940},[430,7747,7748,7749,888],{},"Mulai ulang Claude Desktop, dan server TREK akan muncul sebagai terhubung di bawah ",[441,7750,7751],{},"Local MCP servers",[433,7753],{"src":7754,"alt":7755,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Fclaude-desktop-mcp-trek-server-connected.webp","Memverifikasi status koneksi TREK yang aktif di dalam UI Claude",[430,7757,7758],{},"Sekarang jalankan sebuah perintah (prompt):",[433,7760],{"src":7761,"alt":7762,"style":7763},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Fclaude-desktop-mcp-natural-language-prompt.webp","Meminta Claude dalam bahasa alami untuk memanipulasi data perjalanan","max-width: 550px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7765,7766],{},"Mari kita tambahkan pengeluaran dalam bahasa alami:",[922,7768,7771],{"className":7769,"code":7770,"language":4639,"meta":425},[4637],"For the West Europe trip, the Grab from KLIA1 to the hotel cost RM115.90 on 26\u002F4\u002F2025. Please add it as an expense without split to the trip.\n",[495,7772,7770],{"__ignoreMap":425},[433,7774],{"src":7775,"alt":7776,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Fclaude-desktop-mcp-add-expense-response.webp","Claude menggunakan alat untuk mencatat pengeluaran secara otomatis",[430,7778,7779,7780,7783],{},"Saat memeriksa halaman ",[441,7781,7782],{},"Costs",", pengeluaran dibuat dengan status \"No one paid yet\" (Belum ada yang membayar), karena tidak ada pembayar yang disebutkan:",[433,7785],{"src":7786,"alt":7787,"style":6744},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-costs-page-mcp-parsed-expense.webp","Mengonfirmasi pengeluaran AI yang baru diurai di tampilan Biaya",[430,7789,7790],{},"Menambahkan ke daftar bawaan bekerja dengan cara yang sama:",[433,7792],{"src":7793,"alt":7794,"style":7795},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Fclaude-desktop-mcp-add-packing-items.webp","Claude menambahkan item bawaan menggunakan prompt bahasa alami","max-width: 631px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7797,7798,7799,7802],{},"Segarkan halaman ",[441,7800,7801],{},"Packing List"," dan ketiga barang tersebut sudah ada di sana:",[433,7804],{"src":7805,"alt":7806,"style":7807},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Ftrek-packing-list-mcp-parsed-items.webp","Mengonfirmasi item bawaan yang baru diurai di halaman Daftar Barang Bawaan","max-width: 312px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[2156,7809,7811],{"id":7810},"_63-gemini-cli-pendaftaran-dinamis","6.3 Gemini CLI (Pendaftaran Dinamis)",[430,7813,7814,7815,7818,7819,888],{},"Gemini CLI mendukung ",[441,7816,7817],{},"pendaftaran dinamis",", yaitu tidak memerlukan klien yang dibuat sebelumnya. Tambahkan ini ke ",[495,7820,7821],{},".gemini\u002Fsettings.json",[922,7823,7825],{"className":2903,"code":7824,"language":2905,"meta":425,"style":425},"    \"trek\": {\n      \"httpUrl\": \"https:\u002F\u002Ftrek.pafor.me\u002Fmcp\",\n      \"oauth\": {\n        \"enabled\": true\n      }\n    }\n",[495,7826,7827,7839,7858,7871,7884,7889],{"__ignoreMap":425},[930,7828,7829,7831,7833,7835,7837],{"class":932,"line":933},[930,7830,7605],{"class":944},[930,7832,6770],{"class":1044},[930,7834,3692],{"class":944},[930,7836,579],{"class":940},[930,7838,2912],{"class":944},[930,7840,7841,7843,7846,7848,7850,7852,7854,7856],{"class":932,"line":1060},[930,7842,7618],{"class":944},[930,7844,7845],{"class":936},"httpUrl",[930,7847,3692],{"class":944},[930,7849,888],{"class":944},[930,7851,3284],{"class":944},[930,7853,7668],{"class":1044},[930,7855,3692],{"class":944},[930,7857,7635],{"class":944},[930,7859,7860,7862,7865,7867,7869],{"class":932,"line":1067},[930,7861,7618],{"class":944},[930,7863,7864],{"class":936},"oauth",[930,7866,3692],{"class":944},[930,7868,888],{"class":944},[930,7870,2942],{"class":944},[930,7872,7873,7875,7878,7880,7882],{"class":932,"line":1074},[930,7874,7654],{"class":944},[930,7876,7877],{"class":1040},"enabled",[930,7879,3692],{"class":944},[930,7881,888],{"class":944},[930,7883,1377],{"class":944},[930,7885,7886],{"class":932,"line":1921},[930,7887,7888],{"class":944},"      }\n",[930,7890,7891],{"class":932,"line":1926},[930,7892,7738],{"class":944},[430,7894,1827,7895,7898,7899,7902,7903],{},[495,7896,7897],{},"gemini"," di terminal dan klik ",[441,7900,7901],{},"Approve"," saat permintaan otorisasi muncul:\n",[433,7904],{"src":7905,"alt":7906,"style":7907},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Fmcp-client-oauth-authorization-prompt.webp","Menyetujui akses OAuth untuk server MCP TREK","max-width: 488px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,7909,7910],{},"Kemudian mulai dengan perintah sederhana:",[433,7912],{"src":7913,"alt":7914,"style":7915},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Fgemini-cli-mcp-prompt-itinerary.webp","Meminta Gemini CLI untuk mengambil rencana perjalanan","max-width: 415px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[433,7917],{"src":7918,"alt":7919,"style":7191},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Fgemini-cli-mcp-display-itinerary.webp","Gemini CLI berhasil menampilkan informasi perjalanan terstruktur",[2156,7921,7923],{"id":7922},"_64-kimi-cli-pendaftaran-dinamis","6.4 Kimi CLI (Pendaftaran Dinamis)",[430,7925,7926,7927,7930,7931,7934],{},"Pendekatan yang sama — tambahkan ke ",[495,7928,7929],{},"mcp.json"," di folder ",[495,7932,7933],{},"\u002FUsers\u002F\u003Cuser>\u002F.kimi\u002F"," :",[922,7936,7938],{"className":2903,"code":7937,"language":2905,"meta":425,"style":425},"    \"trek\": {\n      \"type\": \"http\",\n      \"url\": \"https:\u002F\u002Ftrek.pafor.me\u002Fmcp\",\n      \"auth\": \"oauth\"\n    }\n",[495,7939,7940,7952,7972,7990,8007],{"__ignoreMap":425},[930,7941,7942,7944,7946,7948,7950],{"class":932,"line":933},[930,7943,7605],{"class":944},[930,7945,6770],{"class":1044},[930,7947,3692],{"class":944},[930,7949,579],{"class":940},[930,7951,2912],{"class":944},[930,7953,7954,7956,7959,7961,7963,7965,7968,7970],{"class":932,"line":1060},[930,7955,7618],{"class":944},[930,7957,7958],{"class":936},"type",[930,7960,3692],{"class":944},[930,7962,888],{"class":944},[930,7964,3284],{"class":944},[930,7966,7967],{"class":1044},"http",[930,7969,3692],{"class":944},[930,7971,7635],{"class":944},[930,7973,7974,7976,7978,7980,7982,7984,7986,7988],{"class":932,"line":1067},[930,7975,7618],{"class":944},[930,7977,862],{"class":936},[930,7979,3692],{"class":944},[930,7981,888],{"class":944},[930,7983,3284],{"class":944},[930,7985,7668],{"class":1044},[930,7987,3692],{"class":944},[930,7989,7635],{"class":944},[930,7991,7992,7994,7997,7999,8001,8003,8005],{"class":932,"line":1074},[930,7993,7618],{"class":944},[930,7995,7996],{"class":936},"auth",[930,7998,3692],{"class":944},[930,8000,888],{"class":944},[930,8002,3284],{"class":944},[930,8004,7864],{"class":1044},[930,8006,1953],{"class":944},[930,8008,8009],{"class":932,"line":1921},[930,8010,7738],{"class":944},[430,8012,1827,8013,7898,8016,1366,8018],{},[495,8014,8015],{},"kimi mcp auth trek",[441,8017,7901],{},[433,8019],{"src":7905,"alt":7906,"style":8020},"max-width: 453px; width: 100%; height: auto; border-radius: 8px; margin: 1.5rem auto; display: block;",[430,8022,8023],{},"Setelah diotorisasi, alat yang tersedia akan dicantumkan:",[433,8025],{"src":8026,"alt":8027,"style":6583},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002Fkimi-cli-mcp-authorized-tools-list.webp","Kimi CLI menampilkan alat yang tersedia setelah otorisasi berhasil",[878,8029,8031],{"id":8030},"_7-pengalaman-seluler","7. Pengalaman Seluler",[430,8033,8034],{},"TREK adalah PWA (progressive web app) di perangkat seluler. Service worker akan menyimpan templat peta dan data API dalam tembolok (cache), sehingga rencana perjalanan Anda tetap dapat dibaca secara offline. Namun, notifikasi push mungkin mengalami beberapa keterlambatan (latency) dibandingkan dengan aplikasi asli.",[878,8036,2568],{"id":2567},[430,8038,8039],{},"Menghubungkan agen AI melalui MCP menghemat banyak pekerjaan membosankan dalam memasukkan pemesanan penerbangan dan akomodasi. Selain itu, agen dapat menyarankan tempat-tempat menarik berdasarkan tanggal perjalanan dan musim Anda. Satu percakapan dengan agen AI dapat mencakup seluruh rangkaian proses, mulai dari riset dan pembuatan rencana perjalanan hingga pelacakan anggaran dan pengepakan barang.",[430,8041,8042],{},"Ada beberapa kendala teknis kecil. Misalnya, saat mengimpor pemesanan dari berkas PDF, mata uang akan default ke mata uang dasar perjalanan, bukan mata uang yang sebenarnya dibayarkan. Selain itu, saat membuat daftar baru di Collections, gambar sampul apa pun yang ditambahkan selama pembuatan akan hilang saat disimpan, meskipun dapat ditambahkan kembali secara manual saat mengedit.",[430,8044,8045,8046,8051],{},"Ada sedikit hambatan teknis, karena Anda perlu meng-host aplikasi ini di server Anda sendiri. TREK terutama dirancang untuk orang yang sering begegian dan memiliki ekspektasi tinggi tentang bagaimana mereka mengatur data perjalanan mereka. Kami menyarankan untuk mencoba demo resmi di ",[444,8047,8050],{"href":8048,"rel":8049},"https:\u002F\u002Fdemo.liketrek.com\u002F",[448],"demo.liketrek.com"," sebelum mempertimbangkan self-hosting.",[878,8053,1608],{"id":1607},[485,8055,8056,8063,8070],{},[488,8057,8058],{},[444,8059,8062],{"href":8060,"rel":8061},"https:\u002F\u002Fgithub.com\u002Fliketrek\u002FTREK\u002Fwiki\u002FQuick-Start",[448],"TREK Quick Start",[488,8064,8065],{},[444,8066,8069],{"href":8067,"rel":8068},"https:\u002F\u002Fgithub.com\u002Fliketrek\u002FTREK\u002Fwiki\u002FTroubleshooting",[448],"TREK Troubleshooting",[488,8071,8072],{},[444,8073,8076],{"href":8074,"rel":8075},"https:\u002F\u002Fgithub.com\u002Fliketrek\u002FTREK\u002Fwiki\u002FMCP-Scopes",[448],"TREK MCP Scopes",[1636,8078,8079],{},"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 .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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 .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}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":425,"searchDepth":1060,"depth":1067,"links":8081},[8082,8087,8088,8098,8106,8112,8118,8119,8120],{"id":6276,"depth":1067,"text":6277,"children":8083},[8084,8085,8086],{"id":6280,"depth":1074,"text":6281},{"id":6426,"depth":1074,"text":6427},{"id":6459,"depth":1074,"text":6460},{"id":6604,"depth":1067,"text":6605},{"id":6647,"depth":1067,"text":6648,"children":8089},[8090,8091,8092,8093,8094,8095,8096,8097],{"id":6747,"depth":1074,"text":6748},{"id":6758,"depth":1074,"text":6759},{"id":6858,"depth":1074,"text":6859},{"id":6878,"depth":1074,"text":6879},{"id":6913,"depth":1074,"text":6914},{"id":6934,"depth":1074,"text":6935},{"id":6951,"depth":1074,"text":6952},{"id":6962,"depth":1074,"text":6963},{"id":6992,"depth":1067,"text":6993,"children":8099},[8100,8101,8102,8103,8104,8105],{"id":6999,"depth":1074,"text":7000},{"id":7032,"depth":1074,"text":7033},{"id":7102,"depth":1074,"text":7103},{"id":7124,"depth":1074,"text":7125},{"id":7143,"depth":1074,"text":7144},{"id":7168,"depth":1074,"text":7169},{"id":7199,"depth":1067,"text":7200,"children":8107},[8108,8109,8110,8111],{"id":7219,"depth":1074,"text":7220},{"id":7316,"depth":1074,"text":7317},{"id":7378,"depth":1074,"text":7379},{"id":7477,"depth":1074,"text":7478},{"id":7498,"depth":1067,"text":7499,"children":8113},[8114,8115,8116,8117],{"id":7509,"depth":1074,"text":7510},{"id":7530,"depth":1074,"text":7531},{"id":7810,"depth":1074,"text":7811},{"id":7922,"depth":1074,"text":7923},{"id":8030,"depth":1067,"text":8031},{"id":2567,"depth":1067,"text":2568},{"id":1607,"depth":1067,"text":1608},[8122,1656],"travel","2026-09-01","Pelajari cara deploy TREK dengan Docker, amankan lewat Cloudflare R2 dan Caddy, serta gunakan agen AI via MCP untuk rencana perjalanan Anda yang lancar.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosted%20travel%20planner%20TREK\u002FID-Self-hosted-travel-planner-TREK.webp","Ilustrasi 3D minimalis premium dari dasbor perencana perjalanan self-hosted TREK dengan latar belakang kertas perkamen hangat.",{"schemaOrg":8128,"robots":1690,"sitemap":8132},[8129,8130],{"@type":1669,"headline":6262,"description":8124},{"@type":4085,"headline":8131,"description":8124},"Cara Host TREK Sendiri: Planner Perjalanan AI Terbaik",{"lastmod":8123},{"title":8131,"description":8124,"ogTitle":6262,"ogDescription":8124,"twitterTitle":6262,"twitterDescription":8124},"id\u002Farticle\u002Fself-hosted-travel-planner-trek",[6256,8136,6257,6258,6944],"TREK","3OTyz87QLsG8ujjCue_J7CxOtq4jdBG6T7qk1AU8YZ4",{"id":8139,"title":8140,"author":425,"body":8141,"category":8694,"date":8695,"description":8696,"extension":1661,"image":8697,"imageAlt":8698,"isPublished":1063,"meta":8699,"minRead":1074,"navigation":1063,"path":153,"seo":8703,"stem":8705,"tags":8706,"updatedAt":1699,"__hash__":8710},"article\u002Fid\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts.md","Cara Skill Agen AI Menggantikan Script Scaffolding Nuxt",{"type":427,"value":8142,"toc":8687},[8143,8157,8161,8164,8260,8263,8291,8297,8301,8316,8333,8337,8348,8508,8512,8594,8598,8606,8626,8633,8648,8659,8662,8668,8671,8676,8684],[430,8144,8145,8146,575,8149,8152,8153,8156],{},"Saat kita memulai aplikasi baru menggunakan framework Nuxt, kita harus melalui langkah-langkah yang membosankan seperti menginstal modul dan mengatur konfigurasi seperti ",[495,8147,8148],{},"nuxt.config.ts",[495,8150,8151],{},"wrangler.jsonc",". Skrip memang bisa menyelesaikan masalah ini, tetapi ia akan mencapai batasnya seiring bertambahnya variasi kebutuhan. Inilah mengapa kami mengeksplorasi dan mengganti skrip dengan sebuah ",[441,8154,8155],{},"skill agen"," (agent skill).",[474,8158,8160],{"id":8159},"kegunaan-utama-skrip-shell-tradisional","Kegunaan Utama Skrip Shell Tradisional",[430,8162,8163],{},"Sebuah skrip sangat baik untuk menjalankan serangkaian instruksi tetap secara berurutan dengan keputusan yang telah ditulis secara kaku di dalam kode (hardcoded).",[922,8165,8167],{"className":1031,"code":8166,"language":1033,"meta":425,"style":425},"#!\u002Fusr\u002Fbin\u002Fenv bash\nset -e\n\nnpx nuxi@latest init \"$1\" --template minimal --packageManager pnpm --no-gitInit -M @nuxt\u002Fui,@nuxthub\u002Fcore,@vueuse\u002Fnuxt\n\ncd \"$1\"\n\ncp ~\u002Ftemplates\u002Fnuxt.config.ts .\ncp ~\u002Ftemplates\u002Fwrangler.jsonc .\n",[495,8168,8169,8174,8181,8185,8224,8228,8238,8242,8251],{"__ignoreMap":425},[930,8170,8171],{"class":932,"line":933},[930,8172,8173],{"class":1070},"#!\u002Fusr\u002Fbin\u002Fenv bash\n",[930,8175,8176,8179],{"class":932,"line":1060},[930,8177,8178],{"class":961},"set",[930,8180,5200],{"class":1044},[930,8182,8183],{"class":932,"line":1067},[930,8184,1064],{"emptyLinePlaceholder":1063},[930,8186,8187,8189,8192,8195,8197,8201,8203,8206,8209,8212,8215,8218,8221],{"class":932,"line":1074},[930,8188,7630],{"class":1040},[930,8190,8191],{"class":1044}," nuxi@latest",[930,8193,8194],{"class":1044}," init",[930,8196,3284],{"class":944},[930,8198,8200],{"class":8199},"sHdIc","$1",[930,8202,3692],{"class":944},[930,8204,8205],{"class":1044}," --template",[930,8207,8208],{"class":1044}," minimal",[930,8210,8211],{"class":1044}," --packageManager",[930,8213,8214],{"class":1044}," pnpm",[930,8216,8217],{"class":1044}," --no-gitInit",[930,8219,8220],{"class":1044}," -M",[930,8222,8223],{"class":1044}," @nuxt\u002Fui,@nuxthub\u002Fcore,@vueuse\u002Fnuxt\n",[930,8225,8226],{"class":932,"line":1921},[930,8227,1064],{"emptyLinePlaceholder":1063},[930,8229,8230,8232,8234,8236],{"class":932,"line":1926},[930,8231,2813],{"class":961},[930,8233,3284],{"class":944},[930,8235,8200],{"class":8199},[930,8237,1953],{"class":944},[930,8239,8240],{"class":932,"line":1932},[930,8241,1064],{"emptyLinePlaceholder":1063},[930,8243,8244,8246,8249],{"class":932,"line":2269},[930,8245,2830],{"class":1040},[930,8247,8248],{"class":1044}," ~\u002Ftemplates\u002Fnuxt.config.ts",[930,8250,4896],{"class":1044},[930,8252,8253,8255,8258],{"class":932,"line":1692},[930,8254,2830],{"class":1040},[930,8256,8257],{"class":1044}," ~\u002Ftemplates\u002Fwrangler.jsonc",[930,8259,4896],{"class":1044},[430,8261,8262],{},"Skrip ini berfungsi dengan baik sampai hal-hal berikut terjadi:",[485,8264,8265,8271,8281],{},[488,8266,8267,8270],{},[441,8268,8269],{},"Nilai default yang kaku."," Skrip menetapkan modul Nuxt UI secara kaku; bagaimana jika kita ingin modul Ant Design UI? Setiap opsi modul baru membutuhkan argumen tambahan dari pengguna.",[488,8272,8273,8276,8277,8280],{},[441,8274,8275],{},"Tidak dapat membaca niat pengguna."," Perintah \"Buatkan saya blog\" membutuhkan ",[495,8278,8279],{},"@nuxt\u002Fcontent","; \"buatkan saya situs web dengan buletin\" membutuhkan Cloudflare D1 + Drizzle. Skrip tidak dapat membedakan hal ini — setiap variasi memerlukan skrip baru.",[488,8282,8283,8286,8287,8290],{},[441,8284,8285],{},"Menjadi usang secara diam-diam."," Aturan konvensi Nuxt berubah antar versi mayor. Nuxt 4 mengubah direktori sumber menjadi ",[495,8288,8289],{},"app\u002F",". Skrip yang ditulis untuk Nuxt 3 akan melakukan inisialisasi (scaffolding) dengan struktur yang salah tanpa pernah memberi tahu pengguna.",[430,8292,8293,8296],{},[441,8294,8295],{},"Inisialisasi proyek"," (app scaffolding) adalah masalah pengambilan keputusan, bukan masalah eksekusi. Skrip tidak akan bisa berkembang ketika jumlah keputusan yang harus diambil meningkat.",[474,8298,8300],{"id":8299},"mengapa-menggunakan-skill-agen-ai-dibandingkan-skrip-tradisional","Mengapa Menggunakan Skill Agen AI Dibandingkan Skrip Tradisional?",[430,8302,8303,8304,8307,8308,8311,8312,8315],{},"Skill agen (agent skill) bukanlah sekumpulan kode yang dieksekusi, melainkan ",[441,8305,8306],{},"sekumpulan pengetahuan yang diikuti oleh agen AI",". Skill ini berisi file ",[495,8309,8310],{},"SKILL.md"," dan dapat membundel file lain yang diperlukan untuk tugas tersebut (seperti dokumen referensi, templat, dan skrip yang dapat dieksekusi). Artikel ",[444,8313,8314],{"href":351},"Skill Agen AI: Apa Itu dan Bagaimana Cara Membuatnya"," menjelaskan bagaimana cara kerja skill agen. Sebuah skill mempertahankan kedisiplinan skrip sekaligus menambahkan penilaian logis yang tidak dimiliki oleh skrip biasa:",[485,8317,8318,8321,8324,8327,8330],{},[488,8319,8320],{},"Menyimpulkan niat pengguna untuk menentukan apakah aplikasi memerlukan database.",[488,8322,8323],{},"Memutuskan modul opsional mana yang diperlukan dari daftar yang ditentukan. Misalnya, Nuxt Content, i18n, dan analitik bersifat opsional berdasarkan permintaan pengguna.",[488,8325,8326],{},"Menyesuaikan diri dengan ekosistem saat ini menggunakan framework Nuxt terbaru, NuxtHub untuk binding Cloudflare, dan Wrangler untuk deployment.",[488,8328,8329],{},"Memulihkan diri secara mandiri ketika sebuah langkah gagal.",[488,8331,8332],{},"Memverifikasi kesesuaian proyek terhadap checklist akhir sebelum menyerahkannya kepada pengguna.",[474,8334,8336],{"id":8335},"di-balik-layar-skill-scaffolding-nuxt-cloudflare-kami","Di Balik Layar Skill Scaffolding Nuxt & Cloudflare Kami",[430,8338,8339,8340,8347],{},"Skill kami, ",[444,8341,8344],{"href":8342,"rel":8343},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fscaffold-nuxt-cloudflare-app-skill",[448],[495,8345,8346],{},"scaffold-nuxt-cloudflare-app-skill",", memandu proses inisialisasi yang berorientasi produksi:",[533,8349,8350,8381,8400,8424,8453,8488,8494],{},[488,8351,8352,8355,8356],{},[441,8353,8354],{},"Mengklarifikasi hal-hal"," yang tidak dapat disimpulkan secara otomatis:\n",[485,8357,8358,8369,8372],{},[488,8359,8360,8361,8364,8365,8368],{},"Kit UI (",[441,8362,8363],{},"Nuxt UI"," secara default atau ",[441,8366,8367],{},"Antdv Next",");",[488,8370,8371],{},"Apakah database diperlukan (seperti Cloudflare D1);",[488,8373,8374,8375,5478,8378,8380],{},"Modul tambahan seperti ",[495,8376,8377],{},"@nuxtjs\u002Fi18n",[495,8379,8279],{}," untuk fitur CMS.",[488,8382,8383,757,8386,8389,8390,8392,8393,8396,8397,461],{},[441,8384,8385],{},"Membuat scaffolding aplikasi dasar",[495,8387,8388],{},"pnpm dlx nuxi@latest init"," untuk versi framework Nuxt terbaru dengan ",[495,8391,3583],{}," sebagai package manager. Kemudian, ia mengatur daftar izin kompilasi asli (native-build allowlists) agar lingkungan build Cloudflare dapat mengompilasi ",[495,8394,8395],{},"better-sqlite3","\u002F",[495,8398,8399],{},"sharp",[488,8401,8402,579,8405,5478,8408,741,8411,741,8414,741,8417,741,8420,8423],{},[441,8403,8404],{},"Menginstal modul berdasarkan tabel keputusan",[495,8406,8407],{},"@nuxt\u002Fui",[495,8409,8410],{},"@antdv-next\u002Fnuxt",[495,8412,8413],{},"@nuxt\u002Fimage",[495,8415,8416],{},"@nuxtjs\u002Fseo",[495,8418,8419],{},"@nuxthub\u002Fcore",[495,8421,8422],{},"@vueuse\u002Fnuxt",", ditambah Drizzle\u002FD1, Nuxt Content, dan i18n hanya jika dipilih.",[488,8425,8426,1366,8429],{},[441,8427,8428],{},"Menata struktur direktori",[485,8430,8431,8435,8440,8445,8450],{},[488,8432,8433],{},[495,8434,8289],{},[488,8436,8437],{},[495,8438,8439],{},"server\u002F",[488,8441,8442],{},[495,8443,8444],{},"shared\u002F",[488,8446,8447],{},[495,8448,8449],{},"tests\u002F",[488,8451,8452],{},"file konfigurasi root.",[488,8454,8455,1366,8460],{},[441,8456,8457,8458],{},"Mengonfigurasi ",[495,8459,8148],{},[485,8461,8462,8471,8478,8483],{},[488,8463,8464,8396,8467,8470],{},[495,8465,8466],{},"site.url",[495,8468,8469],{},"site.name"," untuk SEO",[488,8472,8473,8474,8477],{},"Blok ",[495,8475,8476],{},"hub"," NuxtHub untuk Cloudflare",[488,8479,8480],{},[495,8481,8482],{},"routeRules",[488,8484,8485],{},[495,8486,8487],{},"compatibilityDate",[488,8489,8490],{},[441,8491,8457,8492],{},[495,8493,8151],{},[488,8495,8496,8499,8500,8503,8504,8507],{},[441,8497,8498],{},"Menyiapkan Vitest dan ESLint",", lalu menjalankan ",[441,8501,8502],{},"checklist akhir"," termasuk ",[495,8505,8506],{},"pnpm install && pnpm dev"," sebelum menganggap pekerjaan selesai.",[474,8509,8511],{"id":8510},"skrip-shell-vs-skill-agen-ai-perbandingan-langsung","Skrip Shell vs Skill Agen AI: Perbandingan Langsung",[603,8513,8514,8526],{},[606,8515,8516],{},[609,8517,8518,8520,8523],{},[612,8519],{},[612,8521,8522],{},"Skrip",[612,8524,8525],{},"Skill",[632,8527,8528,8539,8550,8561,8572,8583],{},[609,8529,8530,8533,8536],{},[637,8531,8532],{},"Niat pengguna",[637,8534,8535],{},"❌ nilai default kaku",[637,8537,8538],{},"✅ menyesuaikan permintaan",[609,8540,8541,8544,8547],{},[637,8542,8543],{},"Pengambilan keputusan",[637,8545,8546],{},"hanya jika flag diprogram",[637,8548,8549],{},"✅ dinilai saat runtime",[609,8551,8552,8555,8558],{},[637,8553,8554],{},"Perubahan versi",[637,8556,8557],{},"penulisan ulang manual",[637,8559,8560],{},"✅ memeriksa kondisi saat ini",[609,8562,8563,8566,8569],{},[637,8564,8565],{},"Pemulihan kesalahan",[637,8567,8568],{},"berhenti",[637,8570,8571],{},"✅ memperbaiki dan lanjut",[609,8573,8574,8577,8580],{},[637,8575,8576],{},"Verifikasi hasil",[637,8578,8579],{},"❌",[637,8581,8582],{},"✅ checklist akhir",[609,8584,8585,8588,8591],{},[637,8586,8587],{},"Biaya pemeliharaan",[637,8589,8590],{},"penumpukan flag, pembaruan versi",[637,8592,8593],{},"mengedit Markdown, bukan kode",[474,8595,8597],{"id":8596},"cara-menginstal-skill-agen-ai-dengan-cli-npx-skills","Cara Menginstal Skill Agen AI dengan CLI npx skills",[430,8599,8600,8601,888],{},"Instalasi dilakukan dengan satu perintah menggunakan ",[444,8602,8605],{"href":8603,"rel":8604},"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fskills",[448],"skills CLI",[922,8607,8609],{"className":1031,"code":8608,"language":1033,"meta":425,"style":425},"npx skills add https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fscaffold-nuxt-cloudflare-app-skill.git -g\n",[495,8610,8611],{"__ignoreMap":425},[930,8612,8613,8615,8618,8620,8623],{"class":932,"line":933},[930,8614,7630],{"class":1040},[930,8616,8617],{"class":1044}," skills",[930,8619,1054],{"class":1044},[930,8621,8622],{"class":1044}," https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fscaffold-nuxt-cloudflare-app-skill.git",[930,8624,8625],{"class":1044}," -g\n",[430,8627,8628,8629],{},"CLI akan mengkloning repo, menemukan skill tersebut, dan menanyakan agen mana dari 77 agen yang didukung yang akan menerimanya:\n",[433,8630],{"alt":8631,"src":8632},"Antarmuka baris perintah yang menunjukkan instalasi skill scaffolding Nuxt menggunakan perintah CLI npx skills add","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20AI%20Agent%20Skills%20Replace%20Nuxt%20App%20Scaffolding%20Scripts\u002Fnpx-skills-add-scaffold-nuxt-installation.webp",[430,8634,8635,8636,8639,8640,8643,8644],{},"Kami memilih ",[441,8637,8638],{},"Symlink"," (metode yang direkomendasikan), yang menginstal skill satu kali di ",[495,8641,8642],{},"~\u002F.agents\u002Fskills"," dan menghubungkan setiap agen yang dipilih ke satu salinan ini.\n",[433,8645],{"alt":8646,"src":8647},"Tampilan terminal yang menunjukkan ringkasan instalasi dan penyiapan symlink untuk skill agen yang terpusat","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20AI%20Agent%20Skills%20Replace%20Nuxt%20App%20Scaffolding%20Scripts\u002Fnpx-skills-installation-summary-details.webp",[485,8649,8650],{},[488,8651,8652],{},[898,8653,8654,8655,8658],{},"Silakan merujuk ke artikel ini, ",[444,8656,8657],{"href":359},"Mengatasi Fragmentasi Kemampuan Agen AI dengan npx skills",", tentang cara memusatkan skill agen dalam satu sumber kebenaran tunggal.",[430,8660,8661],{},"Membuka Claude Code mengonfirmasi bahwa skill tersebut telah berhasil diinstal.",[430,8663,8664],{},[433,8665],{"alt":8666,"src":8667},"Antarmuka baris perintah Claude Code menunjukkan perintah slash scaffold-nuxt yang baru diinstal telah aktif dan siap digunakan","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20AI%20Agent%20Skills%20Replace%20Nuxt%20App%20Scaffolding%20Scripts\u002Fclaude-code-scaffold-nuxt-slash-command-active.webp",[430,8669,8670],{},"Dari sana, sebuah perintah bahasa alami adalah semua yang Anda butuhkan:",[2503,8672,8673],{},[430,8674,8675],{},"\"Scaffold a new Nuxt app deployed to Cloudflare Workers — Nuxt UI, a blog section, and a D1 database\"",[430,8677,8678,8679,8683],{},"Skill ini bersifat open source; silakan kunjungi ",[444,8680,8682],{"href":8342,"rel":8681},[448],"repo GitHub"," kami dan cobalah sendiri.",[1636,8685,8686],{},"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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}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":425,"searchDepth":1060,"depth":1067,"links":8688},[8689,8690,8691,8692,8693],{"id":8159,"depth":1060,"text":8160},{"id":8299,"depth":1060,"text":8300},{"id":8335,"depth":1060,"text":8336},{"id":8510,"depth":1060,"text":8511},{"id":8596,"depth":1060,"text":8597},[1656],"2026-08-25","Scaffold Nuxt di Cloudflare Workers dengan mudah. Pelajari mengapa kami mengganti script rapuh dengan skill agen AI dan cara mudah pasang lewat npx skills.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20AI%20Agent%20Skills%20Replace%20Nuxt%20App%20Scaffolding%20Scripts\u002FID-How-AI-Agent-Skills-Replace-Nuxt-App-Scaffolding-Scripts.webp","Scaffolding Nuxt di Cloudflare: Script vs Skill Agen AI - Membandingkan script tradisional yang rapuh dengan skill agen AI yang adaptif.",{"schemaOrg":8700,"robots":1690,"sitemap":8702},[8701],{"@type":1667,"headline":8140,"description":8696,"image":8697},{"lastmod":8695},{"title":8704,"description":8696,"ogTitle":8140,"ogDescription":8696,"twitterTitle":8140,"twitterDescription":8696},"Scaffolding Nuxt di Cloudflare: Script vs Skill Agen AI","id\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",[8707,6258,8708,8709],"Nuxt","AI Agent","Scaffolding","c7Qy-ZbcGWM5rhTOdJgtNkZm7e0UzyTvVaPTmF26fDQ",{"id":8712,"title":8713,"author":1699,"body":8714,"category":9471,"date":9473,"description":9474,"extension":1661,"image":9475,"imageAlt":9476,"isPublished":1063,"meta":9477,"minRead":1932,"navigation":1063,"path":177,"seo":9482,"stem":9483,"tags":9484,"updatedAt":1699,"__hash__":9486},"article\u002Fid\u002Farticle\u002Fuse-cloudflare-as-ai-memory.md","Membangun Sistem Memori AI Persisten di Cloudflare",{"type":427,"value":8715,"toc":9453},[8716,8720,8723,8726,8730,8733,8747,8751,8758,8772,8775,8778,8822,8826,8907,8911,8936,9033,9044,9048,9053,9093,9116,9120,9125,9192,9197,9201,9233,9239,9277,9281,9313,9317,9325,9329,9359,9363,9403,9405,9408,9411,9414,9416,9450],[474,8717,8719],{"id":8718},"pentingnya-memori-ai-persisten-untuk-agen","Pentingnya Memori AI Persisten untuk Agen",[430,8721,8722],{},"Seiring dengan semakin terintegrasinya asisten AI ke dalam kehidupan kita sehari-hari, kita sering kali menghadapi masalah konteks kosong (blank context). Keputusan yang dibuat minggu lalu terlupakan, sehingga kita harus memasukkan detail tech stack yang sama dan mengatur preferensi pengguna berulang kali di setiap sesi baru.",[430,8724,8725],{},"Alih-alih memulai dari awal setiap kali, kita perlu membangun sistem memori yang terus berkembang, secara konsisten memahami keputusan pengguna, dan menghilangkan kebutuhan untuk mengulang konteks secara terus-menerus.",[474,8727,8729],{"id":8728},"sistem-memori-ai-mandiri-vs-bawaan","Sistem Memori AI Mandiri vs. Bawaan",[430,8731,8732],{},"Banyak agen AI dilengkapi dengan memori bawaan, tetapi kita jarang menggunakan satu agen saja untuk semua kebutuhan. Kita menggunakan Claude untuk merancang dan menyusun arsitektur proyek, Kimi untuk menulis kode, dan ChatGPT untuk riset mendalam. Konteks tidak dibagikan di antara agen-agen ini; semuanya tetap terisolasi di setiap alat secara terpisah.",[430,8734,8735,8736,8741,8742,8746],{},"Dari sudut pandang rekayasa perangkat lunak, kita tidak mempercayai kotak hitam (black box). Kita membutuhkan sistem memori AI yang dapat diobservasi, diaudit, dan berada di bawah kendali kita sepenuhnya. Proyek sumber terbuka ",[444,8737,8740],{"href":8738,"rel":8739},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fsecond-brain-cloudflare\u002Ftree\u002Fmain",[448],"Second Brain",", yang merupakan fork dari ",[444,8743,8744],{"href":8744,"rel":8745},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare",[448],", menyediakan sistem memori persisten dan mandiri (self-hosted) dengan dukungan Model Context Protocol (MCP). Agen AI apa pun yang kompatibel seperti Claude, ChatGPT, atau Kimi Code dapat berbagi konteks memori terpadu yang sama.",[474,8748,8750],{"id":8749},"cara-membangun-memori-ai-second-brain-di-cloudflare","Cara Membangun Memori AI Second Brain di Cloudflare",[430,8752,8753,8754,8757],{},"Sistem memori Second Brain diterapkan di atas ",[441,8755,8756],{},"Cloudflare Workers",", yang menyediakan infrastruktur serverless berlatensi sangat rendah yang terdistribusi secara global. Hal ini memungkinkan operasi pencarian memori (recall) dan penyimpanan berjalan hampir instan dalam logika berpikir AI.",[430,8759,8760,8761,8764,8765,8768,8769,8771],{},"Model embedding dari ",[441,8762,8763],{},"Workers AI"," digunakan untuk menghasilkan vektor. Embedding ini disimpan di ",[441,8766,8767],{},"Cloudflare Vectorize",", yang merupakan database vektor terdistribusi global yang sangat optimal. ",[441,8770,8767],{}," melakukan pencarian kemiripan kosinus (cosine similarity) untuk mengidentifikasi memori dengan relevansi semantik.",[430,8773,8774],{},"Second Brain juga dilengkapi dengan mekanisme deduplikasi dan penggabungan cerdas. Konten dengan kemiripan kurang dari 85% akan disimpan langsung; jika tidak, konten tersebut akan diblokir atau ditandai sebagai kandidat duplikat. Teks panjang yang melebihi 1.600 karakter akan dipotong berdasarkan batas kalimat atau baris baru, dengan tetap mempertahankan tumpang tindih (overlap) sebanyak 200 karakter untuk menjaga kontinuitas konteks. Setiap potongan kemudian divektorisasi untuk pencocokan presisi tinggi.",[430,8776,8777],{},"Alat-alat berikut diekspos sebagai antarmuka MCP untuk digunakan langsung oleh agen AI:",[485,8779,8780,8786,8792,8798,8804,8810,8816],{},[488,8781,8782,8785],{},[495,8783,8784],{},"remember",": Menyimpan ide, keputusan, preferensi, dan konteks proyek secara umum.",[488,8787,8788,8791],{},[495,8789,8790],{},"append",": Menambahkan pembaruan ke memori yang sudah ada.",[488,8793,8794,8797],{},[495,8795,8796],{},"update",": Mengganti memori yang ada secara keseluruhan.",[488,8799,8800,8803],{},[495,8801,8802],{},"recall",": Menemukan memori berdasarkan makna semantiknya, bukan kata kunci yang tepat.",[488,8805,8806,8809],{},[495,8807,8808],{},"list_recent",": Menampilkan memori yang baru disimpan.",[488,8811,8812,8815],{},[495,8813,8814],{},"forget",": Menghapus memori secara permanen.",[488,8817,8818,8821],{},[495,8819,8820],{},"link\u002Fconnections",": Menghubungkan memori yang saling berkaitan (fitur graf v2).",[878,8823,8825],{"id":8824},"menyiapkan-second-brain-di-cloudflare","Menyiapkan Second Brain di Cloudflare",[533,8827,8828,8845,8852,8859,8866,8873,8884,8890,8893,8900],{},[488,8829,4271,8830,8833,8834,8839,8840,8844],{},[495,8831,8832],{},"Deploy to Cloudflare"," pada halaman ",[444,8835,8838],{"href":8836,"rel":8837},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fsecond-brain-cloudflare",[448],"Github repo",". [[",[433,8841],{"alt":8842,"src":8843},"Halaman GitHub dengan tombol Deploy to Cloudflare yang disorot","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fdeploy-to-cloudflare-button.webp","]]",[488,8846,8847,8848],{},"Isi formulir Cloudflare Worker yang ditampilkan.\n",[433,8849],{"alt":8850,"src":8851},"Formulir konfigurasi deployment Cloudflare Workers","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-deployment-form.webp",[488,8853,8854,8855],{},"Masukkan '384' untuk Dimensions; pilih 'cosine' untuk Metric; lalu klik tombol Deploy.\n",[433,8856],{"alt":8857,"src":8858},"Tampilan pengaturan pembuatan database Cloudflare Vectorize","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-vectorize-configuration.webp",[488,8860,8861,8862],{},"Gambar berikut menunjukkan ringkasan dari Second Brain Anda di Cloudflare Worker:\n",[433,8863],{"alt":8864,"src":8865},"Dasbor ikhtisar dari worker Second Brain yang dideploy","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-second-brain-overview.webp",[488,8867,8868,8869],{},"Buka tab 'Settings', lalu klik ikon edit pada variabel 'AUTH_TOKEN' untuk membuat token keamanan:\n",[433,8870],{"alt":8871,"src":8872},"Pengaturan variabel Cloudflare Worker yang menyoroti AUTH_TOKEN","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-auth-token-settings.webp",[488,8874,8875,8876,8880],{},"Klik tautan 'Rotate' untuk memasukkan nilai baru: ",[433,8877],{"alt":8878,"src":8879},"Tampilan modifikasi dan rotasi variabel AUTH_TOKEN","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-auth-token-rotate.webp",[433,8881],{"alt":8882,"src":8883},"Memasukkan string acak yang dihasilkan ke kolom nilai AUTH_TOKEN","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-auth-token-value-input.webp",[488,8885,2985,8886,8889],{},[495,8887,8888],{},"openssl rand -base64 32"," di terminal macOS untuk menghasilkan nilai acak yang aman dan tempelkan di bidang input 'Value'.",[488,8891,8892],{},"Klik tombol 'Deploy' untuk menyimpan nilai baru dari variabel 'AUTH_TOKEN'.",[488,8894,8895,8896],{},"Buka URL worker Second Brain Anda di peramban web.\n",[433,8897],{"alt":8898,"src":8899},"Tampilan masuk Web UI Second Brain dengan input Bearer Token","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fsecond-brain-web-ui-login.webp",[488,8901,8902,8903,8906],{},"Masukkan 'AUTH_TOKEN' yang telah dibuat pada kolom input ",[495,8904,8905],{},"Bearer token"," dan klik tombol 'Connect' untuk masuk ke dashboard Web UI.",[878,8908,8910],{"id":8909},"mengintegrasikan-claude-desktop-via-mcp","Mengintegrasikan Claude Desktop via MCP",[533,8912,8913,8920,8927],{},[488,8914,8915,8916],{},"Klik 'Customize' pada pengaturan Claude Desktop.\n",[433,8917],{"alt":8918,"src":8919},"Antarmuka Claude Desktop yang menunjuk ke tombol Customize","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-customize-button.webp",[488,8921,8922,8923],{},"Klik 'Developer' untuk membuka dan mengedit file konfigurasi server MCP secara manual:\n",[433,8924],{"alt":8925,"src":8926},"Menu pengaturan Developer Claude Desktop untuk mengakses konfigurasi MCP","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-developer-menu.webp",[488,8928,8929,8930,8932,8933,888],{},"Tambahkan blok kode berikut ke bagian ",[495,8931,7594],{}," di file ",[495,8934,8935],{},"claude_desktop_config.json",[922,8937,8939],{"className":2903,"code":8938,"language":2905,"meta":425,"style":425},"    \"second-brain\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"mcp-remote\",\n        \"https:\u002F\u002F\u003Cyour-worker-url>\u002Fmcp\",\n        \"--header\",\n        \"Authorization: Bearer \u003Cyour-token>\"\n      ]\n    }\n",[495,8940,8941,8954,8972,8984,8994,9005,9016,9025,9029],{"__ignoreMap":425},[930,8942,8943,8945,8948,8950,8952],{"class":932,"line":933},[930,8944,7605],{"class":944},[930,8946,8947],{"class":1044},"second-brain",[930,8949,3692],{"class":944},[930,8951,579],{"class":940},[930,8953,2912],{"class":944},[930,8955,8956,8958,8960,8962,8964,8966,8968,8970],{"class":932,"line":1060},[930,8957,7618],{"class":944},[930,8959,7621],{"class":936},[930,8961,3692],{"class":944},[930,8963,888],{"class":944},[930,8965,3284],{"class":944},[930,8967,7630],{"class":1044},[930,8969,3692],{"class":944},[930,8971,7635],{"class":944},[930,8973,8974,8976,8978,8980,8982],{"class":932,"line":1067},[930,8975,7618],{"class":944},[930,8977,7642],{"class":936},[930,8979,3692],{"class":944},[930,8981,888],{"class":944},[930,8983,7649],{"class":944},[930,8985,8986,8988,8990,8992],{"class":932,"line":1074},[930,8987,7654],{"class":944},[930,8989,7657],{"class":1044},[930,8991,3692],{"class":944},[930,8993,7635],{"class":944},[930,8995,8996,8998,9001,9003],{"class":932,"line":1921},[930,8997,7654],{"class":944},[930,8999,9000],{"class":1044},"https:\u002F\u002F\u003Cyour-worker-url>\u002Fmcp",[930,9002,3692],{"class":944},[930,9004,7635],{"class":944},[930,9006,9007,9009,9012,9014],{"class":932,"line":1926},[930,9008,7654],{"class":944},[930,9010,9011],{"class":1044},"--header",[930,9013,3692],{"class":944},[930,9015,7635],{"class":944},[930,9017,9018,9020,9023],{"class":932,"line":1932},[930,9019,7654],{"class":944},[930,9021,9022],{"class":1044},"Authorization: Bearer \u003Cyour-token>",[930,9024,1953],{"class":944},[930,9026,9027],{"class":932,"line":2269},[930,9028,7733],{"class":944},[930,9030,9031],{"class":932,"line":1692},[930,9032,7738],{"class":944},[430,9034,9035,9039,9040],{},[433,9036],{"alt":9037,"src":9038},"JSON konfigurasi MCP Claude Desktop yang berisi server Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-mcp-config-json.webp","\n4. Mulai ulang Claude Desktop dan periksa daftar 'Local MCP servers'. Statusnya harus menunjukkan 'running' (sedang berjalan).\n",[433,9041],{"alt":9042,"src":9043},"Claude Desktop menampilkan status berjalan untuk server MCP Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-mcp-status-running.webp",[878,9045,9047],{"id":9046},"mengintegrasikan-claude-code-via-mcp","Mengintegrasikan Claude Code via MCP",[485,9049,9050],{},[488,9051,9052],{},"Jalankan perintah berikut untuk menambahkan server MCP baru:",[922,9054,9056],{"className":2298,"code":9055,"language":2300,"meta":425,"style":425},"claude mcp add --transport http second-brain https:\u002F\u002F\u003Cyour-worker-url>\u002Fmcp\n",[495,9057,9058],{"__ignoreMap":425},[930,9059,9060,9063,9066,9068,9071,9074,9077,9080,9082,9085,9088,9090],{"class":932,"line":933},[930,9061,9062],{"class":1040},"claude",[930,9064,9065],{"class":1044}," mcp",[930,9067,1054],{"class":1044},[930,9069,9070],{"class":1044}," --transport",[930,9072,9073],{"class":1044}," http",[930,9075,9076],{"class":1044}," second-brain",[930,9078,9079],{"class":1044}," https:\u002F\u002F",[930,9081,5572],{"class":944},[930,9083,9084],{"class":1044},"your-worker-ur",[930,9086,9087],{"class":940},"l",[930,9089,1247],{"class":944},[930,9091,9092],{"class":1044},"\u002Fmcp\n",[485,9094,9095,9101],{},[488,9096,9097,9098,461],{},"Claude Code akan mendeteksi bahwa endpoint memerlukan OAuth dan akan membuka halaman masuk di peramban web untuk memasukkan ",[495,9099,9100],{},"AUTH_TOKEN",[488,9102,9103,9104,7930,9107,9110,9111,461],{},"Buat file ",[495,9105,9106],{},"CLAUDE.md",[495,9108,9109],{},"~\u002F.claude"," dengan instruksi yang dijelaskan di ",[444,9112,9115],{"href":9113,"rel":9114},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare\u002Fblob\u002Fmain\u002FAI_Instructions\u002FCLAUDE_INSTRUCTIONS.md",[448],"CLAUDE_INSTRUCTIONS.md",[878,9117,9119],{"id":9118},"mengintegrasikan-gemini-cli-via-mcp","Mengintegrasikan Gemini CLI via MCP",[533,9121,9122],{},[488,9123,9124],{},"Tambahkan pengaturan server MCP berikut ke file '.\u002F.gemini\u002Fsettings.json' Anda:",[922,9126,9128],{"className":2903,"code":9127,"language":2905,"meta":425,"style":425},"    \"second-brain\": {\n      \"httpUrl\": \"https:\u002F\u002F\u003Cyour-worker-url>\u002Fmcp\",\n      \"oauth\": {\n        \"enabled\": true\n      }\n    }\n",[495,9129,9130,9142,9160,9172,9184,9188],{"__ignoreMap":425},[930,9131,9132,9134,9136,9138,9140],{"class":932,"line":933},[930,9133,7605],{"class":944},[930,9135,8947],{"class":1044},[930,9137,3692],{"class":944},[930,9139,579],{"class":940},[930,9141,2912],{"class":944},[930,9143,9144,9146,9148,9150,9152,9154,9156,9158],{"class":932,"line":1060},[930,9145,7618],{"class":944},[930,9147,7845],{"class":936},[930,9149,3692],{"class":944},[930,9151,888],{"class":944},[930,9153,3284],{"class":944},[930,9155,9000],{"class":1044},[930,9157,3692],{"class":944},[930,9159,7635],{"class":944},[930,9161,9162,9164,9166,9168,9170],{"class":932,"line":1067},[930,9163,7618],{"class":944},[930,9165,7864],{"class":936},[930,9167,3692],{"class":944},[930,9169,888],{"class":944},[930,9171,2942],{"class":944},[930,9173,9174,9176,9178,9180,9182],{"class":932,"line":1074},[930,9175,7654],{"class":944},[930,9177,7877],{"class":1040},[930,9179,3692],{"class":944},[930,9181,888],{"class":944},[930,9183,1377],{"class":944},[930,9185,9186],{"class":932,"line":1921},[930,9187,7888],{"class":944},[930,9189,9190],{"class":932,"line":1926},[930,9191,7738],{"class":944},[533,9193,9194],{"start":1060},[488,9195,9196],{},"Jalankan Gemini CLI.",[878,9198,9200],{"id":9199},"menguji-second-brain-di-agen-ai","Menguji Second Brain di Agen AI",[533,9202,9203,9213,9226],{},[488,9204,9205,9206,9208,9209],{},"Saat mendefinisikan palet warna merek sederhana di ",[441,9207,7547],{},", Second Brain tidak langsung dipanggil secara default.\n",[433,9210],{"alt":9211,"src":9212},"Pengujian pertama di Claude Desktop tanpa lapisan memori Second Brain yang aktif","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-first-run-brand-palette.webp",[488,9214,9215,9216,5405,9219,9221,9222],{},"Saat menggunakan kata kunci sederhana seperti 'remember', hanya alat bawaan lokal ",[495,9217,9218],{},"memory_user-edits",[441,9220,7547],{}," yang digunakan, bukan lapisan penyimpanan jarak jauh Second Brain.\n",[433,9223],{"alt":9224,"src":9225},"Claude Desktop beralih ke pengeditan pengguna bawaan lokal alih-alih Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-remember-built-in-tool-fallback.webp",[488,9227,9228,9229,9232],{},"Saat mengirim perintah berikut di ",[441,9230,9231],{},"Claude Code",", integrasi dengan Second Brain berhasil dipanggil:",[922,9234,9237],{"className":9235,"code":9236,"language":4639},[4637],"Remember Our brand palette uses `#1a1a2e` as primary, `#16213e` as secondary, and `#e94560` as accent. Never use pure black.\"\n",[495,9238,9236],{"__ignoreMap":425},[430,9240,9241,9245,9246,1366,9249,9253,9254,9257,9258,9260,9261,9265,9266,9269,9270,9253,9274],{},[433,9242],{"alt":9243,"src":9244},"Jendela terminal Claude Code menampilkan pemicuan sukses dari MCP Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-code-second-brain-mcp-called.webp","\n4. Verifikasi pengaturan warna baru yang disimpan di ",[441,9247,9248],{},"Second Brain di Cloudflare",[433,9250],{"alt":9251,"src":9252},"Memverifikasi kode warna merek yang disimpan pada Web UI database Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fsecond-brain-web-ui-color-verification.webp","\n- ",[898,9255,9256],{},"Claude Code dapat berfungsi secara otomatis karena file instruksi CLAUDE_INSTRUCTIONS.md berisi aturan yang mengarah pada kata kunci 'Second Brain'.","\n5. Untuk menggunakan integrasi ini di ",[441,9259,7547],{},", kata kunci 'Second Brain' harus disebutkan secara eksplisit dalam prompt Anda untuk memaksa penyimpanan atau pembacaan di lapisan memori persisten ini.\n",[433,9262],{"alt":9263,"src":9264},"Memicu Second Brain di Claude Desktop dengan menyebutkan kata kunci secara eksplisit","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-second-brain-explicit-trigger.webp","\n6. Hal yang sama berlaku untuk ",[441,9267,9268],{},"Gemini CLI",", Anda harus menyebutkan kata kunci 'Second Brain' untuk mengaktifkan alat MCP Second Brain.\n",[433,9271],{"alt":9272,"src":9273},"Jendela terminal Gemini CLI mendemonstrasikan panggilan sukses ke MCP Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fgemini-cli-second-brain-trigger.webp",[898,9275,9276],{},"Menambahkan instruksi serupa ke file GEMINI.md, seperti yang telah dilakukan pada CLAUDE_INSTRUCTIONS.md, akan mengaktifkan Second Brain di latar belakang tanpa harus menulis kata kunci secara manual.",[878,9278,9280],{"id":9279},"ekstensi-peramban-web","Ekstensi Peramban Web",[485,9282,9283,9286],{},[488,9284,9285],{},"Ekstensi tersedia untuk peramban web Chrome, Firefox, dan Microsoft Edge.",[488,9287,9288,9289],{},"Fitur ekstensi meliputi:\n",[485,9290,9291,9297,9303],{},[488,9292,9293,9296],{},[441,9294,9295],{},"Mengambil halaman saat ini"," — menyimpan judul dan URL halaman ke Second Brain.",[488,9298,9299,9302],{},[441,9300,9301],{},"Mengambil teks terpilih"," — pilih teks apa pun pada halaman sebelum mengklik ikon ekstensi; cuplikan tersebut akan disimpan bersama judul dan URL.",[488,9304,9305,9308,9309,9312],{},[441,9306,9307],{},"Menambahkan catatan cepat"," — ketik catatan atau gunakan ",[495,9310,9311],{},"#hashtags"," langsung di popup ekstensi sebelum menyimpan; hashtag akan diekstrak secara otomatis sebagai tag.",[878,9314,9316],{"id":9315},"sinkronisasi-pengetahuan-pribadi-dengan-plugin-obsidian","Sinkronisasi Pengetahuan Pribadi dengan Plugin Obsidian",[485,9318,9319,9322],{},[488,9320,9321],{},"Tersedia plugin Obsidian untuk menyinkronkan catatan dari Obsidian Vault Anda langsung ke Second Brain di Cloudflare.",[488,9323,9324],{},"Catatan dapat ditandai dengan tag khusus untuk disinkronkan ke penyimpanan persisten.",[2156,9326,9328],{"id":9327},"menginstal-plugin-obsidian","Menginstal Plugin Obsidian",[533,9330,9331,9338,9345,9352],{},[488,9332,9333,9334],{},"Buka Obsidian → Settings → Community Plugins\n",[433,9335],{"alt":9336,"src":9337},"Panel pengaturan Obsidian menavigasi ke bagian Community Plugins","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-settings-community-plugins.webp",[488,9339,9340,9341],{},"Klik tombol 'Browse'.\n",[433,9342],{"alt":9343,"src":9344},"Halaman pencarian plugin komunitas Obsidian menampilkan tombol Browse","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-community-plugins-browse.webp",[488,9346,9347,9348],{},"Cari 'Second Brain Sync'.\n",[433,9349],{"alt":9350,"src":9351},"Mencari plugin Second Brain Sync di toko plugin Obsidian","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-community-plugins-search-second-brain.webp",[488,9353,9354,9355],{},"Klik tombol 'Install' lalu 'Enable'.\n",[433,9356],{"alt":9357,"src":9358},"Menginstal dan mengaktifkan plugin Second Brain Sync di Obsidian","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-plugin-install-and-enable.webp",[2156,9360,9362],{"id":9361},"mengonfigurasi-plugin-obsidian","Mengonfigurasi Plugin Obsidian",[533,9364,9365,9368,9375,9382,9389,9396],{},[488,9366,9367],{},"Buka Obsidian → Settings → Second Brain Sync",[488,9369,9370,9371],{},"Masukkan 'URL' dan 'Auth token' Anda.\n",[433,9372],{"alt":9373,"src":9374},"Memasukkan URL Worker dan Token Otorisasi di pengaturan plugin Obsidian","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-plugin-configuration-credentials.webp",[488,9376,9377,9378],{},"Klik tombol 'Test' untuk memverifikasi koneksi.\n",[433,9379],{"alt":9380,"src":9381},"Pengujian koneksi plugin Obsidian menunjukkan verifikasi sukses","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-plugin-connection-test-success.webp",[488,9383,9384,9385],{},"Konfigurasikan perilaku sinkronisasi. Atur tag sinkronisasi di 'Sync tag' dan aktifkan 'Auto-sync on save'.\n",[433,9386],{"alt":9387,"src":9388},"Mengonfigurasi Sync Tag dan mengaktifkan sinkronisasi otomatis saat menyimpan di Obsidian","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-plugin-sync-behavior-settings.webp",[488,9390,9391,9392],{},"Buat catatan di Obsidian dengan tag 'second-brain', sesuai dengan yang dikonfigurasi di 'Sync tag'.\n",[433,9393],{"alt":9394,"src":9395},"Membuat catatan Obsidian baru dengan tag second-brain untuk sinkronisasi","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-note-with-sync-tag.webp",[488,9397,9398,9399],{},"Catatan tersebut kini telah disimpan dan disinkronkan ke Second Brain yang diterapkan di Cloudflare.\n",[433,9400],{"alt":9401,"src":9402},"Memverifikasi catatan Obsidian yang sukses disinkronkan pada Web UI Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fsecond-brain-web-ui-synced-note-verification.webp",[474,9404,2568],{"id":2567},[430,9406,9407],{},"Second Brain menawarkan solusi sumber terbuka yang cerdas untuk mengatasi salah satu masalah paling membuat frustrasi dalam AI: ketiadaan memori persisten. Dengan memadukan proyek ini dengan infrastruktur Cloudflare yang skalabel, kita mendapatkan lapisan memori semantik mandiri yang terdistribusi secara global dengan latensi sangat rendah. Dukungan MCP yang tertanam di Second Brain membuat memori ini sepenuhnya portabel di berbagai agen AI.",[430,9409,9410],{},"Plugin Obsidian memperluas arsitektur ini dengan menghubungkan catatan pribadi di dalam vault dengan logika berpikir AI. Catatan mentah Anda diubah menjadi konteks terstruktur yang dapat dipahami dan dipanggil secara semantik oleh agen AI kapan saja.",[430,9412,9413],{},"Dengan menyatukan self-hosting, pencarian semantik vektor, dan standar integrasi berbasis MCP; Second Brain membuktikan dirinya bukan sekadar tempat penyimpanan memori, melainkan fondasi praktis untuk membangun ekosistem AI yang andal.",[474,9415,1608],{"id":1607},[485,9417,9418,9424,9430,9437,9444],{},[488,9419,9420],{},[444,9421,9422],{"href":9422,"rel":9423},"https:\u002F\u002Fwww.thesecondbrain.dev\u002F",[448],[488,9425,9426],{},[444,9427,9428],{"href":9428,"rel":9429},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare\u002Fwiki\u002FHow-It-Works",[448],[488,9431,9432],{},[444,9433,9436],{"href":9434,"rel":9435},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare\u002Fwiki\u002FConnect-to-AI-Clients",[448],"Connect to AI Clients",[488,9438,9439],{},[444,9440,9443],{"href":9441,"rel":9442},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare\u002Fwiki\u002FObsidian-Plugin",[448],"Second Brain Obsidian Plugin",[488,9445,9446],{},[444,9447,9448],{"href":9448,"rel":9449},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-obsidian-plugin",[448],[1636,9451,9452],{},"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 pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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}",{"title":425,"searchDepth":1060,"depth":1067,"links":9454},[9455,9456,9457,9469,9470],{"id":8718,"depth":1060,"text":8719},{"id":8728,"depth":1060,"text":8729},{"id":8749,"depth":1060,"text":8750,"children":9458},[9459,9460,9461,9462,9463,9464,9465],{"id":8824,"depth":1067,"text":8825},{"id":8909,"depth":1067,"text":8910},{"id":9046,"depth":1067,"text":9047},{"id":9118,"depth":1067,"text":9119},{"id":9199,"depth":1067,"text":9200},{"id":9279,"depth":1067,"text":9280},{"id":9315,"depth":1067,"text":9316,"children":9466},[9467,9468],{"id":9327,"depth":1074,"text":9328},{"id":9361,"depth":1074,"text":9362},{"id":2567,"depth":1060,"text":2568},{"id":1607,"depth":1060,"text":1608},[9472,1656],"cloudflare","2026-08-07","Pelajari cara membangun sistem memori AI persisten dan mandiri di Cloudflare menggunakan Second Brain dan MCP. Berbagi konteks di Claude dan Obsidian.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002FID-Use-Cloudflare-as-AI-memory.webp","Sistem memori AI persisten dan mandiri yang dideploy di Cloudflare Workers dan Vectorize dengan dukungan MCP dan sinkronisasi Obsidian.",{"schemaOrg":9478,"robots":1690,"sitemap":9481},[9479],{"@type":1667,"headline":9480,"description":9474},"Sistem Memori AI Mandiri dengan Cloudflare & MCP",{"lastmod":9473},{"title":9480,"description":9474,"ogTitle":8713,"ogDescription":9474,"twitterTitle":8713,"twitterDescription":9474},"id\u002Farticle\u002Fuse-cloudflare-as-ai-memory",[6258,6944,9485,8740,4094],"Memori AI","9yZS7dESNmDcB1oP9vh_bLPfFb6ffNM8_A7ZXzmLTj8",{"id":9488,"title":2515,"author":425,"body":9489,"category":10002,"date":10003,"description":10004,"extension":1661,"image":10005,"imageAlt":10006,"isPublished":1063,"meta":10007,"minRead":1074,"navigation":1063,"path":169,"seo":10011,"stem":10012,"tags":10013,"updatedAt":1699,"__hash__":10016},"article\u002Fid\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac.md",{"type":427,"value":9490,"toc":9995},[9491,9495,9498,9505,9509,9515,9518,9521,9525,9528,9535,9551,9845,9955,9957,9960,9962,9992],[474,9492,9494],{"id":9493},"apa-itu-cloudflare-warp","Apa Itu Cloudflare WARP?",[430,9496,9497],{},"Cloudflare WARP adalah aplikasi sisi klien (client-side) yang merutekan lalu lintas perangkat tertentu melalui jaringan global Cloudflare, bukan langsung menuju ke internet publik.",[430,9499,9500,9501,9504],{},"Aplikasi ini membuat terowongan terenkripsi yang dibangun di atas protokol ",[441,9502,9503],{},"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.",[474,9506,9508],{"id":9507},"mengapa-kita-membutuhkan-cloudflare-warp","Mengapa Kita Membutuhkan Cloudflare WARP?",[430,9510,9511,9512,461],{},"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 ",[441,9513,9514],{},"Zero Trust Network Access (ZTNA)",[430,9516,9517],{},"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.",[430,9519,9520],{},"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.",[474,9522,9524],{"id":9523},"mendukung-beberapa-profil-warp-pada-satu-perangkat","Mendukung Beberapa Profil WARP pada Satu Perangkat",[430,9526,9527],{},"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.",[430,9529,9530,9531,9534],{},"Untuk mencapai hal ini di macOS, kita dapat menggunakan file profil MDM ",[495,9532,9533],{},".mobileconfig"," untuk menentukan dan mendaftarkan lingkungan WARP yang berbeda.",[485,9536,9537,9548],{},[488,9538,9539,9547],{},[444,9540,9543,9544,9546],{"href":9541,"rel":9542},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fstatic\u002Fmdm\u002Fmultiple-orgs\u002FCloudflareWARP.mobileconfig",[448],"Download a sample ",[495,9545,9533],{}," file"," langsung dari Cloudflare.",[488,9549,9550],{},"Di bawah ini adalah contoh tampilan konfigurasi tersebut:",[922,9552,9556],{"className":9553,"code":9554,"language":9555,"meta":425,"style":425},"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",[495,9557,9558,9563,9568,9573,9578,9583,9588,9593,9598,9603,9608,9613,9618,9623,9628,9633,9638,9643,9648,9653,9658,9663,9668,9673,9678,9683,9688,9693,9697,9701,9706,9710,9715,9719,9725,9731,9737,9743,9749,9755,9761,9767,9773,9779,9785,9791,9797,9803,9809,9815,9821,9827,9833,9839],{"__ignoreMap":425},[930,9559,9560],{"class":932,"line":933},[930,9561,9562],{},"\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",[930,9564,9565],{"class":932,"line":1060},[930,9566,9567],{},"\u003C!DOCTYPE plist PUBLIC \"-\u002F\u002FApple\u002F\u002FDTD PLIST 1.0\u002F\u002FEN\" \"http:\u002F\u002Fwww.apple.com\u002FDTDs\u002FPropertyList-1.0.dtd\">\n",[930,9569,9570],{"class":932,"line":1067},[930,9571,9572],{},"\u003Cplist version=\"1.0\">\n",[930,9574,9575],{"class":932,"line":1074},[930,9576,9577],{},"\u003Cdict>\n",[930,9579,9580],{"class":932,"line":1921},[930,9581,9582],{},"  \u003Ckey>PayloadContent\u003C\u002Fkey>\n",[930,9584,9585],{"class":932,"line":1926},[930,9586,9587],{},"  \u003Carray>\n",[930,9589,9590],{"class":932,"line":1932},[930,9591,9592],{},"    \u003Cdict>\n",[930,9594,9595],{"class":932,"line":2269},[930,9596,9597],{},"      \u003Ckey>PayloadDisplayName\u003C\u002Fkey>\n",[930,9599,9600],{"class":932,"line":1692},[930,9601,9602],{},"      \u003Cstring>Warp Configuration\u003C\u002Fstring>\n",[930,9604,9605],{"class":932,"line":2375},[930,9606,9607],{},"      \u003Ckey>PayloadIdentifier\u003C\u002Fkey>\n",[930,9609,9610],{"class":932,"line":2381},[930,9611,9612],{},"      \u003Cstring>com.cloudflare.warp.CB8B22D4-50E1-48E8-8874-A7594627013A\u003C\u002Fstring>\n",[930,9614,9615],{"class":932,"line":2387},[930,9616,9617],{},"      \u003Ckey>PayloadOrganization\u003C\u002Fkey>\n",[930,9619,9620],{"class":932,"line":2392},[930,9621,9622],{},"      \u003Cstring>Cloudflare Ltd.\u003C\u002Fstring>\n",[930,9624,9625],{"class":932,"line":2398},[930,9626,9627],{},"      \u003Ckey>PayloadType\u003C\u002Fkey>\n",[930,9629,9630],{"class":932,"line":3353},[930,9631,9632],{},"      \u003Cstring>com.cloudflare.warp\u003C\u002Fstring>\n",[930,9634,9635],{"class":932,"line":3364},[930,9636,9637],{},"      \u003Ckey>PayloadUUID\u003C\u002Fkey>\n",[930,9639,9640],{"class":932,"line":3369},[930,9641,9642],{},"      \u003Cstring>CB8B22D4-50E1-48E8-8874-A7594627013A\u003C\u002Fstring>\n",[930,9644,9645],{"class":932,"line":3377},[930,9646,9647],{},"      \u003Ckey>PayloadVersion\u003C\u002Fkey>\n",[930,9649,9650],{"class":932,"line":3905},[930,9651,9652],{},"      \u003Cinteger>1\u003C\u002Finteger>\n",[930,9654,9655],{"class":932,"line":3911},[930,9656,9657],{},"      \u003Ckey>configs\u003C\u002Fkey>\n",[930,9659,9660],{"class":932,"line":3920},[930,9661,9662],{},"      \u003Carray>\n",[930,9664,9665],{"class":932,"line":4569},[930,9666,9667],{},"        \u003Cdict>\n",[930,9669,9670],{"class":932,"line":5023},[930,9671,9672],{},"          \u003Ckey>organization\u003C\u002Fkey>\n",[930,9674,9675],{"class":932,"line":5032},[930,9676,9677],{},"          \u003Cstring>your-team-name-1\u003C\u002Fstring>\n",[930,9679,9680],{"class":932,"line":5040},[930,9681,9682],{},"          \u003Ckey>display_name\u003C\u002Fkey>\n",[930,9684,9685],{"class":932,"line":5048},[930,9686,9687],{},"          \u003Cstring>Team 1\u003C\u002Fstring>\n",[930,9689,9690],{"class":932,"line":5053},[930,9691,9692],{},"        \u003C\u002Fdict>\n",[930,9694,9695],{"class":932,"line":5060},[930,9696,9667],{},[930,9698,9699],{"class":932,"line":5068},[930,9700,9672],{},[930,9702,9703],{"class":932,"line":5076},[930,9704,9705],{},"          \u003Cstring>your-team-name-2\u003C\u002Fstring>\n",[930,9707,9708],{"class":932,"line":5087},[930,9709,9682],{},[930,9711,9712],{"class":932,"line":5095},[930,9713,9714],{},"          \u003Cstring>Team 2\u003C\u002Fstring>\n",[930,9716,9717],{"class":932,"line":5102},[930,9718,9692],{},[930,9720,9722],{"class":932,"line":9721},34,[930,9723,9724],{},"      \u003C\u002Farray>\n",[930,9726,9728],{"class":932,"line":9727},35,[930,9729,9730],{},"    \u003C\u002Fdict>\n",[930,9732,9734],{"class":932,"line":9733},36,[930,9735,9736],{},"  \u003C\u002Farray>\n",[930,9738,9740],{"class":932,"line":9739},37,[930,9741,9742],{},"  \u003Ckey>PayloadDisplayName\u003C\u002Fkey>\n",[930,9744,9746],{"class":932,"line":9745},38,[930,9747,9748],{},"  \u003Cstring>Cloudflare WARP\u003C\u002Fstring>\n",[930,9750,9752],{"class":932,"line":9751},39,[930,9753,9754],{},"  \u003Ckey>PayloadIdentifier\u003C\u002Fkey>\n",[930,9756,9758],{"class":932,"line":9757},40,[930,9759,9760],{},"  \u003Cstring>cloudflare_warp\u003C\u002Fstring>\n",[930,9762,9764],{"class":932,"line":9763},41,[930,9765,9766],{},"  \u003Ckey>PayloadOrganization\u003C\u002Fkey>\n",[930,9768,9770],{"class":932,"line":9769},42,[930,9771,9772],{},"  \u003Cstring>Cloudflare, Ltd.\u003C\u002Fstring>\n",[930,9774,9776],{"class":932,"line":9775},43,[930,9777,9778],{},"  \u003Ckey>PayloadRemovalDisallowed\u003C\u002Fkey>\n",[930,9780,9782],{"class":932,"line":9781},44,[930,9783,9784],{},"  \u003Cfalse\u002F>\n",[930,9786,9788],{"class":932,"line":9787},45,[930,9789,9790],{},"  \u003Ckey>PayloadScope\u003C\u002Fkey>\n",[930,9792,9794],{"class":932,"line":9793},46,[930,9795,9796],{},"  \u003Cstring>System\u003C\u002Fstring>\n",[930,9798,9800],{"class":932,"line":9799},47,[930,9801,9802],{},"  \u003Ckey>PayloadType\u003C\u002Fkey>\n",[930,9804,9806],{"class":932,"line":9805},48,[930,9807,9808],{},"  \u003Cstring>Configuration\u003C\u002Fstring>\n",[930,9810,9812],{"class":932,"line":9811},49,[930,9813,9814],{},"  \u003Ckey>PayloadUUID\u003C\u002Fkey>\n",[930,9816,9818],{"class":932,"line":9817},50,[930,9819,9820],{},"  \u003Cstring>2B7763B8-64F6-41EB-AA5E-7761651B8131\u003C\u002Fstring>\n",[930,9822,9824],{"class":932,"line":9823},51,[930,9825,9826],{},"  \u003Ckey>PayloadVersion\u003C\u002Fkey>\n",[930,9828,9830],{"class":932,"line":9829},52,[930,9831,9832],{},"  \u003Cinteger>1\u003C\u002Finteger>\n",[930,9834,9836],{"class":932,"line":9835},53,[930,9837,9838],{},"\u003C\u002Fdict>\n",[930,9840,9842],{"class":932,"line":9841},54,[930,9843,9844],{},"\u003C\u002Fplist>\n",[485,9846,9847,9857,9868,9878,9884,9900,9912,9931,9946],{},[488,9848,9849,9850,575,9853,9856],{},"Ganti ",[495,9851,9852],{},"your-team-name-1",[495,9854,9855],{},"your-team-name-2"," dengan nama tim Cloudflare Zero Trust Anda masing-masing.",[488,9858,2985,9859,9862,9863,8932,9866,461],{},[495,9860,9861],{},"uuidgen"," di Terminal Anda untuk menghasilkan UUID unik, lalu gunakan untuk mengganti nilai tempat penampung (placeholder) ",[495,9864,9865],{},"PayloadUUID",[495,9867,9533],{},[488,9869,9870,9871,9874,9875,9877],{},"Pastikan string ",[495,9872,9873],{},"PayloadIdentifier"," juga berisi ",[495,9876,9865],{}," yang diperbarui agar profil tetap berbeda.",[488,9879,9880,9881,9883],{},"Simpan file ",[495,9882,9533],{}," yang telah Anda edit.",[488,9885,3935,9886,9889,9890,9893,9894,9896],{},[441,9887,9888],{},"Pengaturan Sistem"," di Mac Anda, cari ",[441,9891,9892],{},"Profil"," (Profiles), lalu pilih.",[1877,9895],{},[433,9897],{"alt":9898,"src":9899},"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",[488,9901,4271,9902,9905,9906,9908],{},[441,9903,9904],{},"Instal, lihat, atau hapus..."," (Install, view or remove...) untuk mulai menambahkan profil konfigurasi baru Anda.",[1877,9907],{},[433,9909],{"alt":9910,"src":9911},"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",[488,9913,9914,9915,9917,9918,9920,9921,9923,9927],{},"Klik ikon ",[441,9916,713],{}," (plus) di sudut kiri bawah dan pilih file ",[495,9919,9533],{}," yang telah Anda simpan.",[1877,9922],{},[433,9924],{"alt":9925,"src":9926},"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",[433,9928],{"alt":9929,"src":9930},"Memilih file .mobileconfig di macOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002Fmacos-select-mobileconfig-file.webp",[488,9932,9933,9934,3053,9936,9939,9940,9942],{},"Pilih ",[441,9935,1715],{},[441,9937,9938],{},"Instal"," (Install) untuk menerapkan konfigurasi.",[1877,9941],{},[433,9943],{"alt":9944,"src":9945},"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",[488,9947,9948,9949,9951],{},"Mulai ulang klien Cloudflare WARP Anda. Sekarang Anda akan melihat pengalih multi-profil di antarmuka pengguna:",[1877,9950],{},[433,9952],{"alt":9953,"src":9954},"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",[474,9956,2568],{"id":2567},[430,9958,9959],{},"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.",[474,9961,4027],{"id":1607},[485,9963,9964,9971,9978,9985],{},[488,9965,9966],{},[444,9967,9970],{"href":9968,"rel":9969},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fteam-and-resources\u002Fdevices\u002Fcloudflare-one-client\u002Fdeployment\u002Fmdm-deployment\u002F#prepare-file-for-mdm-deployment",[448],"Managed Deployment Preparation",[488,9972,9973],{},[444,9974,9977],{"href":9975,"rel":9976},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fteam-and-resources\u002Fdevices\u002Fcloudflare-one-client\u002Fdeployment\u002Fmdm-deployment\u002Fswitch-organizations\u002F",[448],"Switch Between Zero Trust Organizations",[488,9979,9980],{},[444,9981,9984],{"href":9982,"rel":9983},"https:\u002F\u002Fblog.cloudflare.com\u002Fintroducing-warp-connector-paving-the-path-to-any-to-any-connectivity-2\u002F",[448],"Introducing WARP Connector: Paving the Path to Any-to-Any Connectivity",[488,9986,9987],{},[444,9988,9991],{"href":9989,"rel":9990},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fteam-and-resources\u002Fdevices\u002Fcloudflare-one-client\u002F",[448],"Cloudflare One Client Documentation",[1636,9993,9994],{},"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":425,"searchDepth":1060,"depth":1067,"links":9996},[9997,9998,9999,10000,10001],{"id":9493,"depth":1060,"text":9494},{"id":9507,"depth":1060,"text":9508},{"id":9523,"depth":1060,"text":9524},{"id":2567,"depth":1060,"text":2568},{"id":1607,"depth":1060,"text":4027},[2601,9472],"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":10008,"robots":1690,"sitemap":10010},[10009],{"@type":1669,"headline":2515,"description":10004},{"lastmod":10003},{"title":10006,"description":10004,"ogTitle":2515,"ogDescription":10004,"twitterTitle":2515,"twitterDescription":10004},"id\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",[10014,1715,10015,2644],"macOS","MDM","g75vUIN1mRvIdprX3WwNzBHE5-tIZ2ZSJhOV0EsNCBM",{"id":10018,"title":8314,"author":425,"body":10019,"category":10398,"date":10399,"description":10400,"extension":1661,"image":10401,"imageAlt":10402,"isPublished":1063,"meta":10403,"minRead":1074,"navigation":1063,"path":145,"seo":10407,"stem":10408,"tags":10409,"updatedAt":1699,"__hash__":10413},"article\u002Fid\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them.md",{"type":427,"value":10020,"toc":10388},[10021,10025,10035,10046,10107,10113,10117,10120,10129,10135,10139,10193,10204,10210,10213,10269,10273,10280,10287,10290,10301,10305,10349,10352,10369,10371,10382,10385],[474,10022,10024],{"id":10023},"apa-itu-skill-agen-ai","Apa Itu Skill Agen AI?",[430,10026,10027,10028,10031,10032,10034],{},"Skill agen (agent skill) adalah ",[441,10029,10030],{},"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 ",[495,10033,8310],{}," dan dapat menyertakan file lain yang diperlukan untuk tugas tersebut, seperti dokumen referensi, templat, atau skrip yang dapat dieksekusi.",[430,10036,10037,10038,10045],{},"Mari kita ambil skill ",[444,10039,10042],{"href":10040,"rel":10041},"https:\u002F\u002Fgithub.com\u002Fmattpocock\u002Fskills\u002Fblob\u002F733d312884b3878a9a9cff693c5886943753a741\u002Fskills\u002Fproductivity\u002Fgrill-me\u002FSKILL.md",[448],[495,10043,10044],{},"grill-me"," sebagai contoh:",[922,10047,10049],{"className":2201,"code":10048,"language":2203,"meta":425,"style":425},"---\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",[495,10050,10051,10056,10066,10076,10080,10084,10089,10093,10098,10102],{"__ignoreMap":425},[930,10052,10053],{"class":932,"line":933},[930,10054,10055],{"class":1040},"---\n",[930,10057,10058,10061,10063],{"class":932,"line":1060},[930,10059,10060],{"class":1352},"name",[930,10062,888],{"class":944},[930,10064,10065],{"class":1044}," grill-me\n",[930,10067,10068,10071,10073],{"class":932,"line":1067},[930,10069,10070],{"class":1352},"description",[930,10072,888],{"class":944},[930,10074,10075],{"class":1044}," 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",[930,10077,10078],{"class":932,"line":1074},[930,10079,10055],{"class":1040},[930,10081,10082],{"class":932,"line":1921},[930,10083,1064],{"emptyLinePlaceholder":1063},[930,10085,10086],{"class":932,"line":1926},[930,10087,10088],{"class":1044},"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",[930,10090,10091],{"class":932,"line":1932},[930,10092,1064],{"emptyLinePlaceholder":1063},[930,10094,10095],{"class":932,"line":2269},[930,10096,10097],{"class":1044},"Ask the questions one at a time.\n",[930,10099,10100],{"class":932,"line":1692},[930,10101,1064],{"emptyLinePlaceholder":1063},[930,10103,10104],{"class":932,"line":2375},[930,10105,10106],{"class":1044},"If a question can be answered by exploring the codebase, explore the codebase instead.\n",[430,10108,10109,10110,10112],{},"File ",[495,10111,8310],{}," berisi blok kecil metadata dan isi instruksi. Metadata terdiri dari nama dan deskripsi skill, yang dimuat oleh agen AI saat pertama kali dijalankan.",[474,10114,10116],{"id":10115},"bagaimana-cara-kerja-skill-agen-ai-progressive-disclosure","Bagaimana Cara Kerja Skill Agen AI: Progressive Disclosure",[430,10118,10119],{},"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.",[430,10121,10122,10123,10128],{},"Mari kita lihat bagaimana skill ",[444,10124,10126],{"href":10040,"rel":10125},[448],[495,10127,10044],{}," digunakan.",[430,10130,10131],{},[433,10132],{"alt":10133,"src":10134},"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",[878,10136,10138],{"id":10137},"langkah-demi-langkah","Langkah demi Langkah",[533,10140,10141,10147,10153,10159,10165,10177,10187],{},[488,10142,10143,10146],{},[441,10144,10145],{},"Permintaan (Request)"," — Pengguna meminta sesuatu kepada agen (\"uji ketahanan desain alur kerja saya\").",[488,10148,10149,10152],{},[441,10150,10151],{},"Prompt pemilihan (Selection prompt)"," — Permintaan pengguna, bersama dengan deskripsi dari semua skill yang tersedia, dikirim ke LLM.",[488,10154,10155,10158],{},[441,10156,10157],{},"LLM memilih"," — LLM membandingkan permintaan dengan setiap deskripsi dan mengembalikan skill yang cocok.",[488,10160,10161,10164],{},[441,10162,10163],{},"Konfirmasi"," — Agen menampilkan skill yang diusulkan kepada pengguna untuk dikonfirmasi (atau ditolak\u002Fdisesuaikan).",[488,10166,10167,10170,10171,10174,10175,461],{},[441,10168,10169],{},"Instruksi dimuat"," — Agen mengambil instruksi ",[898,10172,10173],{},"lengkap"," untuk skill yang telah dikonfirmasi: isi dari file ",[495,10176,8310],{},[488,10178,10179,10182,10183,10186],{},[441,10180,10181],{},"Prompt eksekusi (Execution prompt)"," — Permintaan pengguna ",[441,10184,10185],{},"ditambah instruksi skill yang dipilih"," dikirim ke LLM.",[488,10188,10189,10192],{},[441,10190,10191],{},"Respons"," — LLM menghasilkan output, yaitu pertanyaan pengujian pertama.",[430,10194,10195,10196,10203],{},"Sekarang mari gunakan ",[444,10197,10200],{"href":10198,"rel":10199},"https:\u002F\u002Fgithub.com\u002Fcoleam00\u002Fexcalidraw-diagram-skill",[448],[495,10201,10202],{},"excalidraw-diagram-skill"," untuk mengilustrasikan bagaimana skill yang memiliki dokumen referensi digunakan:",[430,10205,10206],{},[433,10207],{"alt":10208,"src":10209},"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",[878,10211,10138],{"id":10212},"langkah-demi-langkah-1",[533,10214,10215,10220,10226,10235,10239,10252,10260],{},[488,10216,10217,10219],{},[441,10218,10145],{}," — Pengguna meminta sesuatu kepada agen (\"gambarkan alur kerja proses deployment\").",[488,10221,10222,10225],{},[441,10223,10224],{},"Prompt pemilihan"," — Permintaan pengguna, bersama dengan deskripsi semua skill yang tersedia, dikirim ke LLM.",[488,10227,10228,10230,10231,10234],{},[441,10229,10157],{}," — LLM membandingkan permintaan dengan setiap deskripsi dan mengembalikan skill yang cocok. Di sini, \"gambarkan alur kerja\" cocok dengan deskripsi ",[495,10232,10233],{},"excalidraw-diagram",", sehingga skill tersebut dipilih.",[488,10236,10237,10164],{},[441,10238,10163],{},[488,10240,10241,10170,10243,10245,10246,10248,10249,10251],{},[441,10242,10169],{},[898,10244,10173],{}," untuk skill yang telah dikonfirmasi: isi ",[495,10247,8310],{}," beserta file referensi lainnya (untuk ",[495,10250,10233],{},", ini mencakup palet warna, skema JSON, dan templat elemen).",[488,10253,10254,10182,10257,10259],{},[441,10255,10256],{},"Prompt eksekusi",[441,10258,10185],{}," dikirim ke LLM. Model sekarang memiliki metodologi mendalam yang dibutuhkannya.",[488,10261,10262,10264,10265,10268],{},[441,10263,10191],{}," — LLM menghasilkan output (file JSON ",[495,10266,10267],{},".excalidraw","), yang kemudian dikembalikan oleh agen kepada pengguna.",[474,10270,10272],{"id":10271},"skill-agen-ai-vs-tools-dan-mcp","Skill Agen AI vs. Tools dan MCP",[430,10274,10275,10276,10279],{},"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 (",[898,10277,10278],{},"know-how",") agen untuk menyelesaikan suatu tugas.",[430,10281,10282,10283,10286],{},"Sebuah MCP seperti ",[444,10284,10285],{"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.",[430,10288,10289],{},"Beberapa skenario penggunaan skill meliputi:",[485,10291,10292,10295,10298],{},[488,10293,10294],{},"Alur kerja multi-langkah (multi-step workflows)",[488,10296,10297],{},"Pemrosesan dokumen, seperti mengekstrak data dari PDF",[488,10299,10300],{},"Standarisasi pembuatan kode (code-generation)",[474,10302,10304],{"id":10303},"cara-membuat-skill-agen-ai","Cara Membuat Skill Agen AI",[533,10306,10307,10317,10330,10339],{},[488,10308,10309,10312,10313,10316],{},[441,10310,10311],{},"Buat folder"," dengan nama yang mewakili skill tersebut (misalnya ",[495,10314,10315],{},"netsuite-operation-report\u002F",").",[488,10318,10319,10324,10325,741,10327,10329],{},[441,10320,10321,10322],{},"Tulis ",[495,10323,8310],{}," dengan menyertakan ",[495,10326,10060],{},[495,10328,10070],{}," yang tajam, dan isi instruksi yang ringkas (di bawah 200 kata).",[488,10331,10332,10335,10336,10338],{},[441,10333,10334],{},"Tambahkan aset\u002Fsumber daya"," yang dibutuhkan tugas tersebut — dokumen referensi, templat, skrip. Jaga agar ",[495,10337,8310],{}," tetap pendek dan buat tautan ke detailnya.",[488,10340,10341,10344,10345,10348],{},[441,10342,10343],{},"Instal skill"," di tempat yang dapat ditemukan oleh agen. Rujuk ke ",[444,10346,10347],{"href":359},"Sentralisasi Skill untuk Agen AI"," untuk informasi cara mengelola skill di berbagai agen.",[430,10350,10351],{},"Beberapa tips menulis skill yang baik:",[485,10353,10354,10357,10363,10366],{},[488,10355,10356],{},"Tulis deskripsi untuk pemicu sistem (trigger), bukan untuk dibaca manusia.",[488,10358,10359,10360,10362],{},"Jaga agar ",[495,10361,8310],{}," tetap ramping — di bawah 200 kata. Letakkan kasus umum di bagian isi, dan biarkan kasus khusus berada di dokumen referensi.",[488,10364,10365],{},"Gunakan skrip untuk hal-hal yang bersifat deterministik. Jangan meminta LLM melakukan perhitungan aritmatika.",[488,10367,10368],{},"Gunakan versi. Lakukan commit ke git.",[474,10370,2568],{"id":2567},[430,10372,10373,10374,10377,10378,10381],{},"Berbeda dengan tools dan MCP yang mendefinisikan ",[898,10375,10376],{},"apa yang harus dihubungkan",", skill agen mengemas ",[898,10379,10380],{},"bagaimana cara melakukan pekerjaan",". Keduanya adalah pelengkap penting, bukan pengganti satu sama lain.",[430,10383,10384],{},"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.",[1636,10386,10387],{},"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":425,"searchDepth":1060,"depth":1067,"links":10389},[10390,10391,10395,10396,10397],{"id":10023,"depth":1060,"text":10024},{"id":10115,"depth":1060,"text":10116,"children":10392},[10393,10394],{"id":10137,"depth":1067,"text":10138},{"id":10212,"depth":1067,"text":10138},{"id":10271,"depth":1060,"text":10272},{"id":10303,"depth":1060,"text":10304},{"id":2567,"depth":1060,"text":2568},[1656],"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.","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":10404,"robots":1690,"sitemap":10406},[10405],{"@type":1669,"headline":8314,"description":10400},{"lastmod":10399},{"title":10402,"description":10400,"ogTitle":8314,"ogDescription":10400,"twitterTitle":8314,"twitterDescription":10400},"id\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",[1698,10410,10411,10412],"Keahlian Agen","Alur Kerja yang Dapat Digunakan Kembali","Tutorial AI","UBcL6WjIce5K5DByxI6GshOgI77Q1AiBfEbFA11RXeo",{"id":10415,"title":1725,"author":425,"body":10416,"category":11011,"date":11012,"description":11013,"extension":1661,"image":11014,"imageAlt":11015,"isPublished":1063,"meta":11016,"minRead":1921,"navigation":1063,"path":157,"seo":11030,"stem":11032,"tags":11033,"updatedAt":1699,"__hash__":11037},"article\u002Fid\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server.md",{"type":427,"value":10417,"toc":11000},[10418,10422,10425,10428,10432,10436,10439,10452,10458,10461,10486,10493,10520,10526,10531,10545,10557,10563,10568,10584,10588,10591,10610,10616,10619,10630,10640,10651,10682,10686,10696,10705,10715,10728,10735,10745,10751,10779,10795,10799,10805,10817,10822,10855,10859,10862,10876,10882,10945,10948,10992,10994,10997],[474,10419,10421],{"id":10420},"mengapa-menghos-hermes-agent-di-vps-remote","Mengapa Menghos Hermes Agent di VPS Remote?",[430,10423,10424],{},"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.",[430,10426,10427],{},"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.",[474,10429,10431],{"id":10430},"cara-mengonfigurasi-hermes-agent-di-vps-linux","Cara Mengonfigurasi Hermes Agent di VPS Linux",[878,10433,10435],{"id":10434},"langkah-1-hubungkan-ke-vps-anda","Langkah 1: Hubungkan ke VPS Anda",[430,10437,10438],{},"Buka terminal dan lakukan SSH ke mesin remote Anda:",[922,10440,10442],{"className":1031,"code":10441,"language":1033,"meta":425,"style":425},"ssh root@your_server_ip\n",[495,10443,10444],{"__ignoreMap":425},[930,10445,10446,10449],{"class":932,"line":933},[930,10447,10448],{"class":1040},"ssh",[930,10450,10451],{"class":1044}," root@your_server_ip\n",[430,10453,10454],{},[433,10455],{"alt":10456,"src":10457},"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",[430,10459,10460],{},"Pastikan paket server Anda sudah mutakhir:",[922,10462,10464],{"className":1031,"code":10463,"language":1033,"meta":425,"style":425},"sudo apt update && sudo apt upgrade -y\n",[495,10465,10466],{"__ignoreMap":425},[930,10467,10468,10470,10472,10475,10477,10479,10481,10484],{"class":932,"line":933},[930,10469,1889],{"class":1040},[930,10471,4471],{"class":1044},[930,10473,10474],{"class":1044}," update",[930,10476,5465],{"class":944},[930,10478,4392],{"class":1040},[930,10480,4471],{"class":1044},[930,10482,10483],{"class":1044}," upgrade",[930,10485,4504],{"class":1044},[430,10487,10488,10489,10492],{},"Tambahkan pengguna baru, ",[495,10490,10491],{},"hermes",", atau nama pengguna pilihan Anda:",[922,10494,10496],{"className":1031,"code":10495,"language":1033,"meta":425,"style":425},"sudo adduser hermes \nsudo passwd hermes\n",[495,10497,10498,10510],{"__ignoreMap":425},[930,10499,10500,10502,10505,10508],{"class":932,"line":933},[930,10501,1889],{"class":1040},[930,10503,10504],{"class":1044}," adduser",[930,10506,10507],{"class":1044}," hermes",[930,10509,2023],{"class":940},[930,10511,10512,10514,10517],{"class":932,"line":1060},[930,10513,1889],{"class":1040},[930,10515,10516],{"class":1044}," passwd",[930,10518,10519],{"class":1044}," hermes\n",[430,10521,10522,10523,888],{},"Matikan login kata sandi ",[495,10524,10525],{},"root",[533,10527,10528],{},[488,10529,10530],{},"Buka file konfigurasi SSH:",[922,10532,10534],{"className":1031,"code":10533,"language":1033,"meta":425,"style":425},"sudo nano \u002Fetc\u002Fssh\u002Fsshd_config\n",[495,10535,10536],{"__ignoreMap":425},[930,10537,10538,10540,10542],{"class":932,"line":933},[930,10539,1889],{"class":1040},[930,10541,2309],{"class":1044},[930,10543,10544],{"class":1044}," \u002Fetc\u002Fssh\u002Fsshd_config\n",[533,10546,10547],{"start":1060},[488,10548,10549,10550,10553,10554,888],{},"Temukan baris ",[495,10551,10552],{},"PermitRootLogin"," dan ubah nilainya menjadi ",[495,10555,10556],{},"no",[922,10558,10561],{"className":10559,"code":10560,"language":4639,"meta":425},[4637],"PermitRootLogin no\n",[495,10562,10560],{"__ignoreMap":425},[533,10564,10565],{"start":1067},[488,10566,10567],{},"Simpan file tersebut lalu mulai ulang layanan SSH:",[922,10569,10571],{"className":1031,"code":10570,"language":1033,"meta":425,"style":425},"sudo systemctl restart ssh\n",[495,10572,10573],{"__ignoreMap":425},[930,10574,10575,10577,10579,10581],{"class":932,"line":933},[930,10576,1889],{"class":1040},[930,10578,1892],{"class":1044},[930,10580,1895],{"class":1044},[930,10582,10583],{"class":1044}," ssh\n",[878,10585,10587],{"id":10586},"langkah-2-instal-hermes-agent","Langkah 2: Instal Hermes Agent",[430,10589,10590],{},"Jalankan perintah berikut:",[922,10592,10594],{"className":1031,"code":10593,"language":1033,"meta":425,"style":425},"curl -fsSL https:\u002F\u002Fhermes-agent.nousresearch.com\u002Finstall.sh | bash\n",[495,10595,10596],{"__ignoreMap":425},[930,10597,10598,10600,10602,10605,10607],{"class":932,"line":933},[930,10599,2988],{"class":1040},[930,10601,4383],{"class":1044},[930,10603,10604],{"class":1044}," https:\u002F\u002Fhermes-agent.nousresearch.com\u002Finstall.sh",[930,10606,4389],{"class":944},[930,10608,10609],{"class":1040}," bash\n",[430,10611,10612],{},[433,10613],{"alt":10614,"src":10615},"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",[430,10617,10618],{},"Setelah terinstal, verifikasi instalasi dengan mengetik:",[922,10620,10622],{"className":1031,"code":10621,"language":1033,"meta":425,"style":425},"hermes --version\n",[495,10623,10624],{"__ignoreMap":425},[930,10625,10626,10628],{"class":932,"line":933},[930,10627,10491],{"class":1040},[930,10629,3615],{"class":1044},[430,10631,1827,10632,10635,10636],{},[495,10633,10634],{},"hermes setup"," untuk mengonfigurasi Hermes Agent:\n",[433,10637],{"alt":10638,"src":10639},"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",[430,10641,10642,10643,10646,10647],{},"Pilih penyedia LLM, mulai dengan ",[495,10644,10645],{},"DeepSeek"," dan tambahkan yang lain nanti.\n",[433,10648],{"alt":10649,"src":10650},"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",[430,10652,10653,10654,10656,10657,10661,10665,10666,10669,10670,10665,10674,10677,10678],{},"Masukkan API key ",[495,10655,10645],{}," Anda:\n",[433,10658],{"alt":10659,"src":10660},"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",[433,10662],{"alt":10663,"src":10664},"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 ",[495,10667,10668],{},"local machine"," untuk menjalankan Hermes Agent:\n",[433,10671],{"alt":10672,"src":10673},"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",[495,10675,10676],{},"Telegram"," di bagian saluran (channels). Saluran lainnya dapat dikonfigurasi nanti.\n",[433,10679],{"alt":10680,"src":10681},"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",[878,10683,10685],{"id":10684},"langkah-3-integrasi-dengan-telegram","Langkah 3: Integrasi dengan Telegram",[430,10687,9933,10688,10691,10692],{},[495,10689,10690],{},"[2]"," untuk menggunakan bot Telegram.\n",[433,10693],{"alt":10694,"src":10695},"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",[430,10697,3935,10698,10700,10701],{},[495,10699,10676],{}," dan cari 'BotFather'.\n",[433,10702],{"alt":10703,"src":10704},"Mencari BotFather di dalam aplikasi Telegram","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-search-botfather.webp",[430,10706,4271,10707,10710,10711],{},[495,10708,10709],{},"Open"," untuk membuka 'BotFather'.\n",[433,10712],{"alt":10713,"src":10714},"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",[430,10716,4271,10717,10720,10721,1793,10724],{},[495,10718,10719],{},"Create a New Bot"," (atau gunakan perintah ",[495,10722,10723],{},"\u002Fnewbot",[433,10725],{"alt":10726,"src":10727},"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",[430,10729,10730,10731],{},"Isi nama-nama yang diminta lalu buat bot tersebut.\n",[433,10732],{"alt":10733,"src":10734},"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",[430,10736,4271,10737,10740,10741],{},[495,10738,10739],{},"Copy"," untuk menyalin token dan tempelkan kembali ke terminal.\n",[433,10742],{"alt":10743,"src":10744},"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",[430,10746,10747,10748,10750],{},"Temukan ID akun pengguna ",[495,10749,10676],{}," Anda dan tambahkan ke 'Allowed user list':",[485,10752,10753,10763,10776],{},[488,10754,10755,10756,10758,10759],{},"Cari '@raw_data_bot' di ",[495,10757,10676],{},".\n",[433,10760],{"alt":10761,"src":10762},"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",[488,10764,4271,10765,10768,10769,10758,10772],{},[495,10766,10767],{},"RawDataBot"," lalu klik tombol Start. ID pengguna Anda akan ditampilkan di sebelah ",[495,10770,10771],{},"P.S. Your ID:",[433,10773],{"alt":10774,"src":10775},"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",[488,10777,10778],{},"Salin ID pengguna tersebut dan tempelkan ke terminal.",[430,10780,10781,10782,10786,10787,10791],{},"Karena kita menjalankannya di cloud, kita ingin agar layanan ini dimulai secara otomatis.\n",[433,10783],{"alt":10784,"src":10785},"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",[433,10788],{"alt":10789,"src":10790},"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",[433,10792],{"alt":10793,"src":10794},"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",[474,10796,10798],{"id":10797},"menguji-hermes-agent-anda-dengan-bot-telegram","Menguji Hermes Agent Anda dengan Bot Telegram",[430,10800,10801,10802,888],{},"Jalankan perintah berikut untuk memulai ",[495,10803,10804],{},"hermes gateway",[922,10806,10808],{"className":1031,"code":10807,"language":1033,"meta":425,"style":425},"hermes gateway\n",[495,10809,10810],{"__ignoreMap":425},[930,10811,10812,10814],{"class":932,"line":933},[930,10813,10491],{"class":1040},[930,10815,10816],{"class":1044}," gateway\n",[430,10818,3935,10819,10821],{},[495,10820,10676],{}," and tambahkan bot yang telah dibuat, '@tech_cloud_hermes_bot', ke obrolan Anda.",[485,10823,10824,10836,10846],{},[488,10825,10826,10827,10829,10830,10758,10832],{},"Ketik '\u002Fnew' di ",[495,10828,10676],{}," untuk memulai sesi baru ",[495,10831,1711],{},[433,10833],{"alt":10834,"src":10835},"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",[488,10837,10838,10839,10841,10842],{},"Mengetik ",[495,10840,1496],{}," akan menampilkan daftar semua perintah yang tersedia.\n",[433,10843],{"alt":10844,"src":10845},"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",[488,10847,10838,10848,10850,10851],{},[495,10849,1526],{}," untuk melihat daftar LLM yang tersedia.\n",[433,10852],{"alt":10853,"src":10854},"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",[474,10856,10858],{"id":10857},"menjalankan-hermes-gateway-sebagai-layanan-latar-belakang","Menjalankan Hermes Gateway sebagai Layanan Latar Belakang",[430,10860,10861],{},"Buat file layanan (service file):",[922,10863,10865],{"className":2298,"code":10864,"language":2300,"meta":425,"style":425},"sudo nano \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-gateway.service\n",[495,10866,10867],{"__ignoreMap":425},[930,10868,10869,10871,10873],{"class":932,"line":933},[930,10870,1889],{"class":1040},[930,10872,2309],{"class":1044},[930,10874,10875],{"class":1044}," \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-gateway.service\n",[430,10877,10878,10879,10881],{},"Tempelkan kode berikut, ganti ",[495,10880,10491],{}," pada '\u002Fhome\u002Fhermes' dengan nama pengguna pilihan Anda:",[922,10883,10885],{"className":2324,"code":10884,"language":2326,"meta":425,"style":425},"[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",[495,10886,10887,10891,10896,10900,10904,10908,10912,10916,10921,10925,10929,10933,10937,10941],{"__ignoreMap":425},[930,10888,10889],{"class":932,"line":933},[930,10890,2333],{},[930,10892,10893],{"class":932,"line":1060},[930,10894,10895],{},"Description=Hermes Gateway\n",[930,10897,10898],{"class":932,"line":1067},[930,10899,2343],{},[930,10901,10902],{"class":932,"line":1074},[930,10903,1064],{"emptyLinePlaceholder":1063},[930,10905,10906],{"class":932,"line":1921},[930,10907,2352],{},[930,10909,10910],{"class":932,"line":1926},[930,10911,2357],{},[930,10913,10914],{"class":932,"line":1932},[930,10915,2362],{},[930,10917,10918],{"class":932,"line":2269},[930,10919,10920],{},"ExecStart=\u002Fhome\u002Fhermes\u002F.local\u002Fbin\u002Fhermes gateway\n",[930,10922,10923],{"class":932,"line":1692},[930,10924,2372],{},[930,10926,10927],{"class":932,"line":2375},[930,10928,2378],{},[930,10930,10931],{"class":932,"line":2381},[930,10932,2384],{},[930,10934,10935],{"class":932,"line":2387},[930,10936,1064],{"emptyLinePlaceholder":1063},[930,10938,10939],{"class":932,"line":2392},[930,10940,2395],{},[930,10942,10943],{"class":932,"line":2398},[930,10944,2401],{},[430,10946,10947],{},"Aktifkan dan jalankan layanan tersebut:",[922,10949,10951],{"className":2298,"code":10950,"language":2300,"meta":425,"style":425},"sudo systemctl daemon-reload\nsudo systemctl enable hermes-gateway\nsudo systemctl start hermes-gateway\nsudo systemctl status hermes-gateway\n",[495,10952,10953,10961,10972,10982],{"__ignoreMap":425},[930,10954,10955,10957,10959],{"class":932,"line":933},[930,10956,1889],{"class":1040},[930,10958,1892],{"class":1044},[930,10960,2420],{"class":1044},[930,10962,10963,10965,10967,10969],{"class":932,"line":1060},[930,10964,1889],{"class":1040},[930,10966,1892],{"class":1044},[930,10968,2020],{"class":1044},[930,10970,10971],{"class":1044}," hermes-gateway\n",[930,10973,10974,10976,10978,10980],{"class":932,"line":1067},[930,10975,1889],{"class":1040},[930,10977,1892],{"class":1044},[930,10979,2440],{"class":1044},[930,10981,10971],{"class":1044},[930,10983,10984,10986,10988,10990],{"class":932,"line":1074},[930,10985,1889],{"class":1040},[930,10987,1892],{"class":1044},[930,10989,1916],{"class":1044},[930,10991,10971],{"class":1044},[474,10993,2568],{"id":2567},[430,10995,10996],{},"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.",[1636,10998,10999],{},"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":425,"searchDepth":1060,"depth":1067,"links":11001},[11002,11003,11008,11009,11010],{"id":10420,"depth":1060,"text":10421},{"id":10430,"depth":1060,"text":10431,"children":11004},[11005,11006,11007],{"id":10434,"depth":1067,"text":10435},{"id":10586,"depth":1067,"text":10587},{"id":10684,"depth":1067,"text":10685},{"id":10797,"depth":1060,"text":10798},{"id":10857,"depth":1060,"text":10858},{"id":2567,"depth":1060,"text":2568},[1656],"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":11017,"robots":1690,"sitemap":11029},[11018],{"@type":1669,"name":1725,"description":11013,"image":11014,"step":11019},[11020,11023,11026],{"@type":1672,"name":10435,"text":11021,"image":10457,"url":11022},"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":1672,"name":10587,"text":11024,"image":10615,"url":11025},"Jalankan perintah berikut: Setelah terinstal, verifikasi instalasi dengan mengetik: Jalankan `hermes setup` untuk mengonfigurasi Hermes Agent: Pili...","#langkah-2-instal-hermes-agent",{"@type":1672,"name":10685,"text":11027,"image":10695,"url":11028},"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":11012},{"title":11031,"description":11013,"ogTitle":1725,"ogDescription":11013,"twitterTitle":1725,"twitterDescription":11013},"Deploy Hermes Agent di VPS: Panduan Integrasi Telegram Bot","id\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",[1711,11034,11035,11036,8708],"VPS Setup","Telegram Bot","Linux VPS","v0mZdfPz9KY0iWU2GsJAibjrsfj_Qkeow9BR7idwGE8",{"id":11039,"title":11040,"author":1699,"body":11041,"category":11474,"date":11475,"description":11476,"extension":1661,"image":11477,"imageAlt":11478,"isPublished":1063,"meta":11479,"minRead":2269,"navigation":1063,"path":167,"seo":11483,"stem":11485,"tags":11486,"updatedAt":1699,"__hash__":11489},"article\u002Fid\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude.md","Panduan Konektor AI NetSuite: Setup MCP & Studi Kasus",{"type":427,"value":11042,"toc":11460},[11043,11046,11060,11064,11074,11090,11094,11222,11226,11280,11284,11336,11340,11344,11350,11355,11359,11365,11377,11381,11391,11407,11411,11417,11422,11426,11432,11435,11437],[430,11044,11045],{},"Oracle NetSuite telah lama menjadi platform perencanaan sumber daya perusahaan (ERP) berbasis cloud bagi bisnis kecil hingga menengah. Namun, UI situs webnya terkenal karena kurva pembelajaran yang curam, navigasi yang padat klik, dan struktur pelaporan yang kaku.",[430,11047,11048,11049,11052,11053,575,11056,11059],{},"Dengan rilis terbaru dari ",[441,11050,11051],{},"NetSuite AI Connector Service",", pengguna dapat memanfaatkan ",[441,11054,11055],{},"Model Context Protocol (MCP)",[441,11057,11058],{},"Asisten AI (Kecerdasan Buatan)"," untuk mengajukan pertanyaan secara langsung dalam bahasa sehari-hari dan mendapatkan jawaban real-time dari data keuangan dan operasional mereka.",[474,11061,11063],{"id":11062},"cara-kerja-netsuite-mcp-ai-connector","Cara Kerja NetSuite MCP AI Connector",[430,11065,11066,11069,11070,11073],{},[441,11067,11068],{},"MCP NetSuite"," mengekspos serangkaian alat ke ",[441,11071,11072],{},"AI",", seperti menjalankan kueri SuiteQL, membaca Saved Search dan laporan, atau mengeksekusi operasi rekaman seperti membuat rekaman pelanggan baru. Semua alat diatur oleh izin berbasis peran bawaan NetSuite.",[430,11075,11076,11077,11079,11080,11082,11083,11086,11087,11089],{},"Ketika pengguna mengajukan pertanyaan dalam bahasa sehari-hari, ",[441,11078,11072],{}," menggunakan ",[441,11081,11055],{}," untuk menerjemahkan permintaan tersebut menjadi operasi terstruktur yang dipahami NetSuite. ",[441,11084,11085],{},"NetSuite"," mengeksekusi operasi tersebut menggunakan izin pengguna, dan hasilnya dikembalikan ke ",[441,11088,11072],{}," untuk dianalisis dan dipresentasikan.",[474,11091,11093],{"id":11092},"panduan-setup-netsuite-ai-connector","Panduan Setup NetSuite AI Connector",[533,11095,11096,11146,11159,11168,11175,11182,11203],{},[488,11097,11098,11099,575,11102,11105],{},"Aktifkan ",[441,11100,11101],{},"Server SuiteScript",[441,11103,11104],{},"REST Web Services",[533,11106,11107,11116,11142],{},[488,11108,3935,11109,10758,11112],{},[898,11110,11111],{},"Setup > Company > Enable Features",[433,11113],{"alt":11114,"src":11115},"Antarmuka konfigurasi Aktifkan Fitur Oracle NetSuite untuk pengaturan Perusahaan","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-setup-company-enable-features.webp",[488,11117,11118,11119,1366,11122],{},"Pada subtab ",[441,11120,11121],{},"SuiteCloud",[485,11123,11124,11133],{},[488,11125,11126,11127,10758,11129],{},"Di bawah SuiteScript, centang kotak ",[441,11128,11101],{},[433,11130],{"alt":11131,"src":11132},"Mengaktifkan Server SuiteScript di tab SuiteCloud NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-enable-features-server-suitescript.webp",[488,11134,11135,11136,10758,11138],{},"Di bawah SuiteTalk (Web Services), centang kotak ",[441,11137,11104],{},[433,11139],{"alt":11140,"src":11141},"Mengaktifkan Layanan Web REST di tab SuiteCloud NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-enable-features-rest-web-services.webp",[488,11143,4271,11144,461],{},[441,11145,1137],{},[488,11147,2525,11148,11151,11152,10758,11155],{},[441,11149,11150],{},"NetSuite MCP Standard Tools"," terlebih dahulu. Klik pada ",[898,11153,11154],{},"Customization > SuiteCloud Development > SuiteApp Marketplace",[433,11156],{"alt":11157,"src":11158},"Navigasi ke SuiteApp Marketplace di bawah Kustomisasi di NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-suiteapp-marketplace-navigation.webp",[488,11160,11161,11162,10758,11164],{},"Cari ",[441,11163,11150],{},[433,11165],{"alt":11166,"src":11167},"Mencari NetSuite MCP Standard Tools di pasar SuiteApp","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-suiteapp-marketplace-search-mcp-tools.webp",[488,11169,11170,11171],{},"Setelah terinstal, Anda akan melihat status 'Installed' di sebelah kanan.\n",[433,11172],{"alt":11173,"src":11174},"NetSuite MCP Standard Tools ditampilkan sebagai Terpasang di pasar SuiteApp","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-suiteapp-installed-status-mcp-tools.webp",[488,11176,11177,11178],{},"Ikuti petunjuk yang sama untuk menginstal 'NetSuite AI Connector Service Companion'.\n",[433,11179],{"alt":11180,"src":11181},"NetSuite AI Connector Service Companion ditampilkan sebagai Terpasang","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-suiteapp-installed-ai-connector-companion.webp",[488,11183,11184,11185],{},"Siapkan Integration Record\n",[533,11186,11187,11196],{},[488,11188,3935,11189,10758,11192],{},[898,11190,11191],{},"Setup > Integration > Manage Integrations",[433,11193],{"alt":11194,"src":11195},"Navigasi ke Kelola Integrasi di menu Pengaturan NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-integration-manage-integrations-navigation.webp",[488,11197,11198,11199],{},"Buat Integration Record untuk ChatGPT, dan kita akan kembali lagi dengan token_id yang sebenarnya:\n",[433,11200],{"alt":11201,"src":11202},"Membuat catatan integrasi baru di NetSuite untuk koneksi ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-create-integration-record-chatgpt.webp",[488,11204,11205,11206,11210,11214,11218],{},"Buat peran kustom (custom role) untuk MCP dengan izin minimum dan tetapkan ke pengguna. Contoh:\n",[433,11207],{"alt":11208,"src":11209},"Mengonfigurasi izin peran kustom untuk integrasi NetSuite MCP - Bagian 1","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-custom-role-mcp-permissions-1.webp",[433,11211],{"alt":11212,"src":11213},"Mengonfigurasi izin peran kustom untuk integrasi NetSuite MCP - Bagian 2","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-custom-role-mcp-permissions-2.webp",[433,11215],{"alt":11216,"src":11217},"Mengonfigurasi izin peran kustom untuk integrasi NetSuite MCP - Bagian 3","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-custom-role-mcp-permissions-3.webp",[433,11219],{"alt":11220,"src":11221},"Mengonfigurasi izin peran kustom untuk integrasi NetSuite MCP - Bagian 4","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-custom-role-mcp-permissions-4.webp",[474,11223,11225],{"id":11224},"cara-mengintegrasikan-netsuite-mcp-dengan-chatgpt","Cara Mengintegrasikan NetSuite MCP dengan ChatGPT",[533,11227,11228,11235,11242,11249,11259,11266,11273],{},[488,11229,11230,11231],{},"Klik pada 'Settings' (Pengaturan).\n",[433,11232],{"alt":11233,"src":11234},"Navigasi ke Pengaturan di antarmuka pengguna ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-settings-navigation.webp",[488,11236,11237,11238],{},"Klik pada 'Apps' > 'Advanced settings' (Pengaturan lanjutan).\n",[433,11239],{"alt":11240,"src":11241},"Navigasi ke Aplikasi dan Pengaturan Lanjutan dalam konfigurasi ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-apps-advanced-settings.webp",[488,11243,11244,11245],{},"Aktifkan 'Developer mode', lalu klik 'Create app'.\n",[433,11246],{"alt":11247,"src":11248},"Mengaktifkan Mode Pengembang dan mengklik Buat Aplikasi di ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-developer-mode-create-app.webp",[488,11250,11251,11252,10758,11255],{},"Masukkan detailnya. Untuk Connection, masukkan ",[495,11253,11254],{},"https:\u002F\u002F\u003Caccount_id>.suitetalk.api.netsuite.com\u002Fservices\u002Fmcp\u002Fv1\u002Fall",[433,11256],{"alt":11257,"src":11258},"Memasukkan detail URL koneksi NetSuite MCP untuk membuat aplikasi di ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-create-app-netsuite-mcp-connection.webp",[488,11260,11261,11262],{},"Klik pada 'Create'. Setelah terintegrasi, Anda akan melihat popup berikut.\n",[433,11263],{"alt":11264,"src":11265},"Konfirmasi pop-up yang menunjukkan NetSuite MCP berhasil terintegrasi di ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-netsuite-mcp-integrated-popup.webp",[488,11267,11268,11269],{},"Klik pada 'Sign in with NetSuite MCP' (Masuk dengan NetSuite MCP).\n",[433,11270],{"alt":11271,"src":11272},"Perintah ChatGPT untuk masuk dengan alat standar NetSuite MCP","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-sign-in-with-netsuite-mcp.webp",[488,11274,11275,11276],{},"Klik tombol 'Continue' untuk memberikan izin.\n",[433,11277],{"alt":11278,"src":11279},"Memberikan izin koneksi untuk NetSuite MCP di layar otorisasi ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-grant-permissions-netsuite-mcp.webp",[474,11281,11283],{"id":11282},"cara-mengintegrasikan-netsuite-mcp-dengan-claude-ai","Cara Mengintegrasikan NetSuite MCP dengan Claude AI",[533,11285,11286,11293,11300,11307,11322,11329],{},[488,11287,11288,11289],{},"Klik pada 'Customize' (Sesuaikan).\n",[433,11290],{"alt":11291,"src":11292},"Mengklik opsi Sesuaikan di antarmuka pengguna Claude AI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-customize-navigation.webp",[488,11294,11295,11296],{},"Klik pada 'Connect your apps'.\n",[433,11297],{"alt":11298,"src":11299},"Mengklik Hubungkan aplikasi Anda di pengaturan kustomisasi Claude AI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-connect-your-apps.webp",[488,11301,11302,11303],{},"Cari 'NetSuite'.\n",[433,11304],{"alt":11305,"src":11306},"Mencari aplikasi NetSuite di aplikasi terhubung Claude AI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-search-netsuite-app.webp",[488,11308,11309,11310,11313,11314,11317,11318],{},"Klik pada 'NetSuite' dan masukkan URL server: ",[495,11311,11312],{},"https:\u002F\u002F\u003Caccount_id>.suitetalk.api.netsuite.com\u002Fservices\u002Fmcp\u002Fv1\u002Fsuiteapp\u002Fcom.netsuite.mcpstandardtools",". Ganti ",[495,11315,11316],{},"\u003Caccount_id>"," dengan ID akun Anda yang sebenarnya.\n",[433,11319],{"alt":11320,"src":11321},"Memasukkan URL koneksi server NetSuite MCP di Claude AI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-netsuite-mcp-server-url-setup.webp",[488,11323,11324,11325],{},"Klik tombol 'Continue'.\n",[433,11326],{"alt":11327,"src":11328},"Mengklik Lanjutkan untuk mengautentikasi koneksi server NetSuite MCP di Claude","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-netsuite-mcp-continue-authentication.webp",[488,11330,11331,11332],{},"Klik 'Continue' untuk mengautentikasi konektor.\n",[433,11333],{"alt":11334,"src":11335},"Verifikasi otentikasi akhir untuk konektor NetSuite MCP di Claude AI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-netsuite-mcp-authenticate-connector.webp",[474,11337,11339],{"id":11338},"kasus-penggunaan-netsuite-ai","Kasus Penggunaan NetSuite AI",[878,11341,11343],{"id":11342},"kasus-penggunaan-di-chatgpt-menampilkan-faktur-jatuh-tempo-di-atas-30-hari-di-netsuite","Kasus Penggunaan di ChatGPT: Menampilkan faktur jatuh tempo di atas 30 hari di NetSuite",[430,11345,11346],{},[433,11347],{"alt":11348,"src":11349},"ChatGPT menjalankan kueri SuiteQL untuk mengambil data faktur NetSuite yang jatuh tempo","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-netsuite-overdue-invoices-query-result.webp",[485,11351,11352],{},[488,11353,11354],{},"ChatGPT membuat kueri SuiteQL dan menjalankannya. Ini sangat praktis dan menghemat banyak waktu dibandingkan dengan membuat laporan menggunakan UI situs web NetSuite.",[878,11356,11358],{"id":11357},"kasus-penggunaan-di-chatgpt-dan-claude-bisakah-anda-menggambar-penjualan-30-hari-terakhir-dalam-grafik-garis","Kasus Penggunaan di ChatGPT dan Claude: Bisakah Anda menggambar penjualan 30 hari terakhir dalam grafik garis?",[430,11360,11361],{},[433,11362],{"alt":11363,"src":11364},"ChatGPT gagal merender grafik garis penjualan dari data NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-failed-render-netsuite-sales-line-graph.webp",[485,11366,11367,11370],{},[488,11368,11369],{},"ChatGPT tidak dapat menghasilkan grafik garis tersebut.",[488,11371,11372,11373],{},"Saya mencoba di Claude, dan berhasil. Perbedaan ini mungkin disebabkan oleh kemampuan model bahasa besar (LLM).\n",[433,11374],{"alt":11375,"src":11376},"Claude AI berhasil merender grafik garis visual dari data penjualan NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-successfully-rendered-netsuite-sales-line-graph.webp",[878,11378,11380],{"id":11379},"kasus-penggunaan-di-claude-membuat-rekaman-pelanggan","Kasus Penggunaan di Claude: Membuat rekaman pelanggan",[430,11382,11383,11387],{},[433,11384],{"alt":11385,"src":11386},"Perintah Claude AI untuk membuat catatan pelanggan baru di NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-create-netsuite-customer-record-prompt.webp",[433,11388],{"alt":11389,"src":11390},"Konfirmasi Claude AI tentang keberhasilan pembuatan catatan pelanggan NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-create-netsuite-customer-record-success.webp",[485,11392,11393,11400],{},[488,11394,11395,11396],{},"Memeriksa kembali UI situs web NetSuite memastikan bahwa rekaman tersebut berhasil dibuat.\n",[433,11397],{"alt":11398,"src":11399},"Memverifikasi catatan pelanggan yang baru dibuat di antarmuka pengguna web NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-ui-verify-new-customer-record-created.webp",[488,11401,11402,11403],{},"Menjalankannya di ChatGPT menunjukkan bahwa rekaman tersebut tersedia:\n",[433,11404],{"alt":11405,"src":11406},"ChatGPT mengonfirmasi bahwa catatan pelanggan NetSuite yang baru telah tersedia","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-verify-netsuite-customer-record-available.webp",[878,11408,11410],{"id":11409},"kasus-penggunaan-di-claude-menjalankan-kueri-suiteql","Kasus Penggunaan di Claude: Menjalankan Kueri SuiteQL",[430,11412,11413],{},[433,11414],{"alt":11415,"src":11416},"Claude AI mengeksekusi langsung dan menampilkan hasil kueri SuiteQL NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-run-suiteql-query-result.webp",[485,11418,11419],{},[488,11420,11421],{},"Kueri SuiteQL dapat dieksekusi secara langsung.",[474,11423,11425],{"id":11424},"kesimpulan-tentang-netsuite-ai-connector","Kesimpulan tentang NetSuite AI Connector",[430,11427,11428,11429,11431],{},"Keuntungan terbesar dalam menggunakan MCP adalah bagi pengguna yang kurang teknis untuk membuat laporan yang rumit. Pengguna ini dapat menggunakan bahasa sehari-hari untuk meminta data dan meminta ",[441,11430,11072],{}," menyajikan laporan persis seperti yang mereka inginkan.",[430,11433,11434],{},"Untuk mencegah serangan prompt injection dan penyalahgunaan operasi 'tulis' (write), berikan izin tulis hanya untuk rekaman dan transaksi tertentu saja. Saat AI menggunakan MCP untuk memperbarui atau membuat rekaman, AI mengeksekusinya sebagai SuiteScript sisi server, yang sepenuhnya melewati skrip sisi klien atau validasi formulir apa pun.",[474,11436,1608],{"id":1607},[485,11438,11439,11446,11453],{},[488,11440,11441],{},[444,11442,11445],{"href":11443,"rel":11444},"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fcloud\u002Fsaas\u002Fnetsuite\u002Fns-online-help\u002Farticle_0902023450.html#subsect_90090238176",[448],"Menginstal SuiteApp MCP Standard Tools",[488,11447,11448],{},[444,11449,11452],{"href":11450,"rel":11451},"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fcloud\u002Fsaas\u002Fnetsuite\u002Fns-online-help\u002Farticle_4160616848.html#subsect_0419123151",[448],"FAQ Layanan NetSuite AI Connector",[488,11454,11455],{},[444,11456,11459],{"href":11457,"rel":11458},"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fcloud\u002Fsaas\u002Fnetsuite\u002Fns-online-help\u002Fsection_0714082142.html#bridgehead_0804033331",[448],"Menghubungkan ke Layanan NetSuite AI Connector",{"title":425,"searchDepth":1060,"depth":1067,"links":11461},[11462,11463,11464,11465,11466,11472,11473],{"id":11062,"depth":1060,"text":11063},{"id":11092,"depth":1060,"text":11093},{"id":11224,"depth":1060,"text":11225},{"id":11282,"depth":1060,"text":11283},{"id":11338,"depth":1060,"text":11339,"children":11467},[11468,11469,11470,11471],{"id":11342,"depth":1067,"text":11343},{"id":11357,"depth":1067,"text":11358},{"id":11379,"depth":1067,"text":11380},{"id":11409,"depth":1067,"text":11410},{"id":11424,"depth":1060,"text":11425},{"id":1607,"depth":1060,"text":1608},[1656],"2026-06-13","Atur NetSuite AI Connector (MCP) dengan ChatGPT dan Claude. Pelajari cara kueri data ERP secara instan dan otomatisasi tugas menggunakan bahasa sehari-hari.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002FID-Setup-NetSuite-MCP-on-ChatGPT-%26-Claude.webp","Thumbnail integrasi AI NetSuite MCP menampilkan latar belakang korporat biru tua dengan logo ChatGPT dan Claude yang terhubung ke database cloud NetSuite",{"schemaOrg":11480,"robots":1690,"sitemap":11482},[11481],{"@type":1667,"headline":11040,"description":11476},{"lastmod":11475},{"title":11484,"description":11476,"ogTitle":11040,"ogDescription":11476,"twitterTitle":11040,"twitterDescription":11476},"Integrasi AI NetSuite MCP: Hubungkan ChatGPT & Claude","id\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",[11085,6944,11487,11488,11072],"ChatGPT","Claude","pStogAtA_PuCROadbazSVbsJD7Yu72ZK2sH15MFeo0U",{"id":11491,"title":11492,"author":1699,"body":11493,"category":11685,"date":11686,"description":11687,"extension":1661,"image":11688,"imageAlt":11689,"isPublished":1063,"meta":11690,"minRead":1921,"navigation":1063,"path":173,"seo":11694,"stem":11695,"tags":11696,"updatedAt":1699,"__hash__":11700},"article\u002Fid\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis.md","Menguji Claude Fable 5: Ulasan Analisis Keuangan AI",{"type":427,"value":11494,"toc":11683},[11495,11506,11517,11520,11526,11542,11552,11558,11564,11570,11592,11601,11615,11623,11641,11644,11655,11664,11667,11680],[430,11496,11497,11498,11501,11502],{},"Pada tanggal 9 Juni 2026, Anthropic merilis ",[441,11499,11500],{},"Claude Fable 5",", model Kelas Mythos dengan pengamanan canggih di beberapa bidang seperti keamanan siber, distilasi, kimia, dan biologi.\n",[433,11503],{"alt":11504,"src":11505},"Pengumuman peluncuran Anthropic Claude Fable 5 dan rincian kemampuan model baru","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fclaude-fable-5-launch-announcement.webp",[430,11507,11508,11509,11512,11513],{},"Anthropic telah memublikasikan data yang menunjukkan Fable 5 berada di depan Opus 4.8 dan GPT-5.5 di beberapa tolok ukur utama. Dalam ",[441,11510,11511],{},"GDPval-AA (pekerjaan pengetahuan)",", model ini secara signifikan memimpin di atas Opus 4.8, GPT 5.5, dan Gemini 3.1 Pro.\n",[433,11514],{"alt":11515,"src":11516},"Perbandingan tolok ukur Claude Fable 5 termasuk skor pekerjaan pengetahuan GDPval-AA","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fclaude-fable-5-benchmarks-gdpval-aa.webp",[430,11518,11519],{},"Menurut Claude, \"Fable 5 menunjukkan kinerja yang kuat pada tugas-tugas analitis yang kompleks.\"",[430,11521,11522],{},[433,11523],{"alt":11524,"src":11525},"Pernyataan kinerja Claude Fable 5 yang tangguh pada tugas analitis yang kompleks","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fclaude-fable-5-analytical-performance-statement.webp",[430,11527,11528,11529,11532,11533,11536,11537,461],{},"Kami memutuskan untuk menguji ",[441,11530,11531],{},"Fable 5"," dengan menjalankan analisis 'Space Exploration Technologies Corporation (SpaceX)' untuk tujuan riset investasi, menggunakan keahlian '",[441,11534,11535],{},"comps-analysis","'. File 'skill.md' berasal dari ",[444,11538,11541],{"href":11539,"rel":11540},"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Ffinancial-services\u002Fblob\u002Fmain\u002Fplugins\u002Fagent-plugins\u002Fmarket-researcher\u002Fskills\u002Fcomps-analysis\u002FSKILL.md",[448],"repositori GitHub layanan keuangan Anthropic",[430,11543,11544,11548],{},[433,11545],{"alt":11546,"src":11547},"Memulai keahlian analisis keuangan perbandingan SpaceX di obrolan desktop Claude","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fspacex-comps-analysis-skill-initiation.webp",[433,11549],{"alt":11550,"src":11551},"Claude Fable 5 menjalankan analisis perbandingan keuangan otomatis untuk SpaceX","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fspacex-comps-analysis-running-progress.webp",[430,11553,11554],{},[433,11555],{"alt":11556,"src":11557},"Output akhir alur kerja analisis perbandingan keuangan otomatis SpaceX","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fspacex-comps-analysis-skill-results-terminal.webp",[430,11559,11560,11561,11563],{},"Tugas tersebut memakan waktu sekitar 25 menit. Claude tidak menanyakan pertanyaan klarifikasi apa pun kecuali meminta izin untuk mengakses situs web eksternal. Secara mengesankan, ",[441,11562,11531],{}," mampu menemukan perusahaan sejenis untuk perbandingan secara mandiri.",[430,11565,11566],{},[433,11567],{"alt":11568,"src":11569},"Claude Fable 5 meminta izin eksplisit untuk mengakses situs web eksternal demi keamanan data","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fclaude-fable-5-external-site-access-permission.webp",[430,11571,11572,11576,11577,11580,11581,11586,11587,461],{},[433,11573],{"alt":11574,"src":11575},"Perusahaan sejenis SpaceX yang berhasil diidentifikasi secara mandiri oleh Claude Fable 5","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fclaude-fable-5-spacex-comps-excel-memo.webp","\n*",[441,11578,11579],{},"Harap dicatat:"," Uji coba ini hanya untuk tujuan penelitian dan edukasi, serta bukan merupakan saran investasi. File asli yang dihasilkan dapat diunduh di sini, ",[444,11582,11585],{"href":11583,"rel":11584},"https:\u002F\u002Ftechvoyage.dev\u002FSpaceX_Comps_Analysis_2026-06-10.xlsx",[448],"SpaceX_Comps_Analysis_2026-06-10.xlsx",", dan, ",[444,11588,11591],{"href":11589,"rel":11590},"https:\u002F\u002Ftechvoyage.dev\u002FSpaceX_Comps_Memo_2026-06-10.pdf",[448],"SpaceX_Comps_Memo_2026-06-10.pdf",[430,11593,11594,11595,11598,11599,461],{},"Saat kami menguji keahlian yang sama menggunakan ",[441,11596,11597],{},"Qwen deep research",", kami harus memasukkan perusahaan sejenis secara manual. Angka-angka numeriknya sedikit berbeda dibandingkan dengan ",[441,11600,11531],{},[430,11602,11603,11607,11611],{},[433,11604],{"alt":11605,"src":11606},"Memulai analisis perbandingan investasi SpaceX di dalam sistem Qwen deep research","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fqwen-deep-research-spacex-comps-initiation.webp",[433,11608],{"alt":11609,"src":11610},"Memasukkan perusahaan sejenis secara manual di Qwen deep research untuk analisis laporan SpaceX","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fqwen-deep-research-spacex-comps-running.webp",[433,11612],{"alt":11613,"src":11614},"Pratinjau laporan analisis tolok ukur keuangan SpaceX yang berhasil dibuat oleh Qwen","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fqwen-deep-research-spacex-comps-report-preview.webp",[430,11616,11617,11618,461],{},"*Laporan yang dihasilkan Qwen dapat diunduh di sini, ",[444,11619,11622],{"href":11620,"rel":11621},"https:\u002F\u002Ftechvoyage.dev\u002FThe_SpaceX_Comp_Analysis_A_Statistical_Benchmark_of_Growth_Efficiency_and_Valuation_Against_Public_Peers.pdf",[448],"The_SpaceX_Comp_Analysis_A_Statistical_Benchmark_of_Growth_Efficiency_and_Valuation_Against_Public_Peers.pdf",[430,11624,11625,11626,11629,11630,10758,11633,11637],{},"Meskipun kedua laporan dari Claude dan Qwen dibuat berdasarkan metodologi yang sama yang ditentukan dalam skill tersebut, angka-angkanya bervariasi karena Claude dan Qwen mengambil data dari sumber yang berbeda. Misalnya, Claude Fable 5 menggunakan ",[441,11627,11628],{},"Stock Analysis"," sementara Qwen menggunakan ",[441,11631,11632],{},"SEC.gov",[433,11634],{"alt":11635,"src":11636},"Data keuangan perusahaan yang diekstrak dari Stock Analysis oleh Claude Fable 5","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fclaude-fable-5-data-source-stock-analysis.webp",[433,11638],{"alt":11639,"src":11640},"Laporan keuangan SEC dan sumber data portal SEC.gov yang digunakan oleh Qwen deep research","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fqwen-deep-research-data-source-sec-gov.webp",[430,11642,11643],{},"Laporan dari Qwen juga berisi lebih banyak informasi mengenai model bisnis, struktur modal, dan operasional perusahaan.",[430,11645,11646,11647,11650,11651],{},"Setelah membandingkan laporan, kami memutuskan untuk mencoba lagi dengan perintah ",[495,11648,11649],{},"\u002Fresearch"," di aplikasi desktop Claude.\n",[433,11652],{"alt":11653,"src":11654},"Menggunakan perintah riset baru di aplikasi desktop Claude untuk analisis mendalam perusahaan","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fclaude-desktop-research-command-spacex.webp",[430,11656,11657,11658,11663],{},"Laporan analisis yang baru dibuat, ",[444,11659,11662],{"href":11660,"rel":11661},"https:\u002F\u002Ftechvoyage.dev\u002FSpaceX_Analysis.pdf",[448],"SpaceX_Analysis.pdf",", mencakup bagian rekomendasi dan peringatan tambahan. Dibandingkan dengan pencarian mendalam Qwen, laporan tersebut masih kekurangan informasi rinci perusahaan seperti operasional dan struktur modal.",[430,11665,11666],{},"Apakah Fable 5 sepadan dengan harga premiumnya? Mungkin iya untuk tugas-tugas berat yang panjang dan pengodean otonom. Namun untuk pekerjaan pengetahuan tertentu, seperti analisis perusahaan, model ini mungkin belum menawarkan nilai terbaik.",[430,11668,11669,11670,11672,11673,10758,11676],{},"Pada akhirnya, kami menguji seberapa baik kinerja ",[441,11671,11531],{}," dalam penerjemahan. Anehnya, model tersebut secara otomatis beralih kembali ke ",[441,11674,11675],{},"Opus 4.8",[433,11677],{"alt":11678,"src":11679},"Aplikasi desktop Claude secara otomatis beralih model dari Fable 5 kembali ke Opus 4.8","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fclaude-fable-5-translation-opus-switching.webp",[430,11681,11682],{},"Apakah ini berarti konversi konteks panjang apa pun akan dikembalikan ke Opus 4.8? Apakah ini hanya bug sementara selama penggunaan sebelum tanggal 22 Juni? Atau apakah sistem ini cukup pintar untuk mengetahui bahwa penerjemahan tidak memerlukan model sekuat itu?",{"title":425,"searchDepth":1060,"depth":1067,"links":11684},[],[1656],"2026-06-11","Kami menguji Claude Fable 5 baru dari Anthropic terhadap Qwen Deep Research untuk analisis keuangan. Apakah peningkatan model AI ini sepadan dengan harganya?","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002FID-Testing-Claude-Fable-5-in-Financial-Analysis.webp","Claude Fable 5 vs Qwen: Uji Analisis Keuangan AI",{"schemaOrg":11691,"robots":1690,"sitemap":11693},[11692],{"@type":1667,"headline":11492,"description":11687},{"lastmod":11686},{"title":11689,"description":11687,"ogTitle":11492,"ogDescription":11687,"twitterTitle":11492,"twitterDescription":11687},"id\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",[11500,11697,11698,11699],"Analisis Keuangan","Qwen Deep Research","Tolok Ukur AI","YU7HMKxmjzSrpGW6NcUm6PEpQhK1fI8jNtVhWWC8-WI",{"id":11702,"title":11703,"author":1699,"body":11704,"category":11910,"date":11911,"description":11912,"extension":1661,"image":11913,"imageAlt":11914,"isPublished":1063,"meta":11915,"minRead":1074,"navigation":1063,"path":175,"seo":11919,"stem":11920,"tags":11921,"updatedAt":1699,"__hash__":11922},"article\u002Fid\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2.md","Panduan Browser dan Scheduler di Google Antigravity 2",{"type":427,"value":11705,"toc":11905},[11706,11719,11723,11728,11737,11752,11758,11761,11772,11776,11779,11786,11793,11804,11807,11813,11824,11830,11840,11853,11863,11873,11876,11882,11884,11894],[430,11707,11708,11709,575,11712,5405,11715,11718],{},"Perintah ",[495,11710,11711],{},"\u002Fbrowser",[495,11713,11714],{},"\u002Fschedule",[441,11716,11717],{},"Google Antigravity 2"," mendefinisikan ulang cara kita berinteraksi dengan AI. Kedua perintah ini mengubah Antigravity menjadi platform otomatisasi proaktif yang dapat berinteraksi langsung dengan web dan menjalankan alur kerja berulang.",[474,11720,11722],{"id":11721},"browser-run","Browser Run",[430,11724,11708,11725,11727],{},[495,11726,11711],{}," memaksa penggunaan browser Chrome untuk menyelesaikan tugas. Pengguna tetap memegang kendali penuh atas kapan dan bagaimana agen mengakses web selama alur kerja berlangsung. Tangkapan layar (screenshot) dan rekaman video akan diambil selama proses berjalan.",[430,11729,11730,11733],{},[441,11731,11732],{},"Kasus Penggunaan:",[433,11734],{"alt":11735,"src":11736},"Menggunakan perintah \u002Fbrowser untuk mengajukan cuti sakit","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fbrowser-command-sick-leave-prompt.webp",[430,11738,11739,11740,11744,11748],{},"Berikut adalah hasil keluaran dari agen:\n",[433,11741],{"alt":11742,"src":11743},"Subagen otomatisasi browser memulai tugas pengajuan cuti sakit","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fbrowser-automation-subagent-delegation.webp",[433,11745],{"alt":11746,"src":11747},"Otomatisasi browser menyiapkan Chrome dengan debugging jarak jauh dan izin","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fbrowser-automation-permissions-and-chrome-setup.webp",[433,11749],{"alt":11750,"src":11751},"Subagen browser berhenti di halaman login yang meminta kredensial pengguna","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fbrowser-automation-login-wall-encountered.webp",[430,11753,11754],{},[433,11755],{"alt":11756,"src":11757},"Subagen browser menunggu pengguna menyelesaikan proses login","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fbrowser-automation-waiting-for-user-login.webp",[430,11759,11760],{},"Antigravity mampu membuka halaman dan mengirimkan formulir. Jika diperlukan login, agen akan menunggu hingga Anda berhasil masuk ke situs web tersebut.",[430,11762,11763,11768,11769,11771],{},[11764,11765],"video",{"alt":11766,"src":11767,"controls":1063},"Video subagen browser menjalankan proses pengajuan cuti sakit","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fbrowser-automation-sick-leave-process.webm","\nPerintah ",[495,11770,11711],{}," sangat berguna ketika kita memerlukan dokumentasi web terbaru, log perubahan (changelog), menguji aplikasi web, atau memeriksa status API untuk menyelesaikan suatu tugas.",[474,11773,11775],{"id":11774},"schedule-task","Schedule Task",[430,11777,11778],{},"Antigravity 2 memiliki fungsi bawaan untuk menjadwalkan tugas. Kita akan mengujinya dengan mengisi lembar kehadiran (timesheet) secara otomatis setiap 10 menit.",[430,11780,11781,11782],{},"Klik pada 'Scheduled Tasks' (Tugas Terjadwal):\n",[433,11783],{"alt":11784,"src":11785},"Opsi menu Tugas Terjadwal di bilah samping","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fscheduled-tasks-menu-item.webp",[430,11787,11788,11789],{},"Klik tombol '+ New' untuk membuat tugas terjadwal baru:\n",[433,11790],{"alt":11791,"src":11792},"Tampilan Tugas Terjadwal kosong dengan tombol tugas baru","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fscheduled-tasks-empty-state-new-button.webp",[430,11794,11795,11796,11800],{},"Isi formulir dan jadwalkan tugas tersebut untuk berjalan setiap 10 menit:\n",[433,11797],{"alt":11798,"src":11799},"Formulir Tugas Terjadwal Baru diisi untuk entri timesheet otomatis","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fscheduled-tasks-new-task-form.webp",[433,11801],{"alt":11802,"src":11803},"Tugas Entri Timesheet Otomatis aktif di daftar Tugas Terjadwal","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fscheduled-tasks-active-task-list.webp",[430,11805,11806],{},"Tugas berhasil dipicu, tetapi berakhir dengan error.",[430,11808,11809],{},[433,11810],{"alt":11811,"src":11812},"Pesan kesalahan yang menunjukkan tidak ada model yang tersedia untuk tingkat flash","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fscheduled-tasks-error-no-models.webp",[430,11814,11815,11816,11819,11820,11823],{},"Kami mencoba menambahkan nilai 'env' ke file ",[495,11817,11818],{},"sidecar.json"," yang terletak di ",[495,11821,11822],{},".gemini\u002Fconfig\u002Fsidecars\u002Fauto-timesheet-entry",", tetapi kami masih mendapatkan error yang sama.",[922,11825,11828],{"className":11826,"code":11827,"language":4639},[4637],"    \"env\": {\n        \"GEMINI_MODEL\": \"gemini-3.5-flash\",\n        \"GOOGLE_CLOUD_PROJECT\": \"your-gcp-project-id\"\n    }\n",[495,11829,11827],{"__ignoreMap":425},[430,11831,11832,11833,11836,11837,461],{},"Setelah memeriksa log tugas terjadwal yang berada di ",[495,11834,11835],{},".gemini\u002Fantigravity\u002Fsidecar_data\u002F",", kami melihat ",[495,11838,11839],{},"[schedule] Triggering command: \"agentapi\" [new-conversation]",[430,11841,11842,11843,11848,11849,11852],{},"Tanggapan atas masalah kami yang diposting di ",[444,11844,11847],{"href":11845,"rel":11846},"https:\u002F\u002Fdiscuss.ai.google.dev\u002Ft\u002Fscheduled-tasks-in-antigravity-2-ended-with-errors\u002F168013",[448],"Build with Google AI Forum"," menyarankan bahwa kunci API diperlukan untuk ",[495,11850,11851],{},"agentapi",". Kami telah mencoba menggunakan kunci API, namun tetap belum berhasil.",[430,11854,11855,11856,11858,11859],{},"Kami mencoba kembali dengan perintah ",[495,11857,11714],{}," langsung di dalam kotak percakapan.\n",[433,11860],{"alt":11861,"src":11862},"Menggunakan perintah \u002Fschedule untuk meminta tugas otomatisasi timesheet","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fschedule-command-timesheet-prompt.webp",[430,11864,11865,11866,11868,11869],{},"Tugas yang dijadwalkan menggunakan perintah ",[495,11867,11714],{}," tidak akan muncul di bawah menu 'Scheduled Tasks'.\n",[433,11870],{"alt":11871,"src":11872},"Daftar Tugas Terjadwal tidak menampilkan tugas yang dibuat melalui perintah CLI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fscheduled-tasks-list-missing-cli-task.webp",[430,11874,11875],{},"Tugas cron tersebut memang berhasil dipicu.",[430,11877,11878],{},[433,11879],{"alt":11880,"src":11881},"Log tugas cron yang mengonfirmasi bahwa tugas telah dipicu","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fcron-job-triggered-log.webp",[474,11883,2568],{"id":2567},[430,11885,11708,11886,575,11888,11890,11891,11893],{},[495,11887,11711],{},[495,11889,11714],{}," di Antigravity 2 bukan sekadar fitur yang berdiri sendiri; menggabungkan keduanya menciptakan alat yang sangat andal. Sebagai contoh, Anda dapat menjadwalkan agen untuk menggunakan ",[495,11892,11711],{}," guna menjelajahi situs berita dan informasi setiap Senin pagi pukul 06.00, merangkum informasinya, lalu menyajikan laporan harian yang komprehensif.",[430,11895,11896,11897,11900,11901,11904],{},"Perintah lain, seperti ",[495,11898,11899],{},"\u002Fgrill-me"," (yang disebutkan dalam artikel ",[444,11902,11903],{"href":419},"Antigravity 2 dalam Aksi: Agen AI, Skill, dan Server MCP","), dapat digunakan saat merancang tugas terjadwal baru. Perintah ini akan mendorong agen untuk meminta klarifikasi dari pengguna mengenai ambiguitas dan mendeteksi potensi kasus ekstrem sebelum memfinalisasi desain.",{"title":425,"searchDepth":1060,"depth":1067,"links":11906},[11907,11908,11909],{"id":11721,"depth":1060,"text":11722},{"id":11774,"depth":1060,"text":11775},{"id":2567,"depth":1060,"text":2568},[1656],"2026-06-07","Pelajari bagaimana perintah \u002Fbrowser dan \u002Fschedule mengubah Google Antigravity 2 menjadi platform otomatisasi AI yang proaktif dan tangguh.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002FID-Use-Browser-and-Scheduler-in-Antigravity-2.webp","Google Antigravity 2: Otomatisasi Browser dan Schedule",{"schemaOrg":11916,"robots":1690,"sitemap":11918},[11917],{"@type":1667,"headline":11914,"description":11912},{"lastmod":11911},{"title":11914,"description":11912,"ogTitle":11703,"ogDescription":11912,"twitterTitle":11703,"twitterDescription":11912},"id\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",[],"u4czAXV3P0pm55iyJMpvOTUHMzlmH4h69N6aVgjihWQ",{"id":11924,"title":11903,"author":425,"body":11925,"category":12252,"date":12253,"description":12254,"extension":1661,"image":12255,"imageAlt":12256,"isPublished":1063,"meta":12257,"minRead":1074,"navigation":1063,"path":179,"seo":12261,"stem":12262,"tags":12263,"updatedAt":1699,"__hash__":12264},"article\u002Fid\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2.md",{"type":427,"value":11926,"toc":12242},[11927,11930,11937,11941,11947,11950,11955,11961,11964,11970,11976,11982,11993,11998,12002,12010,12014,12020,12026,12032,12035,12041,12047,12052,12057,12060,12064,12072,12078,12082,12088,12094,12100,12103,12107,12110,12114,12120,12126,12132,12135,12215,12221,12232,12236,12239],[430,11928,11929],{},"Antigravity 2, sebagai aplikasi desktop berbasis agen (agent-first), memungkinkan pengguna untuk mengoordinasikan tim sub-agen untuk menghasilkan ringkasan harian dari email dan kalender, atau untuk membangun, menguji, dan menerapkan aplikasi. Namun, seperti apa bentuk nyata penerapannya dalam praktik?",[430,11931,11932,11933,11936],{},"Mari kita jelajahi apa yang dapat dilakukan Antigravity 2 untuk Anda — mulai dari perintah dan skill bawaan hingga bagaimana integrasi seperti server Firebase Model Context Protocol (MCP) mengubah developer menjadi arsitek full-stack. Silakan merujuk pada artikel ini, ",[444,11934,11935],{"href":391},"Panduan Google Antigravity 2: Instalasi & Kesan Pertama",", untuk petunjuk penyiapan dan konfigurasi skill serta server MCP.",[474,11938,11940],{"id":11939},"perintah-bawaan-built-in-commands","Perintah Bawaan (Built-in Commands)",[878,11942,11944],{"id":11943},"goal",[495,11945,11946],{},"\u002Fgoal",[430,11948,11949],{},"Dengan perintah ini, Anda menginstruksikan agen untuk terus berjalan hingga tugas tertentu selesai sepenuhnya.",[430,11951,11952],{},[441,11953,11954],{},"Contoh Kasus:",[430,11956,11957],{},[433,11958],{"alt":11959,"src":11960},"Perintah goal Antigravity 2 untuk membuat game Textris","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-goal-command-prompt.webp",[430,11962,11963],{},"Saat kami meminta sub-agen dinamis, tiga agen dijalankan untuk menyelesaikan tugas tersebut.",[430,11965,11966],{},[433,11967],{"alt":11968,"src":11969},"Antigravity 2 memunculkan subagen untuk menyelesaikan tugas secara otonom","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-spawning-subagents-1.webp",[430,11971,11972],{},[433,11973],{"alt":11974,"src":11975},"Progres detail dari subagen Antigravity 2 dalam mengeksekusi langkah-langkah","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-spawning-subagents-2.webp",[430,11977,11978],{},[433,11979],{"alt":11980,"src":11981},"Penyelesaian tugas otonom oleh subagen Antigravity 2","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-spawning-subagents-3.webp",[430,11983,11984,11985,11988,11989],{},"Untuk memainkan game Textris berbasis HTML yang dihasilkan, silakan klik ",[444,11986,6890],{"href":11987},"\u002Ftextris"," ini:\n",[11764,11990],{"alt":11991,"src":11992,"controls":1063},"AI generated Textris game in HTML","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fai-generated-textri-game-html.webm",[430,11994,11708,11995,11997],{},[495,11996,11946],{}," akan membuat rencana, mengekssekusinya langkah demi langkah, dan melaporkan perkembangannya kepada Anda di setiap tahap. Selain itu, agen akan mengelola jendela konteksnya sendiri agar tidak melebihi batas token. Fitur ini sangat cocok untuk tugas-tugas panjang, seperti optimasi performa atau refaktorisasi modul, yang memerlukan beberapa kali iterasi.",[878,11999,12000],{"id":10044},[495,12001,11899],{},[430,12003,12004,12005,12009],{},"Perintah ini memicu skill ",[444,12006,10044],{"href":12007,"rel":12008},"https:\u002F\u002Fgithub.com\u002Fmattpocock\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fproductivity\u002Fgrill-me\u002FSKILL.md",[448],", yang dibuat oleh Matt Pocock. Fitur ini sangat ringkas namun efektif. Ide di balik fitur ini adalah untuk memberikan pertanyaan dari berbagai aspek kepada Anda, memperjelas kasus ekstrem, menyelaraskan struktur, dan mematangkan rencana sebelum implementasi dimulai.",[430,12011,12012],{},[441,12013,11954],{},[430,12015,12016],{},[433,12017],{"alt":12018,"src":12019},"Memicu perintah grill-me untuk arsitektur Cloudflare di Antigravity 2","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-grill-me-command-prompt.webp",[430,12021,12022],{},[433,12023],{"alt":12024,"src":12025},"Sesi tanya jawab interaktif menggunakan keahlian grill-me","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-grill-me-interaction-1.webp",[430,12027,12028],{},[433,12029],{"alt":12030,"src":12031},"Mengklarifikasi kasus ekstrem dan menyusun rencana dengan grill-me","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-grill-me-interaction-2.webp",[430,12033,12034],{},"Fitur ini mendukung kemampuan pilihan ganda (multi-select):",[430,12036,12037],{},[433,12038],{"alt":12039,"src":12040},"Menggunakan kemampuan multi-pilihan selama proses grill-me","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-grill-me-multi-select-1.webp",[430,12042,12043],{},[433,12044],{"alt":12045,"src":12046},"Menyelesaikan pilihan dengan fitur multi-pilihan grill-me","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-grill-me-multi-select-2.webp",[430,12048,11708,12049,12051],{},[495,12050,11899],{}," sangat luar biasa. Fitur ini mencakup hampir seluruh aspek desain arsitektur untuk penerapan ke Cloudflare. Hal ini membuatnya sangat cocok untuk desain arsitektur aplikasi, refaktorisasi di berbagai domain, dan tugas kompleks lainnya.",[878,12053,12054],{"id":425},[495,12055,12056],{},"@\u002F ",[430,12058,12059],{},"Perintah ini tidak muncul dalam daftar fitur yang tersedia, tetapi terkadang kita membutuhkannya untuk mengelola jendela konteks. Perintah ini digunakan untuk menambahkan folder atau file (selain media) ke dalam kotak percakapan.",[474,12061,12063],{"id":12062},"skills-skill","Skills (Skill)",[430,12065,12066,12067,12069,12070,461],{},"Kita dapat mengetik ",[495,12068,8396],{}," untuk mengaktifkan kotak pop-up dan memilih skill tertentu. Mari kita uji coba skill ",[495,12071,10233],{},[430,12073,12074],{},[433,12075],{"alt":12076,"src":12077},"Memilih keahlian diagram Excalidraw dari kotak popup Antigravity","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-skill-selection-excalidraw.webp",[430,12079,12080],{},[441,12081,11954],{},[430,12083,12084],{},[433,12085],{"alt":12086,"src":12087},"Memberikan instruksi untuk menghasilkan diagram Excalidraw","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-excalidraw-diagram-prompt.webp",[430,12089,12090],{},[433,12091],{"alt":12092,"src":12093},"Pembuatan diagram arsitektur Excalidraw yang sukses","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-excalidraw-diagram-generation.webp",[430,12095,12096],{},[433,12097],{"alt":12098,"src":12099},"Antigravity architecture diagram","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-architecture.webp",[430,12101,12102],{},"Skill tersebut berhasil dijalankan setelah melewati beberapa kali konfirmasi izin akses sistem.",[474,12104,12106],{"id":12105},"server-mcp","Server MCP",[430,12108,12109],{},"Saat agen membangun backend, Anda biasanya harus membuka konsol web, membuat database, menyalin kunci API, dan menempelkannya kembali. Dengan memanfaatkan server MCP langsung di Antigravity, agen memperoleh \"tangan\" tambahan untuk memanipulasi infrastruktur cloud Anda.",[430,12111,12112],{},[441,12113,11954],{},[430,12115,12116],{},[433,12117],{"alt":12118,"src":12119},"Menginstruksikan server MCP untuk membuat aplikasi web Firebase","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-mcp-server-firebase-prompt.webp",[430,12121,12122],{},[433,12123],{"alt":12124,"src":12125},"Antigravity menggunakan server MCP untuk memanipulasi infrastruktur Firebase","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-mcp-server-firebase-execution-1.webp",[430,12127,12128],{},[433,12129],{"alt":12130,"src":12131},"Pembuatan aplikasi Firebase yang sukses melalui server MCP Antigravity","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-mcp-server-firebase-execution-2.webp",[430,12133,12134],{},"Agen berhasil membuat aplikasi web di Firebase menggunakan server MCP. Mari kita periksa repositorinya.",[922,12136,12138],{"className":1031,"code":12137,"language":1033,"meta":425,"style":425},"Create a new public GitHub repository called ‘to-do-app-techvoyage’. Then push all the current project files to it with the commit message ‘Initial commit — to-do-app’.\n",[495,12139,12140],{"__ignoreMap":425},[930,12141,12142,12145,12148,12151,12154,12157,12160,12163,12166,12169,12172,12175,12178,12181,12184,12187,12190,12193,12196,12198,12201,12204,12207,12209,12212],{"class":932,"line":933},[930,12143,12144],{"class":1040},"Create",[930,12146,12147],{"class":1044}," a",[930,12149,12150],{"class":1044}," new",[930,12152,12153],{"class":1044}," public",[930,12155,12156],{"class":1044}," GitHub",[930,12158,12159],{"class":1044}," repository",[930,12161,12162],{"class":1044}," called",[930,12164,12165],{"class":1044}," ‘to-do-app-techvoyage’.",[930,12167,12168],{"class":1044}," Then",[930,12170,12171],{"class":1044}," push",[930,12173,12174],{"class":1044}," all",[930,12176,12177],{"class":1044}," the",[930,12179,12180],{"class":1044}," current",[930,12182,12183],{"class":1044}," project",[930,12185,12186],{"class":1044}," files",[930,12188,12189],{"class":1044}," to",[930,12191,12192],{"class":1044}," it",[930,12194,12195],{"class":1044}," with",[930,12197,12177],{"class":1044},[930,12199,12200],{"class":1044}," commit",[930,12202,12203],{"class":1044}," message",[930,12205,12206],{"class":1044}," ‘Initial",[930,12208,12200],{"class":1044},[930,12210,12211],{"class":1044}," —",[930,12213,12214],{"class":1044}," to-do-app’.\n",[430,12216,12217],{},[433,12218],{"alt":12219,"src":12220},"Agen secara otomatis mendorong file proyek ke repositori GitHub baru","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-github-repository-push.webp",[430,12222,12223,12224,12227,12228,5941],{},"Repositori ",[495,12225,12226],{},"to-do-app-techvoyage"," kini tersedia di GitHub melalui ",[444,12229,6890],{"href":12230,"rel":12231},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fto-do-app-techvoyage",[448],[474,12233,12235],{"id":12234},"catatan-akhir","Catatan Akhir",[430,12237,12238],{},"Meskipun MCP dan Skill di Antigravity 2 — yang ditenagai oleh Gemini 3.5 Flash — menyajikan kecepatan luar biasa, alur kerja berbasis agen saat ini masih terhambat oleh interupsi izin akses yang terus-menerus serta belum adanya fitur checkpoint untuk rollback. Sebelum fitur checkpoint tersebut dirilis, melakukan commit Git secara berkala adalah jaring pengaman wajib bagi Anda.",[1636,12240,12241],{},"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);}",{"title":425,"searchDepth":1060,"depth":1067,"links":12243},[12244,12249,12250,12251],{"id":11939,"depth":1060,"text":11940,"children":12245},[12246,12247,12248],{"id":11943,"depth":1067,"text":11946},{"id":10044,"depth":1067,"text":11899},{"id":425,"depth":1067,"text":12056},{"id":12062,"depth":1060,"text":12063},{"id":12105,"depth":1060,"text":12106},{"id":12234,"depth":1060,"text":12235},[1656],"2026-06-06","Jelajahi Antigravity 2, aplikasi desktop berbasis agen. Pelajari cara mengelola sub-agen AI, menggunakan skill, dan memanfaatkan server MCP.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002FID-What-can-we-do-with-Antigravity-2.webp","Tutorial Antigravity 2: Panduan Agen AI, Skill, & Server MCP",{"schemaOrg":12258,"robots":1690,"sitemap":12260},[12259],{"@type":1667,"headline":11903,"description":12254},{"lastmod":12253},{"title":12256,"description":12254,"ogTitle":11903,"ogDescription":12254,"twitterTitle":11903,"twitterDescription":12254},"id\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",[],"wujtIqMzcL8XRbG_7hMOvMnWnNHpTxqZPuuXmtX-Mfg",{"id":12266,"title":11935,"author":1699,"body":12267,"category":12948,"date":12949,"description":12950,"extension":1661,"image":12951,"imageAlt":12952,"isPublished":1063,"meta":12953,"minRead":1067,"navigation":1063,"path":165,"seo":12957,"stem":12958,"tags":12959,"updatedAt":1699,"__hash__":12960},"article\u002Fid\u002Farticle\u002Fsetup-antigravity-2.md",{"type":427,"value":12268,"toc":12937},[12269,12280,12282,12285,12296,12299,12303,12312,12318,12325,12331,12338,12348,12350,12354,12361,12367,12370,12376,12380,12383,12395,12409,12416,12428,12438,12452,12454,12458,12461,12474,12477,12782,12792,12798,12808,12814,12820,12826,12828,12832,12842,12854,12860,12866,12872,12889,12892,12898,12900,12904,12907,12913,12916,12922,12924,12928,12931,12934],[430,12270,12271,12272,12275,12276,12279],{},"Pada ajang Google I\u002FO 2026, Google mengumumkan ",[441,12273,12274],{},"Antigravity 2",", sebuah aplikasi desktop mandiri yang menjadikan ",[441,12277,12278],{},"agent"," sebagai antarmuka pengguna utama. Anda cukup menjelaskan apa yang ingin Anda capai, lalu agent akan menyusun rencana, membaginya menjadi beberapa sub-tugas yang terkelola, dan mengeksekusinya.",[878,12281,1752],{"id":1751},[430,12283,12284],{},"Sebelum memulai, Anda membutuhkan:",[485,12286,12287,12290,12293],{},[488,12288,12289],{},"Komputer (panduan ini menggunakan macOS)",[488,12291,12292],{},"Browser web modern",[488,12294,12295],{},"Akun Gmail",[12297,12298],"hr",{},[474,12300,12302],{"id":12301},"_1-instal-antigravity-2","1. Instal Antigravity 2",[430,12304,12305,12306,12311],{},"Unduh Antigravity 2 dari ",[444,12307,12310],{"href":12308,"rel":12309},"https:\u002F\u002Fantigravity.google\u002Fdownload",[448],"antigravity.google"," dan instal di komputer Anda. Pada peluncuran pertama, Anda akan diminta untuk masuk menggunakan akun Gmail Anda.",[430,12313,12314],{},[433,12315],{"alt":12316,"src":12317},"Layar masuk akun Google pada peluncuran pertama Antigravity 2","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-gmail-login.webp",[430,12319,12320,12321,12324],{},"Setelah masuk, Anda akan melihat ",[441,12322,12323],{},"tombol suara"," di bidang input, yang memungkinkan Anda merekam perintah suara alih-alih mengetiknya.",[430,12326,12327],{},[433,12328],{"alt":12329,"src":12330},"Tombol perekaman suara pada bidang input teks Antigravity 2","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-voice-input-field.webp",[430,12332,12333,12334,12337],{},"Antigravity 2 juga memperkenalkan konsep ",[441,12335,12336],{},"Project"," (Proyek), yang dapat mencakup beberapa folder lokal dan beroperasi dengan pengaturan serta izin khusus dari agent tersebut.",[430,12339,12340,12344],{},[433,12341],{"alt":12342,"src":12343},"Menu pemilihan dan konfigurasi proyek di Antigravity 2","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-project-menu.webp",[433,12345],{"alt":12346,"src":12347},"Pembuatan proyek AI baru dengan jalur folder di Antigravity 2","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-project-creation.webp",[12297,12349],{},[474,12351,12353],{"id":12352},"_2-siapkan-mcp-dan-plugin","2. Siapkan MCP dan Plugin",[430,12355,12356,12357,12360],{},"Semua server Model Context Protocol (MCP), plugin, dan keahlian (skills) dikelola di bawah bagian ",[441,12358,12359],{},"Customizations"," (Kustomisasi) pada menu Pengaturan:",[430,12362,12363],{},[433,12364],{"alt":12365,"src":12366},"Tab kustomisasi pada pengaturan untuk mengelola server MCP dan skill","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-settings-customizations.webp",[430,12368,12369],{},"Saat ini, plugin yang tersedia hanya berasal dari Google, namun semoga akan ada lebih banyak lagi yang dirilis di masa mendatang.",[430,12371,12372],{},[433,12373],{"alt":12374,"src":12375},"Daftar plugin resmi Google dan integrasi di Antigravity 2","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-google-plugins-list.webp",[2156,12377,12379],{"id":12378},"menambahkan-mcp-server-yang-tersedia","Menambahkan MCP Server yang Tersedia",[430,12381,12382],{},"Untuk menginstal MCP Server yang telah dikonfigurasi sebelumnya (misalnya, GitHub):",[533,12384,12385,12390],{},[488,12386,4271,12387,461],{},[441,12388,12389],{},"Add MCP+",[488,12391,9933,12392,461],{},[441,12393,12394],{},"GitHub MCP Server",[430,12396,12397,12401,12405],{},[433,12398],{"alt":12399,"src":12400},"Menambahkan server MCP dengan mengklik tombol Add MCP plus","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-add-mcp-button.webp",[433,12402],{"alt":12403,"src":12404},"Memilih GitHub MCP Server dari daftar integrasi yang tersedia","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-select-github-mcp.webp",[433,12406],{"alt":12407,"src":12408},"Wizard pengaturan otorisasi dan instalasi GitHub MCP Server","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-github-mcp-setup.webp",[430,12410,12411,12412],{},"Konfigurasi GitHub MCP Server berakhir dengan pesan error:\n",[433,12413],{"alt":12414,"src":12415},"Error konfigurasi selama proses instalasi GitHub MCP Server","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-github-mcp-error.webp",[430,12417,12418,12419,12421,12422,12424,12425,12427],{},"Karena kita sudah menginstal ",[495,12420,2789],{}," di macOS, kita dapat melewati masalah ini dengan menjalankan perintah ",[495,12423,2789],{}," langsung di dalam percakapan. Namun, pertama-tama kita perlu menambahkan perintah ",[495,12426,2789],{}," secara eksplisit ke dalam perizinan Antigravity kita.",[430,12429,12430,12434],{},[433,12431],{"alt":12432,"src":12433},"Dialog permintaan untuk menambahkan perintah git ke izin terminal","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-add-git-permission-1.webp",[433,12435],{"alt":12436,"src":12437},"Pemberian izin eksekusi perintah git pada menu pengaturan","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-add-git-permission-2.webp",[430,12439,12440,12441,12443,12444,12448],{},"Mari kita uji prompt tersebut untuk melihat apakah perintah ",[495,12442,2789],{}," sekarang sudah berfungsi:\n",[433,12445],{"alt":12446,"src":12447},"Mengirimkan permintaan git status dalam kotak input prompt AI agent","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-git-command-test-1.webp",[433,12449],{"alt":12450,"src":12451},"Eksekusi perintah git status yang sukses langsung di dalam obrolan","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-git-command-test-2.webp",[12297,12453],{},[474,12455,12457],{"id":12456},"_3-tambahkan-mcp-server-kustom","3. Tambahkan MCP Server Kustom",[430,12459,12460],{},"Jika MCP Server yang Anda inginkan tidak ada dalam daftar default, Anda dapat menambahkannya dengan mengedit file konfigurasi MCP secara langsung. Konfigurasi ini terletak di:",[922,12462,12464],{"className":1031,"code":12463,"language":1033,"meta":425,"style":425},"~\u002F.gemini\u002Fconfig\u002Fmcp_config.json\n",[495,12465,12466],{"__ignoreMap":425},[930,12467,12468,12471],{"class":932,"line":933},[930,12469,12470],{"class":944},"~",[930,12472,12473],{"class":940},"\u002F.gemini\u002Fconfig\u002Fmcp_config.json\n",[430,12475,12476],{},"Mari kita tambahkan beberapa Cloudflare MCP Server sebagai contoh. Karena Cloudflare mendukung registrasi klien secara dinamis, kita hanya perlu mengaktifkan OAuth. Tambahkan baris berikut ke konfigurasi JSON Anda:",[922,12478,12480],{"className":2903,"code":12479,"language":2905,"meta":425,"style":425},"    \"cloudflare-api\": {\n      \"serverUrl\": \"https:\u002F\u002Fmcp.cloudflare.com\u002Fmcp\",\n      \"oauth\": {\n        \"enabled\": true\n      }\n    },\n    \"cloudflare-docs\": {\n      \"serverUrl\": \"https:\u002F\u002Fdocs.mcp.cloudflare.com\u002Fmcp\"\n    },\n    \"cloudflare-bindings\": {\n      \"serverUrl\": \"https:\u002F\u002Fbindings.mcp.cloudflare.com\u002Fmcp\",\n      \"oauth\": {\n        \"enabled\": true\n      }\n    },\n    \"cloudflare-builds\": {\n      \"serverUrl\": \"https:\u002F\u002Fbuilds.mcp.cloudflare.com\u002Fmcp\",\n      \"oauth\": {\n        \"enabled\": true\n      }\n    },\n    \"cloudflare-observability\": {\n      \"serverUrl\": \"https:\u002F\u002Fobservability.mcp.cloudflare.com\u002Fmcp\",\n      \"oauth\": {\n        \"enabled\": true\n      }\n    }\n",[495,12481,12482,12495,12515,12527,12539,12543,12550,12563,12580,12586,12599,12618,12630,12642,12646,12652,12665,12684,12696,12708,12712,12718,12731,12750,12762,12774,12778],{"__ignoreMap":425},[930,12483,12484,12486,12489,12491,12493],{"class":932,"line":933},[930,12485,7605],{"class":944},[930,12487,12488],{"class":1044},"cloudflare-api",[930,12490,3692],{"class":944},[930,12492,579],{"class":940},[930,12494,2912],{"class":944},[930,12496,12497,12499,12502,12504,12506,12508,12511,12513],{"class":932,"line":1060},[930,12498,7618],{"class":944},[930,12500,12501],{"class":936},"serverUrl",[930,12503,3692],{"class":944},[930,12505,888],{"class":944},[930,12507,3284],{"class":944},[930,12509,12510],{"class":1044},"https:\u002F\u002Fmcp.cloudflare.com\u002Fmcp",[930,12512,3692],{"class":944},[930,12514,7635],{"class":944},[930,12516,12517,12519,12521,12523,12525],{"class":932,"line":1067},[930,12518,7618],{"class":944},[930,12520,7864],{"class":936},[930,12522,3692],{"class":944},[930,12524,888],{"class":944},[930,12526,2942],{"class":944},[930,12528,12529,12531,12533,12535,12537],{"class":932,"line":1074},[930,12530,7654],{"class":944},[930,12532,7877],{"class":1040},[930,12534,3692],{"class":944},[930,12536,888],{"class":944},[930,12538,1377],{"class":944},[930,12540,12541],{"class":932,"line":1921},[930,12542,7888],{"class":944},[930,12544,12545,12548],{"class":932,"line":1926},[930,12546,12547],{"class":944},"    }",[930,12549,7635],{"class":940},[930,12551,12552,12554,12557,12559,12561],{"class":932,"line":1932},[930,12553,7605],{"class":944},[930,12555,12556],{"class":1044},"cloudflare-docs",[930,12558,3692],{"class":944},[930,12560,579],{"class":940},[930,12562,2912],{"class":944},[930,12564,12565,12567,12569,12571,12573,12575,12578],{"class":932,"line":2269},[930,12566,7618],{"class":944},[930,12568,12501],{"class":936},[930,12570,3692],{"class":944},[930,12572,888],{"class":944},[930,12574,3284],{"class":944},[930,12576,12577],{"class":1044},"https:\u002F\u002Fdocs.mcp.cloudflare.com\u002Fmcp",[930,12579,1953],{"class":944},[930,12581,12582,12584],{"class":932,"line":1692},[930,12583,12547],{"class":944},[930,12585,7635],{"class":940},[930,12587,12588,12590,12593,12595,12597],{"class":932,"line":2375},[930,12589,7605],{"class":944},[930,12591,12592],{"class":1044},"cloudflare-bindings",[930,12594,3692],{"class":944},[930,12596,579],{"class":940},[930,12598,2912],{"class":944},[930,12600,12601,12603,12605,12607,12609,12611,12614,12616],{"class":932,"line":2381},[930,12602,7618],{"class":944},[930,12604,12501],{"class":936},[930,12606,3692],{"class":944},[930,12608,888],{"class":944},[930,12610,3284],{"class":944},[930,12612,12613],{"class":1044},"https:\u002F\u002Fbindings.mcp.cloudflare.com\u002Fmcp",[930,12615,3692],{"class":944},[930,12617,7635],{"class":944},[930,12619,12620,12622,12624,12626,12628],{"class":932,"line":2387},[930,12621,7618],{"class":944},[930,12623,7864],{"class":936},[930,12625,3692],{"class":944},[930,12627,888],{"class":944},[930,12629,2942],{"class":944},[930,12631,12632,12634,12636,12638,12640],{"class":932,"line":2392},[930,12633,7654],{"class":944},[930,12635,7877],{"class":1040},[930,12637,3692],{"class":944},[930,12639,888],{"class":944},[930,12641,1377],{"class":944},[930,12643,12644],{"class":932,"line":2398},[930,12645,7888],{"class":944},[930,12647,12648,12650],{"class":932,"line":3353},[930,12649,12547],{"class":944},[930,12651,7635],{"class":940},[930,12653,12654,12656,12659,12661,12663],{"class":932,"line":3364},[930,12655,7605],{"class":944},[930,12657,12658],{"class":1044},"cloudflare-builds",[930,12660,3692],{"class":944},[930,12662,579],{"class":940},[930,12664,2912],{"class":944},[930,12666,12667,12669,12671,12673,12675,12677,12680,12682],{"class":932,"line":3369},[930,12668,7618],{"class":944},[930,12670,12501],{"class":936},[930,12672,3692],{"class":944},[930,12674,888],{"class":944},[930,12676,3284],{"class":944},[930,12678,12679],{"class":1044},"https:\u002F\u002Fbuilds.mcp.cloudflare.com\u002Fmcp",[930,12681,3692],{"class":944},[930,12683,7635],{"class":944},[930,12685,12686,12688,12690,12692,12694],{"class":932,"line":3377},[930,12687,7618],{"class":944},[930,12689,7864],{"class":936},[930,12691,3692],{"class":944},[930,12693,888],{"class":944},[930,12695,2942],{"class":944},[930,12697,12698,12700,12702,12704,12706],{"class":932,"line":3905},[930,12699,7654],{"class":944},[930,12701,7877],{"class":1040},[930,12703,3692],{"class":944},[930,12705,888],{"class":944},[930,12707,1377],{"class":944},[930,12709,12710],{"class":932,"line":3911},[930,12711,7888],{"class":944},[930,12713,12714,12716],{"class":932,"line":3920},[930,12715,12547],{"class":944},[930,12717,7635],{"class":940},[930,12719,12720,12722,12725,12727,12729],{"class":932,"line":4569},[930,12721,7605],{"class":944},[930,12723,12724],{"class":1044},"cloudflare-observability",[930,12726,3692],{"class":944},[930,12728,579],{"class":940},[930,12730,2912],{"class":944},[930,12732,12733,12735,12737,12739,12741,12743,12746,12748],{"class":932,"line":5023},[930,12734,7618],{"class":944},[930,12736,12501],{"class":936},[930,12738,3692],{"class":944},[930,12740,888],{"class":944},[930,12742,3284],{"class":944},[930,12744,12745],{"class":1044},"https:\u002F\u002Fobservability.mcp.cloudflare.com\u002Fmcp",[930,12747,3692],{"class":944},[930,12749,7635],{"class":944},[930,12751,12752,12754,12756,12758,12760],{"class":932,"line":5032},[930,12753,7618],{"class":944},[930,12755,7864],{"class":936},[930,12757,3692],{"class":944},[930,12759,888],{"class":944},[930,12761,2942],{"class":944},[930,12763,12764,12766,12768,12770,12772],{"class":932,"line":5040},[930,12765,7654],{"class":944},[930,12767,7877],{"class":1040},[930,12769,3692],{"class":944},[930,12771,888],{"class":944},[930,12773,1377],{"class":944},[930,12775,12776],{"class":932,"line":5048},[930,12777,7888],{"class":944},[930,12779,12780],{"class":932,"line":5053},[930,12781,7738],{"class":944},[430,12783,12784,12785,12787,12788,12791],{},"Kembali ke bagian ",[441,12786,12359],{}," di aplikasi dan klik tombol ",[441,12789,12790],{},"Refresh"," (Segarkan). Sekarang Anda akan melihat daftar Cloudflare MCP Server yang tertunda otorisasi.",[430,12793,12794],{},[433,12795],{"alt":12796,"src":12797},"Daftar Cloudflare MCP Server dalam menu kustomisasi yang tertunda otorisasi","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-cloudflare-mcp-pending.webp",[430,12799,4271,12800,12803,12804,12807],{},[441,12801,12802],{},"Authenticate"," di samping MCP Server tersebut. Ini akan membuka halaman otentikasi di browser web Anda. Setelah terotentikasi, sebuah kode otorisasi (",[441,12805,12806],{},"auth code",") akan dibuat.",[430,12809,12810],{},[433,12811],{"alt":12812,"src":12813},"Browser web menampilkan kode otorisasi OAuth dinamis untuk Cloudflare MCP","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-cloudflare-auth-code.webp",[430,12815,12816,12817,461],{},"Salin kode otorisasi ini, tempelkan kembali ke kolom input teks di Antigravity, lalu klik ",[441,12818,12819],{},"Submit",[430,12821,12822],{},[433,12823],{"alt":12824,"src":12825},"Mengirimkan kode verifikasi OAuth di antarmuka pengaturan Antigravity","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-cloudflare-auth-submit.webp",[12297,12827],{},[474,12829,12831],{"id":12830},"_4-tambahkan-keahlian-kustom","4. Tambahkan Keahlian Kustom",[430,12833,12834,12835,12838,12839,461],{},"Saat ini, menambahkan keahlian kustom (skills) ",[441,12836,12837],{},"tidak dapat"," dilakukan secara langsung melalui UI aplikasi desktop. Alih-alih, keahlian tersebut harus ditambahkan langsung ke folder ",[495,12840,12841],{},"~\u002F.gemini\u002Fconfig\u002Fskills",[430,12843,12844,12845,12848,12849],{},"Karena kita menggunakan CLI ",[495,12846,12847],{},"npx skills"," untuk memusatkan seluruh keahlian agent, setiap keahlian yang baru ditambahkan dapat tersedia untuk semua agent, termasuk Antigravity. ",[898,12850,12851,12852,10316],{},"(Untuk pembahasan lebih mendalam mengenai hal ini, silakan merujuk ke artikel kami: ",[444,12853,8657],{"href":359},[430,12855,12856,12857,12859],{},"Pada mulanya, saat mengetik ",[495,12858,8396],{}," di kotak percakapan, daftar keahlian tampak kosong:",[430,12861,12862],{},[433,12863],{"alt":12864,"src":12865},"Kotak perintah menampilkan daftar skill yang kosong saat mengetik pintasan garis miring","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-empty-skills-list.webp",[430,12867,12868,12869,12871],{},"Tampaknya Antigravity 2 tidak secara otomatis membaca dari folder keahlian global (",[495,12870,8642],{},"). Untuk mengatasinya, kita perlu membuat symbolic link (tautan simbolis) yang mengarah ke direktori konfigurasi Antigravity:",[922,12873,12875],{"className":1031,"code":12874,"language":1033,"meta":425,"style":425},"ln -s ~\u002F.agents\u002Fskills\u002Fexcalidraw-diagram ~\u002F.gemini\u002Fconfig\u002Fskills\u002Fexcalidraw-diagram\n",[495,12876,12877],{"__ignoreMap":425},[930,12878,12879,12881,12883,12886],{"class":932,"line":933},[930,12880,3678],{"class":1040},[930,12882,3534],{"class":1044},[930,12884,12885],{"class":1044}," ~\u002F.agents\u002Fskills\u002Fexcalidraw-diagram",[930,12887,12888],{"class":1044}," ~\u002F.gemini\u002Fconfig\u002Fskills\u002Fexcalidraw-diagram\n",[430,12890,12891],{},"Setelah ditautkan, keahlian tersebut akan langsung tersedia di aplikasi!",[430,12893,12894],{},[433,12895],{"alt":12896,"src":12897},"Skill diagram Excalidraw sukses muncul dalam daftar perintah Antigravity","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-excalidraw-skill-available.webp",[12297,12899],{},[474,12901,12903],{"id":12902},"_5-uji-tugas-sederhana","5. Uji Tugas Sederhana",[430,12905,12906],{},"Sekarang setelah semuanya dikonfigurasi, mari kita jalankan pengujian.",[430,12908,12909],{},[433,12910],{"alt":12911,"src":12912},"Mengirimkan tugas pengujian untuk menampilkan daftar database D1","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-test-simple-task-prompt.webp",[430,12914,12915],{},"Seperti yang ditunjukkan di bawah ini, model berhasil mendeteksi dan menggunakan Cloudflare MCP Server yang baru ditambahkan untuk menangani permintaan tersebut.",[430,12917,12918],{},[433,12919],{"alt":12920,"src":12921},"AI agent sukses menampilkan daftar database D1 menggunakan Cloudflare MCP","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-test-task-success.webp",[12297,12923],{},[474,12925,12927],{"id":12926},"opini-akhir","Opini Akhir",[430,12929,12930],{},"Antigravity 2 mewakili perubahan besar dari IDE tradisional menjadi aplikasi desktop yang mudah diakses, memberdayakan pengguna awam untuk bertindak sebagai orkestrator dalam tugas apa pun.",[430,12932,12933],{},"Namun, Antigravity 2 masih membutuhkan beberapa penyempurnaan. Saat ada fungsi yang gagal, proses debugging bisa sangat menyebalkan karena penanganan error yang kurang jelas. Selain itu, dokumentasi resminya terasa kurang rapi—kemungkinan besar dibuat oleh AI—karena beberapa referensi dan lokasi file saat ini tidak tepat.",[1636,12935,12936],{},"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}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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":425,"searchDepth":1060,"depth":1067,"links":12938},[12939,12940,12941,12944,12945,12946,12947],{"id":1751,"depth":1067,"text":1752},{"id":12301,"depth":1060,"text":12302},{"id":12352,"depth":1060,"text":12353,"children":12942},[12943],{"id":12378,"depth":1074,"text":12379},{"id":12456,"depth":1060,"text":12457},{"id":12830,"depth":1060,"text":12831},{"id":12902,"depth":1060,"text":12903},{"id":12926,"depth":1060,"text":12927},[1656],"2026-06-05","Temukan fitur baru Google Antigravity 2. Baca panduan praktis kami untuk menginstal aplikasi, menguji tugas AI agent, dan menambahkan server MCP kustom secara manual.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002FID-Setup-Antigravity-2.0.webp","Review & Cara Setting Google Antigravity 2: AI Agent, MCP, & Plugin",{"schemaOrg":12954,"robots":1690,"sitemap":12956},[12955],{"@type":1667,"headline":12952,"description":12950},{"lastmod":12949},{"title":12952,"description":12950,"ogTitle":11935,"ogDescription":12950,"twitterTitle":11935,"twitterDescription":12950},"id\u002Farticle\u002Fsetup-antigravity-2",[],"9IkdKh7XbGbS0d_TRibY5gKJBVOaIsOVsBMiP_efqYc",{"id":12962,"title":8657,"author":1699,"body":12963,"category":13379,"date":13380,"description":13381,"extension":1661,"image":13382,"imageAlt":13383,"isPublished":1063,"meta":13384,"minRead":1074,"navigation":1063,"path":149,"seo":13390,"stem":13391,"tags":13392,"updatedAt":1699,"__hash__":13393},"article\u002Fid\u002Farticle\u002Fcentralised-the-skills-for-agents.md",{"type":427,"value":12964,"toc":13369},[12965,12976,12979,13002,13017,13021,13031,13047,13057,13064,13067,13089,13095,13106,13124,13133,13143,13147,13154,13175,13178,13184,13194,13201,13204,13224,13232,13236,13242,13314,13320,13324,13360,13366],[430,12966,12967,12968,12971,12972,12975],{},"Jika Anda menjalankan beberapa agen AI atau CLI di komputer Anda — baik itu Hermes, Claude Code, Codex, Antigravity, Kimi, atau alat lainnya yang didukung — Anda mungkin pernah mengalami masalah yang membuat frustrasi: ",[441,12969,12970],{},"fragmentasi kemampuan"," (skills fragmentation). Setiap agen atau CLI mengelola folder ",[495,12973,12974],{},"skills","-nya sendiri secara terpisah, yang menyebabkan instalasi ganda, perbedaan versi, dan kerumitan dalam pengelolaannya.",[430,12977,12978],{},"Dalam pekerjaan kami sehari-hari dengan agen AI, kami sering kali menemui masalah berikut:",[485,12980,12981,12987,12993],{},[488,12982,12983,12986],{},[441,12984,12985],{},"Instalasi berulang",": Menginstal kemampuan baru untuk satu agen, lalu harus menginstalnya lagi dan lagi untuk agen lainnya.",[488,12988,12989,12992],{},[441,12990,12991],{},"Perbedaan versi"," (version drift): Menyesuaikan atau memperbaiki kemampuan pada satu agen, lupa memperbarui yang lain, sehingga agen-agen tersebut berperilaku berbeda.",[488,12994,12995,12998,12999,13001],{},[441,12996,12997],{},"Pengelolaan kemampuan",": Harus memeriksa setiap folder ",[495,13000,12974],{}," untuk setiap agen di sistem kami hanya untuk melihat kemampuan apa saja yang sebenarnya telah terinstal.",[430,13003,13004,13005,13007,13008,13010,13011,461],{},"CLI ",[495,13006,12847],{},", sebuah CLI sumber terbuka (open-source) dari Vercel, menyelesaikan masalah ini dengan memungkinkan Anda mengelola satu folder ",[495,13009,12974],{}," yang terpusat dan membagikannya ke semua agen Anda. Anda dapat melihat ",[444,13012,13014,13015],{"href":8603,"rel":13013},[448],"repositori GitHub ",[495,13016,12847],{},[474,13018,13020],{"id":13019},"folder-terpusat","Folder Terpusat",[430,13022,13023,13024,13026,13027,13030],{},"Konsepnya sederhana: jika kita mengarahkan folder ",[495,13025,12974],{}," dari setiap agen ke ",[441,13028,13029],{},"folder fisik yang sama",", masalah fragmentasi akan hilang sepenuhnya.",[430,13032,13033,13034,13036,13037,13039,13040,13043,13044,13046],{},"Saat Anda menginstal sebuah kemampuan menggunakan CLI ",[495,13035,12847],{},", kemampuan tersebut akan diunduh ke folder terpusat di komputer Anda (",[495,13038,8642],{},"). CLI kemudian membuat ",[441,13041,13042],{},"symlink"," (tautan simbolis, yang berfungsi sebagai penunjuk) dari folder ",[495,13045,12974],{}," masing-masing agen kembali ke folder terpusat tersebut.",[430,13048,13049,13050,13053,13054,13056],{},"Sebagai contoh, ketika Claude Code mencari kemampuan di ",[495,13051,13052],{},"~\u002F.claude\u002Fskills\u002F",", ia akan diarahkan secara transparan ke ",[495,13055,8642],{},". Jika Anda melakukan penyesuaian pada sebuah kemampuan di folder terpusat tersebut, setiap agen akan langsung melihat pembaruan tersebut. Tidak perlu menyalin manual, tidak perlu skrip sinkronisasi, dan tidak ada ruang penyimpanan disk yang terbuang.",[474,13058,13060,13061,13063],{"id":13059},"menginstal-npx-skills-dan-menambahkan-kemampuan","Menginstal ",[495,13062,12847],{}," dan Menambahkan Kemampuan",[430,13065,13066],{},"Jalankan perintah berikut untuk memulai dan menambahkan kemampuan pertama kita:",[922,13068,13070],{"className":1031,"code":13069,"language":1033,"meta":425,"style":425},"npx skills add https:\u002F\u002Fgithub.com\u002Fcoleam00\u002Fexcalidraw-diagram-skill --skill excalidraw-diagram\n",[495,13071,13072],{"__ignoreMap":425},[930,13073,13074,13076,13078,13080,13083,13086],{"class":932,"line":933},[930,13075,7630],{"class":1040},[930,13077,8617],{"class":1044},[930,13079,1054],{"class":1044},[930,13081,13082],{"class":1044}," https:\u002F\u002Fgithub.com\u002Fcoleam00\u002Fexcalidraw-diagram-skill",[930,13084,13085],{"class":1044}," --skill",[930,13087,13088],{"class":1044}," excalidraw-diagram\n",[430,13090,13091],{},[433,13092],{"alt":13093,"src":13094},"Menggunakan perintah npx skills add untuk menginstal keahlian dari GitHub","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-add-command.webp",[430,13096,13097,13098,13101,13102],{},"CLI akan menanyakan apakah ingin mengonfigurasi ini untuk proyek tertentu atau secara global. Kami biasanya menyarankan untuk memilih ",[441,13099,13100],{},"global"," agar semua agen yang didukung dapat mengaksesnya:\n",[433,13103],{"alt":13104,"src":13105},"Memilih opsi instalasi global di CLI npx skills","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-install-global-prompt.webp",[430,13107,13108,13109,13111,13112,13115,13116,13120],{},"Selanjutnya, pastikan untuk memilih ",[495,13110,8638],{}," guna menjamin ",[441,13113,13114],{},"satu sumber kebenaran data"," (single source of truth):\n",[433,13117],{"alt":13118,"src":13119},"Memilih metode symlink untuk sinkronisasi keahlian","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-symlink-option.webp",[433,13121],{"alt":13122,"src":13123},"Konfirmasi keberhasilan instalasi dan pembuatan symlink di CLI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-installation-completed.webp",[430,13125,13126,13127,1366,13129],{},"Setelah selesai, kita dapat memverifikasi bahwa kemampuan tersebut telah terinstal di folder terpusat di ",[495,13128,8642],{},[433,13130],{"alt":13131,"src":13132},"Memverifikasi keahlian yang diinstal di direktori terpusat","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-directory-verification.webp",[430,13134,13135,13136,13138,13139],{},"Buka Kimi CLI (atau agen lainnya), dan kemampuan ",[495,13137,10233],{}," kini tersedia dan siap digunakan!\n",[433,13140],{"alt":13141,"src":13142},"Kimi CLI menunjukkan keahlian terpusat yang dimuat dan siap digunakan","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fkimi-cli-skills-integration.webp",[474,13144,13146],{"id":13145},"membuat-kemampuan-dari-nol","Membuat Kemampuan dari Nol",[430,13148,13149,13150,13153],{},"Untuk membangun kemampuan Anda sendiri, Anda dapat menggunakan alat ",[495,13151,13152],{},"skill-creator"," dari Anthropic. Instal seperti ini:",[922,13155,13157],{"className":1031,"code":13156,"language":1033,"meta":425,"style":425},"npx skills add https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills --skill skill-creator\n",[495,13158,13159],{"__ignoreMap":425},[930,13160,13161,13163,13165,13167,13170,13172],{"class":932,"line":933},[930,13162,7630],{"class":1040},[930,13164,8617],{"class":1044},[930,13166,1054],{"class":1044},[930,13168,13169],{"class":1044}," https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills",[930,13171,13085],{"class":1044},[930,13173,13174],{"class":1044}," skill-creator\n",[430,13176,13177],{},"Sekarang, di Kimi atau agen lainnya, masukkan perintah (prompt) berikut:",[922,13179,13182],{"className":13180,"code":13181,"language":4639},[4637],"Use the skill-creator to help me build a skill for creating a product landing page\n",[495,13183,13181],{"__ignoreMap":425},[430,13185,13186,13187,13189,13190],{},"Kimi atau agen Anda akan secara otomatis mengenali ",[495,13188,13152],{}," dan memandu Anda melalui prosesnya langkah demi langkah:\n",[433,13191],{"alt":13192,"src":13193},"Wizard skill-creator interaktif yang berjalan di Kimi CLI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fkimi-cli-skill-creator-setup.webp",[474,13195,13197,13198,13200],{"id":13196},"perintah-berguna-npx-skills-lainnya","Perintah Berguna ",[495,13199,12847],{}," Lainnya",[430,13202,13203],{},"Berikut beberapa perintah praktis lainnya:",[485,13205,13206,13212,13218],{},[488,13207,13208,13211],{},[495,13209,13210],{},"npx skills ls -g",": Menampilkan daftar semua kemampuan yang terinstal secara global",[488,13213,13214,13217],{},[495,13215,13216],{},"npx skills update",": Memperbarui semua kemampuan dengan satu perintah saja",[488,13219,13220,13223],{},[495,13221,13222],{},"npx skills remove",": Menghapus\u002Fmencopot instalasi kemampuan secara interaktif",[430,13225,7363,13226,13231],{},[444,13227,13014,13229],{"href":8603,"rel":13228},[448],[495,13230,12847],{}," untuk perintah dan referensi selengkapnya.",[474,13233,13235],{"id":13234},"melangkah-lebih-jauh","Melangkah Lebih Jauh",[430,13237,13238,13239,13241],{},"Karena semua kemampuan sekarang berada di satu tempat (",[495,13240,8642],{},"), kita dapat menginisialisasinya sebagai repositori Git dan mengunggahnya ke GitHub atau GitLab.",[922,13243,13245],{"className":1031,"code":13244,"language":1033,"meta":425,"style":425},"cd ~\u002F.agents\u002Fskills\ngit init\ngit add .\ngit commit -m \"Initial skills folder\"\ngit remote add origin https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fskills\ngit push -u origin main\n",[495,13246,13247,13254,13261,13269,13285,13300],{"__ignoreMap":425},[930,13248,13249,13251],{"class":932,"line":933},[930,13250,2813],{"class":961},[930,13252,13253],{"class":1044}," ~\u002F.agents\u002Fskills\n",[930,13255,13256,13258],{"class":932,"line":1060},[930,13257,2789],{"class":1040},[930,13259,13260],{"class":1044}," init\n",[930,13262,13263,13265,13267],{"class":932,"line":1067},[930,13264,2789],{"class":1040},[930,13266,1054],{"class":1044},[930,13268,4896],{"class":1044},[930,13270,13271,13273,13275,13278,13280,13283],{"class":932,"line":1074},[930,13272,2789],{"class":1040},[930,13274,12200],{"class":1044},[930,13276,13277],{"class":1044}," -m",[930,13279,3284],{"class":944},[930,13281,13282],{"class":1044},"Initial skills folder",[930,13284,1953],{"class":944},[930,13286,13287,13289,13292,13294,13297],{"class":932,"line":1921},[930,13288,2789],{"class":1040},[930,13290,13291],{"class":1044}," remote",[930,13293,1054],{"class":1044},[930,13295,13296],{"class":1044}," origin",[930,13298,13299],{"class":1044}," https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fskills\n",[930,13301,13302,13304,13306,13309,13311],{"class":932,"line":1926},[930,13303,2789],{"class":1040},[930,13305,12171],{"class":1044},[930,13307,13308],{"class":1044}," -u",[930,13310,13296],{"class":1044},[930,13312,13313],{"class":1044}," main\n",[430,13315,13316,13317,461],{},"Sekarang, kita memiliki riwayat lengkap dari semua perubahan kemampuan, yang berarti kita dapat dengan mudah melakukan pengembalian (rollback) jika ada pembaruan yang merusak sesuatu. Selain itu, kita dapat menyinkronkan kemampuan ini dengan lancar di beberapa perangkat komputer (seperti laptop dan komputer desktop) dengan menjalankan perintah singkat ",[495,13318,13319],{},"git pull",[474,13321,13323],{"id":13322},"beberapa-hal-yang-perlu-diperhatikan-keamanan-risiko","Beberapa Hal yang Perlu Diperhatikan (Keamanan & Risiko)",[485,13325,13326,13332,13338,13348,13354],{},[488,13327,13328,13331],{},[441,13329,13330],{},"Kompatibilitas bervariasi",": Belum semua platform agen mendukung setiap fitur (seperti hook khusus atau alat tertentu yang diizinkan). Sebuah kemampuan mungkin berfungsi dengan baik di satu agen tetapi kurang optimal di agen lainnya.",[488,13333,13334,13337],{},[441,13335,13336],{},"Percayai sumbernya",": Hanya instal kemampuan dari sumber yang tepercaya.",[488,13339,13340,13343,13344,13347],{},[441,13341,13342],{},"Tinjau sebelum menjalankan",": Jika Anda menggunakan kemampuan khusus atau pihak ketiga, periksa file-filenya (terutama di folder ",[495,13345,13346],{},"scripts\u002F",") sebelum mengizinkan agen Anda menjalankannya.",[488,13349,13350,13353],{},[441,13351,13352],{},"Prinsip hak istimewa paling rendah",": Cobalah untuk tidak memberikan izin akses alat lebih dari yang mutlak dibutuhkan oleh kemampuan tersebut untuk melakukan tugasnya.",[488,13355,13356,13359],{},[441,13357,13358],{},"Jangan pernah menulis rahasia langsung dalam kode",": Jauhkan kunci API dan data sensitif (secret) Anda dari file kemampuan.",[430,13361,13362,13363,13365],{},"Mengonfigurasi \"satu sumber kebenaran\" terpusat dengan ",[495,13364,12847],{}," telah menyelamatkan tim kami dari rasa frustrasi dan pekerjaan yang sia-sia. Sangat direkomendasikan untuk mencobanya — kapabilitas AI akan terus berkembang seiring bertambahnya kemampuan!",[1636,13367,13368],{},"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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":425,"searchDepth":1060,"depth":1067,"links":13370},[13371,13372,13374,13375,13377,13378],{"id":13019,"depth":1060,"text":13020},{"id":13059,"depth":1060,"text":13373},"Menginstal npx skills dan Menambahkan Kemampuan",{"id":13145,"depth":1060,"text":13146},{"id":13196,"depth":1060,"text":13376},"Perintah Berguna npx skills Lainnya",{"id":13234,"depth":1060,"text":13235},{"id":13322,"depth":1060,"text":13323},[1656],"2026-06-04","Menjalankan banyak agen AI seperti Claude Code atau Kimi? Pelajari cara mengatasi fragmentasi kemampuan dan kelola satu folder terpusat memakai npx skills.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002FMengatasi-Fragmentasi-Kemampuan-Agen-AI-dengan-npx-skills.webp","Mengatasi Fragmentasi Kemampuan Agen AI dengan npx skills CLI",{"schemaOrg":13385,"robots":1690,"sitemap":13388},[13386],{"@type":1667,"headline":13387,"description":13381},"Cara Mengatasi Fragmentasi Kemampuan Agen AI dengan npx skills",{"lastmod":13389},"2026-06-03",{"title":13387,"description":13381,"ogTitle":8657,"ogDescription":13381,"twitterTitle":8657,"twitterDescription":13381},"id\u002Farticle\u002Fcentralised-the-skills-for-agents",[],"L6xO64KB9Ek1GlNXp2VGc1YJ_f_xB5QuAweiQFKfvLc",{"id":13395,"title":13396,"author":1699,"body":13397,"category":13680,"date":13681,"description":13682,"extension":1661,"image":13683,"imageAlt":13684,"isPublished":1063,"meta":13685,"minRead":2269,"navigation":1063,"path":155,"seo":13690,"stem":13691,"tags":13692,"updatedAt":1699,"__hash__":13693},"article\u002Fid\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare.md","Sembunyikan NodeWarden Anda di Balik Cloudflare",{"type":427,"value":13398,"toc":13671},[13399,13406,13412,13441,13445,13456,13458,13462,13465,13469,13502,13506,13512,13579,13583,13593,13656,13660],[430,13400,13401,13402,13405],{},"Saat NodeWarden Anda terekspos secara publik di internet, ia akan mulai menarik ribuan bot otomatis yang mencari celah keamanan selama 24\u002F7. Untuk melindungi data sensitif Anda, ",[898,13403,13404],{},"instance"," NodeWarden Anda harus dikunci dengan tingkat keamanan maksimal.",[430,13407,13408,13409,13411],{},"Untuk mengamankan ",[898,13410,13404],{}," NodeWarden Anda, ada dua fitur Cloudflare yang bisa digunakan:",[485,13413,13414,13428],{},[488,13415,13416,13419,13420,13423,13424,13427],{},[441,13417,13418],{},"Cloudflare IP Access Rules:"," Memungkinkan Anda untuk memblokir, memberikan tantangan keamanan (",[898,13421,13422],{},"challenge","), atau mengizinkan ",[898,13425,13426],{},"traffic"," berdasarkan alamat IP atau negara tertentu.",[488,13429,13430,13433,13434,13437,13438,13440],{},[441,13431,13432],{},"Cloudflare Zero Trust (Direkomendasikan):"," Bertindak sebagai ",[898,13435,13436],{},"gateway"," aman yang membuat ",[898,13439,13404],{}," NodeWarden Anda sama sekali tidak terlihat oleh publik, dan hanya mengizinkan pengguna yang sah untuk masuk.",[2156,13442,13444],{"id":13443},"mengapa-kami-merekomendasikan-cloudflare-zero-trust","Mengapa kami merekomendasikan Cloudflare Zero Trust",[430,13446,13447,13448,13451,13452,13455],{},"Kami sangat menyarankan penggunaan Cloudflare Zero Trust karena ",[898,13449,13450],{},"IP Access Rules"," terikat pada alamat IP atau negara. Ini berarti Anda harus memperbarui aturan Anda secara manual setiap kali Anda bepergian atau jika Anda menggunakan IP dinamis. Sebaliknya, Cloudflare Zero Trust mengandalkan ",[441,13453,13454],{},"identitas"," Anda, bukan lokasi Anda—sehingga memberikan Anda akses yang lancar dan aman ke NodeWarden.",[12297,13457],{},[474,13459,13461],{"id":13460},"panduan-konfigurasi","Panduan Konfigurasi",[430,13463,13464],{},"Ikuti langkah-langkah berikut untuk mengonfigurasi Cloudflare Zero Trust untuk NodeWarden.",[2156,13466,13468],{"id":13467},"fase-1-memulai","Fase 1: Memulai",[533,13470,13471,13481,13488,13495],{},[488,13472,13473,13474,13476,13477],{},"Di ",[898,13475,2210],{}," Cloudflare Anda, klik 'Zero Trust' dari menu sebelah kiri.\n",[433,13478],{"alt":13479,"src":13480},"Bilah sisi dashboard Cloudflare menunjukkan opsi Zero Trust yang dipilih di menu navigasi.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-dashboard-zero-trust-sidebar.webp",[488,13482,13483,13484],{},"Klik 'Access controls' lalu klik 'Applications'.\n",[433,13485],{"alt":13486,"src":13487},"Menu navigasi Cloudflare Zero Trust dengan bagian Kontrol akses yang diperluas.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-zero-trust-access-controls-menu.webp",[488,13489,13490,13491],{},"Anda mungkin akan diminta untuk memilih paket ('Choose a plan').\n",[433,13492],{"alt":13493,"src":13494},"Layar pengaturan akun Cloudflare Zero Trust yang meminta pengguna untuk memilih paket langganan.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-zero-trust-choose-plan-setup.webp",[488,13496,13497,13498],{},"Klik tombol 'Choose a plan' dan pilih 'Zero Trust Free'.\n",[433,13499],{"alt":13500,"src":13501},"Halaman detail paket Zero Trust Free di Cloudflare, menyoroti tombol Pilih paket.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-zero-trust-free-plan-selection.webp",[2156,13503,13505],{"id":13504},"fase-2-mengamankan-antarmuka-web-anda","Fase 2: Mengamankan Antarmuka Web Anda",[430,13507,13508,13509,13511],{},"Pertama, kita akan membuat aplikasi untuk melindungi ",[898,13510,2210],{}," web NodeWarden.",[533,13513,13514,13521,13528,13535,13542,13549,13556,13559,13566,13569],{},[488,13515,13516,13517],{},"Klik 'Create new application' untuk membuat aplikasi pertama.\n",[433,13518],{"alt":13519,"src":13520},"Dashboard Aplikasi Cloudflare Access yang menampilkan tombol Buat aplikasi baru.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-create-new-application.webp",[488,13522,13523,13524],{},"Pilih 'Self-hosted and private'.\n",[433,13525],{"alt":13526,"src":13527},"Modal Tambahkan aplikasi di Cloudflare Access dengan jenis aplikasi Self-hosted dan privat yang dipilih.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-add-self-hosted-application.webp",[488,13529,13530,13531],{},"Masukkan nama domain dari NodeWarden Anda.\n",[433,13532],{"alt":13533,"src":13534},"Layar konfigurasi aplikasi Cloudflare Access yang menunjukkan hostname publik yang diatur ke warden.techvoyage.dev.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-application-public-hostname.webp",[488,13536,13537,13538],{},"Klik 'Create new policy' untuk membuat kebijakan.\n",[433,13539],{"alt":13540,"src":13541},"Halaman kebijakan Cloudflare Access menunjukkan tidak ada kebijakan yang ditambahkan dan tombol untuk membuat kebijakan baru.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-no-policies-create-button.webp",[488,13543,13544,13545],{},"Pilih 'Emails' dan masukkan email Anda di bawah 'Policy rules'.\n",[433,13546],{"alt":13547,"src":13548},"Layar konfigurasi aturan kebijakan Cloudflare Access dengan alamat email yang ditentukan sebagai kriteria inklusi.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-rule-email.webp",[488,13550,13551,13552],{},"Masukkan nama dan pilih 'Allow' di bawah 'Policy details'.\n",[433,13553],{"alt":13554,"src":13555},"Layar detail kebijakan Cloudflare Access menunjukkan nama kebijakan NodeWarden-Web dan tindakan yang diatur ke Izinkan.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-details-allow.webp",[488,13557,13558],{},"Klik 'Save Policy' untuk membuat kebijakan.",[488,13560,13561,13562],{},"Masukkan nama dan pilih '1 month' pada bagian 'Details'.\n",[433,13563],{"alt":13564,"src":13565},"Ringkasan konfigurasi akhir untuk aplikasi Cloudflare Access bernama NodeWarden-Web dengan durasi sesi satu bulan.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-application-final-details.webp",[488,13567,13568],{},"Klik 'Create' untuk membuat aplikasi.",[488,13570,13571,13574,13575],{},[441,13572,13573],{},"Uji coba:"," Buka domain tersebut di browser web, Anda akan melihat 'Cloudflare Access' meminta Anda memasukkan email.\n",[433,13576],{"alt":13577,"src":13578},"Pratinjau layar login Cloudflare Access untuk NodeWarden-Web, yang meminta alamat email.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-login-screen-preview.webp",[2156,13580,13582],{"id":13581},"fase-3-mengizinkan-sinkronisasi-klien-bitwarden-api-bypass","Fase 3: Mengizinkan Sinkronisasi Klien BitWarden (API Bypass)",[430,13584,13585,13586,13588,13589,13592],{},"Aplikasi desktop dan seluler BitWarden tidak dapat memproses layar login email Cloudflare, jadi kita perlu membuat aplikasi kedua yang mengizinkan ",[898,13587,13426],{}," untuk melewati (",[898,13590,13591],{},"bypass",") layar login tersebut khusus untuk keperluan sinkronisasi API.",[533,13594,13595,13606,13621,13625,13632,13639,13642,13649],{},[488,13596,13597,13598,13601,13602,13605],{},"Kembali ke Applications dan klik ",[441,13599,13600],{},"Create new application",", lalu pilih ",[441,13603,13604],{},"Self-hosted and private"," lagi.",[488,13607,13608,13609,13612,13613,13616,13617],{},"Masukkan 'api\u002F",[898,13610,13611],{},"', 'identity\u002F","', 'notifications\u002F",[898,13614,13615],{},"' dan 'icons\u002F","' pada bagian Destinations.\n",[433,13618],{"alt":13619,"src":13620},"Mengonfigurasi beberapa hostname publik untuk bypass API di Cloudflare Access, termasuk jalur api, identity, notifications, dan icons.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-api-bypass-destinations.webp",[488,13622,13537,13623],{},[433,13624],{"alt":13540,"src":13541},[488,13626,13627,13628],{},"Pilih 'Everyone' di bawah 'Policy rules'.\n",[433,13629],{"alt":13630,"src":13631},"Konfigurasi aturan kebijakan Cloudflare Access dengan Semua Orang dipilih untuk mengizinkan akses luas ke jalur tertentu.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-rule-everyone.webp",[488,13633,13634,13635],{},"Masukkan nama dan pilih 'Bypass' di bawah 'Policy details'.\n",[433,13636],{"alt":13637,"src":13638},"Detail kebijakan Cloudflare Access untuk NodeWarden-API dengan tindakan yang diatur ke Bypass.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-details-bypass.webp",[488,13640,13641],{},"Klik 'Save Policy' untuk menyimpan kebijakan.",[488,13643,13644,13645],{},"Masukkan nama dan pilih '1 month' untuk 'Session Duration'.\n",[433,13646],{"alt":13647,"src":13648},"Layar konfigurasi akhir untuk aplikasi NodeWarden-API di Cloudflare Access.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-api-application-final-details.webp",[488,13650,13651,13652],{},"Sekarang Anda seharusnya sudah memiliki 2 aplikasi yang dibuat.\n",[433,13653],{"alt":13654,"src":13655},"Dashboard aplikasi Cloudflare Access menunjukkan aplikasi Web dan API yang berhasil dibuat.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-applications-list-final.webp",[474,13657,13659],{"id":13658},"catatan-penutup","Catatan Penutup",[430,13661,13662,13663,13666,13667,13670],{},"Ingatlah bahwa Cloudflare hanyalah perisai pelindung luar Anda. Untuk menjaga brankas (",[898,13664,13665],{},"vault",") data yang benar-benar aman, pastikan Anda tetap menggunakan kata sandi utama (",[898,13668,13669],{},"master password",") yang kuat, mengaktifkan Autentikasi Dua Faktor (2FA), dan menjaga keamanan akun Cloudflare Anda.",{"title":425,"searchDepth":1060,"depth":1067,"links":13672},[13673,13674,13679],{"id":13443,"depth":1074,"text":13444},{"id":13460,"depth":1060,"text":13461,"children":13675},[13676,13677,13678],{"id":13467,"depth":1074,"text":13468},{"id":13504,"depth":1074,"text":13505},{"id":13581,"depth":1074,"text":13582},{"id":13658,"depth":1060,"text":13659},[2601,9472],"2026-05-27","Saat NodeWarden Anda terekspos secara publik di internet, ia akan mulai menarik ribuan bot otomatis yang mencari celah keamanan selama 24\u002F7.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fpanduan-amankan-nodewarden-integrasi-cloudflare.webp","Gambar thumbnail panduan langkah demi langkah untuk mengamankan brankas NodeWarden dengan integrasi Cloudflare, menampilkan ilustrasi brankas digital yang terkunci dan rak server yang terlindungi.",{"schemaOrg":13686,"robots":1690,"sitemap":13689},[13687],{"@type":1667,"headline":13688,"description":13682},"Berhenti Mengekspos Brankas Anda: Amankan NodeWarden dengan Cloudflare",{"lastmod":13681},{"title":13688,"description":13682,"ogTitle":13688,"ogDescription":13682,"twitterTitle":13688,"twitterDescription":13682},"id\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",[],"16gLcWHwWoh1K-3qpLuWzp8znYiioCdEohQg9N1Bf1g",{"id":13695,"title":13696,"author":1699,"body":13697,"category":14263,"date":14264,"description":14265,"extension":1661,"image":14266,"imageAlt":14267,"isPublished":1063,"meta":14268,"minRead":2269,"navigation":1063,"path":163,"seo":14273,"stem":14274,"tags":14275,"updatedAt":1699,"__hash__":14276},"article\u002Fid\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare.md","Cara Self-Host Brankas Kata Sandi ala BitWarden",{"type":427,"value":13698,"toc":14248},[13699,13702,13708,13712,13895,13899,13915,13919,13949,13953,13983,13987,14021,14025,14068,14072,14108,14112,14115,14119,14148,14152,14175,14179,14182,14199,14204,14207,14210,14224,14228,14241,14243],[430,13700,13701],{},"Password adalah aset digital kamu yang paling penting, dan memastikannya tetap aman berarti menyimpannya di tangan kamu sendiri. Dengan melakukan self-hosting password manager, kamu bisa mengontrol keamanan kamu sendiri. ",[430,13703,13704,13707],{},[441,13705,13706],{},"BitWarden","​ secara luas dianggap sebagai salah satu yang paling dipercaya dalam bidang manajemen password, dan source code-nya tersedia di bawah lisensi AGPL-3.0. Sebuah server tidak resmi yang kompatibel dengan BitWarden, yaitu NodeWarden, ditulis dalam Typescript dan bisa di-deploy secara gratis di Cloudflare.",[474,13709,13711],{"id":13710},"perbandingan-fitur-dengan-server-resmi-bitwarden","Perbandingan Fitur dengan Server Resmi BitWarden",[603,13713,13714,13729],{},[606,13715,13716],{},[609,13717,13718,13721,13723,13726],{},[612,13719,13720],{},"Kemampuan",[612,13722,13706],{},[612,13724,13725],{},"NodeWarden",[612,13727,13728],{},"Catatan",[632,13730,13731,13747,13762,13774,13786,13801,13817,13832,13847,13859,13871,13884],{},[609,13732,13733,13736,13739,13741],{},[637,13734,13735],{},"Web Vault",[637,13737,13738],{},"✅",[637,13740,13738],{},[637,13742,13743,13746],{},[441,13744,13745],{},"Antarmuka Web Vault asli","​",[609,13748,13749,13755,13757,13759],{},[637,13750,13751,13752],{},"Full sync ",[495,13753,13754],{},"\u002Fapi\u002Fsync",[637,13756,13738],{},[637,13758,13738],{},[637,13760,13761],{},"Kompatibilitas dioptimalkan untuk klien resmi",[609,13763,13764,13767,13769,13771],{},[637,13765,13766],{},"Upload \u002F download Attachment",[637,13768,13738],{},[637,13770,13738],{},[637,13772,13773],{},"Cloudflare R2 atau KV",[609,13775,13776,13779,13781,13783],{},[637,13777,13778],{},"Send",[637,13780,13738],{},[637,13782,13738],{},[637,13784,13785],{},"Mendukung Send dalam bentuk teks maupun file",[609,13787,13788,13791,13793,13795],{},[637,13789,13790],{},"Import \u002F Export",[637,13792,13738],{},[637,13794,13738],{},[637,13796,13797,13798,13746],{},"Mendukung impor JSON \u002F CSV \u002F ",[441,13799,13800],{},"ZIP BitWarden dengan attachment",[609,13802,13803,13808,13810,13812],{},[637,13804,13805,13746],{},[441,13806,13807],{},"Pusat Backup Cloud",[637,13809,8579],{},[637,13811,13738],{},[637,13813,13814,13746],{},[441,13815,13816],{},"Backup terjadwal ke WebDAV \u002F E3",[609,13818,13819,13822,13825,13827],{},[637,13820,13821],{},"Petunjuk password (web)",[637,13823,13824],{},"⚠️ Terbatas",[637,13826,13738],{},[637,13828,13829,13746],{},[441,13830,13831],{},"Tidak membutuhkan email",[609,13833,13834,13837,13839,13841],{},[637,13835,13836],{},"TOTP \u002F Steam TOTP",[637,13838,13738],{},[637,13840,13738],{},[637,13842,13843,13844],{},"Termasuk dukungan ",[495,13845,13846],{},"steam:\u002F\u002F",[609,13848,13849,13852,13854,13856],{},[637,13850,13851],{},"Multi-user",[637,13853,13738],{},[637,13855,13738],{},[637,13857,13858],{},"Registrasi berbasis invite (undangan)",[609,13860,13861,13864,13866,13868],{},[637,13862,13863],{},"Organisasi \u002F Koleksi \u002F Peran Anggota",[637,13865,13738],{},[637,13867,8579],{},[637,13869,13870],{},"Belum diimplementasikan",[609,13872,13873,13876,13878,13881],{},[637,13874,13875],{},"Login 2FA",[637,13877,13738],{},[637,13879,13880],{},"⚠️ Parsial",[637,13882,13883],{},"Saat ini hanya TOTP pada tingkat user",[609,13885,13886,13889,13891,13893],{},[637,13887,13888],{},"SSO \u002F SCIM \u002F Enterprise directory",[637,13890,13738],{},[637,13892,8579],{},[637,13894,13870],{},[474,13896,13898],{"id":13897},"apa-saja-yang-kita-butuhkan","Apa saja yang kita butuhkan:",[533,13900,13901,13906,13912],{},[488,13902,13903],{},[441,13904,13905],{},"Akun GitHub",[488,13907,13908,13911],{},[441,13909,13910],{},"Akun Cloudflare","​ (Gratis) yang sudah mengaktifkan R2 Storage.",[488,13913,13914],{},"_Opsional:_Custom domain yang dikelola di Cloudflare.",[878,13916,13918],{"id":13917},"fase-1-siapkan-kode","Fase 1: Siapkan Kode",[533,13920,13921,13940],{},[488,13922,13923,13924,13928,13929,13933,13934,13936],{},"Lakukan _Fork_repositori NodeWarden dari ",[444,13925,13926],{"href":13926,"rel":13927},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fnodewarden",[448]," dari repositori aslinya, ",[444,13930,13931],{"href":13931,"rel":13932},"https:\u002F\u002Fgithub.com\u002Fshuaiplus\u002Fnodewarden",[448]," GitHub.",[1877,13935],{},[433,13937],{"alt":13938,"src":13939},"Melakukan fork pada repositori NodeWarden di GitHub","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Ffork-nodewarden-repo.webp",[488,13941,13942,13943,13945],{},"Aktifkan Workflow \"Sync Upstream\".",[1877,13944],{},[433,13946],{"alt":13947,"src":13948},"Mengaktifkan workflow Sync Upstream di GitHub Actions","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fenable-sync-upstream.webp",[878,13950,13952],{"id":13951},"fase-2-deploy-ke-cloudflare","Fase 2: Deploy ke Cloudflare",[533,13954,13955,13964,13977],{},[488,13956,13957,13958,13960],{},"Buat Aplikasi Worker di Cloudflare.",[1877,13959],{},[433,13961],{"alt":13962,"src":13963},"Membuat aplikasi Worker baru di dashboard Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcreate-cloudflare-worker.webp",[488,13965,13966,13967,13969,13973],{},"Pilih 'Continue with GitHub' untuk mendeploy app tersebut.",[1877,13968],{},[433,13970],{"alt":13971,"src":13972},"Men-deploy aplikasi NodeWarden dengan menghubungkan ke GitHub","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fdeploy-github-repo.webp",[433,13974],{"alt":13975,"src":13976},"Progres pembangunan dan deployment Worker Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-deploy-status.webp",[488,13978,13979,13980,461],{},"Tunggu beberapa saat agar Cloudflare melakukan build dan deploy app kamu. Nantinya kamu akan diberi URL default ",[495,13981,13982],{},"worker.dev",[878,13984,13986],{"id":13985},"opsional-tambahkan-custom-domain","(Opsional) Tambahkan Custom Domain:",[485,13988,13989,13995,14008],{},[488,13990,13991,13992,461],{},"Di dalam setting Cloudflare Worker kamu, masuk ke tab ",[441,13993,13994],{},"Settings",[488,13996,13997,13998,14001,14002,14001,14005,461],{},"Klik ",[441,13999,14000],{},"Triggers","​ -> ",[441,14003,14004],{},"Custom Domains",[441,14006,14007],{},"+ Add Custom Domain",[488,14009,14010,14011,14013,14017],{},"Ketik domain pilihan kamu dan ikuti petunjuknya.",[1877,14012],{},[433,14014],{"alt":14015,"src":14016},"Menavigasi ke pengaturan domain kustom di Worker Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fworker-settings-custom-domain.webp",[433,14018],{"alt":14019,"src":14020},"Menambahkan domain kustom ke Worker Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fadd-custom-domain.webp",[878,14022,14024],{"id":14023},"fase-3-amankan-server-kamu-jwt-secret","Fase 3: Amankan Server Kamu (JWT Secret)",[533,14026,14027,14030,14042,14062],{},[488,14028,14029],{},"Buka browser web dan masukkan custom domain atau domain 'worker.dev' yang telah di-generate.",[488,14031,14032,14033,461,14036,14038],{},"Kamu akan mendapati peringatan '",[441,14034,14035],{},"JWT_SECRET is missing'",[1877,14037],{},[433,14039],{"alt":14040,"src":14041},"Pesan error JWT_SECRET is missing di server NodeWarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fjwt-secret-missing-error.webp",[488,14043,14044,14045,14048,14049,1866,14052,14054,14058],{},"Copy secret key yang di-generate, lalu kembali ke tab Settings di NodeWarden Worker, kemudian klik tombol '",[441,14046,14047],{},"+ Add","' di bagian '",[441,14050,14051],{},"Variables and Secrets",[1877,14053],{},[433,14055],{"alt":14056,"src":14057},"Bagian Variabel dan Rahasia di pengaturan Worker Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fworker-variables-secrets.webp",[433,14059],{"alt":14060,"src":14061},"Menambahkan rahasia JWT yang dihasilkan ke variabel Worker Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fadd-jwt-secret.webp",[488,14063,14064,14065,1866],{},"Masukkan secret yang di-generate tadi, lalu klik tombol '",[441,14066,14067],{},"Deploy \u002F Save",[878,14069,14071],{"id":14070},"fase-4-buat-akun-admin","Fase 4: Buat Akun Admin",[533,14073,14074,14083,14096,14105],{},[488,14075,14076,14077,14079],{},"Kembali ke browser web lalu refresh halamannya, kamu akan melihat halaman login berikut.",[1877,14078],{},[433,14080],{"alt":14081,"src":14082},"Halaman login server NodeWarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fnodewarden-login.webp",[488,14084,14085,14086,14089,14090,14092],{},"Klik '",[441,14087,14088],{},"Create Account","' untuk membuat akun admin.",[1877,14091],{},[433,14093],{"alt":14094,"src":14095},"Mengklik tombol Create Account di halaman login NodeWarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcreate-account-button.webp",[488,14097,14098,14099,14101],{},"Login menggunakan akun admin yang baru saja dibuat ke dalam Dashboard.",[1877,14100],{},[433,14102],{"alt":14103,"src":14104},"Tinjauan dashboard admin NodeWarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fnodewarden-dashboard.webp",[488,14106,14107],{},"Sekarang server kita sudah di-deploy dan berjalan. Selanjutnya kita mulai mengatur klien BitWarden.",[878,14109,14111],{"id":14110},"fase-5-hubungkan-perangkat-kamu","Fase 5: Hubungkan Perangkat Kamu",[430,14113,14114],{},"Kamu bisa menggunakan aplikasi resmi BitWarden di semua perangkat kamu.",[2156,14116,14118],{"id":14117},"ekstensi-chrome","Ekstensi Chrome",[533,14120,14121,14124,14127,14136,14145],{},[488,14122,14123],{},"Install ekstensi BitWarden di Chrome.",[488,14125,14126],{},"Buka ekstensinya.",[488,14128,14129,14130,14132],{},"Klik link di sebelah 'Accessing:' pada bagian bawah popup.",[1877,14131],{},[433,14133],{"alt":14134,"src":14135},"Memilih opsi self-hosted di ekstensi Chrome Bitwarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-extension-self-hosted.webp",[488,14137,14138,14139,14141],{},"Masukkan nama domain dari server NodeWarden.",[1877,14140],{},[433,14142],{"alt":14143,"src":14144},"Memasukkan URL server di ekstensi Chrome Bitwarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-extension-domain.webp",[488,14146,14147],{},"Simpan pengaturan lalu login dengan akun kamu.",[2156,14149,14151],{"id":14150},"aplikasi-ios","Aplikasi iOS",[533,14153,14154,14157,14166],{},[488,14155,14156],{},"Install aplikasi Bitwarden dari App Store.",[488,14158,14159,14160,14162],{},"Buka aplikasi tersebut lalu klik 'Self-hosted' di sebelah 'Logging in on:'.",[1877,14161],{},[433,14163],{"alt":14164,"src":14165},"Mengakses pengaturan self-hosted di aplikasi iOS Bitwarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-ios-self-hosted.webp",[488,14167,14168,14169,14171],{},"Masukkan nama domain server NodeWarden lalu klik tombol '✓'.",[1877,14170],{},[433,14172],{"alt":14173,"src":14174},"Mengonfigurasi URL server di aplikasi iOS Bitwarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-ios-domain.webp",[2156,14176,14178],{"id":14177},"klien-lainnya","Klien Lainnya",[430,14180,14181],{},"NodeWarden telah diuji dan dikonfirmasi kompatibel dengan klien resmi BitWarden berikut ini:",[485,14183,14184,14187,14190,14193,14196],{},[488,14185,14186],{},"✅ Windows desktop",[488,14188,14189],{},"✅ Aplikasi mobile Android\u002FiOS",[488,14191,14192],{},"✅ Ekstensi browser",[488,14194,14195],{},"✅ Linux desktop",[488,14197,14198],{},"⚠️ macOS desktop (belum sepenuhnya diverifikasi)",[14200,14201,14203],"h1",{"id":14202},"backup-brankas-vault","Backup Brankas (Vault)",[430,14205,14206],{},"NodeWarden memungkinkan kamu untuk melakukan backup vault ke komputer lokal atau penyimpanan remote (storage yang kompatibel dengan WebDAV atau S3).",[430,14208,14209],{},"Untuk mengotomatiskan backup remote:",[485,14211,14212,14215],{},[488,14213,14214],{},"Konfigurasikan rincian penyimpanan remote di dalam dashboard NodeWarden.",[488,14216,14217,14218,14220],{},"Pastikan Cron task sudah diatur pada pengaturan Cloudflare Worker untuk auto remote backup.",[1877,14219],{},[433,14221],{"alt":14222,"src":14223},"Mengonfigurasi pemicu Cron untuk backup brankas otomatis di Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-worker-cron.webp",[14200,14225,14227],{"id":14226},"pesan-keamanan-terakhir","Pesan Keamanan Terakhir",[485,14229,14230,14233,14236],{},[488,14231,14232],{},"Amankan akses akun Cloudflare kamu, jika tidak, data kamu bisa diretas. Segera aktifkan Two-Factor Authentication (2FA) atau Passkey pada akun Cloudflare kamu.",[488,14234,14235],{},"Host NodeWarden di akun Cloudflare khusus (dedicated). Jangan bagikan sumber daya dengan web app lain untuk meminimalisir risiko keamanan.",[488,14237,14238],{},[444,14239,14240],{"href":371},"Amankan NodeWarden dengan Cloudflare",[14200,14242,4027],{"id":1607},[485,14244,14245],{},[488,14246,14247],{},"Panduan Memulai NodeWarden Resmi",{"title":425,"searchDepth":1060,"depth":1067,"links":14249},[14250,14251],{"id":13710,"depth":1060,"text":13711},{"id":13897,"depth":1060,"text":13898,"children":14252},[14253,14254,14255,14256,14257,14258],{"id":13917,"depth":1067,"text":13918},{"id":13951,"depth":1067,"text":13952},{"id":13985,"depth":1067,"text":13986},{"id":14023,"depth":1067,"text":14024},{"id":14070,"depth":1067,"text":14071},{"id":14110,"depth":1067,"text":14111,"children":14259},[14260,14261,14262],{"id":14117,"depth":1074,"text":14118},{"id":14150,"depth":1074,"text":14151},{"id":14177,"depth":1074,"text":14178},[2601,9472],"2026-05-25","Password adalah aset digital kamu yang paling penting, dan memastikannya tetap aman berarti menyimpannya di tangan kamu sendiri.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fself-hosting-server-bitwarden.webp","Thumbnail tutorial self-hosting server kompatibel Bitwarden, menampilkan brankas digital dan rak server yang aman.",{"schemaOrg":14269,"robots":1690,"sitemap":14272},[14270],{"@type":1667,"headline":14271,"description":14265},"Cara Mengamankan Password di Brankas Sendiri dengan Self-Hosting Server Kompatibel BitWarden",{"lastmod":14264},{"title":14271,"description":14265,"ogTitle":14271,"ogDescription":14265,"twitterTitle":14271,"twitterDescription":14265},"id\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",[],"Q4VKcUkGGAKxg8onbP1O5RNAVbJONfPqmKpy9vff_U4",1792489975083]