[{"data":1,"prerenderedAt":4003},["ShallowReactive",2],{"published-article-paths":3,"search-navigation":348,"\u002Fpt\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac":421,"\u002Fpt\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac-surround":1022},[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":999,"date":1002,"description":1003,"extension":1004,"image":1005,"imageAlt":1006,"isPublished":1007,"meta":1008,"minRead":527,"navigation":1007,"path":237,"seo":1014,"stem":1015,"tags":1016,"updatedAt":1020,"__hash__":1021},"article\u002Fpt\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac.md","Alternar entre múltiplos perfis do Cloudflare WARP no macOS","",{"type":426,"value":427,"toc":992},"minimark",[428,433,437,445,449,456,459,462,466,469,477,497,827,947,951,954,958,988],[429,430,432],"h2",{"id":431},"o-que-é-o-cloudflare-warp","O que é o Cloudflare WARP?",[434,435,436],"p",{},"O Cloudflare WARP é um aplicativo de cliente que direciona o tráfego do dispositivo especificado através da rede global da Cloudflare, em vez de enviá-lo diretamente para a internet pública.",[434,438,439,440,444],{},"Ele cria um túnel criptografado baseado no protocolo ",[441,442,443],"strong",{},"WireGuard",", protegendo o tráfego do dispositivo até o data center da Cloudflare mais próximo. Políticas podem ser criadas em seu painel da Cloudflare para filtrar, registrar, inspecionar ou rotear esse tráfego de entrada.",[429,446,448],{"id":447},"por-que-precisamos-do-cloudflare-warp","Por que precisamos do Cloudflare WARP?",[434,450,451,452,455],{},"Para expor com segurança recursos internos—como serviços web privados ou aplicativos SaaS—a funcionários, contratados e outras partes interessadas, o cliente Cloudflare WARP atua como ponto de aplicação no lado do cliente para o ",[441,453,454],{},"Acesso à Rede de Confiança Zero (ZTNA)",".",[434,457,458],{},"O cliente Cloudflare WARP é instalado no laptop ou celular do usuário. Ele exige que os usuários se autentiquem e cumpram verificações específicas de integridade de segurança (como vir de uma faixa de IPs aprovada, usar um domínio de e-mail registrado ou executar um firewall ativo) antes de conceder acesso.",[434,460,461],{},"Ao tunelar o tráfego do dispositivo diretamente para a Cloudflare, a identidade do usuário, o dispositivo e as políticas são verificados antes que as solicitações cheguem aos recursos internos. Como resultado, os recursos internos nunca ficam expostos à internet pública, e cada solicitação é totalmente registrada e auditada.",[429,463,465],{"id":464},"suporte-a-múltiplos-perfis-do-warp-em-um-único-dispositivo","Suporte a múltiplos perfis do WARP em um único dispositivo",[434,467,468],{},"Quando os usuários precisam alternar entre contas pessoais e corporativas da Cloudflare, ou quando os administradores de sistemas gerenciam múltiplos locatários (tenants), oferecer suporte a múltiplos perfis do WARP em um único dispositivo se torna crucial.",[434,470,471,472,476],{},"Para conseguir isso no macOS, podemos usar um arquivo de perfil MDM ",[473,474,475],"code",{},".mobileconfig"," para definir e registrar os diferentes ambientes do WARP.",[478,479,480,494],"ul",{},[481,482,483,493],"li",{},[484,485,489,490,492],"a",{"href":486,"rel":487},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fstatic\u002Fmdm\u002Fmultiple-orgs\u002FCloudflareWARP.mobileconfig",[488],"nofollow","Download a sample ",[473,491,475],{}," file"," diretamente da Cloudflare.",[481,495,496],{},"Abaixo está um exemplo de como essa configuração se parece:",[498,499,503],"pre",{"className":500,"code":501,"language":502,"meta":424,"style":424},"language-xml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003C!DOCTYPE plist PUBLIC \"-\u002F\u002FApple\u002F\u002FDTD PLIST 1.0\u002F\u002FEN\" \"http:\u002F\u002Fwww.apple.com\u002FDTDs\u002FPropertyList-1.0.dtd\">\n\u003Cplist version=\"1.0\">\n\u003Cdict>\n  \u003Ckey>PayloadContent\u003C\u002Fkey>\n  \u003Carray>\n    \u003Cdict>\n      \u003Ckey>PayloadDisplayName\u003C\u002Fkey>\n      \u003Cstring>Warp Configuration\u003C\u002Fstring>\n      \u003Ckey>PayloadIdentifier\u003C\u002Fkey>\n      \u003Cstring>com.cloudflare.warp.CB8B22D4-50E1-48E8-8874-A7594627013A\u003C\u002Fstring>\n      \u003Ckey>PayloadOrganization\u003C\u002Fkey>\n      \u003Cstring>Cloudflare Ltd.\u003C\u002Fstring>\n      \u003Ckey>PayloadType\u003C\u002Fkey>\n      \u003Cstring>com.cloudflare.warp\u003C\u002Fstring>\n      \u003Ckey>PayloadUUID\u003C\u002Fkey>\n      \u003Cstring>CB8B22D4-50E1-48E8-8874-A7594627013A\u003C\u002Fstring>\n      \u003Ckey>PayloadVersion\u003C\u002Fkey>\n      \u003Cinteger>1\u003C\u002Finteger>\n      \u003Ckey>configs\u003C\u002Fkey>\n      \u003Carray>\n        \u003Cdict>\n          \u003Ckey>organization\u003C\u002Fkey>\n          \u003Cstring>your-team-name-1\u003C\u002Fstring>\n          \u003Ckey>display_name\u003C\u002Fkey>\n          \u003Cstring>Team 1\u003C\u002Fstring>\n        \u003C\u002Fdict>\n        \u003Cdict>\n          \u003Ckey>organization\u003C\u002Fkey>\n          \u003Cstring>your-team-name-2\u003C\u002Fstring>\n          \u003Ckey>display_name\u003C\u002Fkey>\n          \u003Cstring>Team 2\u003C\u002Fstring>\n        \u003C\u002Fdict>\n      \u003C\u002Farray>\n    \u003C\u002Fdict>\n  \u003C\u002Farray>\n  \u003Ckey>PayloadDisplayName\u003C\u002Fkey>\n  \u003Cstring>Cloudflare WARP\u003C\u002Fstring>\n  \u003Ckey>PayloadIdentifier\u003C\u002Fkey>\n  \u003Cstring>cloudflare_warp\u003C\u002Fstring>\n  \u003Ckey>PayloadOrganization\u003C\u002Fkey>\n  \u003Cstring>Cloudflare, Ltd.\u003C\u002Fstring>\n  \u003Ckey>PayloadRemovalDisallowed\u003C\u002Fkey>\n  \u003Cfalse\u002F>\n  \u003Ckey>PayloadScope\u003C\u002Fkey>\n  \u003Cstring>System\u003C\u002Fstring>\n  \u003Ckey>PayloadType\u003C\u002Fkey>\n  \u003Cstring>Configuration\u003C\u002Fstring>\n  \u003Ckey>PayloadUUID\u003C\u002Fkey>\n  \u003Cstring>2B7763B8-64F6-41EB-AA5E-7761651B8131\u003C\u002Fstring>\n  \u003Ckey>PayloadVersion\u003C\u002Fkey>\n  \u003Cinteger>1\u003C\u002Finteger>\n\u003C\u002Fdict>\n\u003C\u002Fplist>\n","xml",[473,504,505,513,519,525,531,537,543,549,555,561,567,573,579,585,591,597,603,609,615,621,627,633,639,645,651,657,663,669,674,679,685,690,696,701,707,713,719,725,731,737,743,749,755,761,767,773,779,785,791,797,803,809,815,821],{"__ignoreMap":424},[506,507,510],"span",{"class":508,"line":509},"line",1,[506,511,512],{},"\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",[506,514,516],{"class":508,"line":515},2,[506,517,518],{},"\u003C!DOCTYPE plist PUBLIC \"-\u002F\u002FApple\u002F\u002FDTD PLIST 1.0\u002F\u002FEN\" \"http:\u002F\u002Fwww.apple.com\u002FDTDs\u002FPropertyList-1.0.dtd\">\n",[506,520,522],{"class":508,"line":521},3,[506,523,524],{},"\u003Cplist version=\"1.0\">\n",[506,526,528],{"class":508,"line":527},4,[506,529,530],{},"\u003Cdict>\n",[506,532,534],{"class":508,"line":533},5,[506,535,536],{},"  \u003Ckey>PayloadContent\u003C\u002Fkey>\n",[506,538,540],{"class":508,"line":539},6,[506,541,542],{},"  \u003Carray>\n",[506,544,546],{"class":508,"line":545},7,[506,547,548],{},"    \u003Cdict>\n",[506,550,552],{"class":508,"line":551},8,[506,553,554],{},"      \u003Ckey>PayloadDisplayName\u003C\u002Fkey>\n",[506,556,558],{"class":508,"line":557},9,[506,559,560],{},"      \u003Cstring>Warp Configuration\u003C\u002Fstring>\n",[506,562,564],{"class":508,"line":563},10,[506,565,566],{},"      \u003Ckey>PayloadIdentifier\u003C\u002Fkey>\n",[506,568,570],{"class":508,"line":569},11,[506,571,572],{},"      \u003Cstring>com.cloudflare.warp.CB8B22D4-50E1-48E8-8874-A7594627013A\u003C\u002Fstring>\n",[506,574,576],{"class":508,"line":575},12,[506,577,578],{},"      \u003Ckey>PayloadOrganization\u003C\u002Fkey>\n",[506,580,582],{"class":508,"line":581},13,[506,583,584],{},"      \u003Cstring>Cloudflare Ltd.\u003C\u002Fstring>\n",[506,586,588],{"class":508,"line":587},14,[506,589,590],{},"      \u003Ckey>PayloadType\u003C\u002Fkey>\n",[506,592,594],{"class":508,"line":593},15,[506,595,596],{},"      \u003Cstring>com.cloudflare.warp\u003C\u002Fstring>\n",[506,598,600],{"class":508,"line":599},16,[506,601,602],{},"      \u003Ckey>PayloadUUID\u003C\u002Fkey>\n",[506,604,606],{"class":508,"line":605},17,[506,607,608],{},"      \u003Cstring>CB8B22D4-50E1-48E8-8874-A7594627013A\u003C\u002Fstring>\n",[506,610,612],{"class":508,"line":611},18,[506,613,614],{},"      \u003Ckey>PayloadVersion\u003C\u002Fkey>\n",[506,616,618],{"class":508,"line":617},19,[506,619,620],{},"      \u003Cinteger>1\u003C\u002Finteger>\n",[506,622,624],{"class":508,"line":623},20,[506,625,626],{},"      \u003Ckey>configs\u003C\u002Fkey>\n",[506,628,630],{"class":508,"line":629},21,[506,631,632],{},"      \u003Carray>\n",[506,634,636],{"class":508,"line":635},22,[506,637,638],{},"        \u003Cdict>\n",[506,640,642],{"class":508,"line":641},23,[506,643,644],{},"          \u003Ckey>organization\u003C\u002Fkey>\n",[506,646,648],{"class":508,"line":647},24,[506,649,650],{},"          \u003Cstring>your-team-name-1\u003C\u002Fstring>\n",[506,652,654],{"class":508,"line":653},25,[506,655,656],{},"          \u003Ckey>display_name\u003C\u002Fkey>\n",[506,658,660],{"class":508,"line":659},26,[506,661,662],{},"          \u003Cstring>Team 1\u003C\u002Fstring>\n",[506,664,666],{"class":508,"line":665},27,[506,667,668],{},"        \u003C\u002Fdict>\n",[506,670,672],{"class":508,"line":671},28,[506,673,638],{},[506,675,677],{"class":508,"line":676},29,[506,678,644],{},[506,680,682],{"class":508,"line":681},30,[506,683,684],{},"          \u003Cstring>your-team-name-2\u003C\u002Fstring>\n",[506,686,688],{"class":508,"line":687},31,[506,689,656],{},[506,691,693],{"class":508,"line":692},32,[506,694,695],{},"          \u003Cstring>Team 2\u003C\u002Fstring>\n",[506,697,699],{"class":508,"line":698},33,[506,700,668],{},[506,702,704],{"class":508,"line":703},34,[506,705,706],{},"      \u003C\u002Farray>\n",[506,708,710],{"class":508,"line":709},35,[506,711,712],{},"    \u003C\u002Fdict>\n",[506,714,716],{"class":508,"line":715},36,[506,717,718],{},"  \u003C\u002Farray>\n",[506,720,722],{"class":508,"line":721},37,[506,723,724],{},"  \u003Ckey>PayloadDisplayName\u003C\u002Fkey>\n",[506,726,728],{"class":508,"line":727},38,[506,729,730],{},"  \u003Cstring>Cloudflare WARP\u003C\u002Fstring>\n",[506,732,734],{"class":508,"line":733},39,[506,735,736],{},"  \u003Ckey>PayloadIdentifier\u003C\u002Fkey>\n",[506,738,740],{"class":508,"line":739},40,[506,741,742],{},"  \u003Cstring>cloudflare_warp\u003C\u002Fstring>\n",[506,744,746],{"class":508,"line":745},41,[506,747,748],{},"  \u003Ckey>PayloadOrganization\u003C\u002Fkey>\n",[506,750,752],{"class":508,"line":751},42,[506,753,754],{},"  \u003Cstring>Cloudflare, Ltd.\u003C\u002Fstring>\n",[506,756,758],{"class":508,"line":757},43,[506,759,760],{},"  \u003Ckey>PayloadRemovalDisallowed\u003C\u002Fkey>\n",[506,762,764],{"class":508,"line":763},44,[506,765,766],{},"  \u003Cfalse\u002F>\n",[506,768,770],{"class":508,"line":769},45,[506,771,772],{},"  \u003Ckey>PayloadScope\u003C\u002Fkey>\n",[506,774,776],{"class":508,"line":775},46,[506,777,778],{},"  \u003Cstring>System\u003C\u002Fstring>\n",[506,780,782],{"class":508,"line":781},47,[506,783,784],{},"  \u003Ckey>PayloadType\u003C\u002Fkey>\n",[506,786,788],{"class":508,"line":787},48,[506,789,790],{},"  \u003Cstring>Configuration\u003C\u002Fstring>\n",[506,792,794],{"class":508,"line":793},49,[506,795,796],{},"  \u003Ckey>PayloadUUID\u003C\u002Fkey>\n",[506,798,800],{"class":508,"line":799},50,[506,801,802],{},"  \u003Cstring>2B7763B8-64F6-41EB-AA5E-7761651B8131\u003C\u002Fstring>\n",[506,804,806],{"class":508,"line":805},51,[506,807,808],{},"  \u003Ckey>PayloadVersion\u003C\u002Fkey>\n",[506,810,812],{"class":508,"line":811},52,[506,813,814],{},"  \u003Cinteger>1\u003C\u002Finteger>\n",[506,816,818],{"class":508,"line":817},53,[506,819,820],{},"\u003C\u002Fdict>\n",[506,822,824],{"class":508,"line":823},54,[506,825,826],{},"\u003C\u002Fplist>\n",[478,828,829,840,853,863,869,888,901,921,938],{},[481,830,831,832,835,836,839],{},"Substitua ",[473,833,834],{},"your-team-name-1"," e ",[473,837,838],{},"your-team-name-2"," pelos seus respectivos nomes de equipe do Cloudflare Zero Trust.",[481,841,842,843,846,847,850,851,455],{},"Execute o comando ",[473,844,845],{},"uuidgen"," no seu Terminal para gerar UUIDs exclusivos e use-os para substituir os valores de espaço reservado ",[473,848,849],{},"PayloadUUID"," no arquivo ",[473,852,475],{},[481,854,855,856,859,860,862],{},"Certifique-se de que a string ",[473,857,858],{},"PayloadIdentifier"," também contenha o ",[473,861,849],{}," atualizado para manter o perfil distinto.",[481,864,865,866,868],{},"Salve o arquivo ",[473,867,475],{}," editado.",[481,870,871,872,875,876,879,880,883],{},"Abra as ",[441,873,874],{},"Ajustes do Sistema"," no seu Mac, pesquise por ",[441,877,878],{},"Perfis"," e selecione-o.",[881,882],"br",{},[884,885],"img",{"alt":886,"src":887},"Painel de Perfis nos Ajustes do Sistema do macOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002Fmacos-system-settings-profiles.webp",[481,889,890,891,894,895,897],{},"Clique em ",[441,892,893],{},"Instalar, visualizar ou remover..."," para começar a adicionar o seu novo perfil de configuração.",[881,896],{},[884,898],{"alt":899,"src":900},"Botão para instalar, visualizar ou remover perfis no macOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002Fmacos-profiles-view-remove.webp",[481,902,903,904,907,908,910,911,913,917],{},"Clique no ícone ",[441,905,906],{},"+"," (mais) no canto primeiro esquerdo e selecione o arquivo ",[473,909,475],{}," salvo.",[881,912],{},[884,914],{"alt":915,"src":916},"Botão de mais (+) nos perfis do macOS para adicionar um novo perfil","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002Fmacos-profiles-add-profile.webp",[884,918],{"alt":919,"src":920},"Selecionando o arquivo .mobileconfig no macOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002Fmacos-select-mobileconfig-file.webp",[481,922,923,924,927,928,931,932,934],{},"Selecione ",[441,925,926],{},"Cloudflare WARP"," e clique em ",[441,929,930],{},"Instalar"," para aplicar la configuração.",[881,933],{},[884,935],{"alt":936,"src":937},"Confirmando a instalação do perfil do Cloudflare WARP no macOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002Fmacos-install-cloudflare-warp-profile.webp",[481,939,940,941,943],{},"Reinicie o cliente Cloudflare WARP. Agora você deverá ver o alternador de múltiplos perfis na interface do usuário:",[881,942],{},[884,944],{"alt":945,"src":946},"Cliente Cloudflare WARP com seletor de múltiplos perfis no macOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002Fcloudflare-warp-multi-profile-switcher.webp",[429,948,950],{"id":949},"conclusão","Conclusão",[434,952,953],{},"O cliente Cloudflare WARP atua como um ponto de segurança crítico nos dispositivos dos usuários, tornando o Acesso à Rede de Confiança Zero robusto e altamente prático. Manter os recursos internos isolados da internet pública garante que cada tentativa de conexão seja autenticada, avaliada e auditada com segurança.",[429,955,957],{"id":956},"referências","Referências",[478,959,960,967,974,981],{},[481,961,962],{},[484,963,966],{"href":964,"rel":965},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fteam-and-resources\u002Fdevices\u002Fcloudflare-one-client\u002Fdeployment\u002Fmdm-deployment\u002F#prepare-file-for-mdm-deployment",[488],"Managed Deployment Preparation",[481,968,969],{},[484,970,973],{"href":971,"rel":972},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fteam-and-resources\u002Fdevices\u002Fcloudflare-one-client\u002Fdeployment\u002Fmdm-deployment\u002Fswitch-organizations\u002F",[488],"Switch Between Zero Trust Organizations",[481,975,976],{},[484,977,980],{"href":978,"rel":979},"https:\u002F\u002Fblog.cloudflare.com\u002Fintroducing-warp-connector-paving-the-path-to-any-to-any-connectivity-2\u002F",[488],"Introducing WARP Connector: Paving the Path to Any-to-Any Connectivity",[481,982,983],{},[484,984,987],{"href":985,"rel":986},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fteam-and-resources\u002Fdevices\u002Fcloudflare-one-client\u002F",[488],"Cloudflare One Client Documentation",[989,990,991],"style",{},"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":515,"depth":521,"links":993},[994,995,996,997,998],{"id":431,"depth":515,"text":432},{"id":447,"depth":515,"text":448},{"id":464,"depth":515,"text":465},{"id":949,"depth":515,"text":950},{"id":956,"depth":515,"text":957},[1000,1001],"security","cloudflare","2026-07-04","Configure e alterne entre múltiplas organizações do Cloudflare WARP no macOS com um arquivo .mobileconfig. Guia MDM completo para administradores de TI.","md","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002FPT-Switch-Between-Multiple-Cloudflare-WARP-Orgs-on-Mac.webp","Configurar múltiplos perfis do Cloudflare WARP no macOS",true,{"schemaOrg":1009,"robots":1012,"sitemap":1013},[1010],{"@type":1011,"headline":423,"description":1003},"HowTo","index, follow",{"lastmod":1002},{"title":1006,"description":1003,"ogTitle":423,"ogDescription":1003,"twitterTitle":423,"twitterDescription":1003},"pt\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",[1017,926,1018,1019],"macOS","MDM","Zero Trust",null,"EwH2jVxo0k3L6vZD6bfnIxGUBZQQEsBLKPw_paSz3AA",{"surround":1023,"related":2258},[1024,1436],{"id":1025,"title":1026,"author":424,"body":1027,"category":1418,"date":1420,"description":1421,"extension":1004,"image":1422,"imageAlt":1423,"isPublished":1007,"meta":1424,"minRead":533,"navigation":1007,"path":213,"seo":1428,"stem":1429,"tags":1430,"updatedAt":1020,"__hash__":1435},"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":1028,"toc":1408},[1029,1033,1044,1055,1124,1130,1134,1137,1146,1152,1157,1213,1224,1230,1233,1288,1292,1299,1306,1309,1320,1324,1369,1372,1389,1391,1402,1405],[429,1030,1032],{"id":1031},"o-que-é-uma-habilidade-de-agente-de-ia","O que é uma habilidade de agente de IA?",[434,1034,1035,1036,1039,1040,1043],{},"Uma habilidade de agente (agent skill) é um ",[441,1037,1038],{},"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 ",[473,1041,1042],{},"SKILL.md"," e pode agrupar outros arquivos necessários para a tarefa, como documentos de referência, modelos ou scripts executáveis.",[434,1045,1046,1047,1054],{},"Veja a habilidade ",[484,1048,1051],{"href":1049,"rel":1050},"https:\u002F\u002Fgithub.com\u002Fmattpocock\u002Fskills\u002Fblob\u002F733d312884b3878a9a9cff693c5886943753a741\u002Fskills\u002Fproductivity\u002Fgrill-me\u002FSKILL.md",[488],[473,1052,1053],{},"grill-me"," como exemplo:",[498,1056,1060],{"className":1057,"code":1058,"language":1059,"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",[473,1061,1062,1068,1082,1092,1096,1101,1106,1110,1115,1119],{"__ignoreMap":424},[506,1063,1064],{"class":508,"line":509},[506,1065,1067],{"class":1066},"sBMFI","---\n",[506,1069,1070,1074,1078],{"class":508,"line":515},[506,1071,1073],{"class":1072},"swJcz","name",[506,1075,1077],{"class":1076},"sMK4o",":",[506,1079,1081],{"class":1080},"sfazB"," grill-me\n",[506,1083,1084,1087,1089],{"class":508,"line":521},[506,1085,1086],{"class":1072},"description",[506,1088,1077],{"class":1076},[506,1090,1091],{"class":1080}," 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",[506,1093,1094],{"class":508,"line":527},[506,1095,1067],{"class":1066},[506,1097,1098],{"class":508,"line":533},[506,1099,1100],{"emptyLinePlaceholder":1007},"\n",[506,1102,1103],{"class":508,"line":539},[506,1104,1105],{"class":1080},"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",[506,1107,1108],{"class":508,"line":545},[506,1109,1100],{"emptyLinePlaceholder":1007},[506,1111,1112],{"class":508,"line":551},[506,1113,1114],{"class":1080},"Ask the questions one at a time.\n",[506,1116,1117],{"class":508,"line":557},[506,1118,1100],{"emptyLinePlaceholder":1007},[506,1120,1121],{"class":508,"line":563},[506,1122,1123],{"class":1080},"If a question can be answered by exploring the codebase, explore the codebase instead.\n",[434,1125,1126,1127,1129],{},"Um arquivo ",[473,1128,1042],{}," 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,1131,1133],{"id":1132},"como-funcionam-as-habilidades-de-agentes-de-ia-divulgação-progressiva","Como funcionam as habilidades de agentes de IA: divulgação progressiva",[434,1135,1136],{},"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,1138,1139,1140,1145],{},"Vejamos como a habilidade ",[484,1141,1143],{"href":1049,"rel":1142},[488],[473,1144,1053],{}," é utilizada na prática.",[434,1147,1148],{},[884,1149],{"alt":1150,"src":1151},"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",[1153,1154,1156],"h3",{"id":1155},"passo-a-passo","Passo a passo",[1158,1159,1160,1166,1172,1178,1184,1197,1207],"ol",{},[481,1161,1162,1165],{},[441,1163,1164],{},"Solicitação (Request)"," — O usuário pede algo ao agente (\"sabatine-me sobre o design do meu fluxo de trabalho\").",[481,1167,1168,1171],{},[441,1169,1170],{},"Prompt de seleção"," — A solicitação do usuário, juntamente com as descrições de todas as habilidades disponíveis, é enviada ao LLM.",[481,1173,1174,1177],{},[441,1175,1176],{},"Seleção do LLM"," — O LLM compara a solicitação com cada descrição e retorna a(s) habilidade(s) correspondente(s).",[481,1179,1180,1183],{},[441,1181,1182],{},"Confirmação"," — O agente exibe a habilidade proposta ao usuário, que confirma (ou rejeita\u002Fajusta) a escolha.",[481,1185,1186,1189,1190,1194,1195,455],{},[441,1187,1188],{},"Instruções carregadas"," — O agente busca as instruções ",[1191,1192,1193],"em",{},"completas"," para a habilidade confirmada: o corpo do arquivo ",[473,1196,1042],{},[481,1198,1199,1202,1203,1206],{},[441,1200,1201],{},"Prompt de execução"," — A solicitação do usuário ",[441,1204,1205],{},"somada às instruções da habilidade selecionada"," é enviada ao LLM.",[481,1208,1209,1212],{},[441,1210,1211],{},"Resposta"," — O LLM gera a saída, que é a primeira pergunta da sabatina.",[434,1214,1215,1216,1223],{},"Agora vamos usar o ",[484,1217,1220],{"href":1218,"rel":1219},"https:\u002F\u002Fgithub.com\u002Fcoleam00\u002Fexcalidraw-diagram-skill",[488],[473,1221,1222],{},"excalidraw-diagram-skill"," para ilustrar como funciona uma habilidade vinculada a um documento de referência:",[434,1225,1226],{},[884,1227],{"alt":1228,"src":1229},"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",[1153,1231,1156],{"id":1232},"passo-a-passo-1",[1158,1234,1235,1240,1245,1254,1259,1272,1279],{},[481,1236,1237,1239],{},[441,1238,1164],{}," — O usuário pede algo ao agente (\"desenhe o fluxo de trabalho do processo de deploy\").",[481,1241,1242,1244],{},[441,1243,1170],{}," — A solicitação do usuário, além das descrições de todas as habilidades disponíveis, é enviada ao LLM.",[481,1246,1247,1249,1250,1253],{},[441,1248,1176],{}," — 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 ",[473,1251,1252],{},"excalidraw-diagram",", sendo selecionado.",[481,1255,1256,1258],{},[441,1257,1182],{}," — O agente apresenta a habilidade proposta ao usuário, que confirma (ou rejeita\u002Fajusta) a escolha.",[481,1260,1261,1189,1263,1265,1266,1268,1269,1271],{},[441,1262,1188],{},[1191,1264,1193],{}," da habilidade: o corpo do ",[473,1267,1042],{}," e quaisquer arquivos referenciados (para o ",[473,1270,1252],{},", isso inclui a paleta de cores, o esquema JSON e os modelos de elementos).",[481,1273,1274,1202,1276,1278],{},[441,1275,1201],{},[441,1277,1205],{}," vai para o LLM. O modelo agora tem a metodologia detalhada em mãos.",[481,1280,1281,1283,1284,1287],{},[441,1282,1211],{}," — O LLM gera a saída (um arquivo JSON ",[473,1285,1286],{},".excalidraw","), que o agente entrega de volta ao usuário.",[429,1289,1291],{"id":1290},"habilidades-de-agentes-de-ia-vs-ferramentas-e-mcp","Habilidades de agentes de IA vs. Ferramentas e MCP",[434,1293,1294,1295,1298],{},"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 (",[1191,1296,1297],{},"know-how",") do agente para a execução de uma tarefa específica.",[434,1300,1301,1302,1305],{},"Um MCP como o ",[484,1303,1304],{"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,1307,1308],{},"Alguns cenários ideais para o uso de habilidades incluem:",[478,1310,1311,1314,1317],{},[481,1312,1313],{},"Fluxos de trabalho de várias etapas",[481,1315,1316],{},"Processamento de documentos, como extração de dados de PDFs",[481,1318,1319],{},"Padronização de geração de código",[429,1321,1323],{"id":1322},"como-criar-habilidades-de-agentes-de-ia","Como criar habilidades de agentes de IA",[1158,1325,1326,1336,1350,1359],{},[481,1327,1328,1331,1332,1335],{},[441,1329,1330],{},"Crie uma pasta"," com o nome da habilidade (ex: ",[473,1333,1334],{},"netsuite-operation-report\u002F",").",[481,1337,1338,1343,1344,1346,1347,1349],{},[441,1339,1340,1341],{},"Escreva o arquivo ",[473,1342,1042],{}," contendo um ",[473,1345,1073],{},", uma ",[473,1348,1086],{}," precisa e um corpo de instruções conciso (com menos de 200 palavras).",[481,1351,1352,1355,1356,1358],{},[441,1353,1354],{},"Adicione os recursos"," que a tarefa exige — documentos de referência, templates, scripts. Mantenha o arquivo ",[473,1357,1042],{}," enxuto e aponte os links para os detalhes.",[481,1360,1361,1364,1365,1368],{},[441,1362,1363],{},"Instale a habilidade"," em um diretório onde os agentes possam descobri-la. Consulte ",[484,1366,1367],{"href":359},"Centralização de habilidades para agentes"," para entender como gerenciar habilidades em múltiplos agentes.",[434,1370,1371],{},"Algumas dicas para escrever excelentes habilidades:",[478,1373,1374,1377,1383,1386],{},[481,1375,1376],{},"Redija a descrição pensando no acionamento (trigger) do sistema, não na leitura humana.",[481,1378,1379,1380,1382],{},"Mantenha o ",[473,1381,1042],{}," curto (menos de 200 palavras). Coloque o caso geral no corpo do texto e delegue as exceções para documentos de referência.",[481,1384,1385],{},"Use scripts para tarefas determinísticas. Não peça para o LLM fazer contas e aritmética simples.",[481,1387,1388],{},"Controle as versões. Adicione-o ao Git.",[429,1390,950],{"id":949},[434,1392,1393,1394,1397,1398,1401],{},"Diferente das ferramentas e do MCP, que especificam ",[1191,1395,1396],{},"ao que se conectar",", as habilidades de agentes empacotam ",[1191,1399,1400],{},"como realizar o trabalho",". Elas são complementos fundamentais, não substitutos.",[434,1403,1404],{},"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.",[989,1406,1407],{},"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":515,"depth":521,"links":1409},[1410,1411,1415,1416,1417],{"id":1031,"depth":515,"text":1032},{"id":1132,"depth":515,"text":1133,"children":1412},[1413,1414],{"id":1155,"depth":521,"text":1156},{"id":1232,"depth":521,"text":1156},{"id":1290,"depth":515,"text":1291},{"id":1322,"depth":515,"text":1323},{"id":949,"depth":515,"text":950},[1419],"ai-agents","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":1425,"robots":1012,"sitemap":1427},[1426],{"@type":1011,"headline":1026,"description":1421},{"lastmod":1420},{"title":1423,"description":1421,"ogTitle":1026,"ogDescription":1421,"twitterTitle":1026,"twitterDescription":1421},"pt\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",[1431,1432,1433,1434],"Agentes de IA","Habilidades de Agentes","Fluxos de Trabalho Reutilizáveis","Tutorial de IA","YpLi8LsrzMKZ0wdwwn0TjwuJEtgCfN7WEXwrLXFU6qA",{"id":1437,"title":1438,"author":1020,"body":1439,"category":2239,"date":2240,"description":2241,"extension":1004,"image":2242,"imageAlt":2243,"isPublished":1007,"meta":2244,"minRead":557,"navigation":1007,"path":245,"seo":2250,"stem":2251,"tags":2252,"updatedAt":1020,"__hash__":2257},"article\u002Fpt\u002Farticle\u002Fuse-cloudflare-as-ai-memory.md","Criar sistema persistente de memória de IA na Cloudflare",{"type":426,"value":1440,"toc":2221},[1441,1445,1448,1451,1455,1458,1472,1476,1483,1497,1500,1503,1547,1551,1632,1636,1662,1779,1790,1794,1799,1844,1868,1872,1877,1950,1955,1959,1993,2001,2040,2044,2076,2080,2088,2093,2123,2127,2170,2172,2175,2178,2181,2184,2218],[429,1442,1444],{"id":1443},"a-importância-da-memória-persistente-de-ia-para-os-agentes","A importância da memória persistente de IA para os agentes",[434,1446,1447],{},"À medida que os assistentes de IA se tornam integrados no nosso quotidiano, deparamo-nos frequentemente com o problema do contexto em branco. As decisões tomadas na semana passada são esquecidas, exigindo que introduzamos repetidamente os mesmos detalhes de stacks tecnológicas e redefinamos as preferências do utilizador em cada nova sessão.",[434,1449,1450],{},"Em vez de começar do zero a cada interação, precisamos de construir um sistema de memória que evolua, compreenda de forma contínua as escolhas do utilizador e elimine a necessidade de repetir o contexto constantemente.",[429,1452,1454],{"id":1453},"sistemas-de-memória-de-ia-auto-hospedados-vs-integrados","Sistemas de memória de IA auto-hospedados vs. integrados",[434,1456,1457],{},"Muitos agentes de IA vêm equipados com memória integrada, mas raramente limitamos o nosso fluxo de trabalho a um único assistente. Usamos o Claude para desenhar e arquitetar um projeto; o Kimi para programar; e o ChatGPT para pesquisa geral. O contexto não é partilhado entre estes diferentes agentes; permanece isolado em cada ferramenta de forma estanque.",[434,1459,1460,1461,1466,1467,1471],{},"Do ponto de vista da engenharia de software, evitamos caixas negras. Precisamos de um sistema de memória de IA observável, auditável e totalmente sob o nosso controlo direto. O projeto de código aberto ",[484,1462,1465],{"href":1463,"rel":1464},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fsecond-brain-cloudflare\u002Ftree\u002Fmain",[488],"Second Brain",", desenvolvido como um fork de ",[484,1468,1469],{"href":1469,"rel":1470},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare",[488],", disponibiliza um sistema de memória persistente e auto-hospedado com suporte ao Model Context Protocol (MCP). Qualquer agente de IA compatível, como o Claude, ChatGPT ou Kimi Code, pode assim partilhar do mesmo contexto de memória unificado.",[429,1473,1475],{"id":1474},"como-criar-um-second-brain-de-memória-de-ia-na-cloudflare","Como criar um Second Brain de memória de IA na Cloudflare",[434,1477,1478,1479,1482],{},"O sistema de memória Second Brain é implementado sobre o ",[441,1480,1481],{},"Cloudflare Workers",", proporcionando uma infraestrutura de servidores serverless distribuída globalmente com baixíssima latência. Isto permite que as operações de pesquisa de memória e armazenamento ocorram de forma quase instantânea na lógica de raciocínio da IA.",[434,1484,1485,1486,1489,1490,1493,1494,1496],{},"O modelo de embeddings do ",[441,1487,1488],{},"Workers AI"," é usado para gerar os vetores. Estes embeddings são guardados no ",[441,1491,1492],{},"Cloudflare Vectorize",", que é uma base de dados vetorial altamente otimizada e distribuída. O ",[441,1495,1492],{}," realiza buscas de similaridade por cosseno para identificar memórias com relevância sémântica.",[434,1498,1499],{},"O Second Brain conta também com mecanismos inteligentes de desduplicação e fusão. Textos com menos de 85% de similaridade sémântica são armazenados diretamente; caso contrário, são bloqueados ou marcados como potenciais duplicados. Textos longos que excedam 1.600 caracteres são fragmentados respeitando os limites de frases ou quebras de linha, mantendo uma sobreposição (overlap) de 200 caracteres para preservar a continuidade do assunto. Cada fragmento é então vetorizado para correspondências de alta precisão.",[434,1501,1502],{},"As seguintes ferramentas são expostas como interfaces MCP para utilização direta pelos agentes de IA:",[478,1504,1505,1511,1517,1523,1529,1535,1541],{},[481,1506,1507,1510],{},[473,1508,1509],{},"remember",": Guardar ideias, decisões, preferências e contexto geral do projeto.",[481,1512,1513,1516],{},[473,1514,1515],{},"append",": Acrescentar novas informações ou atualizações a uma memória existente.",[481,1518,1519,1522],{},[473,1520,1521],{},"update",": Substituir uma memória existente por completo.",[481,1524,1525,1528],{},[473,1526,1527],{},"recall",": Localizar memórias com base no seu significado sémântico e não em palavras-chave exatas.",[481,1530,1531,1534],{},[473,1532,1533],{},"list_recent",": Listar as memórias gravadas recentemente.",[481,1536,1537,1540],{},[473,1538,1539],{},"forget",": Apagar de forma definitiva um registo de memória.",[481,1542,1543,1546],{},[473,1544,1545],{},"link\u002Fconnections",": Conectar memórias relacionadas entre si (funcionalidade de grafo v2).",[1153,1548,1550],{"id":1549},"configuração-do-second-brain-na-cloudflare","Configuração do Second Brain na Cloudflare",[1158,1552,1553,1570,1577,1584,1591,1598,1609,1615,1618,1625],{},[481,1554,890,1555,1558,1559,1564,1565,1569],{},[473,1556,1557],{},"Deploy to Cloudflare"," na página do ",[484,1560,1563],{"href":1561,"rel":1562},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fsecond-brain-cloudflare",[488],"Github repo",". [[",[884,1566],{"alt":1567,"src":1568},"Página do GitHub com o botão Deploy to Cloudflare destacado","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fdeploy-to-cloudflare-button.webp","]]",[481,1571,1572,1573],{},"Preencha o formulário do Cloudflare Worker apresentado.\n",[884,1574],{"alt":1575,"src":1576},"Formulário de configuração de implantação do Cloudflare Workers","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-deployment-form.webp",[481,1578,1579,1580],{},"Introduza '384' no campo Dimensions; selecione 'cosine' para Metric; e clique no botão Deploy.\n",[884,1581],{"alt":1582,"src":1583},"Tela de configuração de criação do banco de dados Cloudflare Vectorize","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-vectorize-configuration.webp",[481,1585,1586,1587],{},"O ecrã seguinte apresenta a visão geral do seu Second Brain no Cloudflare Worker:\n",[884,1588],{"alt":1589,"src":1590},"Painel de controle geral do worker do Second Brain implantado","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-second-brain-overview.webp",[481,1592,1593,1594],{},"Vá a 'Settings' (Definições) e clique no ícone de edição da variável 'AUTH_TOKEN' para criar uma chave de acesso segura:\n",[884,1595],{"alt":1596,"src":1597},"Configurações de variáveis do Cloudflare Worker destacando AUTH_TOKEN","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-auth-token-settings.webp",[481,1599,1600,1601,1605],{},"Clique no link 'Rotate' para poder definir o novo valor: ",[884,1602],{"alt":1603,"src":1604},"Tela de modificação e rotação da variável AUTH_TOKEN","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-auth-token-rotate.webp",[884,1606],{"alt":1607,"src":1608},"Inserindo a string aleatória gerada no campo de valor AUTH_TOKEN","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-auth-token-value-input.webp",[481,1610,842,1611,1614],{},[473,1612,1613],{},"openssl rand -base64 32"," no seu terminal macOS para gerar um valor aleatório seguro e cole-o no campo 'Value'.",[481,1616,1617],{},"Clique no botão 'Deploy' para guardar o novo valor da variável 'AUTH_TOKEN'.",[481,1619,1620,1621],{},"Abra o endereço URL do seu worker do Second Brain no seu navegador de internet.\n",[884,1622],{"alt":1623,"src":1624},"Tela de login da interface web do Second Brain com entrada de Bearer Token","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fsecond-brain-web-ui-login.webp",[481,1626,1627,1628,1631],{},"Introduza o 'AUTH_TOKEN' gerado no campo de input ",[473,1629,1630],{},"Bearer token"," e clique no botão 'Connect' para aceder ao painel de controlo (Web UI).",[1153,1633,1635],{"id":1634},"integração-do-claude-desktop-via-mcp","Integração do Claude Desktop via MCP",[1158,1637,1638,1645,1652],{},[481,1639,1640,1641],{},"Clique em 'Customize' nas definições do Claude Desktop.\n",[884,1642],{"alt":1643,"src":1644},"Interface do Claude Desktop apontando para o botão Customize","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-customize-button.webp",[481,1646,1647,1648],{},"Selecione 'Developer' para abrir e editar manualmente o ficheiro de configuração dos servidores MCP:\n",[884,1649],{"alt":1650,"src":1651},"Menu de configurações do desenvolvedor do Claude Desktop para aceder à configuração MCP","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-developer-menu.webp",[481,1653,1654,1655,1658,1659,1077],{},"Adicione o seguinte bloco de código à secção ",[473,1656,1657],{},"mcpServers"," no ficheiro ",[473,1660,1661],{},"claude_desktop_config.json",[498,1663,1667],{"className":1664,"code":1665,"language":1666,"meta":424,"style":424},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","    \"second-brain\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"mcp-remote\",\n        \"https:\u002F\u002F\u003Cyour-worker-url>\u002Fmcp\",\n        \"--header\",\n        \"Authorization: Bearer \u003Cyour-token>\"\n      ]\n    }\n","json",[473,1668,1669,1687,1711,1725,1737,1748,1759,1769,1774],{"__ignoreMap":424},[506,1670,1671,1674,1677,1680,1684],{"class":508,"line":509},[506,1672,1673],{"class":1076},"    \"",[506,1675,1676],{"class":1080},"second-brain",[506,1678,1679],{"class":1076},"\"",[506,1681,1683],{"class":1682},"sTEyZ",": ",[506,1685,1686],{"class":1076},"{\n",[506,1688,1689,1692,1696,1698,1700,1703,1706,1708],{"class":508,"line":515},[506,1690,1691],{"class":1076},"      \"",[506,1693,1695],{"class":1694},"spNyl","command",[506,1697,1679],{"class":1076},[506,1699,1077],{"class":1076},[506,1701,1702],{"class":1076}," \"",[506,1704,1705],{"class":1080},"npx",[506,1707,1679],{"class":1076},[506,1709,1710],{"class":1076},",\n",[506,1712,1713,1715,1718,1720,1722],{"class":508,"line":521},[506,1714,1691],{"class":1076},[506,1716,1717],{"class":1694},"args",[506,1719,1679],{"class":1076},[506,1721,1077],{"class":1076},[506,1723,1724],{"class":1076}," [\n",[506,1726,1727,1730,1733,1735],{"class":508,"line":527},[506,1728,1729],{"class":1076},"        \"",[506,1731,1732],{"class":1080},"mcp-remote",[506,1734,1679],{"class":1076},[506,1736,1710],{"class":1076},[506,1738,1739,1741,1744,1746],{"class":508,"line":533},[506,1740,1729],{"class":1076},[506,1742,1743],{"class":1080},"https:\u002F\u002F\u003Cyour-worker-url>\u002Fmcp",[506,1745,1679],{"class":1076},[506,1747,1710],{"class":1076},[506,1749,1750,1752,1755,1757],{"class":508,"line":539},[506,1751,1729],{"class":1076},[506,1753,1754],{"class":1080},"--header",[506,1756,1679],{"class":1076},[506,1758,1710],{"class":1076},[506,1760,1761,1763,1766],{"class":508,"line":545},[506,1762,1729],{"class":1076},[506,1764,1765],{"class":1080},"Authorization: Bearer \u003Cyour-token>",[506,1767,1768],{"class":1076},"\"\n",[506,1770,1771],{"class":508,"line":551},[506,1772,1773],{"class":1076},"      ]\n",[506,1775,1776],{"class":508,"line":557},[506,1777,1778],{"class":1076},"    }\n",[434,1780,1781,1785,1786],{},[884,1782],{"alt":1783,"src":1784},"JSON de configuração do Claude Desktop MCP contendo o servidor do Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-mcp-config-json.webp","\n4. Reinicie a aplicação Claude Desktop e confirme a lista de 'Local MCP servers'. O estado deve indicar 'running' (em execução).\n",[884,1787],{"alt":1788,"src":1789},"Claude Desktop exibindo o status ativo para o servidor MCP do Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-mcp-status-running.webp",[1153,1791,1793],{"id":1792},"integração-do-claude-code-via-mcp","Integração do Claude Code via MCP",[478,1795,1796],{},[481,1797,1798],{},"Execute o seguinte comando no terminal para adicionar o novo servidor MCP:",[498,1800,1804],{"className":1801,"code":1802,"language":1803,"meta":424,"style":424},"language-shell shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","claude mcp add --transport http second-brain https:\u002F\u002F\u003Cyour-worker-url>\u002Fmcp\n","shell",[473,1805,1806],{"__ignoreMap":424},[506,1807,1808,1811,1814,1817,1820,1823,1826,1829,1832,1835,1838,1841],{"class":508,"line":509},[506,1809,1810],{"class":1066},"claude",[506,1812,1813],{"class":1080}," mcp",[506,1815,1816],{"class":1080}," add",[506,1818,1819],{"class":1080}," --transport",[506,1821,1822],{"class":1080}," http",[506,1824,1825],{"class":1080}," second-brain",[506,1827,1828],{"class":1080}," https:\u002F\u002F",[506,1830,1831],{"class":1076},"\u003C",[506,1833,1834],{"class":1080},"your-worker-ur",[506,1836,1837],{"class":1682},"l",[506,1839,1840],{"class":1076},">",[506,1842,1843],{"class":1080},"\u002Fmcp\n",[478,1845,1846,1852],{},[481,1847,1848,1849,455],{},"O Claude Code irá identificar que o ponto de acesso requer OAuth e abrirá uma janela no seu navegador de internet para que possa submeter o ",[473,1850,1851],{},"AUTH_TOKEN",[481,1853,1854,1855,1858,1859,1862,1863,455],{},"Crie o ficheiro ",[473,1856,1857],{},"CLAUDE.md"," na diretoria ",[473,1860,1861],{},"~\u002F.claude"," com as instruções descritas em ",[484,1864,1867],{"href":1865,"rel":1866},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare\u002Fblob\u002Fmain\u002FAI_Instructions\u002FCLAUDE_INSTRUCTIONS.md",[488],"CLAUDE_INSTRUCTIONS.md",[1153,1869,1871],{"id":1870},"integração-do-gemini-cli-via-mcp","Integração do Gemini CLI via MCP",[1158,1873,1874],{},[481,1875,1876],{},"Adicione a seguinte configuração de servidor MCP ao seu ficheiro '.\u002F.gemini\u002Fsettings.json':",[498,1878,1880],{"className":1664,"code":1879,"language":1666,"meta":424,"style":424},"    \"second-brain\": {\n      \"httpUrl\": \"https:\u002F\u002F\u003Cyour-worker-url>\u002Fmcp\",\n      \"oauth\": {\n        \"enabled\": true\n      }\n    }\n",[473,1881,1882,1894,1913,1927,1941,1946],{"__ignoreMap":424},[506,1883,1884,1886,1888,1890,1892],{"class":508,"line":509},[506,1885,1673],{"class":1076},[506,1887,1676],{"class":1080},[506,1889,1679],{"class":1076},[506,1891,1683],{"class":1682},[506,1893,1686],{"class":1076},[506,1895,1896,1898,1901,1903,1905,1907,1909,1911],{"class":508,"line":515},[506,1897,1691],{"class":1076},[506,1899,1900],{"class":1694},"httpUrl",[506,1902,1679],{"class":1076},[506,1904,1077],{"class":1076},[506,1906,1702],{"class":1076},[506,1908,1743],{"class":1080},[506,1910,1679],{"class":1076},[506,1912,1710],{"class":1076},[506,1914,1915,1917,1920,1922,1924],{"class":508,"line":521},[506,1916,1691],{"class":1076},[506,1918,1919],{"class":1694},"oauth",[506,1921,1679],{"class":1076},[506,1923,1077],{"class":1076},[506,1925,1926],{"class":1076}," {\n",[506,1928,1929,1931,1934,1936,1938],{"class":508,"line":527},[506,1930,1729],{"class":1076},[506,1932,1933],{"class":1066},"enabled",[506,1935,1679],{"class":1076},[506,1937,1077],{"class":1076},[506,1939,1940],{"class":1076}," true\n",[506,1942,1943],{"class":508,"line":533},[506,1944,1945],{"class":1076},"      }\n",[506,1947,1948],{"class":508,"line":539},[506,1949,1778],{"class":1076},[1158,1951,1952],{"start":515},[481,1953,1954],{},"Inicialize o Gemini CLI.",[1153,1956,1958],{"id":1957},"testar-o-second-brain-em-agentes-de-ia","Testar o Second Brain em agentes de IA",[1158,1960,1961,1972,1986],{},[481,1962,1963,1964,1967,1968],{},"Ao definir uma paleta de cores de marca básica no ",[441,1965,1966],{},"Claude Desktop",", o Second Brain não é ativado de imediato por padrão.\n",[884,1969],{"alt":1970,"src":1971},"Primeiro teste no Claude Desktop sem a camada de memória do Second Brain ativa","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-first-run-brand-palette.webp",[481,1973,1974,1975,1978,1979,1981,1982],{},"Ao utilizar comandos simples como 'remember', são chamadas as ferramentas integradas locais ",[473,1976,1977],{},"memory_user-edits"," do ",[441,1980,1966],{},", e não a camada de armazenamento remoto.\n",[884,1983],{"alt":1984,"src":1985},"Claude Desktop recorrendo às edições locais integradas em vez do Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-remember-built-in-tool-fallback.webp",[481,1987,1988,1989,1992],{},"Ao enviar o seguinte comando no ",[441,1990,1991],{},"Claude Code",", a integração com o Second Brain foi chamada com sucesso:",[498,1994,1999],{"className":1995,"code":1997,"language":1998},[1996],"language-text","Remember Our brand palette uses `#1a1a2e` as primary, `#16213e` as secondary, and `#e94560` as accent. Never use pure black.\"\n","text",[473,2000,1997],{"__ignoreMap":424},[434,2002,2003,2007,2008,2011,2012,2016,2017,2020,2021,2023,2024,2028,2029,2032,2033,2016,2037],{},[884,2004],{"alt":2005,"src":2006},"Janela de terminal do Claude Code exibindo o acionamento bem-sucedido do Second Brain MCP","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-code-second-brain-mcp-called.webp","\n4. Verificação das novas definições de cor armazenadas diretamente no painel do ",[441,2009,2010],{},"Second Brain na Cloudflare",":\n",[884,2013],{"alt":2014,"src":2015},"Verificando os códigos de cores da marca gravados na interface web do Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fsecond-brain-web-ui-color-verification.webp","\n- ",[1191,2018,2019],{},"O Claude Code funcionou de forma transparente porque o ficheiro CLAUDE_INSTRUCTIONS.md do projeto continha regras que apontam para as palavras-chave do 'Second Brain'.","\n5. Para utilizar esta integração no ",[441,2022,1966],{},", é necessário especificar expressamente o termo 'Second Brain' no seu prompt para forçar a gravação ou leitura nesta camada de memória persistente.\n",[884,2025],{"alt":2026,"src":2027},"Acionando o Second Brain no Claude Desktop ao mencionar explicitamente palavras-chave","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-second-brain-explicit-trigger.webp","\n6. O mesmo se aplica ao ",[441,2030,2031],{},"Gemini CLI",", onde terá de indicar 'Second Brain' para ativar as ferramentas MCP integradas.\n",[884,2034],{"alt":2035,"src":2036},"Janela de terminal do Gemini CLI demonstrando chamadas bem-sucedidas ao Second Brain MCP","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fgemini-cli-second-brain-trigger.webp",[1191,2038,2039],{},"Adicionar regras semelhantes ao ficheiro GEMINI.md, seguindo o padrão do CLAUDE_INSTRUCTIONS.md, permitirá que o sistema use o Second Brain em segundo plano sem que tenha de escrever as palavras-chave.",[1153,2041,2043],{"id":2042},"extensões-para-navegadores-web","Extensões para navegadores web",[478,2045,2046,2049],{},[481,2047,2048],{},"Estão disponíveis extensões para os navegadores Chrome, Firefox e Microsoft Edge.",[481,2050,2051,2052],{},"As funcionalidades incluem:\n",[478,2053,2054,2060,2066],{},[481,2055,2056,2059],{},[441,2057,2058],{},"Capturar a página atual"," — guarda automaticamente o título e o endereço URL no seu Second Brain.",[481,2061,2062,2065],{},[441,2063,2064],{},"Capturar texto selecionado"," — selecione qualquer excerto de texto numa página antes de clicar no botão da extensão; o excerto será gravado em associação com o título e a URL.",[481,2067,2068,2071,2072,2075],{},[441,2069,2070],{},"Adicionar notas rápidas"," — escreva observações rápidas ou categorize com ",[473,2073,2074],{},"#hashtags"," diretamente no popup da extensão antes de gravar; os hashtags são indexados automaticamente como tags.",[1153,2077,2079],{"id":2078},"sincronização-de-conhecimento-pessoal-com-o-plugin-obsidian","Sincronização de conhecimento pessoal com o plugin Obsidian",[478,2081,2082,2085],{},[481,2083,2084],{},"Existe um plugin Obsidian para efetuar a sincronização das suas notas pessoais do Obsidian Vault diretamente com o Second Brain na Cloudflare.",[481,2086,2087],{},"Pode usar tags específicas nas notas que deseja enviar para o armazenamento persistente.",[2089,2090,2092],"h4",{"id":2091},"instalar-o-plugin-obsidian","Instalar o plugin Obsidian",[1158,2094,2095,2102,2109,2116],{},[481,2096,2097,2098],{},"Abra o Obsidian → Definições → Community Plugins\n",[884,2099],{"alt":2100,"src":2101},"Painel de configurações do Obsidian navegando para a seção Community Plugins","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-settings-community-plugins.webp",[481,2103,2104,2105],{},"Clique no botão 'Browse' para pesquisar plug-ins.\n",[884,2106],{"alt":2107,"src":2108},"Página de pesquisa de plug-ins do Obsidian mostrando o botão Browse","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-community-plugins-browse.webp",[481,2110,2111,2112],{},"Procure por 'Second Brain Sync'.\n",[884,2113],{"alt":2114,"src":2115},"Pesquisando pelo plug-in Second Brain Sync na loja de plug-ins do Obsidian","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-community-plugins-search-second-brain.webp",[481,2117,2118,2119],{},"Clique no botão 'Install' (Instalar) e, em seguida, em 'Enable' (Ativar).\n",[884,2120],{"alt":2121,"src":2122},"Instalando e ativando o plug-in Second Brain Sync no Obsidian","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-plugin-install-and-enable.webp",[2089,2124,2126],{"id":2125},"configurar-o-plugin-obsidian","Configurar o plugin Obsidian",[1158,2128,2129,2132,2139,2146,2153,2163],{},[481,2130,2131],{},"Aceda a Obsidian → Definições → Second Brain Sync",[481,2133,2134,2135],{},"Preencha os campos 'URL' e o 'Auth token' com os dados do seu Worker.\n",[884,2136],{"alt":2137,"src":2138},"Inserindo a URL do Worker e o Token de autorização nas configurações do Obsidian","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-plugin-configuration-credentials.webp",[481,2140,2141,2142],{},"Clique em 'Test' para verificar se a ligação remota está operacional.\n",[884,2143],{"alt":2144,"src":2145},"Teste de conexão do plug-in do Obsidian exibindo verificação bem-sucedida","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-plugin-connection-test-success.webp",[481,2147,2148,2149],{},"Defina os comportamentos de sincronização. Configure a tag de sincronização desejada em 'Sync tag' e ative 'Auto-sync on save'.\n",[884,2150],{"alt":2151,"src":2152},"Configurando a Sync Tag e ativando a sincronização automática ao salvar no Obsidian","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-plugin-sync-behavior-settings.webp",[481,2154,2155,2156,2158,2159],{},"Crie uma nota na sua pasta do Obsidian com a tag ",[473,2157,1676],{}," (conforme definido no ecrã de configurações).\n",[884,2160],{"alt":2161,"src":2162},"Criando uma nova nota no Obsidian com a tag second-brain para sincronização","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-note-with-sync-tag.webp",[481,2164,2165,2166],{},"A nota é gravada e sincronizada de imediato para a sua instância de Cloudflare.\n",[884,2167],{"alt":2168,"src":2169},"Verificando a nota do Obsidian sincronizada com sucesso na interface web do Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fsecond-brain-web-ui-synced-note-verification.webp",[429,2171,950],{"id":949},[434,2173,2174],{},"O Second Brain oferece uma solução de código aberto inteligente para um dos maiores limites das tecnologias de IA: o esquecimento de contexto e a ausência de memória. Ao combinar este projeto com a infraestrutura escalável da Cloudflare, obtém-se uma camada de memória sémântica auto-hospedada, globalmente distribuída e de latência reduzida. Com a integração do Model Context Protocol (MCP), esta base de conhecimento torna-se totalmente portátil entre diferentes agentes de IA.",[434,2176,2177],{},"A integração com o Obsidian amplia esta arquitetura ligando a sua tomada de notas tradicional ao raciocínio lógico da IA. As suas notas e rascunhos são convertidos em dados estruturados que os agentes conseguem interpretar e interrogar a qualquer momento.",[434,2179,2180],{},"Ao unificar auto-hospedagem, pesquisa sémântica vetorial e padrões de comunicação abertos como o MCP, o Second Brain demonstra ser muito mais do que um simples repositório: é a base estrutural para construir o seu próprio ecossistema de produtividade de IA pessoal.",[429,2182,2183],{"id":956},"Referências:",[478,2185,2186,2192,2198,2205,2212],{},[481,2187,2188],{},[484,2189,2190],{"href":2190,"rel":2191},"https:\u002F\u002Fwww.thesecondbrain.dev\u002F",[488],[481,2193,2194],{},[484,2195,2196],{"href":2196,"rel":2197},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare\u002Fwiki\u002FHow-It-Works",[488],[481,2199,2200],{},[484,2201,2204],{"href":2202,"rel":2203},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare\u002Fwiki\u002FConnect-to-AI-Clients",[488],"Connect to AI Clients",[481,2206,2207],{},[484,2208,2211],{"href":2209,"rel":2210},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare\u002Fwiki\u002FObsidian-Plugin",[488],"Second Brain Obsidian Plugin",[481,2213,2214],{},[484,2215,2216],{"href":2216,"rel":2217},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-obsidian-plugin",[488],[989,2219,2220],{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":424,"searchDepth":515,"depth":521,"links":2222},[2223,2224,2225,2237,2238],{"id":1443,"depth":515,"text":1444},{"id":1453,"depth":515,"text":1454},{"id":1474,"depth":515,"text":1475,"children":2226},[2227,2228,2229,2230,2231,2232,2233],{"id":1549,"depth":521,"text":1550},{"id":1634,"depth":521,"text":1635},{"id":1792,"depth":521,"text":1793},{"id":1870,"depth":521,"text":1871},{"id":1957,"depth":521,"text":1958},{"id":2042,"depth":521,"text":2043},{"id":2078,"depth":521,"text":2079,"children":2234},[2235,2236],{"id":2091,"depth":527,"text":2092},{"id":2125,"depth":527,"text":2126},{"id":949,"depth":515,"text":950},{"id":956,"depth":515,"text":2183},[1001,1419],"2026-08-07","Aprenda a criar um sistema de memória de IA persistente e auto-hospedado na Cloudflare com Second Brain e MCP. Partilhe o contexto entre Claude e Obsidian.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002FPT-Use-Cloudflare-as-AI-memory.webp","Um sistema de memória de IA persistente e auto-hospedado na Cloudflare Workers e Vectorize com suporte MCP e sincronização do Obsidian.",{"schemaOrg":2245,"robots":1012,"sitemap":2249},[2246],{"@type":2247,"headline":2248,"description":2241},"TechArticle","Memória de IA persistente auto-hospedada: Cloudflare e MCP",{"lastmod":2240},{"title":2248,"description":2241,"ogTitle":1438,"ogDescription":2241,"twitterTitle":1438,"twitterDescription":2241},"pt\u002Farticle\u002Fuse-cloudflare-as-ai-memory",[2253,2254,2255,1465,2256],"Cloudflare","MCP","Memória de IA","Obsidian","2A8G4GBE0gVo-TlyYCIBGp4hYUpOZtEDV7cqi45ry1s",[2259,2514,3106],{"id":2260,"title":2261,"author":1020,"body":2262,"category":2500,"date":2501,"description":2502,"extension":1004,"image":2503,"imageAlt":2504,"isPublished":1007,"meta":2505,"minRead":551,"navigation":1007,"path":371,"seo":2510,"stem":2511,"tags":2512,"updatedAt":1020,"__hash__":2513},"article\u002Fpt\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare.md","Đừng public NodeWarden: Bảo mật qua Cloudflare",{"type":426,"value":2263,"toc":2491},[2264,2267,2270,2284,2288,2295,2298,2302,2305,2309,2339,2343,2346,2413,2417,2420,2484,2488],[434,2265,2266],{},"No momento em que o seu NodeWarden é exposto publicamente na internet, ele começa a atrair milhares de bots automatizados em busca de vulnerabilidades 24 horas por dia, 7 dias por semana. Para proteger seus dados confidenciais, você precisa colocar sua instância do NodeWarden sob o nível máximo de bloqueio possível.",[434,2268,2269],{},"Para proteger sua instância do NodeWarden, você pode usar um dos dois recursos da Cloudflare:",[478,2271,2272,2278],{},[481,2273,2274,2277],{},[441,2275,2276],{},"Cloudflare IP Access Rules (Regras de Acesso por IP):"," Permite bloquear, desafiar (challenge) ou permitir o tráfego com base em endereços IP ou países específicos.",[481,2279,2280,2283],{},[441,2281,2282],{},"Cloudflare Zero Trust (Recomendado):"," Atua como um gateway seguro que torna sua instância do NodeWarden completamente invisível para o público, permitindo a passagem apenas de usuários autorizados.",[2089,2285,2287],{"id":2286},"por-que-recomendamos-o-cloudflare-zero-trust","Por que recomendamos o Cloudflare Zero Trust",[434,2289,2290,2291,2294],{},"Aconselhamos fortemente o uso do Cloudflare Zero Trust, pois as regras de acesso por IP estão vinculadas a endereços IP ou países, o que significa que você precisa atualizar manualmente suas regras toda vez que viajar ou se tiver um IP dinâmico. Por outro lado, o Cloudflare Zero Trust se baseia na sua ",[441,2292,2293],{},"identidade",", e não na sua localização — proporcionando um acesso contínuo e seguro ao NodeWarden.",[2296,2297],"hr",{},[429,2299,2301],{"id":2300},"guia-de-configuração","Guia de Configuração",[434,2303,2304],{},"Siga estas etapas para configurar o Cloudflare Zero Trust para o NodeWarden.",[2089,2306,2308],{"id":2307},"fase-1-primeiros-passos","Fase 1: Primeiros passos",[1158,2310,2311,2318,2325,2332],{},[481,2312,2313,2314],{},"No seu painel da Cloudflare, clique em 'Zero Trust' no menu à esquerda.\n",[884,2315],{"alt":2316,"src":2317},"Barra lateral do painel da Cloudflare mostrando a opção Zero Trust selecionada no menu de navegação.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-dashboard-zero-trust-sidebar.webp",[481,2319,2320,2321],{},"Clique em 'Access controls' e depois em 'Applications'.\n",[884,2322],{"alt":2323,"src":2324},"Menu de navegação do Cloudflare Zero Trust com a seção de Controles de acesso expandida.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-zero-trust-access-controls-menu.webp",[481,2326,2327,2328],{},"Pode ser solicitado que você escolha um plano ('Choose a plan').\n",[884,2329],{"alt":2330,"src":2331},"Tela de configuração da conta Cloudflare Zero Trust solicitando que o usuário escolha um plano de assinatura.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-zero-trust-choose-plan-setup.webp",[481,2333,2334,2335],{},"Clique no botão 'Choose a plan' e escolha o plano 'Zero Trust Free'.\n",[884,2336],{"alt":2337,"src":2338},"A página de detalhes do plano Zero Trust Free na Cloudflare, destacando o botão Selecionar plano.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-zero-trust-free-plan-selection.webp",[2089,2340,2342],{"id":2341},"fase-2-proteja-sua-interface-web","Fase 2: Proteja sua interface Web",[434,2344,2345],{},"Primeiro, vamos criar uma aplicação para proteger o painel web do NodeWarden.",[1158,2347,2348,2355,2362,2369,2376,2383,2390,2393,2400,2403],{},[481,2349,2350,2351],{},"Clique em 'Create new application' para criar a primeira aplicação.\n",[884,2352],{"alt":2353,"src":2354},"Painel de aplicativos do Cloudflare Access com o botão Criar novo aplicativo.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-create-new-application.webp",[481,2356,2357,2358],{},"Escolha 'Self-hosted and private'.\n",[884,2359],{"alt":2360,"src":2361},"O modal Adicionar um aplicativo no Cloudflare Access com o tipo de aplicativo Auto-hospedado e privado selecionado.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-add-self-hosted-application.webp",[481,2363,2364,2365],{},"Insira o nome de domínio do NodeWarden.\n",[884,2366],{"alt":2367,"src":2368},"Tela de configuração do aplicativo Cloudflare Access mostrando o hostname público configurado como warden.techvoyage.dev.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-application-public-hostname.webp",[481,2370,2371,2372],{},"Clique em 'Create new policy' para criar uma política.\n",[884,2373],{"alt":2374,"src":2375},"Página de políticas do Cloudflare Access mostrando que nenhuma política foi adicionada e um botão para criar uma nova política.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-no-policies-create-button.webp",[481,2377,2378,2379],{},"Selecione 'Emails' e insira um e-mail na seção 'Policy rules'.\n",[884,2380],{"alt":2381,"src":2382},"Tela de configuração da regra de política do Cloudflare Access com um endereço de e-mail especificado como critério de inclusão.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-rule-email.webp",[481,2384,2385,2386],{},"Insira um nome e selecione 'Allow' na seção 'Policy details'.\n",[884,2387],{"alt":2388,"src":2389},"Tela de detalhes da política do Cloudflare Access mostrando o nome da política NodeWarden-Web e a ação definida como Permitir.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-details-allow.webp",[481,2391,2392],{},"Clique em 'Save Policy' para criar a política.",[481,2394,2395,2396],{},"Insira um nome e selecione '1 month' na seção 'Details'.\n",[884,2397],{"alt":2398,"src":2399},"Resumo final de la configuración para um aplicativo Cloudflare Access chamado NodeWarden-Web com duração de sessão de um mês.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-application-final-details.webp",[481,2401,2402],{},"Clique em 'Create' para criar a aplicação.",[481,2404,2405,2408,2409],{},[441,2406,2407],{},"Teste:"," Abra o domínio no navegador da web; você verá o 'Cloudflare Access' solicitando o e-mail.\n",[884,2410],{"alt":2411,"src":2412},"Uma visualização da tela de login do Cloudflare Access para NodeWarden-Web, solicitando um endereço de e-mail.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-login-screen-preview.webp",[2089,2414,2416],{"id":2415},"fase-3-permitir-a-sincronização-dos-clientes-bitwarden-bypass-de-api","Fase 3: Permitir a Sincronização dos Clientes BitWarden (Bypass de API)",[434,2418,2419],{},"Os aplicativos de desktop e mobile do BitWarden não conseguem processar a tela de login por e-mail da Cloudflare, por isso precisamos criar uma segunda aplicação que permita que o tráfego ignore (bypass) a tela de login especificamente para a sincronização da API.",[1158,2421,2422,2433,2448,2453,2460,2467,2470,2477],{},[481,2423,2424,2425,2428,2429,2432],{},"Volte para Applications e clique em ",[441,2426,2427],{},"Create new application",", escolhendo ",[441,2430,2431],{},"Self-hosted and private"," novamente.",[481,2434,2435,2436,2439,2440,2443,2444],{},"Insira 'api\u002F",[1191,2437,2438],{},"', 'identity\u002F","', 'notifications\u002F",[1191,2441,2442],{},"' e 'icons\u002F","' na seção Destinations.\n",[884,2445],{"alt":2446,"src":2447},"Configurando múltiplos hostnames públicos para bypass de API no Cloudflare Access, incluindo os caminhos api, identity, notifications e icons.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-api-bypass-destinations.webp",[481,2449,2450,2451],{},"Clique em 'Create new policy' para criar a política.\n",[884,2452],{"alt":2374,"src":2375},[481,2454,2455,2456],{},"Selecione 'Everyone' em 'Policy rules'.\n",[884,2457],{"alt":2458,"src":2459},"Configuração da regra de política do Cloudflare Access com Todos selecionado para permitir acesso amplo a caminhos específicos.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-rule-everyone.webp",[481,2461,2462,2463],{},"Insira un nome e selecione 'Bypass' em 'Policy details'.\n",[884,2464],{"alt":2465,"src":2466},"Detalhes da política do Cloudflare Access para NodeWarden-API com la acción definida como Bypass.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-details-bypass.webp",[481,2468,2469],{},"Clique em 'Save Policy' para salvar.",[481,2471,2472,2473],{},"Insira um nome e selecione '1 month' para 'Session Duration'.\n",[884,2474],{"alt":2475,"src":2476},"Tela de configuração final para o aplicativo NodeWarden-API no Cloudflare Access.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-api-application-final-details.webp",[481,2478,2479,2480],{},"Você deverá ter 2 aplicações criadas no final.\n",[884,2481],{"alt":2482,"src":2483},"O painel de aplicativos do Cloudflare Access mostrando os aplicativos Web e API criados com sucesso.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-applications-list-final.webp",[429,2485,2487],{"id":2486},"considerações-finais","Considerações finais",[434,2489,2490],{},"Lembre-se apenas de que a Cloudflare é o seu escudo de proteção externo. Para manter um cofre (vault) verdadeiramente seguro, certifique-se de continuar usando uma senha mestra forte, de utilizar a Autenticação de Dois Fatores (2FA) e de manter a sua conta da Cloudflare segura.",{"title":424,"searchDepth":515,"depth":521,"links":2492},[2493,2494,2499],{"id":2286,"depth":527,"text":2287},{"id":2300,"depth":515,"text":2301,"children":2495},[2496,2497,2498],{"id":2307,"depth":527,"text":2308},{"id":2341,"depth":527,"text":2342},{"id":2415,"depth":527,"text":2416},{"id":2486,"depth":515,"text":2487},[1000,1001],"2026-05-27","No momento em que o seu NodeWarden é exposto publicamente na internet, ele começa a atrair milhares de bots automatizados em busca de vulnerabilidades 24 horas por dia, 7 dias por semana.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fproteja-nodewarden-integracao-cloudflare-guia.webp","Miniatura de um guia passo a passo para proteger um cofre NodeWarden com integração Cloudflare, mostrando um cofre digital acorrentado e um rack de servidores protegido.",{"schemaOrg":2506,"robots":1012,"sitemap":2509},[2507],{"@type":2247,"headline":2508,"description":2502},"Pare de expor seu cofre: Proteja o NodeWarden com Cloudflare",{"lastmod":2501},{"title":2508,"description":2502,"ogTitle":2508,"ogDescription":2502,"twitterTitle":2508,"twitterDescription":2502},"pt\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",[],"5dmQaCfyaGhc3hILQQ9Sfx1PfBK37V47AOmO-4fZaNk",{"id":2515,"title":2516,"author":1020,"body":2517,"category":3092,"date":3093,"description":3094,"extension":1004,"image":3095,"imageAlt":3096,"isPublished":1007,"meta":3097,"minRead":551,"navigation":1007,"path":387,"seo":3102,"stem":3103,"tags":3104,"updatedAt":1020,"__hash__":3105},"article\u002Fpt\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare.md","Como auto-hospedar um cofre de senhas tipo BitWarden",{"type":426,"value":2518,"toc":3077},[2519,2522,2529,2533,2723,2727,2743,2747,2777,2781,2811,2815,2849,2853,2897,2901,2937,2941,2944,2948,2977,2981,3004,3008,3011,3028,3033,3036,3039,3053,3057,3070,3072],[434,2520,2521],{},"Suas senhas são a sua propriedade digital mais crítica, e mantê-las seguras significa tê-las em suas próprias mãos. Ao fazer o self-hosting do seu gerenciador de senhas, você assume o controle da sua própria segurança.",[434,2523,2524,2525,2528],{},"O ",[441,2526,2527],{},"BitWarden","​ é amplamente considerado um dos mais confiáveis no domínio de gerenciamento de senhas e seu código-fonte é disponibilizado sob a licença AGPL-3.0. O NodeWarden é um servidor não oficial compatível com o BitWarden, escrito em BitWarden, que pode ser feito deploy gratuitamente na Cloudflare.",[429,2530,2532],{"id":2531},"comparação-de-funcionalidades-com-o-servidor-oficial-do-bitwarden","Comparação de Funcionalidades com o Servidor Oficial do BitWarden",[2534,2535,2536,2554],"table",{},[2537,2538,2539],"thead",{},[2540,2541,2542,2546,2548,2551],"tr",{},[2543,2544,2545],"th",{},"Funcionalidade",[2543,2547,2527],{},[2543,2549,2550],{},"NodeWarden",[2543,2552,2553],{},"Notas",[2555,2556,2557,2574,2589,2601,2613,2628,2645,2660,2675,2687,2699,2712],"tbody",{},[2540,2558,2559,2563,2566,2568],{},[2560,2561,2562],"td",{},"Cofre Web (Web Vault)",[2560,2564,2565],{},"✅",[2560,2567,2565],{},[2560,2569,2570,2573],{},[441,2571,2572],{},"Interface original do Web Vault","​",[2540,2575,2576,2582,2584,2586],{},[2560,2577,2578,2579],{},"Sincronização completa ",[473,2580,2581],{},"\u002Fapi\u002Fsync",[2560,2583,2565],{},[2560,2585,2565],{},[2560,2587,2588],{},"Compatibilidade otimizada para clientes oficiais",[2540,2590,2591,2594,2596,2598],{},[2560,2592,2593],{},"Upload \u002F download de anexos",[2560,2595,2565],{},[2560,2597,2565],{},[2560,2599,2600],{},"Cloudflare R2 ou KV",[2540,2602,2603,2606,2608,2610],{},[2560,2604,2605],{},"Send (Enviar)",[2560,2607,2565],{},[2560,2609,2565],{},[2560,2611,2612],{},"Suporta envio de textos e de arquivos",[2540,2614,2615,2618,2620,2622],{},[2560,2616,2617],{},"Importar \u002F Exportar",[2560,2619,2565],{},[2560,2621,2565],{},[2560,2623,2624,2625,2573],{},"Suporta importação do BitWarden JSON \u002F CSV \u002F ",[441,2626,2627],{},"ZIP com anexos",[2540,2629,2630,2635,2638,2640],{},[2560,2631,2632,2573],{},[441,2633,2634],{},"Central de Backup em Nuvem",[2560,2636,2637],{},"❌",[2560,2639,2565],{},[2560,2641,2642,2573],{},[441,2643,2644],{},"Backup agendado para WebDAV \u002F E3",[2540,2646,2647,2650,2653,2655],{},[2560,2648,2649],{},"Dica de senha (web)",[2560,2651,2652],{},"⚠️ Limitado",[2560,2654,2565],{},[2560,2656,2657,2573],{},[441,2658,2659],{},"Não exige e-mail",[2540,2661,2662,2665,2667,2669],{},[2560,2663,2664],{},"TOTP \u002F Steam TOTP",[2560,2666,2565],{},[2560,2668,2565],{},[2560,2670,2671,2672],{},"Inclui suporte a ",[473,2673,2674],{},"steam:\u002F\u002F",[2540,2676,2677,2680,2682,2684],{},[2560,2678,2679],{},"Multiusuário",[2560,2681,2565],{},[2560,2683,2565],{},[2560,2685,2686],{},"Registro baseado em convite",[2540,2688,2689,2692,2694,2696],{},[2560,2690,2691],{},"Organizações \u002F Coleções \u002F Papéis",[2560,2693,2565],{},[2560,2695,2637],{},[2560,2697,2698],{},"Não implementado",[2540,2700,2701,2704,2706,2709],{},[2560,2702,2703],{},"Login com 2FA",[2560,2705,2565],{},[2560,2707,2708],{},"⚠️ Parcial",[2560,2710,2711],{},"Atualmente apenas TOTP em nível de usuário",[2540,2713,2714,2717,2719,2721],{},[2560,2715,2716],{},"SSO \u002F SCIM \u002F Diretório corporativo",[2560,2718,2565],{},[2560,2720,2637],{},[2560,2722,2698],{},[429,2724,2726],{"id":2725},"o-que-precisamos","O que precisamos:",[1158,2728,2729,2734,2740],{},[481,2730,2731],{},[441,2732,2733],{},"Uma conta no GitHub",[481,2735,2736,2739],{},[441,2737,2738],{},"Uma conta na Cloudflare","​ (Gratuita) com o Cloudflare R2 Storage ativado.",[481,2741,2742],{},"_Opcional:_Um nome de domínio personalizado gerenciado na Cloudflare.",[1153,2744,2746],{"id":2745},"fase-1-preparar-o-código","Fase 1: Preparar o Código",[1158,2748,2749,2768],{},[481,2750,2751,2752,2756,2757,2761,2762,2764],{},"Faça um _fork_do repositório do NodeWarden acessando ",[484,2753,2754],{"href":2754,"rel":2755},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fnodewarden",[488]," do repositório original ",[484,2758,2759],{"href":2759,"rel":2760},"https:\u002F\u002Fgithub.com\u002Fshuaiplus\u002Fnodewarden",[488]," GitHub.",[881,2763],{},[884,2765],{"alt":2766,"src":2767},"Fazendo um fork do repositório NodeWarden no GitHub","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Ffork-nodewarden-repo.webp",[481,2769,2770,2771,2773],{},"Ative o Workflow \"Sync Upstream\".",[881,2772],{},[884,2774],{"alt":2775,"src":2776},"Ativando o fluxo de trabalho Sync Upstream no GitHub Actions","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fenable-sync-upstream.webp",[1153,2778,2780],{"id":2779},"fase-2-fazer-o-deploy-na-cloudflare","Fase 2: Fazer o Deploy na Cloudflare",[1158,2782,2783,2792,2805],{},[481,2784,2785,2786,2788],{},"Crie uma aplicação Worker na Cloudflare.",[881,2787],{},[884,2789],{"alt":2790,"src":2791},"Criando um novo aplicativo Worker no painel do Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcreate-cloudflare-worker.webp",[481,2793,2794,2795,2797,2801],{},"Selecione 'Continue with GitHub' para fazer o deploy do app.",[881,2796],{},[884,2798],{"alt":2799,"src":2800},"Implantando o aplicativo NodeWarden conectando ao GitHub","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fdeploy-github-repo.webp",[884,2802],{"alt":2803,"src":2804},"Progresso de compilação e implantação do Cloudflare Worker","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-deploy-status.webp",[481,2806,2807,2808,455],{},"Aguarde alguns instantes até a Cloudflare fazer a build e o deploy do seu app. Ele fornecerá uma URL padrão terminada em ",[473,2809,2810],{},"worker.dev",[1153,2812,2814],{"id":2813},"opcional-adicionar-um-domínio-personalizado","(Opcional) Adicionar um Domínio Personalizado:",[478,2816,2817,2823,2836],{},[481,2818,2819,2820,455],{},"Nas configurações do seu Cloudflare Worker, vá para a aba ",[441,2821,2822],{},"Settings",[481,2824,2825,2826,2829,2830,2829,2833,455],{},"Clique em ",[441,2827,2828],{},"Triggers","​ -> ",[441,2831,2832],{},"Custom Domains",[441,2834,2835],{},"+ Add Custom Domain",[481,2837,2838,2839,2841,2845],{},"Digite seu domínio de preferência e siga as instruções.",[881,2840],{},[884,2842],{"alt":2843,"src":2844},"Navegando para as configurações de domínio personalizado no Cloudflare Worker","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fworker-settings-custom-domain.webp",[884,2846],{"alt":2847,"src":2848},"Adicionando um domínio personalizado ao Cloudflare Worker","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fadd-custom-domain.webp",[1153,2850,2852],{"id":2851},"fase-3-proteger-seu-servidor-o-segredo-jwt","Fase 3: Proteger Seu Servidor (O Segredo JWT)",[1158,2854,2855,2858,2870,2891],{},[481,2856,2857],{},"Vá até o seu navegador de internet e insira o nome do seu domínio personalizado ou o domínio 'worker.dev' gerado.",[481,2859,2860,2861,455,2864,2866],{},"Você receberá o aviso '",[441,2862,2863],{},"JWT_SECRET is missing'",[881,2865],{},[884,2867],{"alt":2868,"src":2869},"Mensagem de erro JWT_SECRET is missing no servidor NodeWarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fjwt-secret-missing-error.webp",[481,2871,2872,2873,2876,2877,2880,2881,2883,2887],{},"Copie a chave secreta (secret key) gerada, volte para a aba de Settings no seu NodeWarden Worker e clique no botão '",[441,2874,2875],{},"+ Add","' na seção '",[441,2878,2879],{},"Variables and Secrets","'.",[881,2882],{},[884,2884],{"alt":2885,"src":2886},"Seção de Variáveis e Segredos nas configurações do Cloudflare Worker","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fworker-variables-secrets.webp",[884,2888],{"alt":2889,"src":2890},"Adicionando o segredo JWT gerado às variáveis do Cloudflare Worker","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fadd-jwt-secret.webp",[481,2892,2893,2894,2880],{},"Insira o segredo gerado e clique no botão '",[441,2895,2896],{},"Deploy \u002F Save",[1153,2898,2900],{"id":2899},"fase-4-criar-sua-conta-de-administrador","Fase 4: Criar sua Conta de Administrador",[1158,2902,2903,2912,2925,2934],{},[481,2904,2905,2906,2908],{},"Volte ao navegador web e recarregue a página; você verá a seguinte tela de login.",[881,2907],{},[884,2909],{"alt":2910,"src":2911},"Página de login do servidor NodeWarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fnodewarden-login.webp",[481,2913,2914,2915,2918,2919,2921],{},"Clique em '",[441,2916,2917],{},"Create Account","' para criar a conta de administrador.",[881,2920],{},[884,2922],{"alt":2923,"src":2924},"Clicando no botão Create Account na página de login do NodeWarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcreate-account-button.webp",[481,2926,2927,2928,2930],{},"Faça login usando a conta admin recém-criada para acessar o Dashboard.",[881,2929],{},[884,2931],{"alt":2932,"src":2933},"Visão geral do painel de administração do NodeWarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fnodewarden-dashboard.webp",[481,2935,2936],{},"Agora temos o servidor rodando e operante. Vamos começar a configurar os clientes do BitWarden.",[1153,2938,2940],{"id":2939},"fase-5-conectar-seus-dispositivos","Fase 5: Conectar Seus Dispositivos",[434,2942,2943],{},"Você pode usar os aplicativos oficiais do BitWarden em todos os seus dispositivos.",[2089,2945,2947],{"id":2946},"extensão-do-chrome","Extensão do Chrome",[1158,2949,2950,2953,2956,2965,2974],{},[481,2951,2952],{},"Instale a extensão do BitWarden no Chrome.",[481,2954,2955],{},"Abra a extensão.",[481,2957,2958,2959,2961],{},"Clique no link ao lado de 'Accessing:' na parte inferior da janelinha popup.",[881,2960],{},[884,2962],{"alt":2963,"src":2964},"Selecionando a opção auto-hospedado na extensão do Bitwarden para Chrome","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-extension-self-hosted.webp",[481,2966,2967,2968,2970],{},"Insira o nome de domínio do servidor NodeWarden.",[881,2969],{},[884,2971],{"alt":2972,"src":2973},"Inserindo a URL do servidor na extensão do Bitwarden para Chrome","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-extension-domain.webp",[481,2975,2976],{},"Salve as configurações e faça o login com sua conta.",[2089,2978,2980],{"id":2979},"app-para-ios","App para iOS",[1158,2982,2983,2986,2995],{},[481,2984,2985],{},"Instale o app do BitWarden através da App Store.",[481,2987,2988,2989,2991],{},"Abra o app e clique em '' ao lado de 'Logging in on:'.",[881,2990],{},[884,2992],{"alt":2993,"src":2994},"Acessando as configurações de auto-hospedado no aplicativo Bitwarden para iOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-ios-self-hosted.webp",[481,2996,2997,2998,3000],{},"Insira o nome de domínio do servidor NodeWarden e clique no botão '✓'.",[881,2999],{},[884,3001],{"alt":3002,"src":3003},"Configurando a URL do servidor no aplicativo Bitwarden para iOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-ios-domain.webp",[1153,3005,3007],{"id":3006},"outros-clientes","Outros Clientes",[434,3009,3010],{},"O NodeWarden foi testado e confirmou-se compatível com estes clientes oficiais do BitWarden:",[478,3012,3013,3016,3019,3022,3025],{},[481,3014,3015],{},"✅ Windows (desktop)",[481,3017,3018],{},"✅ Apps mobile Android\u002FiOS",[481,3020,3021],{},"✅ Extensões de navegador",[481,3023,3024],{},"✅ Linux (desktop)",[481,3026,3027],{},"⚠️ macOS desktop (não verificado totalmente)",[3029,3030,3032],"h1",{"id":3031},"backup-do-cofre-vault","Backup do Cofre (Vault)",[434,3034,3035],{},"O NodeWarden permite fazer backup do seu cofre no seu computador local ou em um armazenamento remoto (armazenamento compatível com S3 ou WebDAV).",[434,3037,3038],{},"Para automatizar backups remotos:",[478,3040,3041,3044],{},[481,3042,3043],{},"Configure os detalhes do armazenamento remoto dentro do painel do NodeWarden.",[481,3045,3046,3047,3049],{},"Certifique-se de que a tarefa Cron esteja configurada nas configurações do seu Cloudflare Worker para o backup remoto automático.",[881,3048],{},[884,3050],{"alt":3051,"src":3052},"Configurando gatilhos Cron para backups automáticos do cofre no Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-worker-cron.webp",[3029,3054,3056],{"id":3055},"recomendações-finais-de-segurança","Recomendações Finais de Segurança",[478,3058,3059,3062,3065],{},[481,3060,3061],{},"Proteja o acesso da sua conta na Cloudflare, caso contrário, os dados podem ser comprometidos. Ative a Autenticação de Dois Fatores (2FA) ou o Passkey em sua conta da Cloudflare imediatamente.",[481,3063,3064],{},"Hospede o NodeWarden em uma conta da Cloudflare dedicada. Não compartilhe os recursos com outras aplicações web para minimizar os riscos de segurança.",[481,3066,3067],{},[484,3068,3069],{"href":371},"Proteger o NodeWarden com a Cloudflare",[3029,3071,957],{"id":956},[478,3073,3074],{},[481,3075,3076],{},"Guia Oficial de Início do NodeWarden",{"title":424,"searchDepth":515,"depth":521,"links":3078},[3079,3080],{"id":2531,"depth":515,"text":2532},{"id":2725,"depth":515,"text":2726,"children":3081},[3082,3083,3084,3085,3086,3087,3091],{"id":2745,"depth":521,"text":2746},{"id":2779,"depth":521,"text":2780},{"id":2813,"depth":521,"text":2814},{"id":2851,"depth":521,"text":2852},{"id":2899,"depth":521,"text":2900},{"id":2939,"depth":521,"text":2940,"children":3088},[3089,3090],{"id":2946,"depth":527,"text":2947},{"id":2979,"depth":527,"text":2980},{"id":3006,"depth":521,"text":3007},[1000,1001],"2026-05-25","Suas senhas são a sua propriedade digital mais crítica, e mantê-las seguras significa tê-las em suas próprias mãos.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fservidor-auto-hospedado-bitwarden.webp","Miniatura do tutorial de hospedagem de um servidor compatível com Bitwarden, exibindo um cofre digital e um rack de servidores seguro.",{"schemaOrg":3098,"robots":1012,"sitemap":3101},[3099],{"@type":2247,"headline":3100,"description":3094},"Como proteger suas senhas no seu próprio cofre hospedando um servidor compatível com BitWarden",{"lastmod":3093},{"title":3100,"description":3094,"ogTitle":3100,"ogDescription":3094,"twitterTitle":3100,"twitterDescription":3094},"pt\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",[],"90VG2W5bTdw1xwbt6O1UTfLLUyOJxshz-Pc4dRRNILg",{"id":3107,"title":3108,"author":424,"body":3109,"category":3986,"date":3987,"description":3988,"extension":1004,"image":3989,"imageAlt":3990,"isPublished":1007,"meta":3991,"minRead":557,"navigation":1007,"path":363,"seo":3996,"stem":3998,"tags":3999,"updatedAt":3995,"__hash__":4002},"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":3110,"toc":3968},[3111,3125,3135,3139,3142,3154,3158,3166,3170,3174,3223,3227,3361,3365,3399,3403,3406,3472,3475,3511,3514,3541,3545,3555,3559,3597,3683,3687,3692,3707,3716,3791,3796,3842,3846,3891,3905,3909,3953,3955,3965],[434,3112,3113,3114,3117,3118,3120,3121,3124],{},"Um desafio comum surge quando você deseja acessar seu ",[441,3115,3116],{},"Hermes Agent"," de outros dispositivos, como notebooks, tablets ou telefones, sem expô-lo à internet pública. Utilizar o ",[441,3119,926],{}," com o ",[441,3122,3123],{},"Cloudflare Zero Trust"," permite que você exponha o Hermes Agent globalmente sem abrir uma única porta de entrada no seu firewall.",[434,3126,3127,3128,3131,3132,3134],{},"Se você seguiu nosso guia anterior, '",[484,3129,3130],{"href":375},"Como instalar e configurar o Hermes Agent em um VPS Linux","', 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 ",[441,3133,926],{}," para expor o Hermes Agent a uma rede privada pela internet.",[429,3136,3138],{"id":3137},"entendendo-a-arquitetura","Entendendo a Arquitetura",[434,3140,3141],{},"Os componentes em ação:",[1158,3143,3144,3149],{},[481,3145,3146,3148],{},[441,3147,3123],{},": O painel de controle da Cloudflare onde você define regras de roteamento e políticas de acesso.",[481,3150,3151,3153],{},[441,3152,926],{},": 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.",[1153,3155,3157],{"id":3156},"pré-requisitos","Pré-requisitos",[478,3159,3160,3163],{},[481,3161,3162],{},"Um Hermes Agent em execução no seu VPS.",[481,3164,3165],{},"Uma conta gratuita da Cloudflare.",[429,3167,3169],{"id":3168},"guia-passo-a-passo","Guia Passo a Passo",[1153,3171,3173],{"id":3172},"passo-1-configurar-o-cloudflare-zero-trust","Passo 1: Configurar o Cloudflare Zero Trust",[1158,3175,3176,3184,3191,3202,3209,3216],{},[481,3177,3178,3179,455],{},"Faça login no seu ",[484,3180,3183],{"href":3181,"rel":3182},"https:\u002F\u002Fdash.cloudflare.com\u002F",[488],"Painel da Cloudflare",[481,3185,3186,3187],{},"Clique em 'Zero Trust' no menu à esquerda.\n",[884,3188],{"alt":3189,"src":3190},"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",[481,3192,3193,3194,3197,3198],{},"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., ",[473,3195,3196],{},"ai-team",").\n",[884,3199],{"alt":3200,"src":3201},"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",[481,3203,3204,3205],{},"Clique em 'Access' e depois em 'Policies' para criar uma política de acesso definindo quem tem acesso à rede.\n",[884,3206],{"alt":3207,"src":3208},"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",[481,3210,3211,3212],{},"Clique em 'Create new policy'.\n",[884,3213],{"alt":3214,"src":3215},"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",[481,3217,3218,3219],{},"Selecione 'Emails' e insira seu e-mail em 'Policy rules'.\n",[884,3220],{"alt":3221,"src":3222},"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",[1153,3224,3226],{"id":3225},"passo-2-configurar-o-cliente-cloudflare-warp-no-vps","Passo 2: Configurar o cliente Cloudflare WARP no VPS",[1158,3228,3229,3239,3245,3252,3255,3269,3272,3354],{},[481,3230,3231,3232,835,3235,3238],{},"Execute ",[473,3233,3234],{},"sudo apt update",[473,3236,3237],{},"sudo apt install cloudflare-warp"," no terminal do seu VPS.",[481,3240,3231,3241,3244],{},[473,3242,3243],{},"warp-cli registration new \u003CTEAM-NAME>"," no terminal do seu VPS, o que exibirá um URL.",[481,3246,3247,3248,3251],{},"Copie o URL gerado, que será parecido com ",[473,3249,3250],{},"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fwarp",", e cole-o no seu navegador para autenticação.",[481,3253,3254],{},"Como a autenticação por e-mail foi definida na configuração da política acima, insira seu e-mail para autenticar.",[481,3256,3257,3258,3261,3262,3265,3266,2880],{},"Na página de '",[441,3259,3260],{},"Success","' (Colaboração bem-sucedida) no navegador, clique com o botão direito e selecione '",[441,3263,3264],{},"Inspect","' (Inspecionar) no botão azul '",[441,3267,3268],{},"Open Cloudflare WARP",[481,3270,3271],{},"Copie o token longo que aparece no link do botão.",[481,3273,3231,3274,3277,3278,3280,3281],{},[473,3275,3276],{},"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.",[881,3279],{},"Se encontrar o 'Error: Failed to communicate with the WARP API' no Ubuntu 26, execute os seguintes comandos:",[498,3282,3286],{"className":3283,"code":3284,"language":3285,"meta":424,"style":424},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","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","bash",[473,3287,3288,3302,3306,3312,3323,3327,3332],{"__ignoreMap":424},[506,3289,3290,3293,3296,3299],{"class":508,"line":509},[506,3291,3292],{"class":1066},"sudo",[506,3294,3295],{"class":1080}," systemctl",[506,3297,3298],{"class":1080}," restart",[506,3300,3301],{"class":1080}," warp-svc.service\n",[506,3303,3304],{"class":508,"line":515},[506,3305,1100],{"emptyLinePlaceholder":1007},[506,3307,3308],{"class":508,"line":521},[506,3309,3311],{"class":3310},"sHwdD","# Check status\n",[506,3313,3314,3316,3318,3321],{"class":508,"line":527},[506,3315,3292],{"class":1066},[506,3317,3295],{"class":1080},[506,3319,3320],{"class":1080}," status",[506,3322,3301],{"class":1080},[506,3324,3325],{"class":508,"line":533},[506,3326,1100],{"emptyLinePlaceholder":1007},[506,3328,3329],{"class":508,"line":539},[506,3330,3331],{"class":3310},"# Run the warp-cli registration token again\n",[506,3333,3334,3337,3340,3343,3346,3349,3352],{"class":508,"line":545},[506,3335,3336],{"class":1066},"warp-cli",[506,3338,3339],{"class":1080}," --accept-tos",[506,3341,3342],{"class":1080}," registration",[506,3344,3345],{"class":1080}," token",[506,3347,3348],{"class":1076},"   \"",[506,3350,3351],{"class":1080},"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fauth?token=\u003Ccopied_token>",[506,3353,1768],{"class":1076},[481,3355,3356,3357],{},"Volte ao painel do Cloudflare Zero Trust e clique em 'Devices' (Dispositivos). O dispositivo do seu VPS deve ser exibido agora.\n",[884,3358],{"alt":3359,"src":3360},"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",[1153,3362,3364],{"id":3363},"passo-3-configurar-o-roteamento-de-tráfego","Passo 3: Configurar o roteamento de tráfego",[1158,3366,3367,3374,3381,3388],{},[481,3368,3369,3370],{},"Clique no perfil do seu VPS no painel de Dispositivos.\n",[884,3371],{"alt":3372,"src":3373},"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",[481,3375,3376,3377],{},"Role para baixo até a seção 'Split Tunnels' (Túneis divididos).\n",[884,3378],{"alt":3379,"src":3380},"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",[481,3382,3383,3384],{},"Clique no botão 'Manage' (Gerenciar) e defina as configurações conforme mostrado abaixo. Substitua o endereço IP, se necessário.\n",[884,3385],{"alt":3386,"src":3387},"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",[481,3389,3390,3391,3394,3395,3398],{},"Expor o ",[473,3392,3393],{},"address"," (endereço) e o ",[473,3396,3397],{},"host"," roteará o tráfego para seus serviços pela mesma rede privada.",[1153,3400,3402],{"id":3401},"passo-4-configurar-o-firewall-no-vps","Passo 4: Configurar o Firewall no VPS",[434,3404,3405],{},"Habilite o firewall para permitir apenas a sub-rede '100.96.0.0\u002F12', bloqueando qualquer outro acesso público de entrada.",[498,3407,3409],{"className":3283,"code":3408,"language":3285,"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",[473,3410,3411,3424,3441,3455],{"__ignoreMap":424},[506,3412,3413,3415,3418,3421],{"class":508,"line":509},[506,3414,3292],{"class":1066},[506,3416,3417],{"class":1080}," ufw",[506,3419,3420],{"class":1080}," enable",[506,3422,3423],{"class":1682}," \n",[506,3425,3426,3428,3430,3433,3436,3439],{"class":508,"line":515},[506,3427,3292],{"class":1066},[506,3429,3417],{"class":1080},[506,3431,3432],{"class":1080}," default",[506,3434,3435],{"class":1080}," allow",[506,3437,3438],{"class":1080}," outgoing",[506,3440,3423],{"class":1682},[506,3442,3443,3445,3447,3449,3452],{"class":508,"line":521},[506,3444,3292],{"class":1066},[506,3446,3417],{"class":1080},[506,3448,3432],{"class":1080},[506,3450,3451],{"class":1080}," deny",[506,3453,3454],{"class":1080}," incoming\n",[506,3456,3457,3459,3461,3463,3466,3469],{"class":508,"line":527},[506,3458,3292],{"class":1066},[506,3460,3417],{"class":1080},[506,3462,3435],{"class":1080},[506,3464,3465],{"class":1080}," in",[506,3467,3468],{"class":1080}," from",[506,3470,3471],{"class":1080}," 100.96.0.0\u002F12\n",[434,3473,3474],{},"Permita o tráfego de loopback para evitar a interrupção de serviços locais:",[498,3476,3478],{"className":3283,"code":3477,"language":3285,"meta":424,"style":424},"sudo ufw allow in on lo\nsudo ufw allow out on lo\n",[473,3479,3480,3496],{"__ignoreMap":424},[506,3481,3482,3484,3486,3488,3490,3493],{"class":508,"line":509},[506,3483,3292],{"class":1066},[506,3485,3417],{"class":1080},[506,3487,3435],{"class":1080},[506,3489,3465],{"class":1080},[506,3491,3492],{"class":1080}," on",[506,3494,3495],{"class":1080}," lo\n",[506,3497,3498,3500,3502,3504,3507,3509],{"class":508,"line":515},[506,3499,3292],{"class":1066},[506,3501,3417],{"class":1080},[506,3503,3435],{"class":1080},[506,3505,3506],{"class":1080}," out",[506,3508,3492],{"class":1080},[506,3510,3495],{"class":1080},[434,3512,3513],{},"Recarregue o firewall e verifique o status:",[498,3515,3517],{"className":3283,"code":3516,"language":3285,"meta":424,"style":424},"sudo ufw reload \nsudo ufw status verbose\n",[473,3518,3519,3530],{"__ignoreMap":424},[506,3520,3521,3523,3525,3528],{"class":508,"line":509},[506,3522,3292],{"class":1066},[506,3524,3417],{"class":1080},[506,3526,3527],{"class":1080}," reload",[506,3529,3423],{"class":1682},[506,3531,3532,3534,3536,3538],{"class":508,"line":515},[506,3533,3292],{"class":1066},[506,3535,3417],{"class":1080},[506,3537,3320],{"class":1080},[506,3539,3540],{"class":1080}," verbose\n",[1153,3542,3544],{"id":3543},"passo-5-expor-o-hermes-agent-à-rede-privada","Passo 5: Expor o Hermes Agent à Rede Privada",[434,3546,3547,3548,3551,3552,455],{},"Vamos expor o ",[441,3549,3550],{},"Hermes Agent Web Dashboard"," à nossa rede privada e usar o provedor de autenticação padrão, ",[441,3553,3554],{},"Nous Research",[2089,3556,3558],{"id":3557},"configurar-o-provedor-de-autenticação","Configurar o provedor de autenticação",[1158,3560,3561,3570,3577,3584,3591],{},[481,3562,3563,3564,3569],{},"Vá até ",[484,3565,3568],{"href":3566,"rel":3567},"https:\u002F\u002Fportal.nousresearch.com",[488],"portal.nousresearch.com"," para registrar uma conta.",[481,3571,3572,3573],{},"Selecione 'Local Dashboards' (Painéis locais).\n",[884,3574],{"alt":3575,"src":3576},"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",[481,3578,3579,3580],{},"Clique em 'Register Dashboard' (Registrar painel).\n",[884,3581],{"alt":3582,"src":3583},"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",[481,3585,3586,3587],{},"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",[884,3588],{"alt":3589,"src":3590},"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",[481,3592,3593,3594,1077],{},"Copie o 'OAuth client ID' e cole-o em seu arquivo ",[473,3595,3596],{},"config.yaml",[498,3598,3600],{"className":1057,"code":3599,"language":1059,"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",[473,3601,3602,3609,3619,3630,3637,3647,3657,3664,3674],{"__ignoreMap":424},[506,3603,3604,3607],{"class":508,"line":509},[506,3605,3606],{"class":1072},"dashboard",[506,3608,2011],{"class":1076},[506,3610,3611,3614,3616],{"class":508,"line":515},[506,3612,3613],{"class":1072},"  theme",[506,3615,1077],{"class":1076},[506,3617,3618],{"class":1080}," default\n",[506,3620,3621,3624,3626],{"class":508,"line":521},[506,3622,3623],{"class":1072},"  show_token_analytics",[506,3625,1077],{"class":1076},[506,3627,3629],{"class":3628},"sfNiH"," false\n",[506,3631,3632,3635],{"class":508,"line":527},[506,3633,3634],{"class":1072},"  oauth",[506,3636,2011],{"class":1076},[506,3638,3639,3642,3644],{"class":508,"line":533},[506,3640,3641],{"class":1072},"    client_id",[506,3643,1077],{"class":1076},[506,3645,3646],{"class":1080}," agent:cmq02x7ha0002jk0ba3kfnb\n",[506,3648,3649,3652,3654],{"class":508,"line":539},[506,3650,3651],{"class":1072},"    portal_url",[506,3653,1077],{"class":1076},[506,3655,3656],{"class":1080}," https:\u002F\u002Fportal.nousresearch.com\n",[506,3658,3659,3662],{"class":508,"line":545},[506,3660,3661],{"class":1072},"  basic_auth",[506,3663,2011],{"class":1076},[506,3665,3666,3669,3671],{"class":508,"line":551},[506,3667,3668],{"class":1072},"    username",[506,3670,1077],{"class":1076},[506,3672,3673],{"class":1076}," ''\n",[506,3675,3676,3679,3681],{"class":508,"line":557},[506,3677,3678],{"class":1072},"    password_hash",[506,3680,1077],{"class":1076},[506,3682,3673],{"class":1076},[2089,3684,3686],{"id":3685},"configurar-o-systemd-para-iniciar-automaticamente-o-painel-do-hermes","Configurar o Systemd para Iniciar Automaticamente o Painel do Hermes",[1158,3688,3689],{},[481,3690,3691],{},"Crie um arquivo de serviço:",[498,3693,3695],{"className":1801,"code":3694,"language":1803,"meta":424,"style":424},"sudo nano \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-dashboard.service\n",[473,3696,3697],{"__ignoreMap":424},[506,3698,3699,3701,3704],{"class":508,"line":509},[506,3700,3292],{"class":1066},[506,3702,3703],{"class":1080}," nano",[506,3705,3706],{"class":1080}," \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-dashboard.service\n",[1158,3708,3709],{"start":515},[481,3710,3711,3712,3715],{},"Cole a seguinte configuração, garantindo que ",[473,3713,3714],{},"--host 0.0.0.0"," faça parte do comando:",[498,3717,3721],{"className":3718,"code":3719,"language":3720,"meta":424,"style":424},"language-ini shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[Unit]\nDescription=Hermes Dashboard\nAfter=network.target\n\n[Service]\nUser=hermes\nWorkingDirectory=\u002Fhome\u002Fhermes\nExecStart=\u002Fhome\u002Fhermes\u002F.local\u002Fbin\u002Fhermes dashboard --host 0.0.0.0\nRestart=always\nRestartSec=10\nEnvironment=PATH=\u002Fhome\u002Fhermes\u002F.local\u002Fbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fbin:\u002Fbin\n\n[Install]\nWantedBy=multi-user.target\n","ini",[473,3722,3723,3728,3733,3738,3742,3747,3752,3757,3762,3767,3772,3777,3781,3786],{"__ignoreMap":424},[506,3724,3725],{"class":508,"line":509},[506,3726,3727],{},"[Unit]\n",[506,3729,3730],{"class":508,"line":515},[506,3731,3732],{},"Description=Hermes Dashboard\n",[506,3734,3735],{"class":508,"line":521},[506,3736,3737],{},"After=network.target\n",[506,3739,3740],{"class":508,"line":527},[506,3741,1100],{"emptyLinePlaceholder":1007},[506,3743,3744],{"class":508,"line":533},[506,3745,3746],{},"[Service]\n",[506,3748,3749],{"class":508,"line":539},[506,3750,3751],{},"User=hermes\n",[506,3753,3754],{"class":508,"line":545},[506,3755,3756],{},"WorkingDirectory=\u002Fhome\u002Fhermes\n",[506,3758,3759],{"class":508,"line":551},[506,3760,3761],{},"ExecStart=\u002Fhome\u002Fhermes\u002F.local\u002Fbin\u002Fhermes dashboard --host 0.0.0.0\n",[506,3763,3764],{"class":508,"line":557},[506,3765,3766],{},"Restart=always\n",[506,3768,3769],{"class":508,"line":563},[506,3770,3771],{},"RestartSec=10\n",[506,3773,3774],{"class":508,"line":569},[506,3775,3776],{},"Environment=PATH=\u002Fhome\u002Fhermes\u002F.local\u002Fbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fbin:\u002Fbin\n",[506,3778,3779],{"class":508,"line":575},[506,3780,1100],{"emptyLinePlaceholder":1007},[506,3782,3783],{"class":508,"line":581},[506,3784,3785],{},"[Install]\n",[506,3787,3788],{"class":508,"line":587},[506,3789,3790],{},"WantedBy=multi-user.target\n",[1158,3792,3793],{"start":521},[481,3794,3795],{},"Habilite e inicie o serviço:",[498,3797,3799],{"className":1801,"code":3798,"language":1803,"meta":424,"style":424},"sudo systemctl daemon-reload\nsudo systemctl enable hermes-dashboard\nsudo systemctl start hermes-dashboard\nsudo systemctl status hermes-dashboard\n",[473,3800,3801,3810,3821,3832],{"__ignoreMap":424},[506,3802,3803,3805,3807],{"class":508,"line":509},[506,3804,3292],{"class":1066},[506,3806,3295],{"class":1080},[506,3808,3809],{"class":1080}," daemon-reload\n",[506,3811,3812,3814,3816,3818],{"class":508,"line":515},[506,3813,3292],{"class":1066},[506,3815,3295],{"class":1080},[506,3817,3420],{"class":1080},[506,3819,3820],{"class":1080}," hermes-dashboard\n",[506,3822,3823,3825,3827,3830],{"class":508,"line":521},[506,3824,3292],{"class":1066},[506,3826,3295],{"class":1080},[506,3828,3829],{"class":1080}," start",[506,3831,3820],{"class":1080},[506,3833,3834,3836,3838,3840],{"class":508,"line":527},[506,3835,3292],{"class":1066},[506,3837,3295],{"class":1080},[506,3839,3320],{"class":1080},[506,3841,3820],{"class":1080},[1153,3843,3845],{"id":3844},"passo-6-instalar-o-cliente-cloudflare-warp-no-desktop","Passo 6: Instalar o cliente Cloudflare WARP no Desktop",[1158,3847,3848,3856,3859,3866,3873,3880],{},[481,3849,3850,3851,455],{},"Baixe o cliente Cloudflare WARP pelo ",[484,3852,3855],{"href":3853,"rel":3854},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fwarp-client\u002Fget-started\u002F",[488],"portal da Cloudflare",[481,3857,3858],{},"Abra e inicie o cliente Cloudflare WARP após a instalação.",[481,3860,3861,3862],{},"Faça login quando solicitado.\n",[884,3863],{"alt":3864,"src":3865},"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",[481,3867,3868,3869],{},"Uma página de 'Success' (Sucesso) será exibida após o login.\n",[884,3870],{"alt":3871,"src":3872},"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",[481,3874,3875,3876],{},"O cliente WARP agora deve mostrar que está conectado à sua equipe do Zero Trust.\n",[884,3877],{"alt":3878,"src":3879},"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",[481,3881,3882,3883,3886,3887],{},"Navegue até o seu navegador e insira o seu IP privado (ex., ",[473,3884,3885],{},"100.96.0.3","). O Hermes Web Dashboard deve ser carregado com sucesso.\n",[884,3888],{"alt":3889,"src":3890},"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",[3892,3893,3894],"blockquote",{},[434,3895,3896,3899,3900,3904],{},[441,3897,3898],{},"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 ",[441,3901,3902],{},[484,3903,423],{"href":399}," para alternar entre as contas sem problemas.",[1153,3906,3908],{"id":3907},"passo-7-instalar-o-cliente-cloudflare-warp-em-dispositivos-ios","Passo 7: Instalar o cliente Cloudflare WARP em Dispositivos iOS",[1158,3910,3911,3918,3926,3934,3942],{},[481,3912,3913,3914,3917],{},"Instale o ",[441,3915,3916],{},"Cloudflare One"," através da App Store.",[481,3919,3920,3921],{},"Abra o aplicativo Cloudflare One e insira o nome da sua equipe quando solicitado.\n",[884,3922],{"alt":3923,"src":3924,"width":3925},"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,[481,3927,3928,3929],{},"Faça login usando o mesmo endereço de e-mail que foi configurado na regra de política acima.\n",[884,3930],{"alt":3931,"src":3932,"width":3933},"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,[481,3935,3936,3937],{},"Assim que estiver conectado, a tela deve ficar parecida com isto:\n",[884,3938],{"alt":3939,"src":3940,"width":3941},"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,[481,3943,3944,3945,3947,3948],{},"Navegue até o seu navegador e insira o IP privado ",[473,3946,3885],{}," para acessar o Hermes Web Dashboard no seu dispositivo móvel.\n",[884,3949],{"alt":3950,"src":3951,"width":3952},"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,3954,950],{"id":949},[434,3956,3957,3958,3960,3961,3964],{},"Com o ",[441,3959,3123],{}," gerenciando as políticas de identidade e o cliente ",[441,3962,3963],{},"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.",[989,3966,3967],{},"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":515,"depth":521,"links":3969},[3970,3973,3985],{"id":3137,"depth":515,"text":3138,"children":3971},[3972],{"id":3156,"depth":521,"text":3157},{"id":3168,"depth":515,"text":3169,"children":3974},[3975,3976,3977,3978,3979,3983,3984],{"id":3172,"depth":521,"text":3173},{"id":3225,"depth":521,"text":3226},{"id":3363,"depth":521,"text":3364},{"id":3401,"depth":521,"text":3402},{"id":3543,"depth":521,"text":3544,"children":3980},[3981,3982],{"id":3557,"depth":527,"text":3558},{"id":3685,"depth":527,"text":3686},{"id":3844,"depth":521,"text":3845},{"id":3907,"depth":521,"text":3908},{"id":949,"depth":515,"text":950},[1419,1000],"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":3992,"robots":1012,"sitemap":3994},[3993],{"@type":1011,"headline":3108,"description":3988,"name":3108,"image":3989},{"lastmod":3995},"2026-09-28",{"title":3997,"description":3988,"ogTitle":3108,"ogDescription":3988,"twitterTitle":3108,"twitterDescription":3988},"Acesso seguro ao Hermes Agent com Cloudflare Zero Trust","pt\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",[926,1019,3116,4000,4001],"Rede privada","Tutorial","YSMA4-lqPipX1pmOP069tbQJepC0q97hwEJOym2fqzI",1792490007124]