[{"data":1,"prerenderedAt":4700},["ShallowReactive",2],{"published-article-paths":3,"search-navigation":348,"\u002Fpt\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server":421,"\u002Fpt\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server-surround":1134},[4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346],{"path":5},"\u002Fde\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":7},"\u002Fde\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":9},"\u002Fde\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":11},"\u002Fde\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":13},"\u002Fde\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":15},"\u002Fde\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":17},"\u002Fde\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":19},"\u002Fde\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":21},"\u002Fde\u002Farticle\u002Fsetup-antigravity-2",{"path":23},"\u002Fde\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":25},"\u002Fde\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":27},"\u002Fde\u002Farticle\u002Fsync-obsidian-across-devices",{"path":29},"\u002Fde\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":31},"\u002Fde\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":33},"\u002Fde\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":35},"\u002Fde\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":37},"\u002Fen\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":39},"\u002Fen\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":41},"\u002Fen\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":43},"\u002Fen\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":45},"\u002Fen\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":47},"\u002Fen\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":49},"\u002Fen\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":51},"\u002Fen\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":53},"\u002Fen\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":55},"\u002Fen\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":57},"\u002Fen\u002Farticle\u002Fsetup-antigravity-2",{"path":59},"\u002Fen\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":61},"\u002Fen\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":63},"\u002Fen\u002Farticle\u002Fsync-obsidian-across-devices",{"path":65},"\u002Fen\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":67},"\u002Fen\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":69},"\u002Fen\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":71},"\u002Fen\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":73},"\u002Fes\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":75},"\u002Fes\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":77},"\u002Fes\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":79},"\u002Fes\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":81},"\u002Fes\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":83},"\u002Fes\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":85},"\u002Fes\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":87},"\u002Fes\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":89},"\u002Fes\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":91},"\u002Fes\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":93},"\u002Fes\u002Farticle\u002Fsetup-antigravity-2",{"path":95},"\u002Fes\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":97},"\u002Fes\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":99},"\u002Fes\u002Farticle\u002Fsync-obsidian-across-devices",{"path":101},"\u002Fes\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":103},"\u002Fes\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":105},"\u002Fes\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":107},"\u002Fes\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":109},"\u002Ffr\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":111},"\u002Ffr\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":113},"\u002Ffr\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":115},"\u002Ffr\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":117},"\u002Ffr\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":119},"\u002Ffr\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":121},"\u002Ffr\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":123},"\u002Ffr\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":125},"\u002Ffr\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":127},"\u002Ffr\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":129},"\u002Ffr\u002Farticle\u002Fsetup-antigravity-2",{"path":131},"\u002Ffr\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":133},"\u002Ffr\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":135},"\u002Ffr\u002Farticle\u002Fsync-obsidian-across-devices",{"path":137},"\u002Ffr\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":139},"\u002Ffr\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":141},"\u002Ffr\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":143},"\u002Ffr\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":145},"\u002Fid\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":147},"\u002Fid\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":149},"\u002Fid\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":151},"\u002Fid\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":153},"\u002Fid\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":155},"\u002Fid\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":157},"\u002Fid\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":159},"\u002Fid\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":161},"\u002Fid\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":163},"\u002Fid\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":165},"\u002Fid\u002Farticle\u002Fsetup-antigravity-2",{"path":167},"\u002Fid\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":169},"\u002Fid\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":171},"\u002Fid\u002Farticle\u002Fsync-obsidian-across-devices",{"path":173},"\u002Fid\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":175},"\u002Fid\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":177},"\u002Fid\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":179},"\u002Fid\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":181},"\u002Fja\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":183},"\u002Fja\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":185},"\u002Fja\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":187},"\u002Fja\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":189},"\u002Fja\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":191},"\u002Fja\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":193},"\u002Fja\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":195},"\u002Fja\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":197},"\u002Fja\u002Farticle\u002Fsetup-antigravity-2",{"path":199},"\u002Fja\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":201},"\u002Fja\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":203},"\u002Fja\u002Farticle\u002Fsync-obsidian-across-devices",{"path":205},"\u002Fja\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":207},"\u002Fja\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":209},"\u002Fja\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":211},"\u002Fja\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":213},"\u002Fpt\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":215},"\u002Fpt\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":217},"\u002Fpt\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":219},"\u002Fpt\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":221},"\u002Fpt\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":223},"\u002Fpt\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":225},"\u002Fpt\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":227},"\u002Fpt\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":229},"\u002Fpt\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":231},"\u002Fpt\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":233},"\u002Fpt\u002Farticle\u002Fsetup-antigravity-2",{"path":235},"\u002Fpt\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":237},"\u002Fpt\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":239},"\u002Fpt\u002Farticle\u002Fsync-obsidian-across-devices",{"path":241},"\u002Fpt\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":243},"\u002Fpt\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":245},"\u002Fpt\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":247},"\u002Fpt\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":249},"\u002Ftw\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":251},"\u002Ftw\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":253},"\u002Ftw\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":255},"\u002Ftw\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":257},"\u002Ftw\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":259},"\u002Ftw\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":261},"\u002Ftw\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":263},"\u002Ftw\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":265},"\u002Ftw\u002Farticle\u002Fsetup-antigravity-2",{"path":267},"\u002Ftw\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":269},"\u002Ftw\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":271},"\u002Ftw\u002Farticle\u002Fsync-obsidian-across-devices",{"path":273},"\u002Ftw\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":275},"\u002Ftw\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":277},"\u002Ftw\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":279},"\u002Ftw\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":281},"\u002Fvi\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":283},"\u002Fvi\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":285},"\u002Fvi\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":287},"\u002Fvi\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":289},"\u002Fvi\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":291},"\u002Fvi\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":293},"\u002Fvi\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":295},"\u002Fvi\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":297},"\u002Fvi\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":299},"\u002Fvi\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":301},"\u002Fvi\u002Farticle\u002Fsetup-antigravity-2",{"path":303},"\u002Fvi\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":305},"\u002Fvi\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":307},"\u002Fvi\u002Farticle\u002Fsync-obsidian-across-devices",{"path":309},"\u002Fvi\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":311},"\u002Fvi\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":313},"\u002Fvi\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":315},"\u002Fvi\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":317},"\u002Fzh\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":319},"\u002Fzh\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":321},"\u002Fzh\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":323},"\u002Fzh\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":325},"\u002Fzh\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":327},"\u002Fzh\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":329},"\u002Fzh\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":331},"\u002Fzh\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":333},"\u002Fzh\u002Farticle\u002Fsetup-antigravity-2",{"path":335},"\u002Fzh\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":337},"\u002Fzh\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":339},"\u002Fzh\u002Farticle\u002Fsync-obsidian-across-devices",{"path":341},"\u002Fzh\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":343},"\u002Fzh\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":345},"\u002Fzh\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":347},"\u002Fzh\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",[349,353,357,361,365,369,373,377,381,385,389,393,397,401,405,409,413,417],{"title":350,"path":351,"stem":352},"AI Agent Skills: What They Are & How to Create Them","\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them","en\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"title":354,"path":355,"stem":356},"Bringing Buzz to DeepSeek Harness: Taught to Speak Nostr","\u002Farticle\u002Fbringing-buzz-to-deepseek-harness","en\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"title":358,"path":359,"stem":360},"Solving AI Agent Skills Fragmentation with npx skills","\u002Farticle\u002Fcentralised-the-skills-for-agents","en\u002Farticle\u002Fcentralised-the-skills-for-agents",{"title":362,"path":363,"stem":364},"How to Expose Hermes Agent Privately with Cloudflare WARP","\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp","en\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"title":366,"path":367,"stem":368},"How AI Agent Skills Replace Nuxt App Scaffolding Scripts","\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts","en\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"title":370,"path":371,"stem":372},"Stop Exposing Your Vault: Secure NodeWarden with Cloudflare","\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare","en\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"title":374,"path":375,"stem":376},"How to Deploy Hermes Agent on a Linux VPS","\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server","en\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"title":378,"path":379,"stem":380},"Self-Host Your Travel Itineraries with TREK and Docker","\u002Farticle\u002Fself-hosted-travel-planner-trek","en\u002Farticle\u002Fself-hosted-travel-planner-trek",{"title":382,"path":383,"stem":384},"Self-Host Block's Buzz: Shared AI Agent Workspace","\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues","en\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"title":386,"path":387,"stem":388},"How to Self-Host a BitWarden Compatible Server Nodewarden","\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare","en\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"title":390,"path":391,"stem":392},"Google Antigravity 2 Hands-On: Setup & First Impressions","\u002Farticle\u002Fsetup-antigravity-2","en\u002Farticle\u002Fsetup-antigravity-2",{"title":394,"path":395,"stem":396},"NetSuite AI Connector Guide: MCP Setup & Use Cases","\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude","en\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"title":398,"path":399,"stem":400},"Switch Between Multiple Cloudflare WARP Orgs on Mac","\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac","en\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"title":402,"path":403,"stem":404},"How to Sync Obsidian Vaults Across Devices Securely","\u002Farticle\u002Fsync-obsidian-across-devices","en\u002Farticle\u002Fsync-obsidian-across-devices",{"title":406,"path":407,"stem":408},"Testing Claude Fable 5: A Financial Analysis Review","\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis","en\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"title":410,"path":411,"stem":412},"Guide to Browser and Scheduler in Antigravity 2","\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2","en\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"title":414,"path":415,"stem":416},"Build a Persistent AI Memory System on Cloudflare","\u002Farticle\u002Fuse-cloudflare-as-ai-memory","en\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"title":418,"path":419,"stem":420},"Antigravity 2 in Action: AI Agents, Skills, and MCP","\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2","en\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"id":422,"title":423,"author":424,"body":425,"category":1100,"date":1102,"description":1103,"extension":1104,"image":1105,"imageAlt":1106,"isPublished":966,"meta":1107,"minRead":976,"navigation":966,"path":225,"seo":1124,"stem":1126,"tags":1127,"updatedAt":1132,"__hash__":1133},"article\u002Fpt\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server.md","Como instalar e configurar o Hermes Agent em um VPS Linux","",{"type":426,"value":427,"toc":1089},"minimark",[428,433,437,440,444,449,452,474,481,484,515,522,552,559,566,581,593,601,607,625,629,632,654,660,663,675,686,697,728,732,743,753,764,778,785,795,801,831,847,851,857,869,874,910,914,917,933,939,1027,1030,1078,1082,1085],[429,430,432],"h2",{"id":431},"por-que-hospedar-o-hermes-agent-em-um-vps-remoto","Por que hospedar o Hermes Agent em um VPS remoto?",[434,435,436],"p",{},"Como o Hermes Agent é capaz de executar tarefas em segundo plano, agendar tarefas e responder a chamadas de webhooks, precisamos de uma máquina que esteja em standby 24 horas por dia, 7 dias por semana. Computadores locais podem sofrer quedas de energia, desconectar-se da Internet ou ter seus recursos de hardware esgotados. Um servidor remoto garante 99% de tempo de atividade (uptime) e facilita a escala de recursos computacionais sempre que necessário.",[434,438,439],{},"Existem vários provedores acessíveis de servidores privados virtuais (VPS) no mercado, como Hetzner, Hostinger e Contabo. Nós usamos a Contabo há algum tempo e, até o momento, tudo tem funcionado muito bem.",[429,441,443],{"id":442},"como-configurar-o-hermes-agent-em-um-vps-linux","Como configurar o Hermes Agent em um VPS Linux",[445,446,448],"h3",{"id":447},"passo-1-conectar-se-ao-seu-vps","Passo 1: Conectar-se ao seu VPS",[434,450,451],{},"Abra o terminal e conecte-se via SSH à sua máquina remota:",[453,454,458],"pre",{"className":455,"code":456,"language":457,"meta":424,"style":424},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","ssh root@your_server_ip\n","bash",[459,460,461],"code",{"__ignoreMap":424},[462,463,466,470],"span",{"class":464,"line":465},"line",1,[462,467,469],{"class":468},"sBMFI","ssh",[462,471,473],{"class":472},"sfazB"," root@your_server_ip\n",[434,475,476],{},[477,478],"img",{"alt":479,"src":480},"Conexão SSH ao servidor VPS Linux no terminal","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fvps-terminal-ssh-connection.webp",[434,482,483],{},"Certifique-se de que os pacotes do seu servidor estejam atualizados:",[453,485,487],{"className":455,"code":486,"language":457,"meta":424,"style":424},"sudo apt update && sudo apt upgrade -y\n",[459,488,489],{"__ignoreMap":424},[462,490,491,494,497,500,504,507,509,512],{"class":464,"line":465},[462,492,493],{"class":468},"sudo",[462,495,496],{"class":472}," apt",[462,498,499],{"class":472}," update",[462,501,503],{"class":502},"sMK4o"," &&",[462,505,506],{"class":468}," sudo",[462,508,496],{"class":472},[462,510,511],{"class":472}," upgrade",[462,513,514],{"class":472}," -y\n",[434,516,517,518,521],{},"Adicione um novo usuário, ",[459,519,520],{},"hermes",", ou o seu nome de usuário de preferência:",[453,523,525],{"className":455,"code":524,"language":457,"meta":424,"style":424},"sudo adduser hermes \nsudo passwd hermes\n",[459,526,527,541],{"__ignoreMap":424},[462,528,529,531,534,537],{"class":464,"line":465},[462,530,493],{"class":468},[462,532,533],{"class":472}," adduser",[462,535,536],{"class":472}," hermes",[462,538,540],{"class":539},"sTEyZ"," \n",[462,542,544,546,549],{"class":464,"line":543},2,[462,545,493],{"class":468},[462,547,548],{"class":472}," passwd",[462,550,551],{"class":472}," hermes\n",[434,553,554,555,558],{},"Desative o login por senha para o usuário ",[459,556,557],{},"root",":",[560,561,562],"ol",{},[563,564,565],"li",{},"Abra o arquivo de configuração do SSH:",[453,567,569],{"className":455,"code":568,"language":457,"meta":424,"style":424},"sudo nano \u002Fetc\u002Fssh\u002Fsshd_config\n",[459,570,571],{"__ignoreMap":424},[462,572,573,575,578],{"class":464,"line":465},[462,574,493],{"class":468},[462,576,577],{"class":472}," nano",[462,579,580],{"class":472}," \u002Fetc\u002Fssh\u002Fsshd_config\n",[560,582,583],{"start":543},[563,584,585,586,589,590,558],{},"Localize a linha ",[459,587,588],{},"PermitRootLogin"," e altere seu valor para ",[459,591,592],{},"no",[453,594,599],{"className":595,"code":597,"language":598,"meta":424},[596],"language-text","PermitRootLogin no\n","text",[459,600,597],{"__ignoreMap":424},[560,602,604],{"start":603},3,[563,605,606],{},"Salve o arquivo e reinicie o serviço SSH:",[453,608,610],{"className":455,"code":609,"language":457,"meta":424,"style":424},"sudo systemctl restart ssh\n",[459,611,612],{"__ignoreMap":424},[462,613,614,616,619,622],{"class":464,"line":465},[462,615,493],{"class":468},[462,617,618],{"class":472}," systemctl",[462,620,621],{"class":472}," restart",[462,623,624],{"class":472}," ssh\n",[445,626,628],{"id":627},"passo-2-instalar-o-hermes-agent","Passo 2: Instalar o Hermes Agent",[434,630,631],{},"Execute o seguinte comando:",[453,633,635],{"className":455,"code":634,"language":457,"meta":424,"style":424},"curl -fsSL https:\u002F\u002Fhermes-agent.nousresearch.com\u002Finstall.sh | bash\n",[459,636,637],{"__ignoreMap":424},[462,638,639,642,645,648,651],{"class":464,"line":465},[462,640,641],{"class":468},"curl",[462,643,644],{"class":472}," -fsSL",[462,646,647],{"class":472}," https:\u002F\u002Fhermes-agent.nousresearch.com\u002Finstall.sh",[462,649,650],{"class":502}," |",[462,652,653],{"class":468}," bash\n",[434,655,656],{},[477,657],{"alt":658,"src":659},"Executando o script de instalação do Hermes Agent no terminal","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-agent-installation-terminal.webp",[434,661,662],{},"Depois de instalado, verifique a instalação digitando:",[453,664,666],{"className":455,"code":665,"language":457,"meta":424,"style":424},"hermes --version\n",[459,667,668],{"__ignoreMap":424},[462,669,670,672],{"class":464,"line":465},[462,671,520],{"class":468},[462,673,674],{"class":472}," --version\n",[434,676,677,678,681,682],{},"Execute ",[459,679,680],{},"hermes setup"," para configurar o Hermes Agent:\n",[477,683],{"alt":684,"src":685},"Executando o comando hermes setup no terminal para iniciar a configuração","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-agent-setup-wizard.webp",[434,687,688,689,692,693],{},"Selecione um provedor de LLM, comece com o ",[459,690,691],{},"DeepSeek"," e adicione outros mais tarde.\n",[477,694],{"alt":695,"src":696},"Selecionando DeepSeek como o provedor de LLM na configuração do Hermes","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-llm-provider-selection.webp",[434,698,699,700,702,703,707,711,712,715,716,711,720,723,724],{},"Insira a chave de API do ",[459,701,691],{},":\n",[477,704],{"alt":705,"src":706},"Inserindo a chave de API do DeepSeek no terminal","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-enter-api-key.webp",[477,708],{"alt":709,"src":710},"Confirmação de sucesso da chave de API do provedor de LLM","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-api-key-success.webp","\nSelecione ",[459,713,714],{},"local machine"," para executar o Hermes Agent:\n",[477,717],{"alt":718,"src":719},"Selecionando local machine para o ambiente de execução do Hermes Agent","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-select-local-machine.webp",[459,721,722],{},"Telegram"," nos canais de comunicação. Outros canais podem ser configurados posteriormente.\n",[477,725],{"alt":726,"src":727},"Selecionando o Telegram como canal de comunicação na configuração do Hermes","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-select-telegram-channel.webp",[445,729,731],{"id":730},"passo-3-integração-com-o-telegram","Passo 3: Integração com o Telegram",[434,733,734,735,738,739],{},"Selecione ",[459,736,737],{},"[2]"," para usar o bot do Telegram.\n",[477,740],{"alt":741,"src":742},"Selecionando a opção de configurar a integração do bot do Telegram","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-bot-integration-option.webp",[434,744,745,746,748,749],{},"Acesse o ",[459,747,722],{}," e pesquise por 'BotFather'.\n",[477,750],{"alt":751,"src":752},"Pesquisando por BotFather no aplicativo Telegram","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-search-botfather.webp",[434,754,755,756,759,760],{},"Clique em ",[459,757,758],{},"Open"," para abrir o 'BotFather'.\n",[477,761],{"alt":762,"src":763},"Abrindo a interface de chat com BotFather no Telegram","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-open-botfather-chat.webp",[434,765,755,766,769,770,773,774],{},[459,767,768],{},"Create a New Bot"," (ou envie o comando ",[459,771,772],{},"\u002Fnewbot",").\n",[477,775],{"alt":776,"src":777},"Enviando o comando newbot ao BotFather para criar um novo bot do Telegram","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fbotfather-create-new-bot.webp",[434,779,780,781],{},"Preencha os nomes requeridos e crie o bot.\n",[477,782],{"alt":783,"src":784},"Configurando o nome e usuário do novo bot do Telegram","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fbotfather-bot-details-configured.webp",[434,786,755,787,790,791],{},[459,788,789],{},"Copy"," para copiar o token e cole-o de volta no terminal.\n",[477,792],{"alt":793,"src":794},"Copiando o token da API HTTP do bot do Telegram recém-criado","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fbotfather-copy-http-api-token.webp",[434,796,797,798,800],{},"Encontre o ID da sua conta de usuário do ",[459,799,722],{}," e adicione-o à lista de usuários permitidos ('Allowed user list'):",[802,803,804,814,828],"ul",{},[563,805,806,807,809,810],{},"Pesquise por '@raw_data_bot' no ",[459,808,722],{},".\n",[477,811],{"alt":812,"src":813},"Pesquisando por raw data bot no Telegram para obter o ID do usuário","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-search-raw-data-bot.webp",[563,815,816,817,820,821,809,824],{},"Clique no ",[459,818,819],{},"RawDataBot"," e depois no botão Start (Começar). O ID do usuário será exibido após ",[459,822,823],{},"P.S. Your ID:",[477,825],{"alt":826,"src":827},"Iniciando o RawDataBot para visualizar o ID da conta de usuário","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-raw-data-bot-user-id.webp",[563,829,830],{},"Copie o ID de usuário e cole-o no terminal.",[434,832,833,834,838,839,843],{},"Como estamos executando na nuvem, queremos que o serviço seja iniciado automaticamente.\n",[477,835],{"alt":836,"src":837},"Configurando a opção de início automático para o serviço systemd do Hermes","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-autostart-service-option.webp","\nDeixe todas as opções como padrão:\n",[477,840],{"alt":841,"src":842},"Mantendo as configurações de instalação padrão no terminal","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-leave-defaults-1.webp",[477,844],{"alt":845,"src":846},"Concluindo as opções padrão de configuração do Hermes","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-leave-defaults-2.webp",[429,848,850],{"id":849},"testando-seu-hermes-agent-com-o-bot-do-telegram","Testando seu Hermes Agent com o bot do Telegram",[434,852,853,854,558],{},"Execute o seguinte comando para iniciar o ",[459,855,856],{},"hermes gateway",[453,858,860],{"className":455,"code":859,"language":457,"meta":424,"style":424},"hermes gateway\n",[459,861,862],{"__ignoreMap":424},[462,863,864,866],{"class":464,"line":465},[462,865,520],{"class":468},[462,867,868],{"class":472}," gateway\n",[434,870,745,871,873],{},[459,872,722],{}," e adicione o bot criado, '@tech_cloud_hermes_bot', às suas conversas.",[802,875,876,889,900],{},[563,877,878,879,881,882,809,885],{},"Digite '\u002Fnew' no ",[459,880,722],{}," para iniciar uma nova sessão do ",[459,883,884],{},"Hermes Agent",[477,886],{"alt":887,"src":888},"Digitando o comando new no Telegram para iniciar uma nova sessão do Hermes Agent","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-chat-hermes-new-session.webp",[563,890,891,892,895,896],{},"Digitar ",[459,893,894],{},"\u002Fcommands"," listará todos os comandos disponíveis.\n",[477,897],{"alt":898,"src":899},"Digitando commands no Telegram para listar as instruções disponíveis do Hermes","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-chat-hermes-commands-list.webp",[563,901,891,902,905,906],{},[459,903,904],{},"\u002Fmodel"," exibirá uma lista com os LLMs disponíveis.\n",[477,907],{"alt":908,"src":909},"Digitando model no Telegram para ver a lista de LLMs ativos","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-chat-hermes-model-selection.webp",[429,911,913],{"id":912},"executando-o-hermes-gateway-como-um-serviço-em-segundo-plano","Executando o Hermes Gateway como um serviço em segundo plano",[434,915,916],{},"Crie o arquivo de serviço:",[453,918,922],{"className":919,"code":920,"language":921,"meta":424,"style":424},"language-shell shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","sudo nano \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-gateway.service\n","shell",[459,923,924],{"__ignoreMap":424},[462,925,926,928,930],{"class":464,"line":465},[462,927,493],{"class":468},[462,929,577],{"class":472},[462,931,932],{"class":472}," \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-gateway.service\n",[434,934,935,936,938],{},"Cole o seguinte conteúdo, substituindo ",[459,937,520],{}," em '\u002Fhome\u002Fhermes' pelo seu nome de usuário preferido:",[453,940,944],{"className":941,"code":942,"language":943,"meta":424,"style":424},"language-ini shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[Unit]\nDescription=Hermes Gateway\nAfter=network.target\n\n[Service]\nUser=hermes\nWorkingDirectory=\u002Fhome\u002Fhermes\nExecStart=\u002Fhome\u002Fhermes\u002F.local\u002Fbin\u002Fhermes gateway\nRestart=always\nRestartSec=10\nEnvironment=PATH=\u002Fhome\u002Fhermes\u002F.local\u002Fbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fbin:\u002Fbin\n\n[Install]\nWantedBy=multi-user.target\n","ini",[459,945,946,951,956,961,968,974,980,986,992,998,1004,1010,1015,1021],{"__ignoreMap":424},[462,947,948],{"class":464,"line":465},[462,949,950],{},"[Unit]\n",[462,952,953],{"class":464,"line":543},[462,954,955],{},"Description=Hermes Gateway\n",[462,957,958],{"class":464,"line":603},[462,959,960],{},"After=network.target\n",[462,962,964],{"class":464,"line":963},4,[462,965,967],{"emptyLinePlaceholder":966},true,"\n",[462,969,971],{"class":464,"line":970},5,[462,972,973],{},"[Service]\n",[462,975,977],{"class":464,"line":976},6,[462,978,979],{},"User=hermes\n",[462,981,983],{"class":464,"line":982},7,[462,984,985],{},"WorkingDirectory=\u002Fhome\u002Fhermes\n",[462,987,989],{"class":464,"line":988},8,[462,990,991],{},"ExecStart=\u002Fhome\u002Fhermes\u002F.local\u002Fbin\u002Fhermes gateway\n",[462,993,995],{"class":464,"line":994},9,[462,996,997],{},"Restart=always\n",[462,999,1001],{"class":464,"line":1000},10,[462,1002,1003],{},"RestartSec=10\n",[462,1005,1007],{"class":464,"line":1006},11,[462,1008,1009],{},"Environment=PATH=\u002Fhome\u002Fhermes\u002F.local\u002Fbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fbin:\u002Fbin\n",[462,1011,1013],{"class":464,"line":1012},12,[462,1014,967],{"emptyLinePlaceholder":966},[462,1016,1018],{"class":464,"line":1017},13,[462,1019,1020],{},"[Install]\n",[462,1022,1024],{"class":464,"line":1023},14,[462,1025,1026],{},"WantedBy=multi-user.target\n",[434,1028,1029],{},"Habilite e inicie o serviço:",[453,1031,1033],{"className":919,"code":1032,"language":921,"meta":424,"style":424},"sudo systemctl daemon-reload\nsudo systemctl enable hermes-gateway\nsudo systemctl start hermes-gateway\nsudo systemctl status hermes-gateway\n",[459,1034,1035,1044,1056,1067],{"__ignoreMap":424},[462,1036,1037,1039,1041],{"class":464,"line":465},[462,1038,493],{"class":468},[462,1040,618],{"class":472},[462,1042,1043],{"class":472}," daemon-reload\n",[462,1045,1046,1048,1050,1053],{"class":464,"line":543},[462,1047,493],{"class":468},[462,1049,618],{"class":472},[462,1051,1052],{"class":472}," enable",[462,1054,1055],{"class":472}," hermes-gateway\n",[462,1057,1058,1060,1062,1065],{"class":464,"line":603},[462,1059,493],{"class":468},[462,1061,618],{"class":472},[462,1063,1064],{"class":472}," start",[462,1066,1055],{"class":472},[462,1068,1069,1071,1073,1076],{"class":464,"line":963},[462,1070,493],{"class":468},[462,1072,618],{"class":472},[462,1074,1075],{"class":472}," status",[462,1077,1055],{"class":472},[429,1079,1081],{"id":1080},"conclusão","Conclusão",[434,1083,1084],{},"Neste artigo, focamos em como configurar o Hermes Agent e usar o Telegram para se comunicar com ele. Manter o Hermes Agent em execução em um servidor remoto oferece um assistente digital real que funciona 24 horas por dia, 7 dias por semana.",[1086,1087,1088],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":424,"searchDepth":543,"depth":603,"links":1090},[1091,1092,1097,1098,1099],{"id":431,"depth":543,"text":432},{"id":442,"depth":543,"text":443,"children":1093},[1094,1095,1096],{"id":447,"depth":603,"text":448},{"id":627,"depth":603,"text":628},{"id":730,"depth":603,"text":731},{"id":849,"depth":543,"text":850},{"id":912,"depth":543,"text":913},{"id":1080,"depth":543,"text":1081},[1101],"ai-agents","2026-06-19","Instale o Hermes Agent em um VPS remoto para garantir suporte 24 horas por dia. Siga o nosso guia passo a paso e integre-o com seu próprio bot do Telegram.","md","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002FPT-How%20to%20Setup%20Hermes%20on%20Remote%20Server.webp","Guia passo a passo para instalar o Hermes Agent em um VPS Linux e integrá-lo a um bot do Telegram.",{"schemaOrg":1108,"robots":1122,"sitemap":1123},[1109],{"@type":1110,"name":423,"description":1103,"image":1105,"step":1111},"HowTo",[1112,1116,1119],{"@type":1113,"name":448,"text":1114,"image":480,"url":1115},"HowToStep","Abra o terminal e conecte-se via SSH à sua máquina remota: Certifique-se de que os pacotes do seu servidor estejam atualizados: Adicione um novo us...","#passo-1-conectar-se-ao-seu-vps",{"@type":1113,"name":628,"text":1117,"image":659,"url":1118},"Execute o seguinte comando: Depois de instalado, verifique a instalação digitando: Execute `hermes setup` para configurar o Hermes Agent: Selecione...","#passo-2-instalar-o-hermes-agent",{"@type":1113,"name":731,"text":1120,"image":742,"url":1121},"Selecione `[2]` para usar o bot do Telegram. Acesse o `Telegram` e pesquise por 'BotFather'. Clique em `Open` para abrir o 'BotFather'. Clique em `...","#passo-3-integrao-com-o-telegram","index, follow",{"lastmod":1102},{"title":1125,"description":1103,"ogTitle":423,"ogDescription":1103,"twitterTitle":423,"twitterDescription":1103},"Configuração do Hermes Agent no VPS: Guia de Bot do Telegram","pt\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",[884,1128,1129,1130,1131],"VPS Setup","Telegram Bot","Linux VPS","AI Agent",null,"kFF1oLcXZtGj8Oh10ngzAGRuWJX_j9kzta_KDeDZSEY",{"surround":1135,"related":2010},[1136,1606],{"id":1137,"title":1138,"author":1132,"body":1139,"category":1587,"date":1588,"description":1589,"extension":1104,"image":1590,"imageAlt":1591,"isPublished":966,"meta":1592,"minRead":994,"navigation":966,"path":235,"seo":1597,"stem":1599,"tags":1600,"updatedAt":1132,"__hash__":1605},"article\u002Fpt\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude.md","Guia do Conector de IA do NetSuite: Configuração do MCP",{"type":426,"value":1140,"toc":1573},[1141,1144,1160,1164,1175,1191,1195,1331,1335,1389,1393,1445,1449,1453,1459,1464,1468,1474,1486,1490,1500,1516,1520,1526,1531,1535,1541,1544,1548],[434,1142,1143],{},"O Oracle NetSuite é há muito tempo uma plataforma de planeamento de recursos empresariais (ERP) baseada na nuvem para pequenas e médias empresas. No entanto, a interface de utilizador do seu website é infame pela sua curva de aprendizagem acentuada, navegação complexa com muitos cliques e estruturas de relatórios rígidas.",[434,1145,1146,1147,1151,1152,1155,1156,1159],{},"Com o lançamento recente do ",[1148,1149,1150],"strong",{},"NetSuite AI Connector Service",", os utilizadores podem aproveitar o ",[1148,1153,1154],{},"Model Context Protocol (MCP)"," e os ",[1148,1157,1158],{},"assistentes de IA (inteligência artificial)"," para fazer perguntas diretamente em linguagem natural e obter respostas em tempo real a partir de dados financeiros e operacionais.",[429,1161,1163],{"id":1162},"como-funciona-o-conector-de-ia-do-netsuite-mcp","Como Funciona o Conector de IA do NetSuite MCP",[434,1165,1166,1167,1170,1171,1174],{},"O ",[1148,1168,1169],{},"MCP do NetSuite"," expõe um conjunto de ferramentas à ",[1148,1172,1173],{},"IA",", como a execução de consultas SuiteQL, leitura de pesquisas guardadas (Saved Searches) e relatórios, ou execução de operações de registo, como a criação de um novo registo de cliente. Todas as ferramentas são controladas pelos permissões nativos baseados em funções do NetSuite.",[434,1176,1177,1178,1180,1181,1183,1184,1187,1188,1190],{},"Quando um utilizador faz uma pergunta em linguagem natural, a ",[1148,1179,1173],{}," utiliza o ",[1148,1182,1154],{}," para traduzir o pedido em operações estruturadas que o NetSuite compreende. O ",[1148,1185,1186],{},"NetSuite"," executa as operações utilizando as permissões do utilizador, e os resultados são devolvidos à ",[1148,1189,1173],{}," para análise e apresentação.",[429,1192,1194],{"id":1193},"guia-de-configuração-do-conector-de-ia-do-netsuite","Guia de Configuração do Conector de IA do NetSuite",[560,1196,1197,1253,1268,1277,1284,1291,1312],{},[563,1198,1199,1200,1203,1204,1207],{},"Ativar o ",[1148,1201,1202],{},"Server SuiteScript"," e o ",[1148,1205,1206],{},"REST Web Services",[560,1208,1209,1221,1247],{},[563,1210,1211,1212,1216,1217],{},"Aceda a ",[1213,1214,1215],"em",{},"Setup > Company > Enable Features"," (Configuração > Empresa > Ativar Funcionalidades).\n",[477,1218],{"alt":1219,"src":1220},"Interface de configuração de Ativar Recursos do Oracle NetSuite para Configuração da Empresa","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-setup-company-enable-features.webp",[563,1222,1223,1224,702,1227],{},"No separador secundário ",[1148,1225,1226],{},"SuiteCloud",[802,1228,1229,1238],{},[563,1230,1231,1232,809,1234],{},"Em SuiteScript, selecione a caixa ",[1148,1233,1202],{},[477,1235],{"alt":1236,"src":1237},"Ativando o SuiteScript de Servidor na guia SuiteCloud do NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-enable-features-server-suitescript.webp",[563,1239,1240,1241,809,1243],{},"Em SuiteTalk (Serviços Web), selecione a caixa ",[1148,1242,1206],{},[477,1244],{"alt":1245,"src":1246},"Ativando Serviços Web REST na guia SuiteCloud do NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-enable-features-rest-web-services.webp",[563,1248,755,1249,1252],{},[1148,1250,1251],{},"Guardar"," (Save).",[563,1254,1255,1256,1259,1260,1263,1264],{},"Instale primeiro o ",[1148,1257,1258],{},"NetSuite MCP Standard Tools",". Clique em ",[1213,1261,1262],{},"Customization > SuiteCloud Development > SuiteApp Marketplace"," (Personalização > Desenvolvimento SuiteCloud > Mercado de SuiteApps).\n",[477,1265],{"alt":1266,"src":1267},"Navegação para o mercado de aplicativos SuiteApp Marketplace em Personalização no NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-suiteapp-marketplace-navigation.webp",[563,1269,1270,1271,809,1273],{},"Pesquise por ",[1148,1272,1258],{},[477,1274],{"alt":1275,"src":1276},"Pesquisa pelo NetSuite MCP Standard Tools no mercado de SuiteApps","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-suiteapp-marketplace-search-mcp-tools.webp",[563,1278,1279,1280],{},"Assim que estiver instalado, verá o estado 'Installed' (Instalado) à direita.\n",[477,1281],{"alt":1282,"src":1283},"NetSuite MCP Standard Tools mostrado como Instalado no mercado de SuiteApps","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-suiteapp-installed-status-mcp-tools.webp",[563,1285,1286,1287],{},"Siga as mesmas instruções para instalar o 'NetSuite AI Connector Service Companion'.\n",[477,1288],{"alt":1289,"src":1290},"NetSuite AI Connector Service Companion mostrado como Instalado","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-suiteapp-installed-ai-connector-companion.webp",[563,1292,1293,1294],{},"Configurar um Registo de Integração\n",[560,1295,1296,1305],{},[563,1297,1211,1298,809,1301],{},[1213,1299,1300],{},"Setup > Integration > Manage Integrations",[477,1302],{"alt":1303,"src":1304},"Navegação para Gerenciar Integrações no menu de Configuração do NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-integration-manage-integrations-navigation.webp",[563,1306,1307,1308],{},"Crie um Registo de Integração para o ChatGPT e regressaremos depois com o token_id real:\n",[477,1309],{"alt":1310,"src":1311},"Criando um novo registro de integração no NetSuite para conexão com o ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-create-integration-record-chatgpt.webp",[563,1313,1314,1315,1319,1323,1327],{},"Crie uma função personalizada para o MCP com as permissões mínimas e atribua-a aos utilizadores. Ex.:\n",[477,1316],{"alt":1317,"src":1318},"Configurando permissões de função personalizadas para a integração do NetSuite MCP - Parte 1","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-custom-role-mcp-permissions-1.webp",[477,1320],{"alt":1321,"src":1322},"Configurando permissões de função personalizadas para a integração do NetSuite MCP - Parte 2","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-custom-role-mcp-permissions-2.webp",[477,1324],{"alt":1325,"src":1326},"Configurando permissões de função personalizadas para a integração do NetSuite MCP - Parte 3","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-custom-role-mcp-permissions-3.webp",[477,1328],{"alt":1329,"src":1330},"Configurando permissões de função personalizadas para a integração do NetSuite MCP - Parte 4","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-custom-role-mcp-permissions-4.webp",[429,1332,1334],{"id":1333},"como-integrar-o-netsuite-mcp-com-o-chatgpt","Como Integrar o NetSuite MCP com o ChatGPT",[560,1336,1337,1344,1351,1358,1368,1375,1382],{},[563,1338,1339,1340],{},"Clique em 'Settings' (Definições).\n",[477,1341],{"alt":1342,"src":1343},"Navegação para Configurações na interface de usuário do ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-settings-navigation.webp",[563,1345,1346,1347],{},"Clique em 'Apps' > 'Advanced settings' (Definições avançadas).\n",[477,1348],{"alt":1349,"src":1350},"Navegação para Apps e Configurações avançadas na configuração do ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-apps-advanced-settings.webp",[563,1352,1353,1354],{},"Ative o 'Developer mode' (Modo de programador) e clique em 'Create app' (Criar aplicação).                          s\n",[477,1355],{"alt":1356,"src":1357},"Ativando o Modo de desenvolvedor e clicando em Criar app no ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-developer-mode-create-app.webp",[563,1359,1360,1361,809,1364],{},"Introduza os detalhes. Em Connection, introduza ",[459,1362,1363],{},"https:\u002F\u002F\u003Caccount_id>.suitetalk.api.netsuite.com\u002Fservices\u002Fmcp\u002Fv1\u002Fall",[477,1365],{"alt":1366,"src":1367},"Inserindo detalhes da URL de conexão do NetSuite MCP para criar o app no ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-create-app-netsuite-mcp-connection.webp",[563,1369,1370,1371],{},"Clique em 'Create'. Uma vez integrado, verá o seguinte pop-up.\n",[477,1372],{"alt":1373,"src":1374},"Confirmação em pop-up mostrando o NetSuite MCP integrado com sucesso no ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-netsuite-mcp-integrated-popup.webp",[563,1376,1377,1378],{},"Clique em 'Sign in with NetSuite MCP' (Iniciar sessão com o NetSuite MCP).\n",[477,1379],{"alt":1380,"src":1381},"Prompt do ChatGPT para fazer login com as ferramentas padrão do NetSuite MCP","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-sign-in-with-netsuite-mcp.webp",[563,1383,1384,1385],{},"Clique no botão 'Continue' para conceder permissões.\n",[477,1386],{"alt":1387,"src":1388},"Concedendo permissões de conexão para o NetSuite MCP na tela de autorização do ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-grant-permissions-netsuite-mcp.webp",[429,1390,1392],{"id":1391},"como-integrar-o-netsuite-mcp-com-o-claude-ai","Como Integrar o NetSuite MCP com o Claude AI",[560,1394,1395,1402,1409,1416,1431,1438],{},[563,1396,1397,1398],{},"Clique em 'Customize' (Personalizar).\n",[477,1399],{"alt":1400,"src":1401},"Clicando na opção Personalizar na interface de usuário do Claude AI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-customize-navigation.webp",[563,1403,1404,1405],{},"Clique em 'Connect your apps' (Ligar as suas aplicações).\n",[477,1406],{"alt":1407,"src":1408},"Clicando em Conectar seus apps nas configurações de personalização do Claude AI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-connect-your-apps.webp",[563,1410,1411,1412],{},"Pesquise por 'NetSuite'.\n",[477,1413],{"alt":1414,"src":1415},"Pesquisando o aplicativo NetSuite nos aplicativos conectados do Claude AI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-search-netsuite-app.webp",[563,1417,1418,1419,1422,1423,1426,1427],{},"Clique em 'NetSuite' e introduza o URL do servidor: ",[459,1420,1421],{},"https:\u002F\u002F\u003Caccount_id>.suitetalk.api.netsuite.com\u002Fservices\u002Fmcp\u002Fv1\u002Fsuiteapp\u002Fcom.netsuite.mcpstandardtools",". Substitua ",[459,1424,1425],{},"\u003Caccount_id>"," pelo ID real da sua conta.\n",[477,1428],{"alt":1429,"src":1430},"Inserindo a URL de conexão do servidor NetSuite MCP no Claude AI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-netsuite-mcp-server-url-setup.webp",[563,1432,1433,1434],{},"Clique no botão 'Continue'.\n",[477,1435],{"alt":1436,"src":1437},"Clicando em Continuar para autenticar a conexão do servidor NetSuite MCP no Claude","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-netsuite-mcp-continue-authentication.webp",[563,1439,1440,1441],{},"Clique em 'Continue' para autenticar o conector.\n",[477,1442],{"alt":1443,"src":1444},"Verificação final de autenticação para o conector NetSuite MCP no Claude AI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-netsuite-mcp-authenticate-connector.webp",[429,1446,1448],{"id":1447},"casos-de-uso-de-ia-do-netsuite","Casos de Uso de IA do NetSuite",[445,1450,1452],{"id":1451},"caso-de-uso-no-chatgpt-mostrar-faturas-vencidas-há-mais-de-30-dias-no-netsuite","Caso de Uso no ChatGPT: Mostrar faturas vencidas há mais de 30 dias no NetSuite",[434,1454,1455],{},[477,1456],{"alt":1457,"src":1458},"ChatGPT executando uma consulta SuiteQL para buscar faturas vencidas no NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-netsuite-overdue-invoices-query-result.webp",[802,1460,1461],{},[563,1462,1463],{},"O ChatGPT criou a consulta SuiteQL e executou-a. Isto é extremamente prático e poupa imenso tempo em comparação com a criação de um relatório através da interface web do NetSuite.",[445,1465,1467],{"id":1466},"caso-de-uso-no-chatgpt-e-claude-consegue-desenhar-as-vendas-dos-últimos-30-dias-num-gráfico-de-linhas","Caso de Uso no ChatGPT e Claude: Consegue desenhar as vendas dos últimos 30 dias num gráfico de linhas?",[434,1469,1470],{},[477,1471],{"alt":1472,"src":1473},"ChatGPT falhando ao renderizar um gráfico de linhas de vendas a partir de dados do NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-failed-render-netsuite-sales-line-graph.webp",[802,1475,1476,1479],{},[563,1477,1478],{},"O ChatGPT não conseguiu gerar o gráfico de linhas.",[563,1480,1481,1482],{},"Experimentei no Claude e funcionou. A diferença pode dever-se às capacidades do modelo de linguagem de grande dimensão (LLM).\n",[477,1483],{"alt":1484,"src":1485},"Claude AI renderizando com sucesso um gráfico de linhas visual das vendas do NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-successfully-rendered-netsuite-sales-line-graph.webp",[445,1487,1489],{"id":1488},"caso-de-uso-no-claude-criar-um-registo-de-cliente","Caso de Uso no Claude: Criar um registo de cliente",[434,1491,1492,1496],{},[477,1493],{"alt":1494,"src":1495},"Prompt do Claude AI para criar um novo registro de cliente no NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-create-netsuite-customer-record-prompt.webp",[477,1497],{"alt":1498,"src":1499},"Confirmação do Claude AI sobre a criação bem-sucedida do registro de cliente no NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-create-netsuite-customer-record-success.webp",[802,1501,1502,1509],{},[563,1503,1504,1505],{},"Uma verificação rápida na interface do NetSuite confirma que o registo foi criado com sucesso.\n",[477,1506],{"alt":1507,"src":1508},"Verificando o registro de cliente recém-criado na interface de usuário web do NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-ui-verify-new-customer-record-created.webp",[563,1510,1511,1512],{},"A execução no ChatGPT mostra que o registo está disponível:\n",[477,1513],{"alt":1514,"src":1515},"ChatGPT confirmando que o novo registro de cliente do NetSuite está disponível","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-verify-netsuite-customer-record-available.webp",[445,1517,1519],{"id":1518},"caso-de-uso-no-claude-executar-consulta-suiteql","Caso de Uso no Claude: Executar Consulta SuiteQL",[434,1521,1522],{},[477,1523],{"alt":1524,"src":1525},"Claude AI executando diretamente e exibindo resultados de uma consulta SuiteQL do NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-run-suiteql-query-result.webp",[802,1527,1528],{},[563,1529,1530],{},"A consulta SuiteQL pode ser executada diretamente.",[429,1532,1534],{"id":1533},"considerações-finais-sobre-o-conector-de-ia-do-netsuite","Considerações Finais sobre o Conector de IA do NetSuite",[434,1536,1537,1538,1540],{},"A maior vantagem de utilizar o MCP é para utilizadores que não têm perfil técnico suficiente para criar relatórios complexos. Estes utilizadores podem usar linguagem corrente para interrogar os dados e pedir à ",[1148,1539,1173],{}," para apresentar o relatório exatamente como desejam.",[434,1542,1543],{},"Para evitar ataques de injeção de prompt e o uso indevido de operações de escrita, conceda apenas permissões de escrita a determinados registos e transações. Quando a IA usa o MCP para atualizar ou criar um registo, executa-o como SuiteScript do lado do servidor, o que ignora totalmente qualquer script do lado do cliente ou validação de força.",[429,1545,1547],{"id":1546},"referências","Referências:",[802,1549,1550,1559,1566],{},[563,1551,1552],{},[1553,1554,1558],"a",{"href":1555,"rel":1556},"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fcloud\u002Fsaas\u002Fnetsuite\u002Fns-online-help\u002Farticle_0902023450.html#subsect_90090238176",[1557],"nofollow","Instalação do SuiteApp MCP Standard Tools",[563,1560,1561],{},[1553,1562,1565],{"href":1563,"rel":1564},"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fcloud\u002Fsaas\u002Fnetsuite\u002Fns-online-help\u002Farticle_4160616848.html#subsect_0419123151",[1557],"Perguntas Frequentes sobre o Serviço do Conector de IA do NetSuite",[563,1567,1568],{},[1553,1569,1572],{"href":1570,"rel":1571},"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fcloud\u002Fsaas\u002Fnetsuite\u002Fns-online-help\u002Fsection_0714082142.html#bridgehead_0804033331",[1557],"Ligar ao Serviço do Conector de IA do NetSuite",{"title":424,"searchDepth":543,"depth":603,"links":1574},[1575,1576,1577,1578,1579,1585,1586],{"id":1162,"depth":543,"text":1163},{"id":1193,"depth":543,"text":1194},{"id":1333,"depth":543,"text":1334},{"id":1391,"depth":543,"text":1392},{"id":1447,"depth":543,"text":1448,"children":1580},[1581,1582,1583,1584],{"id":1451,"depth":603,"text":1452},{"id":1466,"depth":603,"text":1467},{"id":1488,"depth":603,"text":1489},{"id":1518,"depth":603,"text":1519},{"id":1533,"depth":543,"text":1534},{"id":1546,"depth":543,"text":1547},[1101],"2026-06-13","Configure o Conector de IA do NetSuite (MCP) com o ChatGPT e Claude. Descubra como consultar dados de ERP e automatizar tarefas usando linguagem natural.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002FPT-Setup-NetSuite-MCP-on-ChatGPT-%26-Claude.webp","Miniatura de integração de IA do NetSuite MCP apresentando fundo corporativo azul escuro com logotipos do ChatGPT e Claude conectados ao banco de dados em nuvem do NetSuite",{"schemaOrg":1593,"robots":1122,"sitemap":1596},[1594],{"@type":1595,"headline":1138,"description":1589},"TechArticle",{"lastmod":1588},{"title":1598,"description":1589,"ogTitle":1138,"ogDescription":1589,"twitterTitle":1138,"twitterDescription":1589},"Integração de IA do NetSuite MCP: Conectar ChatGPT e Claude","pt\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",[1186,1601,1602,1603,1604],"MCP","ChatGPT","Claude","AI","qOJBqpuEboIsdGzK7Bh15Y_aki6iKkCSsasqLIPntSE",{"id":1607,"title":1608,"author":424,"body":1609,"category":1993,"date":1994,"description":1995,"extension":1104,"image":1996,"imageAlt":1997,"isPublished":966,"meta":1998,"minRead":970,"navigation":966,"path":213,"seo":2002,"stem":2003,"tags":2004,"updatedAt":1132,"__hash__":2009},"article\u002Fpt\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them.md","Habilidades de agentes de IA: o que são e como criá-las",{"type":426,"value":1610,"toc":1983},[1611,1615,1626,1637,1701,1707,1711,1714,1723,1729,1733,1788,1799,1805,1808,1863,1867,1874,1881,1884,1895,1899,1944,1947,1964,1966,1977,1980],[429,1612,1614],{"id":1613},"o-que-é-uma-habilidade-de-agente-de-ia","O que é uma habilidade de agente de IA?",[434,1616,1617,1618,1621,1622,1625],{},"Uma habilidade de agente (agent skill) é um ",[1148,1619,1620],{},"conjunto reutilizável de instruções"," — um procedimento padronizado que ensina a um agente como realizar uma tarefa específica com maestria. Consiste em um único arquivo Markdown chamado ",[459,1623,1624],{},"SKILL.md"," e pode agrupar outros arquivos necessários para a tarefa, como documentos de referência, modelos ou scripts executáveis.",[434,1627,1628,1629,1636],{},"Veja a habilidade ",[1553,1630,1633],{"href":1631,"rel":1632},"https:\u002F\u002Fgithub.com\u002Fmattpocock\u002Fskills\u002Fblob\u002F733d312884b3878a9a9cff693c5886943753a741\u002Fskills\u002Fproductivity\u002Fgrill-me\u002FSKILL.md",[1557],[459,1634,1635],{},"grill-me"," como exemplo:",[453,1638,1642],{"className":1639,"code":1640,"language":1641,"meta":424,"style":424},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","---\nname: grill-me\ndescription: Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions \"grill me\".\n---\n\nInterview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.\n\nAsk the questions one at a time.\n\nIf a question can be answered by exploring the codebase, explore the codebase instead.\n","yaml",[459,1643,1644,1649,1660,1670,1674,1678,1683,1687,1692,1696],{"__ignoreMap":424},[462,1645,1646],{"class":464,"line":465},[462,1647,1648],{"class":468},"---\n",[462,1650,1651,1655,1657],{"class":464,"line":543},[462,1652,1654],{"class":1653},"swJcz","name",[462,1656,558],{"class":502},[462,1658,1659],{"class":472}," grill-me\n",[462,1661,1662,1665,1667],{"class":464,"line":603},[462,1663,1664],{"class":1653},"description",[462,1666,558],{"class":502},[462,1668,1669],{"class":472}," 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",[462,1671,1672],{"class":464,"line":963},[462,1673,1648],{"class":468},[462,1675,1676],{"class":464,"line":970},[462,1677,967],{"emptyLinePlaceholder":966},[462,1679,1680],{"class":464,"line":976},[462,1681,1682],{"class":472},"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",[462,1684,1685],{"class":464,"line":982},[462,1686,967],{"emptyLinePlaceholder":966},[462,1688,1689],{"class":464,"line":988},[462,1690,1691],{"class":472},"Ask the questions one at a time.\n",[462,1693,1694],{"class":464,"line":994},[462,1695,967],{"emptyLinePlaceholder":966},[462,1697,1698],{"class":464,"line":1000},[462,1699,1700],{"class":472},"If a question can be answered by exploring the codebase, explore the codebase instead.\n",[434,1702,1703,1704,1706],{},"Um arquivo ",[459,1705,1624],{}," contains um pequeno bloco de metadados e um corpo de instruções. Os metadados consistem no nome e na descrição da habilidade, carregados pelo agente de IA durante a inicialização.",[429,1708,1710],{"id":1709},"como-funcionam-as-habilidades-de-agentes-de-ia-divulgação-progressiva","Como funcionam as habilidades de agentes de IA: divulgação progressiva",[434,1712,1713],{},"Inicialmente, apenas o nome e a descrição são carregados no contexto. Quando a solicitação do usuário corresponde à descrição de uma habilidade, o corpo de instruções correspondente é inserido no mesmo contexto.",[434,1715,1716,1717,1722],{},"Vejamos como a habilidade ",[1553,1718,1720],{"href":1631,"rel":1719},[1557],[459,1721,1635],{}," é utilizada na prática.",[434,1724,1725],{},[477,1726],{"alt":1727,"src":1728},"Diagrama de sequência ilustrando o mecanismo de divulgação progressiva para a execução de habilidades de agentes de IA","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",[445,1730,1732],{"id":1731},"passo-a-passo","Passo a passo",[560,1734,1735,1741,1747,1753,1759,1772,1782],{},[563,1736,1737,1740],{},[1148,1738,1739],{},"Solicitação (Request)"," — O usuário pede algo ao agente (\"sabatine-me sobre o design do meu fluxo de trabalho\").",[563,1742,1743,1746],{},[1148,1744,1745],{},"Prompt de seleção"," — A solicitação do usuário, juntamente com as descrições de todas as habilidades disponíveis, é enviada ao LLM.",[563,1748,1749,1752],{},[1148,1750,1751],{},"Seleção do LLM"," — O LLM compara a solicitação com cada descrição e retorna a(s) habilidade(s) correspondente(s).",[563,1754,1755,1758],{},[1148,1756,1757],{},"Confirmação"," — O agente exibe a habilidade proposta ao usuário, que confirma (ou rejeita\u002Fajusta) a escolha.",[563,1760,1761,1764,1765,1768,1769,1771],{},[1148,1762,1763],{},"Instruções carregadas"," — O agente busca as instruções ",[1213,1766,1767],{},"completas"," para a habilidade confirmada: o corpo do arquivo ",[459,1770,1624],{},".",[563,1773,1774,1777,1778,1781],{},[1148,1775,1776],{},"Prompt de execução"," — A solicitação do usuário ",[1148,1779,1780],{},"somada às instruções da habilidade selecionada"," é enviada ao LLM.",[563,1783,1784,1787],{},[1148,1785,1786],{},"Resposta"," — O LLM gera a saída, que é a primeira pergunta da sabatina.",[434,1789,1790,1791,1798],{},"Agora vamos usar o ",[1553,1792,1795],{"href":1793,"rel":1794},"https:\u002F\u002Fgithub.com\u002Fcoleam00\u002Fexcalidraw-diagram-skill",[1557],[459,1796,1797],{},"excalidraw-diagram-skill"," para ilustrar como funciona uma habilidade vinculada a um documento de referência:",[434,1800,1801],{},[477,1802],{"alt":1803,"src":1804},"Diagrama de sequência mostrando um agente de IA executando uma habilidade carregada com arquivos de referência e modelos externos","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",[445,1806,1732],{"id":1807},"passo-a-passo-1",[560,1809,1810,1815,1820,1829,1834,1847,1854],{},[563,1811,1812,1814],{},[1148,1813,1739],{}," — O usuário pede algo ao agente (\"desenhe o fluxo de trabalho do processo de deploy\").",[563,1816,1817,1819],{},[1148,1818,1745],{}," — A solicitação do usuário, além das descrições de todas as habilidades disponíveis, é enviada ao LLM.",[563,1821,1822,1824,1825,1828],{},[1148,1823,1751],{}," — O LLM compara a solicitação com as descrições e retorna o que for compatível. Aqui, \"desenhe o fluxo de trabalho\" corresponde à descrição do ",[459,1826,1827],{},"excalidraw-diagram",", sendo selecionado.",[563,1830,1831,1833],{},[1148,1832,1757],{}," — O agente apresenta a habilidade proposta ao usuário, que confirma (ou rejeita\u002Fajusta) a escolha.",[563,1835,1836,1764,1838,1840,1841,1843,1844,1846],{},[1148,1837,1763],{},[1213,1839,1767],{}," da habilidade: o corpo do ",[459,1842,1624],{}," e quaisquer arquivos referenciados (para o ",[459,1845,1827],{},", isso inclui a paleta de cores, o esquema JSON e os modelos de elementos).",[563,1848,1849,1777,1851,1853],{},[1148,1850,1776],{},[1148,1852,1780],{}," vai para o LLM. O modelo agora tem a metodologia detalhada em mãos.",[563,1855,1856,1858,1859,1862],{},[1148,1857,1786],{}," — O LLM gera a saída (um arquivo JSON ",[459,1860,1861],{},".excalidraw","), que o agente entrega de volta ao usuário.",[429,1864,1866],{"id":1865},"habilidades-de-agentes-de-ia-vs-ferramentas-e-mcp","Habilidades de agentes de IA vs. Ferramentas e MCP",[434,1868,1869,1870,1873],{},"Habilidades não substituem prompts, ferramentas ou integrações MCP. Ferramentas e protocolos MCP ampliam o alcance do agente a sistemas externos — consultando um banco de dados, chamando uma API e assim por diante. Já as habilidades aprofundam o conhecimento prático (",[1213,1871,1872],{},"know-how",") do agente para a execução de uma tarefa específica.",[434,1875,1876,1877,1880],{},"Um MCP como o ",[1553,1878,1879],{"href":395},"Configuração do NetSuite MCP no ChatGPT e Claude"," permite que o agente responda a perguntas acessando dados financeiros e operacionais em tempo real no NetSuite. Em seguida, uma habilidade de relatórios operacionais do NetSuite orienta o agente sobre como estruturar esse relatório e apresentar as respostas estruturadas ao usuário.",[434,1882,1883],{},"Alguns cenários ideais para o uso de habilidades incluem:",[802,1885,1886,1889,1892],{},[563,1887,1888],{},"Fluxos de trabalho de várias etapas",[563,1890,1891],{},"Processamento de documentos, como extração de dados de PDFs",[563,1893,1894],{},"Padronização de geração de código",[429,1896,1898],{"id":1897},"como-criar-habilidades-de-agentes-de-ia","Como criar habilidades de agentes de IA",[560,1900,1901,1911,1925,1934],{},[563,1902,1903,1906,1907,1910],{},[1148,1904,1905],{},"Crie uma pasta"," com o nome da habilidade (ex: ",[459,1908,1909],{},"netsuite-operation-report\u002F",").",[563,1912,1913,1918,1919,1921,1922,1924],{},[1148,1914,1915,1916],{},"Escreva o arquivo ",[459,1917,1624],{}," contendo um ",[459,1920,1654],{},", uma ",[459,1923,1664],{}," precisa e um corpo de instruções conciso (com menos de 200 palavras).",[563,1926,1927,1930,1931,1933],{},[1148,1928,1929],{},"Adicione os recursos"," que a tarefa exige — documentos de referência, templates, scripts. Mantenha o arquivo ",[459,1932,1624],{}," enxuto e aponte os links para os detalhes.",[563,1935,1936,1939,1940,1943],{},[1148,1937,1938],{},"Instale a habilidade"," em um diretório onde os agentes possam descobri-la. Consulte ",[1553,1941,1942],{"href":359},"Centralização de habilidades para agentes"," para entender como gerenciar habilidades em múltiplos agentes.",[434,1945,1946],{},"Algumas dicas para escrever excelentes habilidades:",[802,1948,1949,1952,1958,1961],{},[563,1950,1951],{},"Redija a descrição pensando no acionamento (trigger) do sistema, não na leitura humana.",[563,1953,1954,1955,1957],{},"Mantenha o ",[459,1956,1624],{}," curto (menos de 200 palavras). Coloque o caso geral no corpo do texto e delegue as exceções para documentos de referência.",[563,1959,1960],{},"Use scripts para tarefas determinísticas. Não peça para o LLM fazer contas e aritmética simples.",[563,1962,1963],{},"Controle as versões. Adicione-o ao Git.",[429,1965,1081],{"id":1080},[434,1967,1968,1969,1972,1973,1976],{},"Diferente das ferramentas e do MCP, que especificam ",[1213,1970,1971],{},"ao que se conectar",", as habilidades de agentes empacotam ",[1213,1974,1975],{},"como realizar o trabalho",". Elas são complementos fundamentais, não substitutos.",[434,1978,1979],{},"Ao tirar proveito da divulgação progressiva, as habilidades mantêm a janela de contexto do seu agente limpa e eficiente — carregando instruções detalhadas, documentos de referência e scripts executáveis apenas quando a intenção da solicitação do usuário os ativa de fato.",[1086,1981,1982],{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":424,"searchDepth":543,"depth":603,"links":1984},[1985,1986,1990,1991,1992],{"id":1613,"depth":543,"text":1614},{"id":1709,"depth":543,"text":1710,"children":1987},[1988,1989],{"id":1731,"depth":603,"text":1732},{"id":1807,"depth":603,"text":1732},{"id":1865,"depth":543,"text":1866},{"id":1897,"depth":543,"text":1898},{"id":1080,"depth":543,"text":1081},[1101],"2026-06-26","Descubra o que são habilidades de agentes de IA, entenda a divulgação progressiva e aprenda a criar instruções reutilizáveis para fluxos de trabalho eficientes.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FAI%20Agent%20Skills%20What%20They%20Are%20%26%20How%20to%20Create%20Them\u002FPT-AI-Agent-Skills-What-They-Are-%26-How-to-Create-Them.webp","Guia de habilidades de agentes de IA: crie novos workflows",{"schemaOrg":1999,"robots":1122,"sitemap":2001},[2000],{"@type":1110,"headline":1608,"description":1995},{"lastmod":1994},{"title":1997,"description":1995,"ogTitle":1608,"ogDescription":1995,"twitterTitle":1608,"twitterDescription":1995},"pt\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",[2005,2006,2007,2008],"Agentes de IA","Habilidades de Agentes","Fluxos de Trabalho Reutilizáveis","Tutorial de IA","YpLi8LsrzMKZ0wdwwn0TjwuJEtgCfN7WEXwrLXFU6qA",[2011,2889,3481],{"id":2012,"title":2013,"author":424,"body":2014,"category":2870,"date":2872,"description":2873,"extension":1104,"image":2874,"imageAlt":2875,"isPublished":966,"meta":2876,"minRead":994,"navigation":966,"path":363,"seo":2881,"stem":2883,"tags":2884,"updatedAt":2880,"__hash__":2888},"article\u002Fpt\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp.md","Expor o Hermes Agent em rede privada com Cloudflare WARP",{"type":426,"value":2015,"toc":2852},[2016,2030,2039,2043,2046,2058,2062,2070,2074,2078,2126,2130,2261,2265,2299,2303,2306,2370,2373,2409,2412,2439,2443,2453,2458,2496,2582,2586,2591,2605,2614,2677,2681,2725,2729,2774,2789,2793,2837,2839,2849],[434,2017,2018,2019,2021,2022,2025,2026,2029],{},"Um desafio comum surge quando você deseja acessar seu ",[1148,2020,884],{}," de outros dispositivos, como notebooks, tablets ou telefones, sem expô-lo à internet pública. Utilizar o ",[1148,2023,2024],{},"Cloudflare WARP"," com o ",[1148,2027,2028],{},"Cloudflare Zero Trust"," permite que você exponha o Hermes Agent globalmente sem abrir uma única porta de entrada no seu firewall.",[434,2031,2032,2033,2035,2036,2038],{},"Se você seguiu nosso guia anterior, '",[1553,2034,423],{"href":375},"', um Hermes Agent já está instalado e funcionando 24 horas por dia. Em vez de lidar com a complexidade das VPNs tradicionais, usaremos o cliente ",[1148,2037,2024],{}," para expor o Hermes Agent a uma rede privada pela internet.",[429,2040,2042],{"id":2041},"entendendo-a-arquitetura","Entendendo a Arquitetura",[434,2044,2045],{},"Os componentes em ação:",[560,2047,2048,2053],{},[563,2049,2050,2052],{},[1148,2051,2028],{},": O painel de controle da Cloudflare onde você define regras de roteamento e políticas de acesso.",[563,2054,2055,2057],{},[1148,2056,2024],{},": O aplicativo cliente instalado em seus dispositivos (VPS, notebooks, telefones). Ele intercepta o tráfego destinado à sua rede privada e o roteia com segurança.",[445,2059,2061],{"id":2060},"pré-requisitos","Pré-requisitos",[802,2063,2064,2067],{},[563,2065,2066],{},"Um Hermes Agent em execução no seu VPS.",[563,2068,2069],{},"Uma conta gratuita da Cloudflare.",[429,2071,2073],{"id":2072},"guia-passo-a-passo","Guia Passo a Passo",[445,2075,2077],{"id":2076},"passo-1-configurar-o-cloudflare-zero-trust","Passo 1: Configurar o Cloudflare Zero Trust",[560,2079,2080,2088,2095,2105,2112,2119],{},[563,2081,2082,2083,1771],{},"Faça login no seu ",[1553,2084,2087],{"href":2085,"rel":2086},"https:\u002F\u002Fdash.cloudflare.com\u002F",[1557],"Painel da Cloudflare",[563,2089,2090,2091],{},"Clique em 'Zero Trust' no menu à esquerda.\n",[477,2092],{"alt":2093,"src":2094},"Menu de navegação lateral esquerdo do painel Cloudflare com a opção Zero Trust","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-left-menu.webp",[563,2096,2097,2098,773,2101],{},"Se esta for sua primeira vez, você será solicitado a escolher um plano (o nível Gratuito atende perfeitamente a essa configuração) e dar um nome à sua equipe (ex., ",[459,2099,2100],{},"ai-team",[477,2102],{"alt":2103,"src":2104},"Configuração inicial da conta Cloudflare Zero Trust e definição do nome da equipe","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-team-setup.webp",[563,2106,2107,2108],{},"Clique em 'Access' e depois em 'Policies' para criar uma política de acesso definindo quem tem acesso à rede.\n",[477,2109],{"alt":2110,"src":2111},"Página de políticas de acesso do Cloudflare Zero Trust mostrando as regras de acesso configuradas","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-access-policies-page.webp",[563,2113,2114,2115],{},"Clique em 'Create new policy'.\n",[477,2116],{"alt":2117,"src":2118},"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",[563,2120,2121,2122],{},"Selecione 'Emails' e insira seu e-mail em 'Policy rules'.\n",[477,2123],{"alt":2124,"src":2125},"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",[445,2127,2129],{"id":2128},"passo-2-configurar-o-cliente-cloudflare-warp-no-vps","Passo 2: Configurar o cliente Cloudflare WARP no VPS",[560,2131,2132,2142,2148,2155,2158,2173,2176,2254],{},[563,2133,677,2134,2137,2138,2141],{},[459,2135,2136],{},"sudo apt update"," e ",[459,2139,2140],{},"sudo apt install cloudflare-warp"," no terminal do seu VPS.",[563,2143,677,2144,2147],{},[459,2145,2146],{},"warp-cli registration new \u003CTEAM-NAME>"," no terminal do seu VPS, o que exibirá um URL.",[563,2149,2150,2151,2154],{},"Copie o URL gerado, que será parecido com ",[459,2152,2153],{},"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fwarp",", e cole-o no seu navegador para autenticação.",[563,2156,2157],{},"Como a autenticação por e-mail foi definida na configuração da política acima, insira seu e-mail para autenticar.",[563,2159,2160,2161,2164,2165,2168,2169,2172],{},"Na página de '",[1148,2162,2163],{},"Success","' (Colaboração bem-sucedida) no navegador, clique com o botão direito e selecione '",[1148,2166,2167],{},"Inspect","' (Inspecionar) no botão azul '",[1148,2170,2171],{},"Open Cloudflare WARP","'.",[563,2174,2175],{},"Copie o token longo que aparece no link do botão.",[563,2177,677,2178,2181,2182,2185,2186],{},[459,2179,2180],{},"warp-cli --accept-tos registration token \"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fauth?token=\u003Ccopied_token>\""," no terminal do seu VPS para conectá-lo ao Cloudflare Zero Trust.",[2183,2184],"br",{},"Se encontrar o 'Error: Failed to communicate with the WARP API' no Ubuntu 26, execute os seguintes comandos:",[453,2187,2189],{"className":455,"code":2188,"language":457,"meta":424,"style":424},"sudo systemctl restart warp-svc.service\n\n# Check status\nsudo systemctl status warp-svc.service\n\n# Run the warp-cli registration token again\nwarp-cli --accept-tos registration token   \"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fauth?token=\u003Ccopied_token>\"\n",[459,2190,2191,2202,2206,2212,2222,2226,2231],{"__ignoreMap":424},[462,2192,2193,2195,2197,2199],{"class":464,"line":465},[462,2194,493],{"class":468},[462,2196,618],{"class":472},[462,2198,621],{"class":472},[462,2200,2201],{"class":472}," warp-svc.service\n",[462,2203,2204],{"class":464,"line":543},[462,2205,967],{"emptyLinePlaceholder":966},[462,2207,2208],{"class":464,"line":603},[462,2209,2211],{"class":2210},"sHwdD","# Check status\n",[462,2213,2214,2216,2218,2220],{"class":464,"line":963},[462,2215,493],{"class":468},[462,2217,618],{"class":472},[462,2219,1075],{"class":472},[462,2221,2201],{"class":472},[462,2223,2224],{"class":464,"line":970},[462,2225,967],{"emptyLinePlaceholder":966},[462,2227,2228],{"class":464,"line":976},[462,2229,2230],{"class":2210},"# Run the warp-cli registration token again\n",[462,2232,2233,2236,2239,2242,2245,2248,2251],{"class":464,"line":982},[462,2234,2235],{"class":468},"warp-cli",[462,2237,2238],{"class":472}," --accept-tos",[462,2240,2241],{"class":472}," registration",[462,2243,2244],{"class":472}," token",[462,2246,2247],{"class":502},"   \"",[462,2249,2250],{"class":472},"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fauth?token=\u003Ccopied_token>",[462,2252,2253],{"class":502},"\"\n",[563,2255,2256,2257],{},"Volte ao painel do Cloudflare Zero Trust e clique em 'Devices' (Dispositivos). O dispositivo do seu VPS deve ser exibido agora.\n",[477,2258],{"alt":2259,"src":2260},"Painel de dispositivos Zero Trust confirmando que o VPS Linux está conectado","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-devices-vps-connected.webp",[445,2262,2264],{"id":2263},"passo-3-configurar-o-roteamento-de-tráfego","Passo 3: Configurar o roteamento de tráfego",[560,2266,2267,2274,2281,2288],{},[563,2268,2269,2270],{},"Clique no perfil do seu VPS no painel de Dispositivos.\n",[477,2271],{"alt":2272,"src":2273},"Acesso aos detalhes e configurações de Split Tunnels para o VPS registrado","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-device-profile.webp",[563,2275,2276,2277],{},"Role para baixo até a seção 'Split Tunnels' (Túneis divididos).\n",[477,2278],{"alt":2279,"src":2280},"Seção Split Tunnels sob as configurações de perfil do VPS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-split-tunnels-section.webp",[563,2282,2283,2284],{},"Clique no botão 'Manage' (Gerenciar) e defina as configurações conforme mostrado abaixo. Substitua o endereço IP, se necessário.\n",[477,2285],{"alt":2286,"src":2287},"Gerenciamento de exclusões de IP e host nos Split Tunnels das configurações Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-manage-split-tunnels.webp",[563,2289,2290,2291,2294,2295,2298],{},"Expor o ",[459,2292,2293],{},"address"," (endereço) e o ",[459,2296,2297],{},"host"," roteará o tráfego para seus serviços pela mesma rede privada.",[445,2300,2302],{"id":2301},"passo-4-configurar-o-firewall-no-vps","Passo 4: Configurar o Firewall no VPS",[434,2304,2305],{},"Habilite o firewall para permitir apenas a sub-rede '100.96.0.0\u002F12', bloqueando qualquer outro acesso público de entrada.",[453,2307,2309],{"className":455,"code":2308,"language":457,"meta":424,"style":424},"sudo ufw enable \nsudo ufw default allow outgoing \nsudo ufw default deny incoming\nsudo ufw allow in from 100.96.0.0\u002F12\n",[459,2310,2311,2322,2339,2353],{"__ignoreMap":424},[462,2312,2313,2315,2318,2320],{"class":464,"line":465},[462,2314,493],{"class":468},[462,2316,2317],{"class":472}," ufw",[462,2319,1052],{"class":472},[462,2321,540],{"class":539},[462,2323,2324,2326,2328,2331,2334,2337],{"class":464,"line":543},[462,2325,493],{"class":468},[462,2327,2317],{"class":472},[462,2329,2330],{"class":472}," default",[462,2332,2333],{"class":472}," allow",[462,2335,2336],{"class":472}," outgoing",[462,2338,540],{"class":539},[462,2340,2341,2343,2345,2347,2350],{"class":464,"line":603},[462,2342,493],{"class":468},[462,2344,2317],{"class":472},[462,2346,2330],{"class":472},[462,2348,2349],{"class":472}," deny",[462,2351,2352],{"class":472}," incoming\n",[462,2354,2355,2357,2359,2361,2364,2367],{"class":464,"line":963},[462,2356,493],{"class":468},[462,2358,2317],{"class":472},[462,2360,2333],{"class":472},[462,2362,2363],{"class":472}," in",[462,2365,2366],{"class":472}," from",[462,2368,2369],{"class":472}," 100.96.0.0\u002F12\n",[434,2371,2372],{},"Permita o tráfego de loopback para evitar a interrupção de serviços locais:",[453,2374,2376],{"className":455,"code":2375,"language":457,"meta":424,"style":424},"sudo ufw allow in on lo\nsudo ufw allow out on lo\n",[459,2377,2378,2394],{"__ignoreMap":424},[462,2379,2380,2382,2384,2386,2388,2391],{"class":464,"line":465},[462,2381,493],{"class":468},[462,2383,2317],{"class":472},[462,2385,2333],{"class":472},[462,2387,2363],{"class":472},[462,2389,2390],{"class":472}," on",[462,2392,2393],{"class":472}," lo\n",[462,2395,2396,2398,2400,2402,2405,2407],{"class":464,"line":543},[462,2397,493],{"class":468},[462,2399,2317],{"class":472},[462,2401,2333],{"class":472},[462,2403,2404],{"class":472}," out",[462,2406,2390],{"class":472},[462,2408,2393],{"class":472},[434,2410,2411],{},"Recarregue o firewall e verifique o status:",[453,2413,2415],{"className":455,"code":2414,"language":457,"meta":424,"style":424},"sudo ufw reload \nsudo ufw status verbose\n",[459,2416,2417,2428],{"__ignoreMap":424},[462,2418,2419,2421,2423,2426],{"class":464,"line":465},[462,2420,493],{"class":468},[462,2422,2317],{"class":472},[462,2424,2425],{"class":472}," reload",[462,2427,540],{"class":539},[462,2429,2430,2432,2434,2436],{"class":464,"line":543},[462,2431,493],{"class":468},[462,2433,2317],{"class":472},[462,2435,1075],{"class":472},[462,2437,2438],{"class":472}," verbose\n",[445,2440,2442],{"id":2441},"passo-5-expor-o-hermes-agent-à-rede-privada","Passo 5: Expor o Hermes Agent à Rede Privada",[434,2444,2445,2446,2449,2450,1771],{},"Vamos expor o ",[1148,2447,2448],{},"Hermes Agent Web Dashboard"," à nossa rede privada e usar o provedor de autenticação padrão, ",[1148,2451,2452],{},"Nous Research",[2454,2455,2457],"h4",{"id":2456},"configurar-o-provedor-de-autenticação","Configurar o provedor de autenticação",[560,2459,2460,2469,2476,2483,2490],{},[563,2461,2462,2463,2468],{},"Vá até ",[1553,2464,2467],{"href":2465,"rel":2466},"https:\u002F\u002Fportal.nousresearch.com",[1557],"portal.nousresearch.com"," para registrar uma conta.",[563,2470,2471,2472],{},"Selecione 'Local Dashboards' (Painéis locais).\n",[477,2473],{"alt":2474,"src":2475},"Seleção da opção Local Dashboards no portal da Nous Research","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fnous-portal-local-dashboards-selection.webp",[563,2477,2478,2479],{},"Clique em 'Register Dashboard' (Registrar painel).\n",[477,2480],{"alt":2481,"src":2482},"Clique no botão Registrar painel para criar uma nova entrada de painel","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fnous-portal-register-dashboard.webp",[563,2484,2485,2486],{},"Insira o endereço IP da rede privada do seu VPS como a 'Dashboard redirect URI' (URI de redirecionamento do painel) e clique em 'Save' (Salvar).\n",[477,2487],{"alt":2488,"src":2489},"Registro do endereço IP de rede privada do VPS como URI de redirecionamento no portal Nous Research","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fnous-portal-register-redirect-uri.webp",[563,2491,2492,2493,558],{},"Copie o 'OAuth client ID' e cole-o em seu arquivo ",[459,2494,2495],{},"config.yaml",[453,2497,2499],{"className":1639,"code":2498,"language":1641,"meta":424,"style":424},"dashboard:\n  theme: default\n  show_token_analytics: false\n  oauth:\n    client_id: agent:cmq02x7ha0002jk0ba3kfnb\n    portal_url: https:\u002F\u002Fportal.nousresearch.com\n  basic_auth:\n    username: ''\n    password_hash: ''\n",[459,2500,2501,2508,2518,2529,2536,2546,2556,2563,2573],{"__ignoreMap":424},[462,2502,2503,2506],{"class":464,"line":465},[462,2504,2505],{"class":1653},"dashboard",[462,2507,702],{"class":502},[462,2509,2510,2513,2515],{"class":464,"line":543},[462,2511,2512],{"class":1653},"  theme",[462,2514,558],{"class":502},[462,2516,2517],{"class":472}," default\n",[462,2519,2520,2523,2525],{"class":464,"line":603},[462,2521,2522],{"class":1653},"  show_token_analytics",[462,2524,558],{"class":502},[462,2526,2528],{"class":2527},"sfNiH"," false\n",[462,2530,2531,2534],{"class":464,"line":963},[462,2532,2533],{"class":1653},"  oauth",[462,2535,702],{"class":502},[462,2537,2538,2541,2543],{"class":464,"line":970},[462,2539,2540],{"class":1653},"    client_id",[462,2542,558],{"class":502},[462,2544,2545],{"class":472}," agent:cmq02x7ha0002jk0ba3kfnb\n",[462,2547,2548,2551,2553],{"class":464,"line":976},[462,2549,2550],{"class":1653},"    portal_url",[462,2552,558],{"class":502},[462,2554,2555],{"class":472}," https:\u002F\u002Fportal.nousresearch.com\n",[462,2557,2558,2561],{"class":464,"line":982},[462,2559,2560],{"class":1653},"  basic_auth",[462,2562,702],{"class":502},[462,2564,2565,2568,2570],{"class":464,"line":988},[462,2566,2567],{"class":1653},"    username",[462,2569,558],{"class":502},[462,2571,2572],{"class":502}," ''\n",[462,2574,2575,2578,2580],{"class":464,"line":994},[462,2576,2577],{"class":1653},"    password_hash",[462,2579,558],{"class":502},[462,2581,2572],{"class":502},[2454,2583,2585],{"id":2584},"configurar-o-systemd-para-iniciar-automaticamente-o-painel-do-hermes","Configurar o Systemd para Iniciar Automaticamente o Painel do Hermes",[560,2587,2588],{},[563,2589,2590],{},"Crie um arquivo de serviço:",[453,2592,2594],{"className":919,"code":2593,"language":921,"meta":424,"style":424},"sudo nano \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-dashboard.service\n",[459,2595,2596],{"__ignoreMap":424},[462,2597,2598,2600,2602],{"class":464,"line":465},[462,2599,493],{"class":468},[462,2601,577],{"class":472},[462,2603,2604],{"class":472}," \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-dashboard.service\n",[560,2606,2607],{"start":543},[563,2608,2609,2610,2613],{},"Cole a seguinte configuração, garantindo que ",[459,2611,2612],{},"--host 0.0.0.0"," faça parte do comando:",[453,2615,2617],{"className":941,"code":2616,"language":943,"meta":424,"style":424},"[Unit]\nDescription=Hermes Dashboard\nAfter=network.target\n\n[Service]\nUser=hermes\nWorkingDirectory=\u002Fhome\u002Fhermes\nExecStart=\u002Fhome\u002Fhermes\u002F.local\u002Fbin\u002Fhermes dashboard --host 0.0.0.0\nRestart=always\nRestartSec=10\nEnvironment=PATH=\u002Fhome\u002Fhermes\u002F.local\u002Fbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fbin:\u002Fbin\n\n[Install]\nWantedBy=multi-user.target\n",[459,2618,2619,2623,2628,2632,2636,2640,2644,2648,2653,2657,2661,2665,2669,2673],{"__ignoreMap":424},[462,2620,2621],{"class":464,"line":465},[462,2622,950],{},[462,2624,2625],{"class":464,"line":543},[462,2626,2627],{},"Description=Hermes Dashboard\n",[462,2629,2630],{"class":464,"line":603},[462,2631,960],{},[462,2633,2634],{"class":464,"line":963},[462,2635,967],{"emptyLinePlaceholder":966},[462,2637,2638],{"class":464,"line":970},[462,2639,973],{},[462,2641,2642],{"class":464,"line":976},[462,2643,979],{},[462,2645,2646],{"class":464,"line":982},[462,2647,985],{},[462,2649,2650],{"class":464,"line":988},[462,2651,2652],{},"ExecStart=\u002Fhome\u002Fhermes\u002F.local\u002Fbin\u002Fhermes dashboard --host 0.0.0.0\n",[462,2654,2655],{"class":464,"line":994},[462,2656,997],{},[462,2658,2659],{"class":464,"line":1000},[462,2660,1003],{},[462,2662,2663],{"class":464,"line":1006},[462,2664,1009],{},[462,2666,2667],{"class":464,"line":1012},[462,2668,967],{"emptyLinePlaceholder":966},[462,2670,2671],{"class":464,"line":1017},[462,2672,1020],{},[462,2674,2675],{"class":464,"line":1023},[462,2676,1026],{},[560,2678,2679],{"start":603},[563,2680,1029],{},[453,2682,2684],{"className":919,"code":2683,"language":921,"meta":424,"style":424},"sudo systemctl daemon-reload\nsudo systemctl enable hermes-dashboard\nsudo systemctl start hermes-dashboard\nsudo systemctl status hermes-dashboard\n",[459,2685,2686,2694,2705,2715],{"__ignoreMap":424},[462,2687,2688,2690,2692],{"class":464,"line":465},[462,2689,493],{"class":468},[462,2691,618],{"class":472},[462,2693,1043],{"class":472},[462,2695,2696,2698,2700,2702],{"class":464,"line":543},[462,2697,493],{"class":468},[462,2699,618],{"class":472},[462,2701,1052],{"class":472},[462,2703,2704],{"class":472}," hermes-dashboard\n",[462,2706,2707,2709,2711,2713],{"class":464,"line":603},[462,2708,493],{"class":468},[462,2710,618],{"class":472},[462,2712,1064],{"class":472},[462,2714,2704],{"class":472},[462,2716,2717,2719,2721,2723],{"class":464,"line":963},[462,2718,493],{"class":468},[462,2720,618],{"class":472},[462,2722,1075],{"class":472},[462,2724,2704],{"class":472},[445,2726,2728],{"id":2727},"passo-6-instalar-o-cliente-cloudflare-warp-no-desktop","Passo 6: Instalar o cliente Cloudflare WARP no Desktop",[560,2730,2731,2739,2742,2749,2756,2763],{},[563,2732,2733,2734,1771],{},"Baixe o cliente Cloudflare WARP pelo ",[1553,2735,2738],{"href":2736,"rel":2737},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fwarp-client\u002Fget-started\u002F",[1557],"portal da Cloudflare",[563,2740,2741],{},"Abra e inicie o cliente Cloudflare WARP após a instalação.",[563,2743,2744,2745],{},"Faça login quando solicitado.\n",[477,2746],{"alt":2747,"src":2748},"Tela de login do cliente Cloudflare WARP em computador desktop","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-warp-desktop-login-prompt.webp",[563,2750,2751,2752],{},"Uma página de 'Success' (Sucesso) será exibida após o login.\n",[477,2753],{"alt":2754,"src":2755},"Página de sucesso na autenticação após fazer login no Cloudflare Zero Trust no desktop","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-warp-desktop-login-success.webp",[563,2757,2758,2759],{},"O cliente WARP agora deve mostrar que está conectado à sua equipe do Zero Trust.\n",[477,2760],{"alt":2761,"src":2762},"Cliente Cloudflare WARP desktop confirmando conexão ativa com a rede privada Zero Trust","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-warp-desktop-client-connected.webp",[563,2764,2765,2766,2769,2770],{},"Navegue até o seu navegador e insira o seu IP privado (ex., ",[459,2767,2768],{},"100.96.0.3","). O Hermes Web Dashboard deve ser carregado com sucesso.\n",[477,2771],{"alt":2772,"src":2773},"Acesso ao painel web privado do Hermes Agent no navegador do desktop","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fhermes-agent-dashboard-desktop-view.webp",[2775,2776,2777],"blockquote",{},[434,2778,2779,2782,2783,2788],{},[1148,2780,2781],{},"Dica de profissional para usuários do macOS:"," Se você estiver usando o cliente WARP para acessar várias contas da Cloudflare, confira nosso guia rápido sobre ",[1148,2784,2785],{},[1553,2786,2787],{"href":399},"Alternar entre múltiplos perfis do Cloudflare WARP no macOS"," para alternar entre as contas sem problemas.",[445,2790,2792],{"id":2791},"passo-7-instalar-o-cliente-cloudflare-warp-em-dispositivos-ios","Passo 7: Instalar o cliente Cloudflare WARP em Dispositivos iOS",[560,2794,2795,2802,2810,2818,2826],{},[563,2796,2797,2798,2801],{},"Instale o ",[1148,2799,2800],{},"Cloudflare One"," através da App Store.",[563,2803,2804,2805],{},"Abra o aplicativo Cloudflare One e insira o nome da sua equipe quando solicitado.\n",[477,2806],{"alt":2807,"src":2808,"width":2809},"Inserção do nome da equipe Cloudflare Zero Trust no aplicativo Cloudflare One no iOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-one-ios-team-name-prompt.webp",239,[563,2811,2812,2813],{},"Faça login usando o mesmo endereço de e-mail que foi configurado na regra de política acima.\n",[477,2814],{"alt":2815,"src":2816,"width":2817},"Tela de autenticação por e-mail para o Cloudflare Zero Trust no iOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-one-ios-email-login.webp",229,[563,2819,2820,2821],{},"Assim que estiver conectado, a tela deve ficar parecida com isto:\n",[477,2822],{"alt":2823,"src":2824,"width":2825},"Aplicativo Cloudflare One exibindo status conectado no dispositivo móvel iOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-one-ios-client-connected.webp",322,[563,2827,2828,2829,2831,2832],{},"Navegue até o seu navegador e insira o IP privado ",[459,2830,2768],{}," para acessar o Hermes Web Dashboard no seu dispositivo móvel.\n",[477,2833],{"alt":2834,"src":2835,"width":2836},"Acesso à interface do painel web do Hermes Agent no navegador do celular","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fhermes-agent-dashboard-mobile-view.webp",345,[429,2838,1081],{"id":1080},[434,2840,2841,2842,2844,2845,2848],{},"Com o ",[1148,2843,2028],{}," gerenciando as políticas de identidade e o cliente ",[1148,2846,2847],{},"WARP"," roteando o tráfego por um túnel criptografado, o seu Hermes Agent estará acessível de forma segura a partir dos seus dispositivos no mundo todo. Esta configuração estabelece uma base segura e robusta para criar e acessar uma infraestrutura de IA privada totalmente remota.",[1086,2850,2851],{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":424,"searchDepth":543,"depth":603,"links":2853},[2854,2857,2869],{"id":2041,"depth":543,"text":2042,"children":2855},[2856],{"id":2060,"depth":603,"text":2061},{"id":2072,"depth":543,"text":2073,"children":2858},[2859,2860,2861,2862,2863,2867,2868],{"id":2076,"depth":603,"text":2077},{"id":2128,"depth":603,"text":2129},{"id":2263,"depth":603,"text":2264},{"id":2301,"depth":603,"text":2302},{"id":2441,"depth":603,"text":2442,"children":2864},[2865,2866],{"id":2456,"depth":963,"text":2457},{"id":2584,"depth":963,"text":2585},{"id":2727,"depth":603,"text":2728},{"id":2791,"depth":603,"text":2792},{"id":1080,"depth":543,"text":1081},[1101,2871],"security","2026-07-09","Aprenda a expor e acessar globalmente seu Hermes Agent de forma segura com o Cloudflare WARP e o Zero Trust, sem abrir portas de entrada em seu firewall.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002FPT-Exposing-Hermes-Agent-to-Private-Network-Using-Cloudflare-WARP.webp","Exposição segura do Hermes Agent em rede privada usando Cloudflare Zero Trust e túnel WARP",{"schemaOrg":2877,"robots":1122,"sitemap":2879},[2878],{"@type":1110,"headline":2013,"description":2873,"name":2013,"image":2874},{"lastmod":2880},"2026-09-28",{"title":2882,"description":2873,"ogTitle":2013,"ogDescription":2873,"twitterTitle":2013,"twitterDescription":2873},"Acesso seguro ao Hermes Agent com Cloudflare Zero Trust","pt\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",[2024,2885,884,2886,2887],"Zero Trust","Rede privada","Tutorial","YSMA4-lqPipX1pmOP069tbQJepC0q97hwEJOym2fqzI",{"id":2890,"title":2891,"author":424,"body":2892,"category":3464,"date":3465,"description":3466,"extension":1104,"image":3467,"imageAlt":3468,"isPublished":966,"meta":3469,"minRead":970,"navigation":966,"path":367,"seo":3473,"stem":3475,"tags":3476,"updatedAt":1132,"__hash__":3480},"article\u002Fpt\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts.md","Como habilidades de agentes de IA substituem scripts Nuxt",{"type":426,"value":2893,"toc":3457},[2894,2908,2912,2915,3019,3022,3050,3057,3061,3074,3091,3095,3106,3271,3275,3363,3367,3375,3396,3403,3418,3429,3432,3438,3441,3446,3454],[434,2895,2896,2897,2137,2900,2903,2904,2907],{},"Quando iniciamos uma nova aplicação usando o framework Nuxt, temos que passar por etapas tediosas como instalar módulos e configurar arquivos como ",[459,2898,2899],{},"nuxt.config.ts",[459,2901,2902],{},"wrangler.jsonc",". Um script pode resolver esse problema, mas ele atinge seus limites à medida que as variações aumentam. É por isso que exploramos e substituímos os scripts por uma ",[1148,2905,2906],{},"habilidade de agente"," (agent skill).",[429,2909,2911],{"id":2910},"no-que-os-scripts-de-shell-tradicionais-são-bons","No que os scripts de shell tradicionais são bons",[434,2913,2914],{},"Um script é excelente para executar um conjunto fixo de instruções em sequência com decisões predefinidas no próprio código.",[453,2916,2918],{"className":455,"code":2917,"language":457,"meta":424,"style":424},"#!\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",[459,2919,2920,2925,2934,2938,2980,2984,2995,2999,3010],{"__ignoreMap":424},[462,2921,2922],{"class":464,"line":465},[462,2923,2924],{"class":2210},"#!\u002Fusr\u002Fbin\u002Fenv bash\n",[462,2926,2927,2931],{"class":464,"line":543},[462,2928,2930],{"class":2929},"s2Zo4","set",[462,2932,2933],{"class":472}," -e\n",[462,2935,2936],{"class":464,"line":603},[462,2937,967],{"emptyLinePlaceholder":966},[462,2939,2940,2943,2946,2949,2952,2956,2959,2962,2965,2968,2971,2974,2977],{"class":464,"line":963},[462,2941,2942],{"class":468},"npx",[462,2944,2945],{"class":472}," nuxi@latest",[462,2947,2948],{"class":472}," init",[462,2950,2951],{"class":502}," \"",[462,2953,2955],{"class":2954},"sHdIc","$1",[462,2957,2958],{"class":502},"\"",[462,2960,2961],{"class":472}," --template",[462,2963,2964],{"class":472}," minimal",[462,2966,2967],{"class":472}," --packageManager",[462,2969,2970],{"class":472}," pnpm",[462,2972,2973],{"class":472}," --no-gitInit",[462,2975,2976],{"class":472}," -M",[462,2978,2979],{"class":472}," @nuxt\u002Fui,@nuxthub\u002Fcore,@vueuse\u002Fnuxt\n",[462,2981,2982],{"class":464,"line":970},[462,2983,967],{"emptyLinePlaceholder":966},[462,2985,2986,2989,2991,2993],{"class":464,"line":976},[462,2987,2988],{"class":2929},"cd",[462,2990,2951],{"class":502},[462,2992,2955],{"class":2954},[462,2994,2253],{"class":502},[462,2996,2997],{"class":464,"line":982},[462,2998,967],{"emptyLinePlaceholder":966},[462,3000,3001,3004,3007],{"class":464,"line":988},[462,3002,3003],{"class":468},"cp",[462,3005,3006],{"class":472}," ~\u002Ftemplates\u002Fnuxt.config.ts",[462,3008,3009],{"class":472}," .\n",[462,3011,3012,3014,3017],{"class":464,"line":994},[462,3013,3003],{"class":468},[462,3015,3016],{"class":472}," ~\u002Ftemplates\u002Fwrangler.jsonc",[462,3018,3009],{"class":472},[434,3020,3021],{},"Este script funciona até que aconteça o seguinte:",[802,3023,3024,3030,3040],{},[563,3025,3026,3029],{},[1148,3027,3028],{},"Valores padrão fixos."," O script traz o módulo Nuxt UI fixado no código; e se quisermos usar o módulo Ant Design UI? Cada nova opção de módulo exige um novo argumento fornecido pelo usuário.",[563,3031,3032,3035,3036,3039],{},[1148,3033,3034],{},"Não consegue ler a intenção do usuário."," \"Crie um blog\" precisa do ",[459,3037,3038],{},"@nuxt\u002Fcontent","; \"crie um site com newsletters\" precisa do Cloudflare D1 + Drizzle. Um script não consegue distinguir a diferença — cada variação exige um novo script.",[563,3041,3042,3045,3046,3049],{},[1148,3043,3044],{},"Fica desatualizado silenciosamente."," As convenções do Nuxt mudam entre versões principais. O Nuxt 4 mudou o diretório de origem para ",[459,3047,3048],{},"app\u002F",". Um script escrito para o Nuxt 3 criará o scaffolding da estrutura errada sem nunca alertar o usuário.",[434,3051,3052,3053,3056],{},"A ",[1148,3054,3055],{},"inicialização do projeto"," (app scaffolding) é um problema de decisão, não de execução. O script não escalará quando o número de decisões aumentar.",[429,3058,3060],{"id":3059},"por-que-usar-uma-habilidade-de-agente-de-ia-em-vez-de-scripts-tradicionais","Por que usar uma habilidade de agente de IA em vez de scripts tradicionais?",[434,3062,3063,3064,3067,3068,3070,3071,3073],{},"Uma habilidade de agente (agent skill) não é um bloco de código que simplesmente executa, mas um ",[1148,3065,3066],{},"conjunto de conhecimentos que o agente de IA segue",". Ela contém um arquivo ",[459,3069,1624],{}," e pode agrupar quaisquer outros arquivos que a tarefa exigir (como documentos de referência, modelos e scripts executáveis). O artigo ",[1553,3072,1608],{"href":351}," explica o funcionamento de uma habilidade de agente. Uma habilidade mantém a diligência de um script ao mesmo tempo que adiciona o julgamento razoável que falta ao script:",[802,3075,3076,3079,3082,3085,3088],{},[563,3077,3078],{},"Deduz a intenção do usuário para determinar se o aplicativo precisa de um banco de dados.",[563,3080,3081],{},"Decide quais módulos opcionais são necessários a partir da lista especificada. Por exemplo, Nuxt Content, i18n e analytics são opcionais de acordo com a solicitação do usuário.",[563,3083,3084],{},"Adapta-se ao ecossistema atual usando o framework Nuxt mais recente, o NuxtHub para integrações com o Cloudflare e o Wrangler para o deployment.",[563,3086,3087],{},"Recupera-se quando uma etapa falha.",[563,3089,3090],{},"Valida o projeto por meio de um checklist final antes de entregá-lo.",[429,3092,3094],{"id":3093},"por-trás-dos-bastidores-da-nossa-habilidade-de-scaffolding-do-nuxt-e-cloudflare","Por trás dos bastidores da nossa habilidade de scaffolding do Nuxt e Cloudflare",[434,3096,3097,3098,3105],{},"A habilidade, ",[1553,3099,3102],{"href":3100,"rel":3101},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fscaffold-nuxt-cloudflare-app-skill",[1557],[459,3103,3104],{},"scaffold-nuxt-cloudflare-app-skill",", guia você por um scaffolding voltado para produção:",[560,3107,3108,3140,3161,3187,3216,3251,3257],{},[563,3109,3110,3113,3114],{},[1148,3111,3112],{},"Esclarece qualquer detalhe"," que não possa ser deduzido:\n",[802,3115,3116,3127,3130],{},[563,3117,3118,3119,3122,3123,3126],{},"O kit de UI (",[1148,3120,3121],{},"Nuxt UI"," por padrão ou ",[1148,3124,3125],{},"Antdv Next",");",[563,3128,3129],{},"Se um banco de dados é necessário (como Cloudflare D1);",[563,3131,3132,3133,3136,3137,3139],{},"Módulos extras como ",[459,3134,3135],{},"@nuxtjs\u002Fi18n"," ou ",[459,3138,3038],{}," para recursos de CMS.",[563,3141,3142,3145,3146,3149,3150,3153,3154,3157,3158,1771],{},[1148,3143,3144],{},"Inicializa o aplicativo base"," com ",[459,3147,3148],{},"pnpm dlx nuxi@latest init"," para obter a versão mais recente do framework Nuxt com o ",[459,3151,3152],{},"pnpm"," como gerenciador de pacotes. Em seguida, configura listas de permissões para compilações nativas de modo que o ambiente de compilação do Cloudflare possa compilar ",[459,3155,3156],{},"better-sqlite3","\u002F",[459,3159,3160],{},"sharp",[563,3162,3163,3166,3167,3136,3170,3173,3174,3173,3177,3173,3180,3173,3183,3186],{},[1148,3164,3165],{},"Instala os módulos a partir de uma tabela de decisão",": ",[459,3168,3169],{},"@nuxt\u002Fui",[459,3171,3172],{},"@antdv-next\u002Fnuxt",", ",[459,3175,3176],{},"@nuxt\u002Fimage",[459,3178,3179],{},"@nuxtjs\u002Fseo",[459,3181,3182],{},"@nuxthub\u002Fcore",[459,3184,3185],{},"@vueuse\u002Fnuxt",", além de Drizzle\u002FD1, Nuxt Content e i18n apenas se forem selecionados.",[563,3188,3189,702,3192],{},[1148,3190,3191],{},"Organiza a estrutura de diretórios",[802,3193,3194,3198,3203,3208,3213],{},[563,3195,3196],{},[459,3197,3048],{},[563,3199,3200],{},[459,3201,3202],{},"server\u002F",[563,3204,3205],{},[459,3206,3207],{},"shared\u002F",[563,3209,3210],{},[459,3211,3212],{},"tests\u002F",[563,3214,3215],{},"arquivos de configuração na raiz.",[563,3217,3218,702,3223],{},[1148,3219,3220,3221],{},"Configura o ",[459,3222,2899],{},[802,3224,3225,3234,3241,3246],{},[563,3226,3227,3157,3230,3233],{},[459,3228,3229],{},"site.url",[459,3231,3232],{},"site.name"," para SEO",[563,3235,3236,3237,3240],{},"Bloco ",[459,3238,3239],{},"hub"," do NuxtHub para o Cloudflare",[563,3242,3243],{},[459,3244,3245],{},"routeRules",[563,3247,3248],{},[459,3249,3250],{},"compatibilityDate",[563,3252,3253],{},[1148,3254,3220,3255],{},[459,3256,2902],{},[563,3258,3259,3262,3263,3266,3267,3270],{},[1148,3260,3261],{},"Configura o Vitest e o ESLint",", em seguida executa um ",[1148,3264,3265],{},"checklist final"," incluindo ",[459,3268,3269],{},"pnpm install && pnpm dev"," antes de dar o trabalho por encerrado.",[429,3272,3274],{"id":3273},"scripts-de-shell-vs-habilidades-de-agentes-de-ia-comparação-direta","Scripts de shell vs habilidades de agentes de IA: comparação direta",[3276,3277,3278,3293],"table",{},[3279,3280,3281],"thead",{},[3282,3283,3284,3287,3290],"tr",{},[3285,3286],"th",{},[3285,3288,3289],{},"Script",[3285,3291,3292],{},"Habilidade",[3294,3295,3296,3308,3319,3330,3341,3352],"tbody",{},[3282,3297,3298,3302,3305],{},[3299,3300,3301],"td",{},"Intenção do usuário",[3299,3303,3304],{},"❌ valores fixos",[3299,3306,3307],{},"✅ adapta-se à solicitação",[3282,3309,3310,3313,3316],{},[3299,3311,3312],{},"Tomada de decisão",[3299,3314,3315],{},"apenas com flags predefinidas",[3299,3317,3318],{},"✅ avaliado em tempo de execução",[3282,3320,3321,3324,3327],{},[3299,3322,3323],{},"Mudanças de versão",[3299,3325,3326],{},"reescrita manual",[3299,3328,3329],{},"✅ verifica o estado atual",[3282,3331,3332,3335,3338],{},[3299,3333,3334],{},"Recuperação de erros",[3299,3336,3337],{},"para a execução",[3299,3339,3340],{},"✅ corrige e continua",[3282,3342,3343,3346,3349],{},[3299,3344,3345],{},"Validação do resultado",[3299,3347,3348],{},"❌",[3299,3350,3351],{},"✅ checklist final",[3282,3353,3354,3357,3360],{},[3299,3355,3356],{},"Custo de manutenção",[3299,3358,3359],{},"proliferação de flags, atualizações de versão",[3299,3361,3362],{},"editar Markdown, não código",[429,3364,3366],{"id":3365},"como-instalar-habilidades-de-agentes-de-ia-com-a-cli-npx-skills","Como instalar habilidades de agentes de IA com a CLI npx skills",[434,3368,3369,3370,558],{},"A instalação é feita em um único comando com a ",[1553,3371,3374],{"href":3372,"rel":3373},"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fskills",[1557],"CLI de skills",[453,3376,3378],{"className":455,"code":3377,"language":457,"meta":424,"style":424},"npx skills add https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fscaffold-nuxt-cloudflare-app-skill.git -g\n",[459,3379,3380],{"__ignoreMap":424},[462,3381,3382,3384,3387,3390,3393],{"class":464,"line":465},[462,3383,2942],{"class":468},[462,3385,3386],{"class":472}," skills",[462,3388,3389],{"class":472}," add",[462,3391,3392],{"class":472}," https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fscaffold-nuxt-cloudflare-app-skill.git",[462,3394,3395],{"class":472}," -g\n",[434,3397,3398,3399],{},"A CLI clona o repositório, localiza a habilidade e pergunta a qual dos 77 agentes suportados ela deve ser atribuída:\n",[477,3400],{"alt":3401,"src":3402},"Interface de linha de comando mostrando a instalação da habilidade de scaffolding do Nuxt usando o comando 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",[434,3404,3405,3406,3409,3410,3413,3414],{},"Escolhemos o ",[1148,3407,3408],{},"Symlink"," (o método recomendado), que instala a habilidade uma única vez em ",[459,3411,3412],{},"~\u002F.agents\u002Fskills"," e aponta cada agente selecionado para esta única cópia.\n",[477,3415],{"alt":3416,"src":3417},"Tela de terminal exibindo o resumo de instalação e configuração do link simbólico para as habilidades de agentes centralizadas","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20AI%20Agent%20Skills%20Replace%20Nuxt%20App%20Scaffolding%20Scripts\u002Fnpx-skills-installation-summary-details.webp",[802,3419,3420],{},[563,3421,3422],{},[1213,3423,3424,3425,3428],{},"Consulte este artigo, ",[1553,3426,3427],{"href":359},"Fim da fragmentação de habilidades de agentes usando npx skills",", sobre como centralizar habilidades de agentes em uma única fonte de verdade.",[434,3430,3431],{},"Ao abrir o Claude Code, você confirma que a habilidade foi instalada com sucesso.",[434,3433,3434],{},[477,3435],{"alt":3436,"src":3437},"Interface de linha de comando do Claude Code mostrando o comando de barra scaffold-nuxt recém-instalado, ativo e pronto para uso","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20AI%20Agent%20Skills%20Replace%20Nuxt%20App%20Scaffolding%20Scripts\u002Fclaude-code-scaffold-nuxt-slash-command-active.webp",[434,3439,3440],{},"A partir daí, um prompt em linguagem natural é suficiente:",[2775,3442,3443],{},[434,3444,3445],{},"\"Scaffold a new Nuxt app deployed to Cloudflare Workers — Nuxt UI, a blog section, and a D1 database\"",[434,3447,3448,3449,3453],{},"A habilidade é open source; acesse o ",[1553,3450,3452],{"href":3100,"rel":3451},[1557],"repositório no GitHub"," e experimente.",[1086,3455,3456],{},"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":424,"searchDepth":543,"depth":603,"links":3458},[3459,3460,3461,3462,3463],{"id":2910,"depth":543,"text":2911},{"id":3059,"depth":543,"text":3060},{"id":3093,"depth":543,"text":3094},{"id":3273,"depth":543,"text":3274},{"id":3365,"depth":543,"text":3366},[1101],"2026-08-25","Crie apps Nuxt no Cloudflare facilmente. Descubra por que substituímos scripts frágeis por habilidades de agentes de IA e como usá-las usando npx skills.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20AI%20Agent%20Skills%20Replace%20Nuxt%20App%20Scaffolding%20Scripts\u002FPT-How-AI-Agent-Skills-Replace-Nuxt-App-Scaffolding-Scripts.webp","Nuxt no Cloudflare: Habilidades de IA vs Scripts de Build - Comparando scripts frágeis com habilidades de agentes de IA.",{"schemaOrg":3470,"robots":1122,"sitemap":3472},[3471],{"@type":1595,"headline":2891,"description":3466,"image":3467},{"lastmod":3465},{"title":3474,"description":3466,"ogTitle":2891,"ogDescription":3466,"twitterTitle":2891,"twitterDescription":3466},"Nuxt no Cloudflare: Habilidades de IA vs Scripts de Build","pt\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",[3477,3478,1131,3479],"Nuxt","Cloudflare","Scaffolding","oRX3uz8H_2-Dh03snCHuC6xhmBt3UnIdxirrpFcicu4",{"id":3482,"title":3483,"author":424,"body":3484,"category":4662,"date":4665,"description":4666,"extension":1104,"image":4667,"imageAlt":4668,"isPublished":966,"meta":4669,"minRead":1006,"navigation":966,"path":355,"seo":4693,"stem":4695,"tags":4696,"updatedAt":1132,"__hash__":4699},"article\u002Fpt\u002Farticle\u002Fbringing-buzz-to-deepseek-harness.md","Conectar DeepSeek Harness ao Buzz: O Gateway de Nostr",{"type":426,"value":3485,"toc":4646},[3486,3492,3513,3521,3524,3528,3534,3576,3579,3636,3640,3646,3906,3909,3913,3917,3923,3927,3940,3944,3954,4000,4007,4011,4014,4046,4050,4055,4095,4103,4109,4118,4124,4154,4167,4171,4180,4211,4233,4281,4288,4293,4299,4306,4312,4317,4324,4338,4344,4353,4390,4393,4399,4406,4412,4416,4419,4567,4571,4605,4609,4615,4617,4643],[434,3487,3488],{},[477,3489],{"alt":3490,"src":3491},"Visão geral do gateway de mensagens DeepSeek Harness conectado a um canal do Block Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-nostr-gateway-overview.webp",[434,3493,3494,3495,3502,3503,3508,3509,1771],{},"O plugin do DeepSeek Harness (DSH), ",[1148,3496,3497],{},[1553,3498,3501],{"href":3499,"rel":3500},"https:\u002F\u002Fgithub.com\u002Fa792883583\u002Fdsh-message-gateway",[1557],"dsh-message-gateway",", estende o assistente DeepSeek Harness a múltiplas plataformas de mensagens, como Discord, Telegram e WeChat. O repositório do plugin foi bifurcado e estendido para adicionar a plataforma ",[1148,3504,3505],{},[1553,3506,3507],{"href":383},"Como auto-hospedar o Buzz do Block: Espaço para agentes de IA"," à lista. O repositório bifurcado está disponível no GitHub em ",[1553,3510,3511],{"href":3511,"rel":3512},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fdsh-message-gateway",[1557],[3514,3515],"article-card",{"description":3516,"image":3517,"image-alt":3518,"label":3519,"min-read":3520,"title":3507,"to":383},"Aprenda a auto-hospedar o relay Buzz da Block em um VPS Linux com Cloudflare. Crie um espaço de trabalho seguro baseado em Nostr para humanos e agentes IA.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002FPT-Self-Hosting-Buzz-As-The-Workspace-Where-AI-Agents-Become-Colleagues.webp","Um cartão tecnológico premium de 16:9 com detalhes em azul profundo e laranja ilustrando como auto-hospedar o relay Buzz do Block em um VPS Ubuntu, apresentando um painel glassmorphic limpo com tipografia centrada.","Guia de pré-requisitos","12",[434,3522,3523],{},"O assistente DSH ingressa em um relay do Buzz como membro, recebe mensagens diretas (DMs) e mensagens de canal onde é @mencionado, e responde pelo mesmo pipeline de agentes por chat utilizado na interface Web.",[429,3525,3527],{"id":3526},"arquitetura-do-plugin-dsh-message-gateway","Arquitetura do plugin dsh-message-gateway",[434,3529,3530,3531,3533],{},"A arquitetura do plugin ",[1148,3532,3501],{}," é dividida em duas camadas principais:",[802,3535,3536,3566],{},[563,3537,3538,3541,3542,3545,3546,3549,3550,3553,3554,3557,3558,3561,3562,3565],{},[1148,3539,3540],{},"Host"," (Node): ",[459,3543,3544],{},"gateway-store"," (credenciais em ",[459,3547,3548],{},"~\u002F.dsh\u002Fgateway.json","), ",[459,3551,3552],{},"platforms.ts"," (definições de plataformas e testes de conexão), ",[459,3555,3556],{},"routes.ts"," (endpoints ",[459,3559,3560],{},"\u002Fgateway\u002F*",") e ",[459,3563,3564],{},"bridge-manager.ts"," (as pontes residentes: sessões de agentes independentes por chat e respostas em streaming).",[563,3567,3568,3571,3572,3575],{},[1148,3569,3570],{},"Cliente"," (navegador): a página \"",[1148,3573,3574],{},"Message platforms","\" na barra lateral, onde você salva credenciais, testa conexões e monitora o status do serviço.",[434,3577,3578],{},"Adicionar uma nova plataforma envolve as seguintes etapas:",[560,3580,3581,3598,3612],{},[563,3582,3583,3586,3587,3590,3591,3594,3595,1771],{},[1148,3584,3585],{},"Uma classe de ponte (bridge)",": implementando os métodos ",[459,3588,3589],{},"start\u002Fstop\u002Fstatus"," e o callback ",[459,3592,3593],{},"onText(text, frame)",", espelhando o padrão de ",[459,3596,3597],{},"wecom-bridge.ts",[563,3599,3600,3603,3604,3607,3608,3611],{},[1148,3601,3602],{},"Integração no bridge-manager",": reaproveitar o pipeline existente por conversa (",[459,3605,3606],{},"ensureAgentForKey"," + ",[459,3609,3610],{},"pendingMap",") e conectar o coletor de respostas da plataforma.",[563,3613,3614,3617,3618,2137,3621,3166,3624,3627,3628,3631,3632,3635],{},[1148,3615,3616],{},"Persistência e rotas",": em ",[459,3619,3620],{},"\u002Fgateway\u002Fsave",[459,3622,3623],{},"\u002Fgateway\u002Fdelete",[1148,3625,3626],{},"salvar credenciais inicia a ponte, excluí-las a encerra"," — complementado por uma flag ",[459,3629,3630],{},"autoStartXxx"," para que o ",[459,3633,3634],{},"dsh web"," reconecte automaticamente no boot.",[429,3637,3639],{"id":3638},"implementação-da-ponte-do-buzz-protocolo-nostr-e-ciclo-de-vida-de-eventos","Implementação da ponte do Buzz: Protocolo Nostr e ciclo de vida de eventos",[434,3641,1166,3642,3645],{},[1148,3643,3644],{},"DeepSeek Harness"," foi utilizado para implementar a ponte do Buzz. A implementação atende rigorosamente às seguintes especificações do protocolo Nostr:",[3276,3647,3648,3671],{},[3279,3649,3650],{},[3282,3651,3652,3657],{},[3285,3653,3654],{},[1148,3655,3656],{},"Transporte",[3285,3658,3659,3660,3663,3664,3667,3668],{},"Um único WebSocket autenticado via NIP-42; padrão ",[459,3661,3662],{},"ws:\u002F\u002Flocalhost:3000","; ",[459,3665,3666],{},"http(s):\u002F\u002F"," é normalizado para ",[459,3669,3670],{},"ws(s):\u002F\u002F",[3294,3672,3673,3691,3719,3736,3759,3782,3806,3819,3832,3851,3868,3882],{},[3282,3674,3675,3680],{},[3299,3676,3677],{},[1148,3678,3679],{},"Autenticação",[3299,3681,3682,3683,3686,3687,3690],{},"Evento AUTH ",[459,3684,3685],{},"kind 22242",", tags ",[459,3688,3689],{},"[[\"relay\", url], [\"challenge\", challenge]]",", conteúdo vazio, assinado com a chave do agente",[3282,3692,3693,3698],{},[3299,3694,3695],{},[1148,3696,3697],{},"Inscrições",[3299,3699,3700,3166,3703,3706,3707,3710,3711,3714,3715,3718],{},[1148,3701,3702],{},"Por canal",[459,3704,3705],{},"REQ {\"kinds\":[9], \"#h\":[\u003Cuuid>]}"," — um REQ por canal. Um REQ global ",[459,3708,3709],{},"kinds:[9]"," recebe EOSE mas nunca distribui eventos; filtro ",[459,3712,3713],{},"#h"," multivalorado ",[1148,3716,3717],{},"não"," funciona",[3282,3720,3721,3726],{},[3299,3722,3723],{},[1148,3724,3725],{},"Descoberta",[3299,3727,3728,3731,3732,3735],{},[459,3729,3730],{},"REQ {kinds:[39000]}"," histórico para metadados de canal (",[459,3733,3734],{},"type == \"dm\""," marca canal de mensagem direta)",[3282,3737,3738,3743],{},[3299,3739,3740],{},[1148,3741,3742],{},"Associação",[3299,3744,3745,3748,3749,3751,3752,3755,3756],{},[459,3746,3747],{},"REQ {kinds:[44100,44101], \"#p\":[nossa pubkey], since: now-60s}"," ao vivo — 44100 = adição, 44101 = remoção, com ",[459,3750,434],{},"+",[459,3753,3754],{},"h","; atualiza inscrições ",[1148,3757,3758],{},"sem reconectar",[3282,3760,3761,3766],{},[3299,3762,3763],{},[1148,3764,3765],{},"Eventos de chat",[3299,3767,3768,3771,3772,3775,3776,3173,3779],{},[459,3769,3770],{},"kind 9"," com tags ",[459,3773,3774],{},"[\"h\", canal]",", opcional ",[459,3777,3778],{},"[\"e\", replyTo]",[459,3780,3781],{},"[\"p\", menção]",[3282,3783,3784,3789],{},[3299,3785,3786],{},[1148,3787,3788],{},"Edições in-place",[3299,3790,3791,3145,3794,3607,3796,3799,3800,3802,3803,3805],{},[459,3792,3793],{},"kind 40003",[459,3795,3754],{},[459,3797,3798],{},"e","→alvo; substituição de conteúdo; limite do relay de 64 KB → manter payloads ≤ 60.000 B; respostas longas são fragmentadas — chunk 0 na edição, o restante adicionado como mensagens ",[459,3801,3770],{}," encadeadas (",[459,3804,3798],{},"→raiz)",[3282,3807,3808,3813],{},[3299,3809,3810],{},[1148,3811,3812],{},"Quadros CLOSED",[3299,3814,3815,3818],{},[459,3816,3817],{},"auth-required"," antes de AUTH é normal durante o bootstrap (completar AUTH e reabrir inscrições); após AUTH → retentativa delimitada (3 tentativas, backoff 0\u002F1\u002F2 s); reconexão reconstrói tudo",[3282,3820,3821,3826],{},[3299,3822,3823],{},[1148,3824,3825],{},"Limites do relay",[3299,3827,3828,3829],{},"≤ 2000 eventos históricos por inscrição, ordenados do mais recente para o mais antigo, mesmo utilizando ",[459,3830,3831],{},"since",[3282,3833,3834,3839],{},[3299,3835,3836],{},[1148,3837,3838],{},"Filtro de menções",[3299,3840,3841,3842,3844,3845,3847,3848,3850],{},"Processa ",[459,3843,3770],{}," de entrada apenas quando: (a) tag ",[459,3846,434],{}," inclui nossa pubkey, (b) o canal é DM, ou (c) a raiz ",[459,3849,3798],{}," pertence ao nosso agente. Ignora a própria pubkey (anti-loop)",[3282,3852,3853,3858],{},[3299,3854,3855],{},[1148,3856,3857],{},"Menções de saída",[3299,3859,3860,3861,3864,3865,3867],{},"Texto publicado sem alterações — o relay não valida tokens ",[459,3862,3863],{},"@","; tags ",[459,3866,434],{}," incluem o autor de origem mais até 7 outras pubkeys mencionadas (máx. 8)",[3282,3869,3870,3875],{},[3299,3871,3872],{},[1148,3873,3874],{},"Mensagens diretas",[3299,3876,3877,3878,3881],{},"Canais de texto simples no escopo do relay (metadados ",[459,3879,3880],{},"type: \"dm\"",") — sem criptografia NIP-04\u002F44 nesta ponte",[3282,3883,3884,3889],{},[3299,3885,3886],{},[1148,3887,3888],{},"Anexos (entrada)",[3299,3890,3891,3892,3895,3896,3173,3899,3173,3902,3905],{},"NIP-92 ",[459,3893,3894],{},"imeta"," (",[459,3897,3898],{},"url",[459,3900,3901],{},"sha256",[459,3903,3904],{},"m",") → download http(s), verificação de SHA-256, limite de 20 MB, máx. 4 por mensagem; imagens de saída não suportadas",[434,3907,3908],{},"O diagrama abaixo ilustra o fluxo de inicialização (bootstrap) da ponte do Buzz:",[477,3910],{"src":3911,"alt":3912},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-bootstrap.webp","Diagrama de sequência ilustrando o processo de bootstrap e autenticação NIP-42 da ponte Buzz",[445,3914,3916],{"id":3915},"streaming-em-tempo-real-via-edições-in-place-do-nostr-kind-40003","Streaming em tempo real via edições in-place do Nostr (Kind 40003)",[434,3918,3919,3920,558],{},"Como o Nostr não possui indicador nativo de digitação e seus eventos são estritamente cumulativos (append-only), a ponte do Buzz ",[1148,3921,3922],{},"simula streaming por meio de edições in-place",[477,3924],{"src":3925,"alt":3926},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-reply.webp","Diagrama do fluxo de edição in-place simulando respostas em streaming com eventos kind 40003",[802,3928,3929],{},[563,3930,3931],{},[1213,3932,3933,3934,3936,3937,3939],{},"A ponte do Buzz publica primeiro um evento placeholder ",[459,3935,3770],{},", depois o reescreve progressivamente com edições in-place ",[459,3938,3793],{}," com taxa controlada e grava a edição final quando o agente conclui a resposta. Esse mecanismo segue o mesmo padrão consagrado das pontes do Telegram e Discord.",[445,3941,3943],{"id":3942},"conexão-de-workspaces-do-deepseek-harness-via-comandos-de-chat","Conexão de workspaces do DeepSeek Harness via comandos de chat",[434,3945,3946,3947,3895,3950,3953],{},"O recurso de \"Workspaces\" na interface Web do DSH é gerenciado pelo serviço ",[459,3948,3949],{},"workspaceRegistry",[459,3951,3952],{},"@deepseek-ai\u002Fdsh-workspace","):",[453,3955,3959],{"className":3956,"code":3957,"language":3958,"meta":424,"style":424},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const existing = await ctx.workspaceRegistry.resolveByPath(request.path);\n","typescript",[459,3960,3961],{"__ignoreMap":424},[462,3962,3963,3967,3970,3973,3977,3980,3982,3984,3986,3989,3992,3994,3997],{"class":464,"line":465},[462,3964,3966],{"class":3965},"spNyl","const",[462,3968,3969],{"class":539}," existing ",[462,3971,3972],{"class":502},"=",[462,3974,3976],{"class":3975},"s7zQu"," await",[462,3978,3979],{"class":539}," ctx",[462,3981,1771],{"class":502},[462,3983,3949],{"class":539},[462,3985,1771],{"class":502},[462,3987,3988],{"class":2929},"resolveByPath",[462,3990,3991],{"class":539},"(request",[462,3993,1771],{"class":502},[462,3995,3996],{"class":539},"path)",[462,3998,3999],{"class":502},";\n",[434,4001,4002,4003,4006],{},"A ponte do Buzz disponibiliza o comando de chat ",[459,4004,4005],{},"\u002Fworkspace \u003Cpasta>",", que registra uma pasta existente no DSH. Qualquer nova sessão criada pelo gateway é anexada a essa pasta e exibida na interface Web.",[477,4008],{"src":4009,"alt":4010},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-workspace.webp","Arquitetura do registro de espaços de trabalho do DeepSeek Harness a partir de comandos de chat",[434,4012,4013],{},"Três regras de projeto essenciais:",[802,4015,4016,4026,4036],{},[563,4017,4018,4021,4022,4025],{},[1148,4019,4020],{},"Mudar de pasta = nova sessão."," O valor de ",[459,4023,4024],{},"cwd"," é gravado no cabeçalho da sessão no momento da criação e não pode ser alterado posteriormente.",[563,4027,4028,4031,4032,4035],{},[1148,4029,4030],{},"A pasta deve existir previamente."," O método ",[459,4033,4034],{},"create"," rejeita caminhos inexistentes.",[563,4037,4038,4041,4042,4045],{},[1148,4039,4040],{},"Comando com sensibilidade de segurança."," Toda sessão opera sob uma política de ",[1148,4043,4044],{},"auto-aprovação",", concedendo acesso aos arquivos da pasta de destino.",[429,4047,4049],{"id":4048},"guia-passo-a-passo-de-instalação-e-configuração","Guia passo a passo de instalação e configuração",[560,4051,4052],{},[563,4053,4054],{},"Execute os seguintes comandos no terminal:",[453,4056,4058],{"className":455,"code":4057,"language":457,"meta":424,"style":424},"dsh plugin --profile web add https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fdsh-message-gateway.git\n\n# Start DSH web\ndsh web\n",[459,4059,4060,4079,4083,4088],{"__ignoreMap":424},[462,4061,4062,4065,4068,4071,4074,4076],{"class":464,"line":465},[462,4063,4064],{"class":468},"dsh",[462,4066,4067],{"class":472}," plugin",[462,4069,4070],{"class":472}," --profile",[462,4072,4073],{"class":472}," web",[462,4075,3389],{"class":472},[462,4077,4078],{"class":472}," https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fdsh-message-gateway.git\n",[462,4080,4081],{"class":464,"line":543},[462,4082,967],{"emptyLinePlaceholder":966},[462,4084,4085],{"class":464,"line":603},[462,4086,4087],{"class":2210},"# Start DSH web\n",[462,4089,4090,4092],{"class":464,"line":963},[462,4091,4064],{"class":468},[462,4093,4094],{"class":472}," web\n",[560,4096,4097],{"start":543},[563,4098,4099,4100,4102],{},"Assim que a interface Web do DSH abrir no navegador, clique no ícone \"",[1148,4101,3574],{},"\":",[434,4104,4105],{},[477,4106],{"alt":4107,"src":4108},"Barra lateral da interface Web do DeepSeek Harness destacando o menu Message platforms","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-web-ui-message-platforms-sidebar-icon.webp",[560,4110,4111],{"start":603},[563,4112,4113,4114,4117],{},"Selecione \"",[1148,4115,4116],{},"Buzz","\" no painel esquerdo:",[434,4119,4120],{},[477,4121],{"alt":4122,"src":4123},"Painel de configurações da ponte Buzz no gateway de mensagens do DeepSeek Harness","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-message-gateway-buzz-config-panel.webp",[560,4125,4126,4137,4147],{"start":963},[563,4127,4128,4129,4132,4133,4136],{},"Clique em \"",[1148,4130,4131],{},"Generate keypair","\" para gerar o par de chaves Nostr. Guarde a chave pública ",[459,4134,4135],{},"npub"," em local seguro.",[563,4138,4139,4140,1155,4143,4146],{},"Preencha a ",[1148,4141,4142],{},"Relay URL",[1148,4144,4145],{},"Channels"," (a lista autorizada de UUIDs dos canais que serão assinados).",[563,4148,4149,4150,4153],{},"Clique no botão \"",[1148,4151,4152],{},"Save","\".",[434,4155,4156,4157,4160,4161,4164,4165,1771],{},"Ao salvar o formulário, as credenciais são armazenadas e ",[1148,4158,4159],{},"a ponte é iniciada",". A chave privada ",[459,4162,4163],{},"nsec"," é protegida como segredo e gravada exclusivamente em ",[459,4166,3548],{},[445,4168,4170],{"id":4169},"registro-do-par-de-chaves-do-agente-no-relay-nostr-do-buzz","Registro do par de chaves do agente no relay Nostr do Buzz",[434,4172,4173,4176,4177,4179],{},[1148,4174,4175],{},"Adicione o assistente DSH ao relay como membro."," Utilize a chave ",[459,4178,4135],{}," gerada na etapa anterior:",[453,4181,4183],{"className":455,"code":4182,"language":457,"meta":424,"style":424},"docker compose exec relay buzz-admin add-member --pubkey npub123123123\n",[459,4184,4185],{"__ignoreMap":424},[462,4186,4187,4190,4193,4196,4199,4202,4205,4208],{"class":464,"line":465},[462,4188,4189],{"class":468},"docker",[462,4191,4192],{"class":472}," compose",[462,4194,4195],{"class":472}," exec",[462,4197,4198],{"class":472}," relay",[462,4200,4201],{"class":472}," buzz-admin",[462,4203,4204],{"class":472}," add-member",[462,4206,4207],{"class":472}," --pubkey",[462,4209,4210],{"class":472}," npub123123123\n",[434,4212,4213,4216,4217,4220,4221,4224,4225,4228,4229,4232],{},[1148,4214,4215],{},"Adicione o assistente a um canal específico."," Apenas registrar o membro no relay não o torna visível nem pesquisável nos canais. Para adicioná-lo via ",[459,4218,4219],{},"buzz-cli",", lembre-se de que o parâmetro ",[459,4222,4223],{},"--pubkey"," deve estar no formato ",[1148,4226,4227],{},"HEX",", e não npub (o comando ",[459,4230,4231],{},"buzz-admin add-member"," exibe a chave HEX correspondente):",[453,4234,4236],{"className":455,"code":4235,"language":457,"meta":424,"style":424},"buzz channels add-member --channel \u003CCHANNEL_UUID> --pubkey \u003CAGENT_HEX> --role member\n",[459,4237,4238],{"__ignoreMap":424},[462,4239,4240,4243,4246,4248,4251,4254,4257,4260,4263,4265,4267,4270,4273,4275,4278],{"class":464,"line":465},[462,4241,4242],{"class":468},"buzz",[462,4244,4245],{"class":472}," channels",[462,4247,4204],{"class":472},[462,4249,4250],{"class":472}," --channel",[462,4252,4253],{"class":502}," \u003C",[462,4255,4256],{"class":472},"CHANNEL_UUI",[462,4258,4259],{"class":539},"D",[462,4261,4262],{"class":502},">",[462,4264,4207],{"class":472},[462,4266,4253],{"class":502},[462,4268,4269],{"class":472},"AGENT_HE",[462,4271,4272],{"class":539},"X",[462,4274,4262],{"class":502},[462,4276,4277],{"class":472}," --role",[462,4279,4280],{"class":472}," member\n",[3514,4282],{"description":4283,"image":3517,"image-alt":3518,"label":4284,"min-read":4285,"title":4286,"to":4287},"Instruções passo a passo para instalar e configurar o buzz-cli para gerir canais Nostr, chaves de membros e permissões de agentes de IA.","Guia da CLI","5","Como instalar e usar o buzz-cli","\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues#install-buzz-cli",[434,4289,4290,4291,558],{},"Atualize o perfil do assistente no relay Nostr definindo um nome amigável com o ",[459,4292,4219],{},[434,4294,4295],{},[477,4296],{"alt":4297,"src":4298},"Atualização do nome do assistente DeepSeek Harness no relay Nostr usando buzz-cli","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-assistant-buzz-cli-profile-update.webp",[434,4300,4301,4302,4305],{},"Envie uma saudação ",[1148,4303,4304],{},"Wave"," (a saudação padrão de DM do Buzz) para o assistente. O retorno confirma a operação:",[434,4307,4308],{},[477,4309],{"alt":4310,"src":4311},"Teste de conexão enviando uma saudação Wave por DM para o assistente DeepSeek Harness no Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-dm-wave-greeting-reply.webp",[434,4313,4314],{},[1213,4315,4316],{},"Enviando uma Wave por mensagem direta para o assistente DSH — a ponte está ativa.",[445,4318,4320,4321],{"id":4319},"habilitando-o-acesso-a-pastas-locais-com-workspace","Habilitando o acesso a pastas locais com ",[459,4322,4323],{},"\u002Fworkspace",[434,4325,4326,4327,4330,4331,4334,4335,4337],{},"Como a configuração ",[459,4328,4329],{},"allowWorkspace"," vem desativada (",[459,4332,4333],{},"false",") por padrão, o comando ",[459,4336,4323],{}," será inicialmente recusado:",[434,4339,4340],{},[477,4341],{"alt":4342,"src":4343},"Notificação de erro mostrando a rejeição do comando workspace com allowWorkspace desativado","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-workspace-command-rejected-error.webp",[434,4345,4346,4347,4350,4351,558],{},"Ative a funcionalidade em ",[459,4348,4349],{},"~\u002F.dsh\u002Fprofiles\u002Fweb\u002Fcordis.patch.yml"," e reinicie o ",[459,4352,3634],{},[453,4354,4358],{"className":4355,"code":4356,"language":4357,"meta":424,"style":424},"language-yml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","- id: ui-message-gateway\n  config:\n    allowWorkspace: true\n","yml",[459,4359,4360,4373,4380],{"__ignoreMap":424},[462,4361,4362,4365,4368,4370],{"class":464,"line":465},[462,4363,4364],{"class":502},"-",[462,4366,4367],{"class":1653}," id",[462,4369,558],{"class":502},[462,4371,4372],{"class":472}," ui-message-gateway\n",[462,4374,4375,4378],{"class":464,"line":543},[462,4376,4377],{"class":1653},"  config",[462,4379,702],{"class":502},[462,4381,4382,4385,4387],{"class":464,"line":603},[462,4383,4384],{"class":1653},"    allowWorkspace",[462,4386,558],{"class":502},[462,4388,4389],{"class":2527}," true\n",[434,4391,4392],{},"Após reiniciar:",[434,4394,4395],{},[477,4396],{"alt":4397,"src":4398},"Mensagem de confirmação de sucesso após executar o comando de registro de workspace no Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-workspace-command-success-confirmation.webp",[434,4400,4401,4402,4405],{},"Dica importante: o sistema presume que a pasta do workspace (",[459,4403,4404],{},"TechVoyage"," nas capturas) esteja no diretório padrão do usuário. Caso contrário, informe o caminho absoluto. Qualquer nova sessão criada sob este workspace pelo Buzz também aparecerá na interface Web do DeepSeek Harness.",[434,4407,4408],{},[477,4409],{"alt":4410,"src":4411},"Interface Web do DeepSeek Harness exibindo a sessão de workspace sincronizada do Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-web-ui-synced-workspace-session.webp",[445,4413,4415],{"id":4414},"comandos-disponíveis-no-buzz","Comandos disponíveis no Buzz",[434,4417,4418],{},"Todos os comandos disponíveis nas demais plataformas suportadas funcionam normalmente no Buzz:",[3276,4420,4421,4431],{},[3279,4422,4423],{},[3282,4424,4425,4428],{},[3285,4426,4427],{},"Comando",[3285,4429,4430],{},"O que faz",[3294,4432,4433,4443,4453,4463,4473,4483,4493,4503,4512,4531,4550],{},[3282,4434,4435,4440],{},[3299,4436,4437],{},[459,4438,4439],{},"\u002Fworkspace \u003Cfolder>",[3299,4441,4442],{},"Registra uma pasta existente como o workspace da conversa (requer habilitação nas configurações)",[3282,4444,4445,4450],{},[3299,4446,4447],{},[459,4448,4449],{},"\u002Fhelp",[3299,4451,4452],{},"Lista os comandos disponíveis",[3282,4454,4455,4460],{},[3299,4456,4457],{},[459,4458,4459],{},"\u002Ftime",[3299,4461,4462],{},"Mostra a hora atual do sistema",[3282,4464,4465,4470],{},[3299,4466,4467],{},[459,4468,4469],{},"\u002Fnew",[3299,4471,4472],{},"Inicia uma nova sessão de conversa limpa",[3282,4474,4475,4480],{},[3299,4476,4477],{},[459,4478,4479],{},"\u002Fclear",[3299,4481,4482],{},"Limpa o histórico da conversa atual",[3282,4484,4485,4490],{},[3299,4486,4487],{},[459,4488,4489],{},"\u002Fstatus",[3299,4491,4492],{},"Exibe o status operacional da ponte",[3282,4494,4495,4500],{},[3299,4496,4497],{},[459,4498,4499],{},"\u002Fstats",[3299,4501,4502],{},"Mostra a contagem de conversas e linhas de status por ponte (todas as plataformas, incluindo Buzz)",[3282,4504,4505,4509],{},[3299,4506,4507],{},[459,4508,894],{},[3299,4510,4511],{},"Lista descritiva com todos os comandos",[3282,4513,4514,4519],{},[3299,4515,4516],{},[459,4517,4518],{},"@path\u002Fto\u002Ffile",[3299,4520,4521,4522,3173,4524,3136,4527,4530],{},"Funciona exatamente como menções de arquivos na Web: o modelo lê o arquivo relativo ao workspace; ",[459,4523,3863],{},[459,4525,4526],{},"@prefixo",[459,4528,4529],{},"\u002Ffiles \u003Cprefixo>"," retornam arquivos e pastas correspondentes",[3282,4532,4533,4537],{},[3299,4534,4535],{},[459,4536,904],{},[3299,4538,4539,4542,4543,4545,4546,4549],{},[459,4540,4541],{},"[provider model effort]"," — valida contra o catálogo ativo de LLMs; ",[459,4544,904],{}," lista as opções disponíveis e ",[459,4547,4548],{},"\u002Fmodel reset"," restaura os padrões",[3282,4551,4552,4557],{},[3299,4553,4554],{},[459,4555,4556],{},"\u002Feffort",[3299,4558,4559,4562,4563,4566],{},[459,4560,4561],{},"\u003Cid>"," ajusta apenas o esforço de raciocínio do modelo; ",[459,4564,4565],{},"\u002Feffort reset"," restaura o valor padrão",[445,4568,4570],{"id":4569},"resumo-das-medidas-de-segurança","Resumo das medidas de segurança",[802,4572,4573,4586,4596],{},[563,4574,4575,4576,4578,4579,4581,4582,4585],{},"A chave privada ",[1148,4577,4163],{}," reside unicamente em ",[459,4580,3548],{}," (permissões 0600, gravação atômica) — nunca sendo exposta em ",[459,4583,4584],{},"\u002Fgateway\u002Flist"," nem em logs.",[563,4587,4588,4589,3895,4592,4595],{},"Todo evento de entrada passa por ",[1148,4590,4591],{},"validação de assinatura criptográfica",[459,4593,4594],{},"verifyEvent","), desduplicação, filtro de mensagens próprias e controle de menções antes de alcançar o agente.",[563,4597,4598,3895,4601,4604],{},[1148,4599,4600],{},"O registro de workspaces é bloqueado por configuração",[459,4602,4603],{},"allowWorkspace: false"," por padrão), garantindo controle total contra acesso indevido aos arquivos da máquina.",[429,4606,4608],{"id":4607},"conclusão-colaboração-com-agentes-de-ia-descentralizados-no-buzz","Conclusão: Colaboração com agentes de IA descentralizados no Buzz",[434,4610,4611,4612,4614],{},"O maior desafio ao incorporar o Buzz ao ",[459,4613,3501],{}," esteve na conformidade com o protocolo Nostr. Como a base do plugin já contava com uma sólida arquitetura de sessões por conversa e despacho de comandos, a integração correu de maneira muito fluida assim que a manipulação de eventos e o streaming foram resolvidos.",[429,4616,1547],{"id":1546},[802,4618,4619,4627,4635],{},[563,4620,4621,4626],{},[1553,4622,4625],{"href":4623,"rel":4624},"https:\u002F\u002Fgithub.com\u002Fa792883583\u002Fdsh-message-gateway\u002Fblob\u002Fmain\u002Fdocs\u002Farchitecture.md",[1557],"dsh-message-gateway architecture guide"," — guia de arquitetura, receitas de extensão e notas de segurança",[563,4628,4629,4634],{},[1553,4630,4633],{"href":4631,"rel":4632},"https:\u002F\u002Fgithub.com\u002Fnbd-wtf\u002Fnostr-tools",[1557],"nostr-tools"," — biblioteca Nostr utilizada sob o capô",[563,4636,4637,4642],{},[1553,4638,4641],{"href":4639,"rel":4640},"https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fdeer-flow\u002Fblob\u002Fmain\u002Fbackend\u002Fdocs\u002FIM_CHANNEL_CONNECTIONS.md",[1557],"deer-flow IM channel connections"," — referências para arquiteturas de conexão em canais de mensageria",[1086,4644,4645],{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":424,"searchDepth":543,"depth":603,"links":4647},[4648,4649,4653,4660,4661],{"id":3526,"depth":543,"text":3527},{"id":3638,"depth":543,"text":3639,"children":4650},[4651,4652],{"id":3915,"depth":603,"text":3916},{"id":3942,"depth":603,"text":3943},{"id":4048,"depth":543,"text":4049,"children":4654},[4655,4656,4658,4659],{"id":4169,"depth":603,"text":4170},{"id":4319,"depth":603,"text":4657},"Habilitando o acesso a pastas locais com \u002Fworkspace",{"id":4414,"depth":603,"text":4415},{"id":4569,"depth":603,"text":4570},{"id":4607,"depth":543,"text":4608},{"id":1546,"depth":543,"text":1547},[1101,4663,4242,4664],"collaboration","deepseek-harness","2026-09-30","Integre o DeepSeek Harness ao Block Buzz com uma ponte Nostr. Configure auth NIP-42, streaming de mensagens in-place e espaços de trabalho de agentes de IA.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002FPT-Bringing-Buzz-to-DeepSeek-Harness.webp","Um cartão tecnológico premium de 16:9 com detalhes em índigo profundo e âmbar ilustrando como conectar o DeepSeek Harness ao Block Buzz com uma ponte Nostr, apresentando um painel glassmorphic limpo e tipografia centrada.",{"schemaOrg":4670,"robots":1122,"sitemap":4692},[4671,4672],{"@type":1595,"headline":3483,"description":4666,"image":4667},{"@type":1110,"name":3483,"description":4666,"image":4667,"step":4673},[4674,4677,4680,4683,4686,4689],{"@type":1113,"name":4675,"text":4676},"Fase 1: Instalar o plugin de gateway","Instale o plugin dsh-message-gateway e inicie o serviço dsh web.",{"@type":1113,"name":4678,"text":4679},"Fase 2: Acessar Message platforms","Abra a interface Web do DSH e navegue até as configurações de Message platforms.",{"@type":1113,"name":4681,"text":4682},"Fase 3: Configurar a ponte Buzz","Gere um par de chaves Nostr, insira a URL do relay e os canais.",{"@type":1113,"name":4684,"text":4685},"Fase 4: Registrar o agente no relay","Adicione o assistente DSH ao relay Nostr do Buzz usando buzz-admin.",{"@type":1113,"name":4687,"text":4688},"Fase 5: Adicionar o agente ao canal","Vincule a chave HEX do agente aos canais usando buzz-cli.",{"@type":1113,"name":4690,"text":4691},"Fase 6: Habilitar acesso a workspaces","Configure allowWorkspace em cordis.patch.yml para permitir comandos de pastas locais.",{"lastmod":4665},{"title":4694,"description":4666,"ogTitle":3483,"ogDescription":4666,"twitterTitle":3483,"twitterDescription":4666},"Plugin Buzz para DeepSeek Harness: Criar Ponte Nostr","pt\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",[3644,4116,4697,4698,3501],"Nostr","Agentes IA","c3DZPaQeg7cLpNEOnZ4JMkgdCZ3xrLJOL0NosdV2XnI",1792489983861]