[{"data":1,"prerenderedAt":4032},["ShallowReactive",2],{"published-article-paths":3,"search-navigation":348,"\u002Fes\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac":421,"\u002Fes\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":97,"seo":1014,"stem":1015,"tags":1016,"updatedAt":1020,"__hash__":1021},"article\u002Fes\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac.md","Cambiar entre múltiples perfiles de Cloudflare WARP en 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},"qué-es-cloudflare-warp","¿Qué es Cloudflare WARP?",[434,435,436],"p",{},"Cloudflare WARP es una aplicación de cliente que enruta el tráfico específico de los dispositivos a través de la red global de Cloudflare, en lugar de enviarlo directamente a la internet pública.",[434,438,439,440,444],{},"Crea un túnel cifrado basado en el protocolo ",[441,442,443],"strong",{},"WireGuard",", protegiendo el tráfico desde el dispositivo hasta el centro de datos de Cloudflare más cercano. A continuación, se pueden crear políticas en el panel de control de Cloudflare para filtrar, registrar, inspeccionar o enrutar este tráfico entrante.",[429,446,448],{"id":447},"por-qué-necesitamos-cloudflare-warp","¿Por qué necesitamos Cloudflare WARP?",[434,450,451,452,455],{},"Para exponer de forma segura recursos internos (como servicios web privados o aplicaciones SaaS) a empleados, contratistas y otras partes interesadas, el cliente Cloudflare WARP se utiliza como el punto de aplicación del lado del cliente para el ",[441,453,454],{},"Acceso a la Red de Confianza Cero (ZTNA)",".",[434,457,458],{},"El cliente de Cloudflare WARP se instala en la computadora portátil o el teléfono del usuario. Requiere que los usuarios se autentiquen y cumplan con comprobaciones específicas de estado de seguridad (como provenir de un rango de IP aprobado, usar un dominio de correo electrónico registrado o ejecutar un firewall activo) antes de conceder el acceso.",[434,460,461],{},"Al tunelizar el tráfico del dispositivo directamente a Cloudflare, la identidad del usuario, el dispositivo y las políticas se verifican antes de que las solicitudes lleguen a los recursos internos. Como resultado, los recursos internos nunca se exponen a la internet pública, y cada solicitud se registra y audita por completo.",[429,463,465],{"id":464},"soporte-de-múltiples-perfiles-warp-en-un-dispositivo","Soporte de múltiples perfiles WARP en un dispositivo",[434,467,468],{},"Cuando los usuarios necesitan cambiar entre cuentas corporativas y personales de Cloudflare, o cuando los administradores de sistemas gestionan múltiples inquilinos (tenants), dar soporte a varios perfiles WARP en un solo dispositivo se vuelve fundamental.",[434,470,471,472,476],{},"Para lograr esto en macOS, podemos utilizar un archivo de perfil MDM ",[473,474,475],"code",{},".mobileconfig"," para definir y registrar los diferentes entornos 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"," directamente desde Cloudflare.",[481,495,496],{},"A continuación se muestra un ejemplo de cómo se ve esta configuración:",[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],{},"Reemplace ",[473,833,834],{},"your-team-name-1"," y ",[473,837,838],{},"your-team-name-2"," con sus respectivos nombres de equipo de Cloudflare Zero Trust.",[481,841,842,843,846,847,850,851,455],{},"Ejecute el comando ",[473,844,845],{},"uuidgen"," en su Terminal para generar UUID únicos y utilícelos para reemplazar los valores de marcador de posición ",[473,848,849],{},"PayloadUUID"," en el archivo ",[473,852,475],{},[481,854,855,856,859,860,862],{},"Asegúrese de que la cadena ",[473,857,858],{},"PayloadIdentifier"," también contenga el ",[473,861,849],{}," actualizado para mantener el perfil diferenciado.",[481,864,865,866,868],{},"Guarde su archivo ",[473,867,475],{}," editado.",[481,870,871,872,875,876,879,880,883],{},"Abra ",[441,873,874],{},"Ajustes del Sistema"," en su Mac, busque ",[441,877,878],{},"Perfiles"," y selecciónelo.",[881,882],"br",{},[884,885],"img",{"alt":886,"src":887},"Panel de Perfiles en la Configuración del Sistema de 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],{},"Haga clic en ",[441,892,893],{},"Instalar, ver o eliminar..."," para comenzar a agregar su nuevo perfil de configuración.",[881,896],{},[884,898],{"alt":899,"src":900},"Botón para instalar, ver o eliminar perfiles en 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],{},"Haga clic en el icono ",[441,905,906],{},"+"," (más) en la esquina inferior izquierda y seleccione su archivo ",[473,909,475],{}," guardado.",[881,912],{},[884,914],{"alt":915,"src":916},"Botón más (+) de perfiles de macOS para añadir un nuevo 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},"Selección del archivo .mobileconfig en 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],{},"Seleccione ",[441,925,926],{},"Cloudflare WARP"," y haga clic en ",[441,929,930],{},"Instalar"," para aplicar la configuración.",[881,933],{},[884,935],{"alt":936,"src":937},"Confirmación de la instalación del perfil de Cloudflare WARP en 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 su cliente Cloudflare WARP. Ahora debería ver el conmutador de múltiples perfiles en la interfaz de usuario:",[881,942],{},[884,944],{"alt":945,"src":946},"Cliente de Cloudflare WARP con selector de múltiples perfiles en 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},"conclusión","Conclusión",[434,952,953],{},"El cliente Cloudflare WARP actúa como un punto de seguridad crítico en los dispositivos de los usuarios, lo que hace que el Acceso a la Red de Confianza Cero sea sólido y muy práctico. Mantener los recursos internos aislados de la internet pública garantiza que cada intento de conexión se autentique, evalúe y audite de forma segura.",[429,955,957],{"id":956},"referencias","Referencias",[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","Configura y cambia entre múltiples organizaciones de Cloudflare WARP en macOS utilizando un archivo .mobileconfig. Guía de MDM completa para administradores.","md","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002FES-Switch-Between-Multiple-Cloudflare-WARP-Orgs-on-Mac.webp","Configurar múltiples perfiles Cloudflare WARP en 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},"es\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",[1017,926,1018,1019],"macOS","MDM","Zero Trust",null,"aj2L0bjhdmy_g2uOsHqYyd8bbtwlwGp1vCLs4OV9J8U",{"surround":1023,"related":2252},[1024,1431],{"id":1025,"title":1026,"author":424,"body":1027,"category":1413,"date":1415,"description":1416,"extension":1004,"image":1417,"imageAlt":1418,"isPublished":1007,"meta":1419,"minRead":533,"navigation":1007,"path":73,"seo":1423,"stem":1424,"tags":1425,"updatedAt":1020,"__hash__":1430},"article\u002Fes\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them.md","Habilidades de los agentes de IA: qué son y cómo crearlas",{"type":426,"value":1028,"toc":1403},[1029,1033,1044,1055,1123,1129,1133,1136,1144,1150,1155,1211,1226,1232,1235,1287,1291,1294,1301,1304,1315,1319,1364,1367,1384,1386,1397,1400],[429,1030,1032],{"id":1031},"qué-es-una-habilidad-de-un-agente-de-ia","¿Qué es una habilidad de un agente de IA?",[434,1034,1035,1036,1039,1040,1043],{},"Una habilidad de un agente (agent skill) es un ",[441,1037,1038],{},"conjunto de instrucciones"," reutilizable: un procedimiento estandarizado que le indica al agente cómo realizar correctamente un tipo específico de tarea. Consiste en un único archivo en formato Markdown, ",[473,1041,1042],{},"SKILL.md",", y puede incluir cualquier otro archivo que requiera la tarea, como documentos de referencia, plantillas o scripts ejecutables.",[434,1045,1046,1047,1054],{},"Tomemos como ejemplo la habilidad ",[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",":",[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,1081,1091,1095,1100,1105,1109,1114,1118],{"__ignoreMap":424},[506,1063,1064],{"class":508,"line":509},[506,1065,1067],{"class":1066},"sBMFI","---\n",[506,1069,1070,1074,1077],{"class":508,"line":515},[506,1071,1073],{"class":1072},"swJcz","name",[506,1075,1054],{"class":1076},"sMK4o",[506,1078,1080],{"class":1079},"sfazB"," grill-me\n",[506,1082,1083,1086,1088],{"class":508,"line":521},[506,1084,1085],{"class":1072},"description",[506,1087,1054],{"class":1076},[506,1089,1090],{"class":1079}," 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,1092,1093],{"class":508,"line":527},[506,1094,1067],{"class":1066},[506,1096,1097],{"class":508,"line":533},[506,1098,1099],{"emptyLinePlaceholder":1007},"\n",[506,1101,1102],{"class":508,"line":539},[506,1103,1104],{"class":1079},"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,1106,1107],{"class":508,"line":545},[506,1108,1099],{"emptyLinePlaceholder":1007},[506,1110,1111],{"class":508,"line":551},[506,1112,1113],{"class":1079},"Ask the questions one at a time.\n",[506,1115,1116],{"class":508,"line":557},[506,1117,1099],{"emptyLinePlaceholder":1007},[506,1119,1120],{"class":508,"line":563},[506,1121,1122],{"class":1079},"If a question can be answered by exploring the codebase, explore the codebase instead.\n",[434,1124,1125,1126,1128],{},"Un archivo ",[473,1127,1042],{}," contiene un pequeño bloque de metadatos y un cuerpo de instrucciones. Los metadatos incluyen el nombre y la descripción de la habilidad, que el agente de IA carga al iniciarse.",[429,1130,1132],{"id":1131},"cómo-funcionan-las-habilidades-de-agentes-de-ia-divulgación-progresiva","Cómo funcionan las habilidades de agentes de IA: divulgación progresiva",[434,1134,1135],{},"Inicialmente, solo se cargan en el contexto el nombre y la descripción de la habilidad. Cuando la solicitud del usuario coincide con la descripción de una habilidad, el cuerpo completo de instrucciones se carga en el mismo contexto.",[434,1137,1138,1139,455],{},"Veamos cómo se utiliza la habilidad ",[484,1140,1142],{"href":1049,"rel":1141},[488],[473,1143,1053],{},[434,1145,1146],{},[884,1147],{"alt":1148,"src":1149},"Diagrama de secuencia que ilustra el mecanismo de divulgación progresiva para la ejecución 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",[1151,1152,1154],"h3",{"id":1153},"paso-a-paso","Paso a paso",[1156,1157,1158,1164,1170,1176,1182,1195,1205],"ol",{},[481,1159,1160,1163],{},[441,1161,1162],{},"Solicitud (Request)"," — El usuario le pide algo al agente (\"pon a prueba el diseño de mi flujo de trabajo\").",[481,1165,1166,1169],{},[441,1167,1168],{},"Prompt de selección"," — La solicitud del usuario, junto con las descripciones de todas las habilidades disponibles, se envía al LLM.",[481,1171,1172,1175],{},[441,1173,1174],{},"Selección del LLM"," — El LLM compara la solicitud con cada descripción y devuelve la habilidad o habilidades que coinciden.",[481,1177,1178,1181],{},[441,1179,1180],{},"Confirmación"," — El agente muestra la habilidad propuesta al usuario, quien confirma (or rechaza\u002Fajusta) la elección.",[481,1183,1184,1187,1188,1192,1193,455],{},[441,1185,1186],{},"Carga de instrucciones"," — El agente obtiene las instrucciones ",[1189,1190,1191],"em",{},"completas"," de la habilidad confirmada: el cuerpo de ",[473,1194,1042],{},[481,1196,1197,1200,1201,1204],{},[441,1198,1199],{},"Prompt de ejecución"," — La solicitud del usuario ",[441,1202,1203],{},"junto con las instrucciones de la habilidad seleccionada"," se envía al LLM.",[481,1206,1207,1210],{},[441,1208,1209],{},"Respuesta"," — El LLM genera el resultado, que en este caso es la primera pregunta del interrogatorio.",[434,1212,1213,1214,1221,1222,1225],{},"Ahora vamos a usar ",[484,1215,1218],{"href":1216,"rel":1217},"https:\u002F\u002Fgithub.com\u002Fcoleam00\u002Fexcalidraw-diagram-skill",[488],[473,1219,1220],{},"excalidraw-diagram-skill"," para ilustrar cómo se utiliza una ",[1189,1223,1224],{},"skill"," con un documento de referencia:",[434,1227,1228],{},[884,1229],{"alt":1230,"src":1231},"Diagrama de secuencia que muestra a un agente de IA ejecutando una habilidad cargada con archivos de referencia y plantillas externas","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",[1151,1233,1154],{"id":1234},"paso-a-paso-1",[1156,1236,1237,1242,1246,1255,1259,1271,1278],{},[481,1238,1239,1241],{},[441,1240,1162],{}," — El usuario le pide algo al agente (\"dibuja el flujo de trabajo del proceso de despliegue\").",[481,1243,1244,1169],{},[441,1245,1168],{},[481,1247,1248,1250,1251,1254],{},[441,1249,1174],{}," — El LLM compara la solicitud con cada descripción y devuelve la habilidad o habilidades que coinciden. En este caso, \"dibuja el flujo de trabajo\" coincide con la descripción de ",[473,1252,1253],{},"excalidraw-diagram",", por lo que se selecciona.",[481,1256,1257,1181],{},[441,1258,1180],{},[481,1260,1261,1187,1263,1192,1265,1267,1268,1270],{},[441,1262,1186],{},[1189,1264,1191],{},[473,1266,1042],{}," y cualquier archivo de referencia (para ",[473,1269,1253],{},", esto incluye la paleta de colores, el esquema JSON y las plantillas de elementos).",[481,1272,1273,1200,1275,1277],{},[441,1274,1199],{},[441,1276,1203],{}," se envía al LLM. El modelo dispone ahora de la metodología detallada que necesita.",[481,1279,1280,1282,1283,1286],{},[441,1281,1209],{}," — El LLM genera el resultado (un archivo JSON ",[473,1284,1285],{},".excalidraw","), que el agente devuelve al usuario.",[429,1288,1290],{"id":1289},"habilidades-de-agentes-de-ia-frente-a-herramientas-y-mcp","Habilidades de agentes de IA frente a herramientas y MCP",[434,1292,1293],{},"Las habilidades no sustituyen a los prompts, a las herramientas ni al Model Context Protocol (MCP). Las herramientas y las integraciones MCP amplían el alcance de un agente hacia sistemas externos (como consultar una base de datos, llamar a una API, etc.). Las habilidades, por su parte, profundizan el conocimiento del agente para completar una tarea.",[434,1295,1296,1297,1300],{},"Un MCP como el ",[484,1298,1299],{"href":395},"Configuración de NetSuite MCP en ChatGPT y Claude"," permite que un agente responda a preguntas de los usuarios accediendo a datos financieros y operativos en tiempo real en NetSuite. A su vez, una habilidad de informes operativos de NetSuite guiará al agente sobre cómo redactar ese informe y presentar la respuesta de forma clara al usuario.",[434,1302,1303],{},"Algunos escenarios habituales para usar habilidades son:",[478,1305,1306,1309,1312],{},[481,1307,1308],{},"Flujos de trabajo de varios pasos",[481,1310,1311],{},"Procesamiento de documentos, como la extracción de datos de archivos PDF",[481,1313,1314],{},"Estándares de generación de código",[429,1316,1318],{"id":1317},"cómo-crear-habilidades-de-agentes-de-ia","Cómo crear habilidades de agentes de IA",[1156,1320,1321,1331,1345,1354],{},[481,1322,1323,1326,1327,1330],{},[441,1324,1325],{},"Crea una carpeta"," con el nombre de la habilidad (por ejemplo, ",[473,1328,1329],{},"netsuite-operation-report\u002F",").",[481,1332,1333,1338,1339,1341,1342,1344],{},[441,1334,1335,1336],{},"Escribe ",[473,1337,1042],{}," con un campo ",[473,1340,1073],{},", una ",[473,1343,1085],{}," clara y concisa, y un cuerpo de instrucciones breve (menos de 200 palabras).",[481,1346,1347,1350,1351,1353],{},[441,1348,1349],{},"Añade recursos"," que la tarea necesite (documentos de referencia, plantillas, scripts). Mantén el archivo ",[473,1352,1042],{}," corto y enlaza los detalles externos.",[481,1355,1356,1359,1360,1363],{},[441,1357,1358],{},"Instálala"," en un lugar donde los agentes puedan descubrirla. Consulta ",[484,1361,1362],{"href":359},"Centralizar las habilidades de los agentes"," para saber cómo gestionar habilidades en múltiples agentes.",[434,1365,1366],{},"Consejos para escribir buenas habilidades:",[478,1368,1369,1372,1378,1381],{},[481,1370,1371],{},"Escribe la descripción pensando en el disparador del sistema (trigger), no en un lector humano.",[481,1373,1374,1375,1377],{},"Mantén ",[473,1376,1042],{}," ligero (menos de 200 palabras). Describe el caso general en el cuerpo e introduce los casos extremos en documentos de referencia.",[481,1379,1380],{},"Utiliza scripts para cualquier tarea determinista. No le pidas al LLM que realice operaciones aritméticas.",[481,1382,1383],{},"Controla las versiones. Guárdalo en tu repositorio de git.",[429,1385,950],{"id":949},[434,1387,1388,1389,1392,1393,1396],{},"A diferencia de las herramientas y MCP, que definen ",[1189,1390,1391],{},"con qué conectarse",", las habilidades de los agentes empaquetan ",[1189,1394,1395],{},"cómo hacer el trabajo",". Son un complemento esencial, no un sustituto.",[434,1398,1399],{},"Al aprovechar la divulgación progresiva, las habilidades mantienen la ventana de contexto del agente limpia y eficiente, cargando instrucciones detalladas, documentos de referencia y scripts ejecutables únicamente cuando la solicitud del usuario los activa.",[989,1401,1402],{},"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":1404},[1405,1406,1410,1411,1412],{"id":1031,"depth":515,"text":1032},{"id":1131,"depth":515,"text":1132,"children":1407},[1408,1409],{"id":1153,"depth":521,"text":1154},{"id":1234,"depth":521,"text":1154},{"id":1289,"depth":515,"text":1290},{"id":1317,"depth":515,"text":1318},{"id":949,"depth":515,"text":950},[1414],"ai-agents","2026-06-26","Descubre qué son las habilidades de los agentes de IA, cómo funciona la divulgación progresiva y aprende a crear flujos de trabajo reutilizables y eficaces.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FAI%20Agent%20Skills%20What%20They%20Are%20%26%20How%20to%20Create%20Them\u002FES-AI-Agent-Skills-What-They-Are-%26-How-to-Create-Them.webp","Guía de habilidades de agentes de IA: Crea flujos de trabajo",{"schemaOrg":1420,"robots":1012,"sitemap":1422},[1421],{"@type":1011,"headline":1026,"description":1416},{"lastmod":1415},{"title":1418,"description":1416,"ogTitle":1026,"ogDescription":1416,"twitterTitle":1026,"twitterDescription":1416},"es\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",[1426,1427,1428,1429],"Agentes de IA","Habilidades de Agente","Flujos de Trabajo Reutilizables","Tutorial de IA","h3yYdb1PxlW2yIGKr5aTDiwHSQ9Wz-ia-nw8HRNNffk",{"id":1432,"title":1433,"author":1020,"body":1434,"category":2233,"date":2234,"description":2235,"extension":1004,"image":2236,"imageAlt":2237,"isPublished":1007,"meta":2238,"minRead":551,"navigation":1007,"path":105,"seo":2244,"stem":2245,"tags":2246,"updatedAt":1020,"__hash__":2251},"article\u002Fes\u002Farticle\u002Fuse-cloudflare-as-ai-memory.md","Construir memoria persistente de IA con Cloudflare y MCP",{"type":426,"value":1435,"toc":2215},[1436,1440,1443,1446,1450,1453,1467,1471,1478,1492,1495,1498,1542,1546,1629,1633,1659,1776,1787,1791,1796,1841,1865,1869,1874,1947,1952,1956,1990,1998,2037,2041,2073,2077,2085,2090,2120,2124,2164,2166,2169,2172,2175,2178,2212],[429,1437,1439],{"id":1438},"la-importancia-de-la-memoria-persistente-de-ia-para-los-agentes","La importancia de la memoria persistente de IA para los agentes",[434,1441,1442],{},"A medida que los asistentes de IA se integran en nuestro día a día, nos encontramos con frecuencia con el problema del contexto en blanco. Las decisiones tomadas la semana pasada se olvidan, lo que nos obliga a introducir los mismos detalles del stack tecnológico y configurar las preferencias del usuario una y otra vez.",[434,1444,1445],{},"En lugar de empezar de cero cada vez, necesitamos construir un sistema de memoria que evolucione, comprenda continuamente las decisiones del usuario y elimine la necesidad de repetir el contexto.",[429,1447,1449],{"id":1448},"sistemas-de-memoria-autohospedados-frente-a-integrados","Sistemas de memoria autohospedados frente a integrados",[434,1451,1452],{},"Muchos agentes de IA vienen con memoria integrada, pero no usamos solo un agente para todo. Usamos Claude para diseñar y estructurar un proyecto, Kimi para programar y ChatGPT para investigar. El contexto no se comparte entre estos agentes; permanece aislado en cada uno de ellos.",[434,1454,1455,1456,1461,1462,1466],{},"Desde el punto de vista de la ingeniería de software, no confiamos en las cajas negras. Necesitamos un sistema de memoria de IA que sea observable, auditable y que esté bajo nuestro control. El proyecto de código abierto ",[484,1457,1460],{"href":1458,"rel":1459},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fsecond-brain-cloudflare\u002Ftree\u002Fmain",[488],"Second Brain",", un fork de ",[484,1463,1464],{"href":1464,"rel":1465},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare",[488],", proporciona un sistema de memoria persistente y autoalojado con soporte para Model Context Protocol (MCP). Cualquier agente de IA compatible, como Claude, ChatGPT o Kimi Code, puede compartir el mismo contexto.",[429,1468,1470],{"id":1469},"cómo-construir-un-second-brain-de-memoria-de-ia-en-cloudflare","Cómo construir un Second Brain de memoria de IA en Cloudflare",[434,1472,1473,1474,1477],{},"El sistema de memoria Second Brain se despliega en ",[441,1475,1476],{},"Cloudflare Workers",", lo que proporciona una infraestructura de servidores de ejecución de baja latencia y distribución global. Esto permite que la recuperación de memoria y otras operaciones se ejecuten con una latencia mínima para el bucle de razonamiento de la IA.",[434,1479,1480,1481,1484,1485,1488,1489,1491],{},"Se utiliza el modelo de embeddings de ",[441,1482,1483],{},"Workers AI"," para generar los vectores. Estos embeddings se almacenan en ",[441,1486,1487],{},"Cloudflare Vectorize",", que es una base de datos vectorial distribuida globalmente. ",[441,1490,1487],{}," realiza la búsqueda de similitud de coseno para encontrar memorias relacionadas semánticamente.",[434,1493,1494],{},"En Second Brain se implementan mecanismos de detección de duplicados y fusión inteligente. Se almacena el contenido con menos de un 85% de similitud; de lo contrario, se bloquea o se marca como candidato a duplicado. El texto que supera los 1.600 caracteres se divide en los límites de las oraciones o saltos de línea con un solapamiento de 200 caracteres para evitar la pérdida de contexto. Luego, cada fragmento se incrusta como un vector, lo que permite una coincidencia precisa.",[434,1496,1497],{},"Las siguientes herramientas se exponen como interfaces MCP para ser utilizadas en agentes de IA:",[478,1499,1500,1506,1512,1518,1524,1530,1536],{},[481,1501,1502,1505],{},[473,1503,1504],{},"remember",": Almacena ideas, decisiones, preferencias y contexto del proyecto.",[481,1507,1508,1511],{},[473,1509,1510],{},"append",": Añade una actualización a una memoria existente.",[481,1513,1514,1517],{},[473,1515,1516],{},"update",": Reemplaza una memoria existente.",[481,1519,1520,1523],{},[473,1521,1522],{},"recall",": Busca memorias por significado en lugar de por redacción exacta.",[481,1525,1526,1529],{},[473,1527,1528],{},"list_recent",": Explora las memorias guardadas recientemente.",[481,1531,1532,1535],{},[473,1533,1534],{},"forget",": Elimina permanentemente una memoria.",[481,1537,1538,1541],{},[473,1539,1540],{},"link\u002Fconnections",": Conecta memorias relacionadas (función de grafo de la v2).",[1151,1543,1545],{"id":1544},"configuración-de-second-brain-en-cloudflare","Configuración de Second Brain en Cloudflare",[1156,1547,1548,1566,1573,1580,1587,1594,1605,1612,1615,1622],{},[481,1549,1550,1551,1554,1555,1560,1561,1565],{},"Haz clic en ",[473,1552,1553],{},"Deploy to Cloudflare"," en la página del ",[484,1556,1559],{"href":1557,"rel":1558},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fsecond-brain-cloudflare",[488],"Github repo",". [[",[884,1562],{"alt":1563,"src":1564},"Página de GitHub con el botón Deploy to Cloudflare destacado","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fdeploy-to-cloudflare-button.webp","]]",[481,1567,1568,1569],{},"Completa el formulario de Cloudflare Worker.\n",[884,1570],{"alt":1571,"src":1572},"Formulario de configuración de despliegue de Cloudflare Workers","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-deployment-form.webp",[481,1574,1575,1576],{},"Introduce '384' para Dimensions, selecciona 'cosine' para Metric y haz clic en el botón Deploy.\n",[884,1577],{"alt":1578,"src":1579},"Pantalla de configuración para la creación de base de datos de Cloudflare Vectorize","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-vectorize-configuration.webp",[481,1581,1582,1583],{},"A continuación se muestra la vista general de Second Brain en Cloudflare Worker:\n",[884,1584],{"alt":1585,"src":1586},"Panel de control general del worker de Second Brain desplegado","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-second-brain-overview.webp",[481,1588,1589,1590],{},"Haz clic en 'Settings' y luego en el icono de edición de 'AUTH_TOKEN' para crear un token:\n",[884,1591],{"alt":1592,"src":1593},"Configuración de variables de Cloudflare Worker destacando AUTH_TOKEN","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-auth-token-settings.webp",[481,1595,1596,1597,1601],{},"Haz clic en el enlace 'Rotate' para introducir un nuevo valor: ",[884,1598],{"alt":1599,"src":1600},"Pantalla de modificación y rotación de la variable AUTH_TOKEN","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-auth-token-rotate.webp",[884,1602],{"alt":1603,"src":1604},"Introduciendo la cadena aleatoria generada en el campo de valor AUTH_TOKEN","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-auth-token-value-input.webp",[481,1606,1607,1608,1611],{},"Ejecuta el comando ",[473,1609,1610],{},"openssl rand -base64 32"," en la terminal de macOS para crear un valor aleatorio y pégalo en el campo de entrada 'Value'.",[481,1613,1614],{},"Haz clic en el botón 'Deploy' para actualizar el nuevo valor de 'AUTH_TOKEN'.",[481,1616,1617,1618],{},"Abre la URL del worker de Second Brain en el navegador web:\n",[884,1619],{"alt":1620,"src":1621},"Pantalla de inicio de sesión de la interfaz web de Second Brain con entrada de token Bearer","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fsecond-brain-web-ui-login.webp",[481,1623,1624,1625,1628],{},"Introduce el 'AUTH_TOKEN' creado en el campo de entrada ",[473,1626,1627],{},"Bearer token"," y haz clic en el botón 'Connect' para iniciar sesión en la interfaz web.",[1151,1630,1632],{"id":1631},"integración-de-claude-desktop-a-través-de-mcp","Integración de Claude Desktop a través de MCP",[1156,1634,1635,1642,1649],{},[481,1636,1637,1638],{},"Haz clic en 'Customize' en Claude Desktop.\n",[884,1639],{"alt":1640,"src":1641},"Interfaz de Claude Desktop señalando el botón Customize","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-customize-button.webp",[481,1643,1644,1645],{},"Haz clic en 'Developer' para editar manualmente el archivo de configuración de los servidores MCP:\n",[884,1646],{"alt":1647,"src":1648},"Menú de configuración de desarrollador de Claude Desktop para acceder a la configuración de MCP","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-developer-menu.webp",[481,1650,1651,1652,1655,1656,1054],{},"Añade el siguiente código a la sección ",[473,1653,1654],{},"mcpServers"," en ",[473,1657,1658],{},"claude_desktop_config.json",[498,1660,1664],{"className":1661,"code":1662,"language":1663,"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,1665,1666,1684,1708,1722,1734,1745,1756,1766,1771],{"__ignoreMap":424},[506,1667,1668,1671,1674,1677,1681],{"class":508,"line":509},[506,1669,1670],{"class":1076},"    \"",[506,1672,1673],{"class":1079},"second-brain",[506,1675,1676],{"class":1076},"\"",[506,1678,1680],{"class":1679},"sTEyZ",": ",[506,1682,1683],{"class":1076},"{\n",[506,1685,1686,1689,1693,1695,1697,1700,1703,1705],{"class":508,"line":515},[506,1687,1688],{"class":1076},"      \"",[506,1690,1692],{"class":1691},"spNyl","command",[506,1694,1676],{"class":1076},[506,1696,1054],{"class":1076},[506,1698,1699],{"class":1076}," \"",[506,1701,1702],{"class":1079},"npx",[506,1704,1676],{"class":1076},[506,1706,1707],{"class":1076},",\n",[506,1709,1710,1712,1715,1717,1719],{"class":508,"line":521},[506,1711,1688],{"class":1076},[506,1713,1714],{"class":1691},"args",[506,1716,1676],{"class":1076},[506,1718,1054],{"class":1076},[506,1720,1721],{"class":1076}," [\n",[506,1723,1724,1727,1730,1732],{"class":508,"line":527},[506,1725,1726],{"class":1076},"        \"",[506,1728,1729],{"class":1079},"mcp-remote",[506,1731,1676],{"class":1076},[506,1733,1707],{"class":1076},[506,1735,1736,1738,1741,1743],{"class":508,"line":533},[506,1737,1726],{"class":1076},[506,1739,1740],{"class":1079},"https:\u002F\u002F\u003Cyour-worker-url>\u002Fmcp",[506,1742,1676],{"class":1076},[506,1744,1707],{"class":1076},[506,1746,1747,1749,1752,1754],{"class":508,"line":539},[506,1748,1726],{"class":1076},[506,1750,1751],{"class":1079},"--header",[506,1753,1676],{"class":1076},[506,1755,1707],{"class":1076},[506,1757,1758,1760,1763],{"class":508,"line":545},[506,1759,1726],{"class":1076},[506,1761,1762],{"class":1079},"Authorization: Bearer \u003Cyour-token>",[506,1764,1765],{"class":1076},"\"\n",[506,1767,1768],{"class":508,"line":551},[506,1769,1770],{"class":1076},"      ]\n",[506,1772,1773],{"class":508,"line":557},[506,1774,1775],{"class":1076},"    }\n",[434,1777,1778,1782,1783],{},[884,1779],{"alt":1780,"src":1781},"JSON de configuración de MCP de Claude Desktop que contiene el servidor de Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-mcp-config-json.webp","\n4. Reinicia Claude Desktop y verifica los 'Local MCP servers'. El estado debería ser 'running':\n",[884,1784],{"alt":1785,"src":1786},"Claude Desktop mostrando el estado activo para el servidor MCP de Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-mcp-status-running.webp",[1151,1788,1790],{"id":1789},"integración-de-claude-code-a-través-de-mcp","Integración de Claude Code a través de MCP",[478,1792,1793],{},[481,1794,1795],{},"Ejecuta el siguiente comando para añadir el MCP:",[498,1797,1801],{"className":1798,"code":1799,"language":1800,"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,1802,1803],{"__ignoreMap":424},[506,1804,1805,1808,1811,1814,1817,1820,1823,1826,1829,1832,1835,1838],{"class":508,"line":509},[506,1806,1807],{"class":1066},"claude",[506,1809,1810],{"class":1079}," mcp",[506,1812,1813],{"class":1079}," add",[506,1815,1816],{"class":1079}," --transport",[506,1818,1819],{"class":1079}," http",[506,1821,1822],{"class":1079}," second-brain",[506,1824,1825],{"class":1079}," https:\u002F\u002F",[506,1827,1828],{"class":1076},"\u003C",[506,1830,1831],{"class":1079},"your-worker-ur",[506,1833,1834],{"class":1679},"l",[506,1836,1837],{"class":1076},">",[506,1839,1840],{"class":1079},"\u002Fmcp\n",[478,1842,1843,1849],{},[481,1844,1845,1846,455],{},"Claude Code detectará que el endpoint requiere OAuth y abrirá la página de inicio de sesión en el navegador web para introducir el ",[473,1847,1848],{},"AUTH_TOKEN",[481,1850,1851,1852,1855,1856,1859,1860,455],{},"Crea el archivo ",[473,1853,1854],{},"CLAUDE.md"," en la carpeta ",[473,1857,1858],{},"~\u002F.claude"," con las instrucciones de ",[484,1861,1864],{"href":1862,"rel":1863},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare\u002Fblob\u002Fmain\u002FAI_Instructions\u002FCLAUDE_INSTRUCTIONS.md",[488],"CLAUDE_INSTRUCTIONS.md",[1151,1866,1868],{"id":1867},"integración-de-gemini-cli-a-través-de-mcp","Integración de Gemini CLI a través de MCP",[1156,1870,1871],{},[481,1872,1873],{},"Añade los siguientes ajustes del servidor MCP a '.\u002F.gemini\u002Fsettings.json':",[498,1875,1877],{"className":1661,"code":1876,"language":1663,"meta":424,"style":424},"    \"second-brain\": {\n      \"httpUrl\": \"https:\u002F\u002F\u003Cyour-worker-url>\u002Fmcp\",\n      \"oauth\": {\n        \"enabled\": true\n      }\n    }\n",[473,1878,1879,1891,1910,1924,1938,1943],{"__ignoreMap":424},[506,1880,1881,1883,1885,1887,1889],{"class":508,"line":509},[506,1882,1670],{"class":1076},[506,1884,1673],{"class":1079},[506,1886,1676],{"class":1076},[506,1888,1680],{"class":1679},[506,1890,1683],{"class":1076},[506,1892,1893,1895,1898,1900,1902,1904,1906,1908],{"class":508,"line":515},[506,1894,1688],{"class":1076},[506,1896,1897],{"class":1691},"httpUrl",[506,1899,1676],{"class":1076},[506,1901,1054],{"class":1076},[506,1903,1699],{"class":1076},[506,1905,1740],{"class":1079},[506,1907,1676],{"class":1076},[506,1909,1707],{"class":1076},[506,1911,1912,1914,1917,1919,1921],{"class":508,"line":521},[506,1913,1688],{"class":1076},[506,1915,1916],{"class":1691},"oauth",[506,1918,1676],{"class":1076},[506,1920,1054],{"class":1076},[506,1922,1923],{"class":1076}," {\n",[506,1925,1926,1928,1931,1933,1935],{"class":508,"line":527},[506,1927,1726],{"class":1076},[506,1929,1930],{"class":1066},"enabled",[506,1932,1676],{"class":1076},[506,1934,1054],{"class":1076},[506,1936,1937],{"class":1076}," true\n",[506,1939,1940],{"class":508,"line":533},[506,1941,1942],{"class":1076},"      }\n",[506,1944,1945],{"class":508,"line":539},[506,1946,1775],{"class":1076},[1156,1948,1949],{"start":515},[481,1950,1951],{},"Inicia Gemini CLI.",[1151,1953,1955],{"id":1954},"prueba-de-second-brain-en-agentes-de-ia","Prueba de Second Brain en agentes de IA",[1156,1957,1958,1969,1983],{},[481,1959,1960,1961,1964,1965],{},"Al empezar con una configuración sencilla de paleta de colores de marca en ",[441,1962,1963],{},"Claude Desktop",", no se llama a Second Brain.\n",[884,1966],{"alt":1967,"src":1968},"Primera prueba en Claude Desktop sin la capa de memoria de Second Brain activa","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-first-run-brand-palette.webp",[481,1970,1971,1972,1975,1976,1978,1979],{},"Al probar con la palabra clave 'remember', solo se utilizan las herramientas ",[473,1973,1974],{},"memory_user-edits"," integradas en ",[441,1977,1963],{},", pero no Second Brain.\n",[884,1980],{"alt":1981,"src":1982},"Claude Desktop recurriendo a las ediciones de usuario integradas locales en lugar de Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-remember-built-in-tool-fallback.webp",[481,1984,1985,1986,1989],{},"Al probar el siguiente prompt en ",[441,1987,1988],{},"Claude Code",", se llamó a Second Brain:",[498,1991,1996],{"className":1992,"code":1994,"language":1995},[1993],"language-text","Remember Our brand palette uses `#1a1a2e` as primary, `#16213e` as secondary, and `#e94560` as accent. Never use pure black.\"\n","text",[473,1997,1994],{"__ignoreMap":424},[434,1999,2000,2004,2005,2008,2009,2013,2014,2017,2018,2020,2021,2025,2026,2029,2030,2013,2034],{},[884,2001],{"alt":2002,"src":2003},"Ventana de terminal de Claude Code mostrando el activador exitoso de Second Brain MCP","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-code-second-brain-mcp-called.webp","\n4. Se verificó la configuración de colores en ",[441,2006,2007],{},"Second Brain en Cloudflare",":\n",[884,2010],{"alt":2011,"src":2012},"Verificando los códigos de color de marca guardados en la interfaz web de la base de datos de Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fsecond-brain-web-ui-color-verification.webp","\n- ",[1189,2015,2016],{},"La razón por la que funcionó en Claude Code fue porque CLAUDE_INSTRUCTIONS.md contiene las palabras clave de 'Second Brain'.","\n5. Al incluir 'Second Brain' como palabras clave en ",[441,2019,1963],{},", es necesario especificarlas explícitamente para almacenar y recuperar de la capa de memoria de Second Brain.\n",[884,2022],{"alt":2023,"src":2024},"Activando Second Brain en Claude Desktop mencionando explícitamente palabras clave","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-second-brain-explicit-trigger.webp","\n6. También es necesario mencionar las palabras clave 'Second Brain' en ",[441,2027,2028],{},"Gemini CLI"," para activar el MCP de Second Brain.\n",[884,2031],{"alt":2032,"src":2033},"Ventana de terminal de Gemini CLI demostrando llamadas exitosas a Second Brain MCP","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fgemini-cli-second-brain-trigger.webp",[1189,2035,2036],{},"Añadir instrucciones similares a GEMINI.md, al igual que se hizo en CLAUDE_INSTRUCTIONS.md, activará Second Brain sin necesidad de mencionar las palabras clave de forma explícita.",[1151,2038,2040],{"id":2039},"extensiones-para-navegadores-web","Extensiones para navegadores web",[478,2042,2043,2046],{},[481,2044,2045],{},"Hay extensiones disponibles para los navegadores Chrome, Firefox y Microsoft Edge.",[481,2047,2048,2049],{},"Estas extensiones sirven para:\n",[478,2050,2051,2057,2063],{},[481,2052,2053,2056],{},[441,2054,2055],{},"Capturar la página actual",": guarda el título y la URL en Second Brain.",[481,2058,2059,2062],{},[441,2060,2061],{},"Capturar texto resaltado",": selecciona cualquier texto en una página antes de hacer clic en capturar; el fragmento se guarda junto con el título y la URL.",[481,2064,2065,2068,2069,2072],{},[441,2066,2067],{},"Añadir una nota",": escribe contexto o ",[473,2070,2071],{},"#hashtags"," en la ventana emergente antes de guardar; los hashtags se extraen automáticamente como etiquetas.",[1151,2074,2076],{"id":2075},"sincronización-del-conocimiento-personal-con-el-plugin-de-obsidian","Sincronización del conocimiento personal con el plugin de Obsidian",[478,2078,2079,2082],{},[481,2080,2081],{},"Existe un plugin de Obsidian disponible para sincronizar las notas de tu Obsidian Vault con tu Second Brain en Cloudflare.",[481,2083,2084],{},"Las notas pueden ser etiquetadas para su sincronización con Second Brain.",[2086,2087,2089],"h4",{"id":2088},"instalar-el-plugin-de-obsidian","Instalar el plugin de Obsidian",[1156,2091,2092,2099,2106,2113],{},[481,2093,2094,2095],{},"Abre Obsidian → Settings → Community Plugins\n",[884,2096],{"alt":2097,"src":2098},"Panel de configuración de Obsidian navegando a la sección Community Plugins","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-settings-community-plugins.webp",[481,2100,2101,2102],{},"Haz clic en el botón 'Browse'.\n",[884,2103],{"alt":2104,"src":2105},"Página de búsqueda de plugins de comunidad de Obsidian mostrando el botón Browse","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-community-plugins-browse.webp",[481,2107,2108,2109],{},"Busca 'Second Brain Sync'.\n",[884,2110],{"alt":2111,"src":2112},"Buscando el plugin Second Brain Sync en la tienda de plugins de Obsidian","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-community-plugins-search-second-brain.webp",[481,2114,2115,2116],{},"Haz clic en el botón 'Install' y luego en 'Enable'.\n",[884,2117],{"alt":2118,"src":2119},"Instalando y activando el plugin Second Brain Sync en Obsidian","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-plugin-install-and-enable.webp",[2086,2121,2123],{"id":2122},"configurar-el-plugin-de-obsidian","Configurar el plugin de Obsidian",[1156,2125,2126,2129,2136,2143,2150,2157],{},[481,2127,2128],{},"Abre Obsidian → Settings → Second Brain Sync",[481,2130,2131,2132],{},"Introduce la 'URL' y el 'Auth token'.\n",[884,2133],{"alt":2134,"src":2135},"Introduciendo la URL del Worker y el Token de autorización en la configuración de Obsidian","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-plugin-configuration-credentials.webp",[481,2137,2138,2139],{},"Haz clic en el botón 'Test' para verificar la conexión.\n",[884,2140],{"alt":2141,"src":2142},"Prueba de conexión del plugin de Obsidian mostrando una verificación exitosa","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-plugin-connection-test-success.webp",[481,2144,2145,2146],{},"Configura los comportamientos de sincronización. Establece la 'Sync tag' y habilita 'Auto-sync on save'.\n",[884,2147],{"alt":2148,"src":2149},"Configurando el Sync Tag y activando Auto-sync on save en Obsidian","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-plugin-sync-behavior-settings.webp",[481,2151,2152,2153],{},"Crea una nota en Obsidian con la etiqueta 'second-brain', tal como se configuró en 'Sync tag'.\n",[884,2154],{"alt":2155,"src":2156},"Creando una nueva nota en Obsidian etiquetada con second-brain para su sincronización","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-note-with-sync-tag.webp",[481,2158,2159,2160],{},"La nota se ha guardado y sincronizado con el Second Brain desplegado en Cloudflare.\n",[884,2161],{"alt":2162,"src":2163},"Verificando la nota de Obsidian sincronizada con éxito en la interfaz web de Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fsecond-brain-web-ui-synced-note-verification.webp",[429,2165,950],{"id":949},[434,2167,2168],{},"Second Brain proporciona una solución de código abierto a uno de los problemas más frustrantes de la IA: la memoria persistente. Al combinarlo con la infraestructura de Cloudflare, ofrece una capa de memoria totalmente autoalojada y distribuida globalmente con baja latencia. Las herramientas MCP integradas en Second Brain hacen que esta memoria sea portátil entre todos los agentes de IA.",[434,2170,2171],{},"El plugin de Obsidian extiende Second Brain a la gestión del conocimiento personal. Las notas de un vault de Obsidian se pueden sincronizar de forma selectiva con Second Brain, transformando notas sin procesar en un contexto estructurado que los agentes de IA pueden comprender y recuperar semánticamente.",[434,2173,2174],{},"Al combinar autohospedaje, búsqueda semántica e integración MCP basada en estándares, Second Brain demuestra ser más que una simple capa de memoria: es una base práctica para construir un ecosistema de IA.",[429,2176,2177],{"id":956},"Referencias:",[478,2179,2180,2186,2192,2199,2206],{},[481,2181,2182],{},[484,2183,2184],{"href":2184,"rel":2185},"https:\u002F\u002Fwww.thesecondbrain.dev\u002F",[488],[481,2187,2188],{},[484,2189,2190],{"href":2190,"rel":2191},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare\u002Fwiki\u002FHow-It-Works",[488],[481,2193,2194],{},[484,2195,2198],{"href":2196,"rel":2197},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare\u002Fwiki\u002FConnect-to-AI-Clients",[488],"Connect to AI Clients",[481,2200,2201],{},[484,2202,2205],{"href":2203,"rel":2204},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare\u002Fwiki\u002FObsidian-Plugin",[488],"Second Brain Obsidian Plugin",[481,2207,2208],{},[484,2209,2210],{"href":2210,"rel":2211},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-obsidian-plugin",[488],[989,2213,2214],{},"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":2216},[2217,2218,2219,2231,2232],{"id":1438,"depth":515,"text":1439},{"id":1448,"depth":515,"text":1449},{"id":1469,"depth":515,"text":1470,"children":2220},[2221,2222,2223,2224,2225,2226,2227],{"id":1544,"depth":521,"text":1545},{"id":1631,"depth":521,"text":1632},{"id":1789,"depth":521,"text":1790},{"id":1867,"depth":521,"text":1868},{"id":1954,"depth":521,"text":1955},{"id":2039,"depth":521,"text":2040},{"id":2075,"depth":521,"text":2076,"children":2228},[2229,2230],{"id":2088,"depth":527,"text":2089},{"id":2122,"depth":527,"text":2123},{"id":949,"depth":515,"text":950},{"id":956,"depth":515,"text":2177},[1001,1414],"2026-08-07","Crea un sistema de memoria IA persistente y autoalojado en Cloudflare con Second Brain y MCP. Comparte el contexto entre Claude, Gemini y Obsidian hoy mismo.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002FES-Use-Cloudflare-as-AI-memory.webp","Un sistema de memoria de IA persistente y autoalojado en Cloudflare Workers y Vectorize con soporte de MCP y sincronización de Obsidian.",{"schemaOrg":2239,"robots":1012,"sitemap":2243},[2240],{"@type":2241,"headline":2242,"description":2235},"TechArticle","Sistema de memoria persistente de IA con Cloudflare y MCP",{"lastmod":2234},{"title":2242,"description":2235,"ogTitle":1433,"ogDescription":2235,"twitterTitle":1433,"twitterDescription":2235},"es\u002Farticle\u002Fuse-cloudflare-as-ai-memory",[2247,2248,2249,1460,2250],"Cloudflare","MCP","Memoria de IA","Obsidian","-wBuyPnmI3SkMsaQHsQngMepodb3zL1KLOZkrSblLew",[2253,2507,3105],{"id":2254,"title":2255,"author":1020,"body":2256,"category":2494,"date":2495,"description":2496,"extension":1004,"image":2497,"imageAlt":2498,"isPublished":1007,"meta":2499,"minRead":551,"navigation":1007,"path":371,"seo":2503,"stem":2504,"tags":2505,"updatedAt":1020,"__hash__":2506},"article\u002Fes\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare.md","Deja de exponer tu bóveda: Protege NodeWarden con Cloudflare",{"type":426,"value":2257,"toc":2485},[2258,2261,2264,2278,2282,2289,2292,2296,2299,2303,2333,2337,2340,2407,2411,2414,2478,2482],[434,2259,2260],{},"El momento en que tu instancia de NodeWarden se expone al público en Internet, comienza a atraer a miles de bots automatizados que buscan vulnerabilidades las 24 horas del día, los 7 días de la semana. Para proteger tus datos confidenciales, necesitas aplicar el nivel máximo de bloqueo posible en tu instancia de NodeWarden.",[434,2262,2263],{},"Para asegurar tu instancia de NodeWarden, puedes usar una de estas dos funciones de Cloudflare:",[478,2265,2266,2272],{},[481,2267,2268,2271],{},[441,2269,2270],{},"Cloudflare IP Access Rules (Reglas de acceso por IP):"," Te permite bloquear, solicitar un desafío de seguridad (challenge) o permitir el tráfico en función de direcciones IP o países específicos.",[481,2273,2274,2277],{},[441,2275,2276],{},"Cloudflare Zero Trust (Recomendado):"," Actúa como una pasarela segura que hace que tu instancia de NodeWarden sea completamente invisible al público, permitiendo el acceso únicamente a los usuarios autorizados.",[2086,2279,2281],{"id":2280},"por-qué-recomendamos-cloudflare-zero-trust","Por qué recomendamos Cloudflare Zero Trust",[434,2283,2284,2285,2288],{},"Aconsejamos encarecidamente usar Cloudflare Zero Trust porque las reglas de acceso por IP están vinculadas a direcciones IP o países, lo que significa que tendrías que actualizar manualmente tus reglas cada vez que viajes o si tienes una IP dinámica. Cloudflare Zero Trust, por el contrario, se basa en tu ",[441,2286,2287],{},"identidad",", no en tu ubicación, ofreciéndote un acceso fluido y seguro a NodeWarden.",[2290,2291],"hr",{},[429,2293,2295],{"id":2294},"guía-de-configuración","Guía de Configuración",[434,2297,2298],{},"Sigue estos pasos para configurar Cloudflare Zero Trust para NodeWarden.",[2086,2300,2302],{"id":2301},"fase-1-primeros-pasos","Fase 1: Primeros pasos",[1156,2304,2305,2312,2319,2326],{},[481,2306,2307,2308],{},"En tu panel de control de Cloudflare, haz clic en 'Zero Trust' en el menú de la izquierda.\n",[884,2309],{"alt":2310,"src":2311},"Barra lateral del panel de Cloudflare que muestra la opción Zero Trust seleccionada en el menú de navegación.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-dashboard-zero-trust-sidebar.webp",[481,2313,2314,2315],{},"Haz clic en 'Access controls' y luego en 'Applications'.\n",[884,2316],{"alt":2317,"src":2318},"Menú de navegación de Cloudflare Zero Trust con la sección de Controles de acceso expandida.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-zero-trust-access-controls-menu.webp",[481,2320,2321,2322],{},"Es posible que se te pida elegir un plan ('Choose a plan').\n",[884,2323],{"alt":2324,"src":2325},"Pantalla de configuración de la cuenta de Cloudflare Zero Trust que solicita al usuario elegir un plan de suscripción.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-zero-trust-choose-plan-setup.webp",[481,2327,2328,2329],{},"Haz clic en el botón 'Choose a plan' y selecciona 'Zero Trust Free'.\n",[884,2330],{"alt":2331,"src":2332},"La página de detalles del plan Zero Trust Free en Cloudflare, destacando el botón Seleccionar plan.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-zero-trust-free-plan-selection.webp",[2086,2334,2336],{"id":2335},"fase-2-protege-tu-interfaz-web","Fase 2: Protege tu interfaz web",[434,2338,2339],{},"Primero, crearemos una aplicación para proteger el panel de control web de NodeWarden.",[1156,2341,2342,2349,2356,2363,2370,2377,2384,2387,2394,2397],{},[481,2343,2344,2345],{},"Haz clic en 'Create new application' para crear la primera aplicación.\n",[884,2346],{"alt":2347,"src":2348},"Panel de aplicaciones de Cloudflare Access con el botón Crear nueva aplicación.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-create-new-application.webp",[481,2350,2351,2352],{},"Elige 'Self-hosted and private'.\n",[884,2353],{"alt":2354,"src":2355},"El modal Añadir una aplicación en Cloudflare Access con el tipo de aplicación Autohospedada y privada seleccionado.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-add-self-hosted-application.webp",[481,2357,2358,2359],{},"Introduce el nombre de dominio de NodeWarden.\n",[884,2360],{"alt":2361,"src":2362},"Pantalla de configuración de la aplicación de Cloudflare Access que muestra el nombre de host 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,2364,2365,2366],{},"Haz clic en 'Create new policy' para crear una política.\n",[884,2367],{"alt":2368,"src":2369},"Página de políticas de Cloudflare Access que muestra que no se han añadido políticas y un botón para crear una nueva política.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-no-policies-create-button.webp",[481,2371,2372,2373],{},"Selecciona 'Emails' e introduce un correo electrónico en 'Policy rules'.\n",[884,2374],{"alt":2375,"src":2376},"Pantalla de configuración de la regla de política de Cloudflare Access con una dirección de correo electrónico especificada como criterio de inclusión.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-rule-email.webp",[481,2378,2379,2380],{},"Introduce un nombre y selecciona 'Allow' en 'Policy details'.\n",[884,2381],{"alt":2382,"src":2383},"Pantalla de detalles de la política de Cloudflare Access que muestra el nombre de la política NodeWarden-Web y la acción configurada en Permitir.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-details-allow.webp",[481,2385,2386],{},"Haz clic en 'Save Policy' para guardar la política.",[481,2388,2389,2390],{},"Introduce un nombre y selecciona '1 month' en la sección 'Details'.\n",[884,2391],{"alt":2392,"src":2393},"Resumen final de la configuración para una aplicación de Cloudflare Access llamada NodeWarden-Web con una duración de sesión de un mes.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-application-final-details.webp",[481,2395,2396],{},"Haz clic en 'Create' para crear la aplicación.",[481,2398,2399,2402,2403],{},[441,2400,2401],{},"Pruébalo:"," Abre el dominio en el navegador web; verás que 'Cloudflare Access' te pide un correo electrónico.\n",[884,2404],{"alt":2405,"src":2406},"Una vista previa de la pantalla de inicio de sesión de Cloudflare Access para NodeWarden-Web, solicitando una dirección de correo electrónico.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-login-screen-preview.webp",[2086,2408,2410],{"id":2409},"fase-3-permitir-la-sincronización-de-clientes-bitwarden-omitir-api","Fase 3: Permitir la sincronización de clientes BitWarden (Omitir API)",[434,2412,2413],{},"Las aplicaciones móviles y de escritorio de BitWarden no pueden procesar la pantalla de inicio de sesión por correo de Cloudflare, por lo que necesitamos crear una segunda aplicación que permita al tráfico omitir (bypass) la pantalla de inicio de sesión específicamente para la sincronización de la API.",[1156,2415,2416,2427,2442,2447,2454,2461,2464,2471],{},[481,2417,2418,2419,2422,2423,2426],{},"Vuelve a Applications y haz clic en ",[441,2420,2421],{},"Create new application",", eligiendo ",[441,2424,2425],{},"Self-hosted and private"," nuevamente.",[481,2428,2429,2430,2433,2434,2437,2438],{},"Introduce 'api\u002F",[1189,2431,2432],{},"', 'identity\u002F","', 'notifications\u002F",[1189,2435,2436],{},"' e 'icons\u002F","' en Destinations.\n",[884,2439],{"alt":2440,"src":2441},"Configuración de múltiples nombres de host públicos para omitir la API en Cloudflare Access, incluyendo las rutas api, identity, notifications e icons.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-api-bypass-destinations.webp",[481,2443,2444,2445],{},"Haz clic en 'Create new policy' para crear la política.\n",[884,2446],{"alt":2368,"src":2369},[481,2448,2449,2450],{},"Selecciona 'Everyone' en 'Policy rules'.\n",[884,2451],{"alt":2452,"src":2453},"Configuración de la regla de política de Cloudflare Access con Todos seleccionado para permitir un acceso amplio a rutas específicas.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-rule-everyone.webp",[481,2455,2456,2457],{},"Introduce un nombre y selecciona 'Bypass' en 'Policy details'.\n",[884,2458],{"alt":2459,"src":2460},"Detalles de la política de Cloudflare Access para NodeWarden-API con la acción configurada en Omitir.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-details-bypass.webp",[481,2462,2463],{},"Haz clic en 'Save Policy' para guardarla.",[481,2465,2466,2467],{},"Introduce un nombre y selecciona '1 month' en 'Session Duration'.\n",[884,2468],{"alt":2469,"src":2470},"Pantalla de configuración final para la aplicación NodeWarden-API en Cloudflare Access.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-api-application-final-details.webp",[481,2472,2473,2474],{},"Ahora deberías tener 2 aplicaciones creadas.\n",[884,2475],{"alt":2476,"src":2477},"El panel de aplicaciones de Cloudflare Access que muestra las aplicaciones Web y API creadas con éxito.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-applications-list-final.webp",[429,2479,2481],{"id":2480},"consideraciones-finales","Consideraciones finales",[434,2483,2484],{},"Solo recuerda que Cloudflare es tu escudo exterior. Para mantener una bóveda (vault) verdaderamente segura, asegúrate de seguir utilizando una contraseña maestra fuerte, habilitar la Autenticación de Dos Factores (2FA) y mantener segura tu cuenta de Cloudflare.",{"title":424,"searchDepth":515,"depth":521,"links":2486},[2487,2488,2493],{"id":2280,"depth":527,"text":2281},{"id":2294,"depth":515,"text":2295,"children":2489},[2490,2491,2492],{"id":2301,"depth":527,"text":2302},{"id":2335,"depth":527,"text":2336},{"id":2409,"depth":527,"text":2410},{"id":2480,"depth":515,"text":2481},[1000,1001],"2026-05-27","El momento en que tu instancia de NodeWarden se expone al público en Internet, comienza a atraer a miles de bots automatizados que buscan vulnerabilidades las 24 horas del día, los 7 días de la semana.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fasegurar-nodewarden-integracion-cloudflare-guia.webp","Miniatura de una guía paso a paso para asegurar una bóveda de NodeWarden con integración de Cloudflare, que muestra una caja fuerte digital con candado y un rack de servidores protegido.",{"schemaOrg":2500,"robots":1012,"sitemap":2502},[2501],{"@type":2241,"headline":2255,"description":2496},{"lastmod":2495},{"title":2255,"description":2496,"ogTitle":2255,"ogDescription":2496,"twitterTitle":2255,"twitterDescription":2496},"es\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",[],"IpIKvMoPjz83IYI7iHrcD9IXA5I1QQZeXxgQmnK3Ldk",{"id":2508,"title":2509,"author":1020,"body":2510,"category":3091,"date":3092,"description":3093,"extension":1004,"image":3094,"imageAlt":3095,"isPublished":1007,"meta":3096,"minRead":551,"navigation":1007,"path":387,"seo":3101,"stem":3102,"tags":3103,"updatedAt":1020,"__hash__":3104},"article\u002Fes\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare.md","Cómo alojar tu gestor de contraseñas tipo BitWarden",{"type":426,"value":2511,"toc":3076},[2512,2519,2525,2529,2719,2723,2739,2743,2777,2781,2811,2815,2842,2846,2889,2893,2932,2936,2939,2943,2972,2976,2999,3003,3006,3023,3028,3031,3034,3048,3052,3069,3071],[434,2513,2514,2515,2518],{},"Tus contraseñas son tu propiedad digital más importante, y mantenerlas seguras significa tenerlas en tus propias manos. Al autoalojar (",[1189,2516,2517],{},"self-hosting",") tu propio gestor de contraseñas, tomas el control de tu propia seguridad. ",[434,2520,2521,2524],{},[441,2522,2523],{},"BitWarden","​ es ampliamente considerado como uno de los más confiables en el ámbito de la gestión de contraseñas y su código fuente está disponible bajo la licencia AGPL-3.0. NodeWarden es un servidor no oficial compatible con BitWarden, escrito en Typescript, que se puede desplegar de forma gratuita en Cloudflare.",[429,2526,2528],{"id":2527},"comparación-de-características-con-el-servidor-oficial-de-bitwarden","Comparación de características con el servidor oficial de BitWarden",[2530,2531,2532,2550],"table",{},[2533,2534,2535],"thead",{},[2536,2537,2538,2542,2544,2547],"tr",{},[2539,2540,2541],"th",{},"Capacidad",[2539,2543,2523],{},[2539,2545,2546],{},"NodeWarden",[2539,2548,2549],{},"Notas",[2551,2552,2553,2570,2585,2597,2609,2624,2641,2656,2671,2683,2695,2708],"tbody",{},[2536,2554,2555,2559,2562,2564],{},[2556,2557,2558],"td",{},"Bóveda Web (Web Vault)",[2556,2560,2561],{},"✅",[2556,2563,2561],{},[2556,2565,2566,2569],{},[441,2567,2568],{},"Interfaz original de la Bóveda Web","​",[2536,2571,2572,2578,2580,2582],{},[2556,2573,2574,2575],{},"Sincronización completa ",[473,2576,2577],{},"\u002Fapi\u002Fsync",[2556,2579,2561],{},[2556,2581,2561],{},[2556,2583,2584],{},"Compatibilidad optimizada para clientes oficiales",[2536,2586,2587,2590,2592,2594],{},[2556,2588,2589],{},"Subir \u002F descargar archivos adjuntos",[2556,2591,2561],{},[2556,2593,2561],{},[2556,2595,2596],{},"Cloudflare R2 o KV",[2536,2598,2599,2602,2604,2606],{},[2556,2600,2601],{},"Send (Enviar)",[2556,2603,2561],{},[2556,2605,2561],{},[2556,2607,2608],{},"Soporta envíos de texto y de archivos",[2536,2610,2611,2614,2616,2618],{},[2556,2612,2613],{},"Importar \u002F Exportar",[2556,2615,2561],{},[2556,2617,2561],{},[2556,2619,2620,2621,2569],{},"Soporta importación de BitWarden JSON \u002F CSV \u002F ",[441,2622,2623],{},"ZIP con adjuntos",[2536,2625,2626,2631,2634,2636],{},[2556,2627,2628],{},[441,2629,2630],{},"Centro de copias de seguridad en la nube",[2556,2632,2633],{},"❌",[2556,2635,2561],{},[2556,2637,2638,2569],{},[441,2639,2640],{},"Copias de seguridad programadas a WebDAV \u002F S3",[2536,2642,2643,2646,2649,2651],{},[2556,2644,2645],{},"Pista de contraseña (web)",[2556,2647,2648],{},"⚠️ Limitado",[2556,2650,2561],{},[2556,2652,2653,2569],{},[441,2654,2655],{},"No requiere correo electrónico",[2536,2657,2658,2661,2663,2665],{},[2556,2659,2660],{},"TOTP \u002F Steam TOTP",[2556,2662,2561],{},[2556,2664,2561],{},[2556,2666,2667,2668],{},"Incluye soporte para ",[473,2669,2670],{},"steam:\u002F\u002F",[2536,2672,2673,2676,2678,2680],{},[2556,2674,2675],{},"Multiusuario",[2556,2677,2561],{},[2556,2679,2561],{},[2556,2681,2682],{},"Registro mediante invitación",[2536,2684,2685,2688,2690,2692],{},[2556,2686,2687],{},"Organizaciones \u002F Colecciones \u002F Roles",[2556,2689,2561],{},[2556,2691,2633],{},[2556,2693,2694],{},"No implementado",[2536,2696,2697,2700,2702,2705],{},[2556,2698,2699],{},"Inicio de sesión con 2FA",[2556,2701,2561],{},[2556,2703,2704],{},"⚠️ Parcial",[2556,2706,2707],{},"Actualmente solo TOTP a nivel de usuario",[2536,2709,2710,2713,2715,2717],{},[2556,2711,2712],{},"SSO \u002F SCIM \u002F Directorio corporativo",[2556,2714,2561],{},[2556,2716,2633],{},[2556,2718,2694],{},[429,2720,2722],{"id":2721},"lo-que-necesitamos","Lo que necesitamos:",[1156,2724,2725,2730,2736],{},[481,2726,2727],{},[441,2728,2729],{},"Una cuenta de GitHub",[481,2731,2732,2735],{},[441,2733,2734],{},"Una cuenta de Cloudflare","​ (Gratuita) con el almacenamiento R2 activado.",[481,2737,2738],{},"_Opcional:_Un nombre de dominio personalizado gestionado en Cloudflare.",[1151,2740,2742],{"id":2741},"fase-1-preparar-el-código","Fase 1: Preparar el código",[1156,2744,2745,2764],{},[481,2746,2747,2748,2752,2753,2757,2758,2760],{},"Haz un _fork_del repositorio de NodeWarden desde ",[484,2749,2750],{"href":2750,"rel":2751},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fnodewarden",[488]," del repositorio original ",[484,2754,2755],{"href":2755,"rel":2756},"https:\u002F\u002Fgithub.com\u002Fshuaiplus\u002Fnodewarden",[488]," GitHub.",[881,2759],{},[884,2761],{"alt":2762,"src":2763},"Bifurcando el repositorio de NodeWarden en GitHub","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Ffork-nodewarden-repo.webp",[481,2765,2766,2767,2770,2771,2773],{},"Habilita el ",[1189,2768,2769],{},"workflow","\"Sync Upstream\".",[881,2772],{},[884,2774],{"alt":2775,"src":2776},"Habilitando el flujo de trabajo de sincronización ascendente en GitHub Actions","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fenable-sync-upstream.webp",[1151,2778,2780],{"id":2779},"fase-2-desplegar-en-cloudflare","Fase 2: Desplegar en Cloudflare",[1156,2782,2783,2792,2805],{},[481,2784,2785,2786,2788],{},"Crea una aplicación Worker en Cloudflare.",[881,2787],{},[884,2789],{"alt":2790,"src":2791},"Creando una nueva aplicación Worker en el panel de Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcreate-cloudflare-worker.webp",[481,2793,2794,2795,2797,2801],{},"Selecciona 'Continue with GitHub' para desplegar la aplicación.",[881,2796],{},[884,2798],{"alt":2799,"src":2800},"Desplegando la aplicación NodeWarden conectando con GitHub","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fdeploy-github-repo.webp",[884,2802],{"alt":2803,"src":2804},"Progreso de construcción y despliegue del Worker de Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-deploy-status.webp",[481,2806,2807,2808,455],{},"Espera unos momentos a que Cloudflare construya y despliegue tu app. Te dará una URL por defecto tipo ",[473,2809,2810],{},"worker.dev",[1151,2812,2814],{"id":2813},"opcional-añadir-un-dominio-personalizado","(Opcional) Añadir un dominio personalizado:",[478,2816,2817,2823,2829],{},[481,2818,2819,2820,455],{},"En la configuración de tu Cloudflare Worker, ve a la pestaña ",[441,2821,2822],{},"Settings",[481,2824,2825,2826,455],{},"Haz clic en ",[441,2827,2828],{},"+ Add",[481,2830,2831,2832,2834,2838],{},"Escribe el dominio que prefieras y sigue las instrucciones.",[881,2833],{},[884,2835],{"alt":2836,"src":2837},"Navegando a la configuración de dominio personalizado en el Worker de Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fworker-settings-custom-domain.webp",[884,2839],{"alt":2840,"src":2841},"Añadiendo un dominio personalizado al Worker de Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fadd-custom-domain.webp",[1151,2843,2845],{"id":2844},"fase-3-proteger-tu-servidor-el-secreto-jwt","Fase 3: Proteger tu servidor (El secreto JWT)",[1156,2847,2848,2851,2863,2883],{},[481,2849,2850],{},"Ve al navegador web e ingresa tu dominio personalizado o el dominio 'worker.dev' generado.",[481,2852,2853,2854,455,2857,2859],{},"Te aparecerá el mensaje '",[441,2855,2856],{},"JWT_SECRET is missing'",[881,2858],{},[884,2860],{"alt":2861,"src":2862},"Mensaje de error JWT_SECRET is missing en el servidor NodeWarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fjwt-secret-missing-error.webp",[481,2864,2865,2866,2868,2869,2872,2873,2875,2879],{},"Copia la clave secreta generada y vuelve a la pestaña de Settings (Configuración) de tu Worker de NodeWarden, luego haz clic en el botón '",[441,2867,2828],{},"' en la sección '",[441,2870,2871],{},"Variables and Secrets","'.",[881,2874],{},[884,2876],{"alt":2877,"src":2878},"Sección de Variables y Secretos en la configuración del Worker de Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fworker-variables-secrets.webp",[884,2880],{"alt":2881,"src":2882},"Añadiendo el secreto JWT generado a las variables del Worker de Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fadd-jwt-secret.webp",[481,2884,2885,2886,2872],{},"Pega el secreto generado y haz clic en el botón '",[441,2887,2888],{},"Deploy \u002F Save",[1151,2890,2892],{"id":2891},"fase-4-crear-tu-cuenta-de-administrador","Fase 4: Crear tu cuenta de administrador",[1156,2894,2895,2904,2917,2929],{},[481,2896,2897,2898,2900],{},"Vuelve al navegador web y actualiza la página; verás la siguiente página de inicio de sesión.",[881,2899],{},[884,2901],{"alt":2902,"src":2903},"Página de inicio de sesión del servidor NodeWarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fnodewarden-login.webp",[481,2905,2906,2907,2910,2911,2913],{},"Haz clic en '",[441,2908,2909],{},"Create Account","' para crear la cuenta de administrador.",[881,2912],{},[884,2914],{"alt":2915,"src":2916},"Haciendo clic en el botón Create Account en la página de inicio de sesión de NodeWarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcreate-account-button.webp",[481,2918,2919,2920,1330,2923,2925],{},"Inicia sesión con la cuenta de administrador que acabas de crear para acceder al panel de control (",[1189,2921,2922],{},"Dashboard",[881,2924],{},[884,2926],{"alt":2927,"src":2928},"Vista general del panel de administración de NodeWarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fnodewarden-dashboard.webp",[481,2930,2931],{},"Ahora ya tenemos el servidor desplegado y en funcionamiento. Empezaremos a configurar los clientes de BitWarden.",[1151,2933,2935],{"id":2934},"fase-5-conectar-tus-dispositivos","Fase 5: Conectar tus dispositivos",[434,2937,2938],{},"Puedes usar las aplicaciones oficiales de BitWarden en todos tus dispositivos.",[2086,2940,2942],{"id":2941},"extensión-para-chrome","Extensión para Chrome",[1156,2944,2945,2948,2951,2960,2969],{},[481,2946,2947],{},"Instala la extensión de Bitwarden para Chrome.",[481,2949,2950],{},"Abre la extensión.",[481,2952,2953,2954,2956],{},"Haz clic en el enlace junto a 'Accessing:' (Accediendo a:) en la parte inferior del menú emergente.",[881,2955],{},[884,2957],{"alt":2958,"src":2959},"Seleccionando la opción de autoalojado en la extensión de Bitwarden para Chrome","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-extension-self-hosted.webp",[481,2961,2962,2963,2965],{},"Ingresa el nombre de dominio de tu servidor NodeWarden.",[881,2964],{},[884,2966],{"alt":2967,"src":2968},"Ingresando la URL del servidor en la extensión de Bitwarden para Chrome","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-extension-domain.webp",[481,2970,2971],{},"Guarda la configuración e inicia sesión con tu cuenta.",[2086,2973,2975],{"id":2974},"app-para-ios","App para iOS",[1156,2977,2978,2981,2990],{},[481,2979,2980],{},"Instala la app de BitWarden desde la App Store.",[481,2982,2983,2984,2986],{},"Abre la app y haz clic en '' junto a 'Logging in on:' (Iniciando sesión en:).",[881,2985],{},[884,2987],{"alt":2988,"src":2989},"Accediendo a la configuración de autoalojado en la aplicación de Bitwarden para iOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-ios-self-hosted.webp",[481,2991,2992,2993,2995],{},"Ingresa el nombre de dominio del servidor NodeWarden y haz clic en el botón '✓'.",[881,2994],{},[884,2996],{"alt":2997,"src":2998},"Configurando la URL del servidor en la aplicación de Bitwarden para iOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-ios-domain.webp",[2086,3000,3002],{"id":3001},"otros-clientes","Otros Clientes",[434,3004,3005],{},"NodeWarden ha sido probado y se ha confirmado que es compatible con estos clientes oficiales de BitWarden:",[478,3007,3008,3011,3014,3017,3020],{},[481,3009,3010],{},"✅ Windows de escritorio",[481,3012,3013],{},"✅ Apps móviles Android\u002FiOS",[481,3015,3016],{},"✅ Extensiones de navegador",[481,3018,3019],{},"✅ Linux de escritorio",[481,3021,3022],{},"⚠️ macOS de escritorio (no verificado completamente)",[3024,3025,3027],"h1",{"id":3026},"copia-de-seguridad-de-la-bóveda","Copia de seguridad de la bóveda",[434,3029,3030],{},"NodeWarden te permite hacer copias de seguridad de tu bóveda en una computadora local o en almacenamiento remoto (almacenamiento compatible con S3 o WebDAV).",[434,3032,3033],{},"Para automatizar las copias de seguridad remotas:",[478,3035,3036,3039],{},[481,3037,3038],{},"Configura los detalles del almacenamiento remoto dentro del panel de control de NodeWarden.",[481,3040,3041,3042,3044],{},"Asegúrate de que la tarea Cron esté configurada en los ajustes de Cloudflare Worker para la copia de seguridad remota automática.",[881,3043],{},[884,3045],{"alt":3046,"src":3047},"Configurando disparadores Cron para copias de seguridad automáticas en Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-worker-cron.webp",[3024,3049,3051],{"id":3050},"consideraciones-finales-de-seguridad","Consideraciones finales de seguridad",[478,3053,3054,3061,3064],{},[481,3055,3056,3057,3060],{},"Protege el acceso a tu cuenta de Cloudflare, de lo contrario los datos podrían verse comprometidos. Habilita la autenticación de dos factores (2FA) o una ",[1189,3058,3059],{},"Passkey","(Clave de acceso) en tu cuenta de Cloudflare de inmediato.",[481,3062,3063],{},"Aloja NodeWarden en una cuenta de Cloudflare dedicada. No compartas recursos con otras aplicaciones web para minimizar los riesgos de seguridad.",[481,3065,3066],{},[484,3067,3068],{"href":371},"Protege NodeWarden con Cloudflare",[3024,3070,957],{"id":956},[478,3072,3073],{},[481,3074,3075],{},"Guía de inicio oficial de NodeWarden",{"title":424,"searchDepth":515,"depth":521,"links":3077},[3078,3079],{"id":2527,"depth":515,"text":2528},{"id":2721,"depth":515,"text":2722,"children":3080},[3081,3082,3083,3084,3085,3086],{"id":2741,"depth":521,"text":2742},{"id":2779,"depth":521,"text":2780},{"id":2813,"depth":521,"text":2814},{"id":2844,"depth":521,"text":2845},{"id":2891,"depth":521,"text":2892},{"id":2934,"depth":521,"text":2935,"children":3087},[3088,3089,3090],{"id":2941,"depth":527,"text":2942},{"id":2974,"depth":527,"text":2975},{"id":3001,"depth":527,"text":3002},[1000,1001],"2026-05-25","Tus contraseñas son tu propiedad digital más importante, y mantenerlas seguras significa tenerlas en tus propias manos.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fservidor-autoalojado-bitwarden.webp","Miniatura del tutorial sobre cómo autoaloja un servidor compatible con Bitwarden, mostrando una bóveda digital y un rack de servidores.",{"schemaOrg":3097,"robots":1012,"sitemap":3100},[3098],{"@type":2241,"headline":3099,"description":3093},"Cómo proteger tus contraseñas en tu propia bóveda autoalojando un servidor compatible con Bitwarden",{"lastmod":3092},{"title":3099,"description":3093,"ogTitle":3099,"ogDescription":3093,"twitterTitle":3099,"twitterDescription":3093},"es\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",[],"bau4otheSwIWxF6AMgMQMI6BnRnf6NrTSUHp9qt3huk",{"id":3106,"title":3107,"author":424,"body":3108,"category":3985,"date":3986,"description":3987,"extension":1004,"image":3988,"imageAlt":3989,"isPublished":1007,"meta":3990,"minRead":557,"navigation":1007,"path":363,"seo":4025,"stem":4027,"tags":4028,"updatedAt":4024,"__hash__":4031},"article\u002Fes\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp.md","Cómo exponer Hermes Agent de forma privada con WARP",{"type":426,"value":3109,"toc":3967},[3110,3124,3134,3138,3141,3153,3157,3165,3169,3173,3222,3226,3360,3364,3398,3402,3405,3471,3474,3510,3513,3540,3544,3554,3558,3596,3682,3686,3691,3706,3715,3790,3795,3841,3845,3890,3904,3908,3952,3954,3964],[434,3111,3112,3113,3116,3117,3119,3120,3123],{},"Un desafío común surge cuando desea acceder a su ",[441,3114,3115],{},"Hermes Agent"," desde otros dispositivos como portátiles, tabletas o teléfonos sin exponerlo a la Internet pública. El uso de ",[441,3118,926],{}," junto con ",[441,3121,3122],{},"Cloudflare Zero Trust"," le permite exponer el Hermes Agent a nivel mundial sin necesidad de abrir un solo puerto de entrada en su firewall.",[434,3125,3126,3127,3130,3131,3133],{},"Si siguió nuestra guía anterior, '",[484,3128,3129],{"href":375},"Cómo desplegar Hermes Agent en un servidor VPS con Linux","', ya tendrá un Hermes Agent funcionando 24\u002F7. En lugar de lidiar con la sobrecarga de las VPN tradicionales, usaremos el cliente ",[441,3132,926],{}," para exponer el Hermes Agent a una red privada a través de Internet.",[429,3135,3137],{"id":3136},"comprender-la-arquitectura","Comprender la arquitectura",[434,3139,3140],{},"Los componentes en juego:",[1156,3142,3143,3148],{},[481,3144,3145,3147],{},[441,3146,3122],{},": El panel de control en Cloudflare donde define reglas de enrutamiento y políticas de acceso.",[481,3149,3150,3152],{},[441,3151,926],{},": La aplicación cliente instalada en sus dispositivos (VPS, portátiles, teléfonos). Intercepta el tráfico destinado a su red privada y lo enruta de forma segura.",[1151,3154,3156],{"id":3155},"requisitos-previos","Requisitos previos",[478,3158,3159,3162],{},[481,3160,3161],{},"Un Hermes Agent en ejecución en su VPS.",[481,3163,3164],{},"Una cuenta gratuita de Cloudflare.",[429,3166,3168],{"id":3167},"guía-paso-a-paso","Guía paso a paso",[1151,3170,3172],{"id":3171},"paso-1-configurar-cloudflare-zero-trust","Paso 1: Configurar Cloudflare Zero Trust",[1156,3174,3175,3183,3190,3201,3208,3215],{},[481,3176,3177,3178,455],{},"Inicie sesión en su ",[484,3179,3182],{"href":3180,"rel":3181},"https:\u002F\u002Fdash.cloudflare.com\u002F",[488],"Panel de Cloudflare",[481,3184,3185,3186],{},"Haga clic en 'Zero Trust' en el menú de la izquierda.\n",[884,3187],{"alt":3188,"src":3189},"Menú de navegación de la barra lateral izquierda del panel de Cloudflare con la opción Zero Trust","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-left-menu.webp",[481,3191,3192,3193,3196,3197],{},"Si es su primera vez, se le pedirá que elija un plan (el nivel Gratuito es perfectamente válido para esta configuración) y que asigne un nombre a su equipo (por ejemplo, ",[473,3194,3195],{},"ai-team",").\n",[884,3198],{"alt":3199,"src":3200},"Configuración inicial de la cuenta de Cloudflare Zero Trust y asignación del nombre del equipo","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-team-setup.webp",[481,3202,3203,3204],{},"Haga clic en 'Access' y luego en 'Policies' para crear una política de acceso que defina quién tiene acceso a la red.\n",[884,3205],{"alt":3206,"src":3207},"Página de políticas de Cloudflare Zero Trust Access que muestra las reglas de acceso recién configuradas","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-access-policies-page.webp",[481,3209,3210,3211],{},"Haga clic en 'Create new policy'.\n",[884,3212],{"alt":3213,"src":3214},"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,3216,3217,3218],{},"Seleccione 'Emails' e introduzca su correo electrónico en 'Policy rules'.\n",[884,3219],{"alt":3220,"src":3221},"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",[1151,3223,3225],{"id":3224},"paso-2-configurar-el-cliente-cloudflare-warp-en-el-vps","Paso 2: Configurar el cliente Cloudflare WARP en el VPS",[1156,3227,3228,3238,3244,3251,3254,3268,3271,3353],{},[481,3229,3230,3231,835,3234,3237],{},"Ejecute ",[473,3232,3233],{},"sudo apt update",[473,3235,3236],{},"sudo apt install cloudflare-warp"," en la terminal de su VPS.",[481,3239,3230,3240,3243],{},[473,3241,3242],{},"warp-cli registration new \u003CTEAM-NAME>"," en la terminal de su VPS, lo cual imprimirá una URL.",[481,3245,3246,3247,3250],{},"Copie la URL impresa, que se verá como ",[473,3248,3249],{},"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fwarp",", y péguela en su navegador para la autenticación.",[481,3252,3253],{},"Dado que se utiliza la autenticación por correo electrónico en la configuración de la política anterior, introduzca su correo para autenticarse.",[481,3255,3256,3257,3260,3261,3264,3265,2872],{},"En la página de '",[441,3258,3259],{},"Success","' (Éxito) en el navegador, haga clic derecho y seleccione '",[441,3262,3263],{},"Inspect","' (Inspeccionar) en el botón azul '",[441,3266,3267],{},"Open Cloudflare WARP",[481,3269,3270],{},"Copie el token largo que se muestra en el enlace del botón.",[481,3272,3230,3273,3276,3277,3279,3280],{},[473,3274,3275],{},"warp-cli --accept-tos registration token \"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fauth?token=\u003Ccopied_token>\""," en la terminal de su VPS para conectarlo a Cloudflare Zero Trust.",[881,3278],{},"Si encuentra el error 'Error: Failed to communicate with the WARP API' en Ubuntu 26, ejecute los siguientes comandos:",[498,3281,3285],{"className":3282,"code":3283,"language":3284,"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,3286,3287,3301,3305,3311,3322,3326,3331],{"__ignoreMap":424},[506,3288,3289,3292,3295,3298],{"class":508,"line":509},[506,3290,3291],{"class":1066},"sudo",[506,3293,3294],{"class":1079}," systemctl",[506,3296,3297],{"class":1079}," restart",[506,3299,3300],{"class":1079}," warp-svc.service\n",[506,3302,3303],{"class":508,"line":515},[506,3304,1099],{"emptyLinePlaceholder":1007},[506,3306,3307],{"class":508,"line":521},[506,3308,3310],{"class":3309},"sHwdD","# Check status\n",[506,3312,3313,3315,3317,3320],{"class":508,"line":527},[506,3314,3291],{"class":1066},[506,3316,3294],{"class":1079},[506,3318,3319],{"class":1079}," status",[506,3321,3300],{"class":1079},[506,3323,3324],{"class":508,"line":533},[506,3325,1099],{"emptyLinePlaceholder":1007},[506,3327,3328],{"class":508,"line":539},[506,3329,3330],{"class":3309},"# Run the warp-cli registration token again\n",[506,3332,3333,3336,3339,3342,3345,3348,3351],{"class":508,"line":545},[506,3334,3335],{"class":1066},"warp-cli",[506,3337,3338],{"class":1079}," --accept-tos",[506,3340,3341],{"class":1079}," registration",[506,3343,3344],{"class":1079}," token",[506,3346,3347],{"class":1076},"   \"",[506,3349,3350],{"class":1079},"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fauth?token=\u003Ccopied_token>",[506,3352,1765],{"class":1076},[481,3354,3355,3356],{},"Vuelva al panel de Cloudflare Zero Trust y haga clic en 'Devices' (Dispositivos). Su dispositivo VPS debería aparecer ahora.\n",[884,3357],{"alt":3358,"src":3359},"Panel de dispositivos de Zero Trust que confirma que el 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",[1151,3361,3363],{"id":3362},"paso-3-configurar-el-enrutamiento-del-tráfico","Paso 3: Configurar el enrutamiento del tráfico",[1156,3365,3366,3373,3380,3387],{},[481,3367,3368,3369],{},"Haga clic en el perfil de su VPS en el panel de Dispositivos.\n",[884,3370],{"alt":3371,"src":3372},"Acceso a los detalles y configuraciones del túnel dividido para el dispositivo VPS registrado","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-device-profile.webp",[481,3374,3375,3376],{},"Desplácese hacia abajo hasta la sección 'Split Tunnels' (Túneles divididos).\n",[884,3377],{"alt":3378,"src":3379},"Sección de túneles divididos en las configuraciones de perfil del VPS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-split-tunnels-section.webp",[481,3381,3382,3383],{},"Haga clic en el botón 'Manage' (Administrar) y configure los ajustes como se muestra a continuación. Reemplace la dirección IP si es necesario.\n",[884,3384],{"alt":3385,"src":3386},"Administración de exclusiones de host y direcciones IP en túneles divididos de Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-manage-split-tunnels.webp",[481,3388,3389,3390,3393,3394,3397],{},"Exponer la ",[473,3391,3392],{},"address"," (dirección) y el ",[473,3395,3396],{},"host"," enrutará el tráfico a sus servicios a través de la misma red privada.",[1151,3399,3401],{"id":3400},"paso-4-configurar-el-firewall-en-el-vps","Paso 4: Configurar el firewall en el VPS",[434,3403,3404],{},"Habilite el firewall para permitir únicamente la subred '100.96.0.0\u002F12', bloqueando el resto del acceso público entrante.",[498,3406,3408],{"className":3282,"code":3407,"language":3284,"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,3409,3410,3423,3440,3454],{"__ignoreMap":424},[506,3411,3412,3414,3417,3420],{"class":508,"line":509},[506,3413,3291],{"class":1066},[506,3415,3416],{"class":1079}," ufw",[506,3418,3419],{"class":1079}," enable",[506,3421,3422],{"class":1679}," \n",[506,3424,3425,3427,3429,3432,3435,3438],{"class":508,"line":515},[506,3426,3291],{"class":1066},[506,3428,3416],{"class":1079},[506,3430,3431],{"class":1079}," default",[506,3433,3434],{"class":1079}," allow",[506,3436,3437],{"class":1079}," outgoing",[506,3439,3422],{"class":1679},[506,3441,3442,3444,3446,3448,3451],{"class":508,"line":521},[506,3443,3291],{"class":1066},[506,3445,3416],{"class":1079},[506,3447,3431],{"class":1079},[506,3449,3450],{"class":1079}," deny",[506,3452,3453],{"class":1079}," incoming\n",[506,3455,3456,3458,3460,3462,3465,3468],{"class":508,"line":527},[506,3457,3291],{"class":1066},[506,3459,3416],{"class":1079},[506,3461,3434],{"class":1079},[506,3463,3464],{"class":1079}," in",[506,3466,3467],{"class":1079}," from",[506,3469,3470],{"class":1079}," 100.96.0.0\u002F12\n",[434,3472,3473],{},"Permita el tráfico loopback para evitar interrumpir los servicios locales:",[498,3475,3477],{"className":3282,"code":3476,"language":3284,"meta":424,"style":424},"sudo ufw allow in on lo\nsudo ufw allow out on lo\n",[473,3478,3479,3495],{"__ignoreMap":424},[506,3480,3481,3483,3485,3487,3489,3492],{"class":508,"line":509},[506,3482,3291],{"class":1066},[506,3484,3416],{"class":1079},[506,3486,3434],{"class":1079},[506,3488,3464],{"class":1079},[506,3490,3491],{"class":1079}," on",[506,3493,3494],{"class":1079}," lo\n",[506,3496,3497,3499,3501,3503,3506,3508],{"class":508,"line":515},[506,3498,3291],{"class":1066},[506,3500,3416],{"class":1079},[506,3502,3434],{"class":1079},[506,3504,3505],{"class":1079}," out",[506,3507,3491],{"class":1079},[506,3509,3494],{"class":1079},[434,3511,3512],{},"Recargue el firewall y verifique el estado:",[498,3514,3516],{"className":3282,"code":3515,"language":3284,"meta":424,"style":424},"sudo ufw reload \nsudo ufw status verbose\n",[473,3517,3518,3529],{"__ignoreMap":424},[506,3519,3520,3522,3524,3527],{"class":508,"line":509},[506,3521,3291],{"class":1066},[506,3523,3416],{"class":1079},[506,3525,3526],{"class":1079}," reload",[506,3528,3422],{"class":1679},[506,3530,3531,3533,3535,3537],{"class":508,"line":515},[506,3532,3291],{"class":1066},[506,3534,3416],{"class":1079},[506,3536,3319],{"class":1079},[506,3538,3539],{"class":1079}," verbose\n",[1151,3541,3543],{"id":3542},"paso-5-exponer-hermes-agent-a-la-red-privada","Paso 5: Exponer Hermes Agent a la red privada",[434,3545,3546,3547,3550,3551,455],{},"Expondremos el ",[441,3548,3549],{},"Hermes Agent Web Dashboard"," a nuestra red privada y usaremos el proveedor de autenticación predeterminado, ",[441,3552,3553],{},"Nous Research",[2086,3555,3557],{"id":3556},"configurar-el-proveedor-de-autenticación","Configurar el proveedor de autenticación",[1156,3559,3560,3569,3576,3583,3590],{},[481,3561,3562,3563,3568],{},"Diríjase a ",[484,3564,3567],{"href":3565,"rel":3566},"https:\u002F\u002Fportal.nousresearch.com",[488],"portal.nousresearch.com"," para registrar una cuenta.",[481,3570,3571,3572],{},"Seleccione 'Local Dashboards' (Paneles locales).\n",[884,3573],{"alt":3574,"src":3575},"Selección de la opción Local Dashboards en el portal de Nous Research","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fnous-portal-local-dashboards-selection.webp",[481,3577,3578,3579],{},"Haga clic en 'Register Dashboard' (Registrar panel).\n",[884,3580],{"alt":3581,"src":3582},"Hacer clic en el botón de registrar panel para crear una nueva entrada de panel","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fnous-portal-register-dashboard.webp",[481,3584,3585,3586],{},"Introduzca la dirección IP de la red privada de su VPS como la 'Dashboard redirect URI' (URI de redireccionamiento del panel) y haga clic en 'Save' (Guardar).\n",[884,3587],{"alt":3588,"src":3589},"Registro de la dirección IP de red privada del VPS como URI de redireccionamiento en Nous Research","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fnous-portal-register-redirect-uri.webp",[481,3591,3592,3593,1054],{},"Copie el 'OAuth client ID' y péguelo en su archivo ",[473,3594,3595],{},"config.yaml",[498,3597,3599],{"className":1057,"code":3598,"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,3600,3601,3608,3618,3629,3636,3646,3656,3663,3673],{"__ignoreMap":424},[506,3602,3603,3606],{"class":508,"line":509},[506,3604,3605],{"class":1072},"dashboard",[506,3607,2008],{"class":1076},[506,3609,3610,3613,3615],{"class":508,"line":515},[506,3611,3612],{"class":1072},"  theme",[506,3614,1054],{"class":1076},[506,3616,3617],{"class":1079}," default\n",[506,3619,3620,3623,3625],{"class":508,"line":521},[506,3621,3622],{"class":1072},"  show_token_analytics",[506,3624,1054],{"class":1076},[506,3626,3628],{"class":3627},"sfNiH"," false\n",[506,3630,3631,3634],{"class":508,"line":527},[506,3632,3633],{"class":1072},"  oauth",[506,3635,2008],{"class":1076},[506,3637,3638,3641,3643],{"class":508,"line":533},[506,3639,3640],{"class":1072},"    client_id",[506,3642,1054],{"class":1076},[506,3644,3645],{"class":1079}," agent:cmq02x7ha0002jk0ba3kfnb\n",[506,3647,3648,3651,3653],{"class":508,"line":539},[506,3649,3650],{"class":1072},"    portal_url",[506,3652,1054],{"class":1076},[506,3654,3655],{"class":1079}," https:\u002F\u002Fportal.nousresearch.com\n",[506,3657,3658,3661],{"class":508,"line":545},[506,3659,3660],{"class":1072},"  basic_auth",[506,3662,2008],{"class":1076},[506,3664,3665,3668,3670],{"class":508,"line":551},[506,3666,3667],{"class":1072},"    username",[506,3669,1054],{"class":1076},[506,3671,3672],{"class":1076}," ''\n",[506,3674,3675,3678,3680],{"class":508,"line":557},[506,3676,3677],{"class":1072},"    password_hash",[506,3679,1054],{"class":1076},[506,3681,3672],{"class":1076},[2086,3683,3685],{"id":3684},"configurar-systemd-para-iniciar-automáticamente-el-panel-de-hermes","Configurar Systemd para iniciar automáticamente el panel de Hermes",[1156,3687,3688],{},[481,3689,3690],{},"Cree un archivo de servicio:",[498,3692,3694],{"className":1798,"code":3693,"language":1800,"meta":424,"style":424},"sudo nano \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-dashboard.service\n",[473,3695,3696],{"__ignoreMap":424},[506,3697,3698,3700,3703],{"class":508,"line":509},[506,3699,3291],{"class":1066},[506,3701,3702],{"class":1079}," nano",[506,3704,3705],{"class":1079}," \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-dashboard.service\n",[1156,3707,3708],{"start":515},[481,3709,3710,3711,3714],{},"Pegue la siguiente configuración, asegurándose de que ",[473,3712,3713],{},"--host 0.0.0.0"," sea parte del comando:",[498,3716,3720],{"className":3717,"code":3718,"language":3719,"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,3721,3722,3727,3732,3737,3741,3746,3751,3756,3761,3766,3771,3776,3780,3785],{"__ignoreMap":424},[506,3723,3724],{"class":508,"line":509},[506,3725,3726],{},"[Unit]\n",[506,3728,3729],{"class":508,"line":515},[506,3730,3731],{},"Description=Hermes Dashboard\n",[506,3733,3734],{"class":508,"line":521},[506,3735,3736],{},"After=network.target\n",[506,3738,3739],{"class":508,"line":527},[506,3740,1099],{"emptyLinePlaceholder":1007},[506,3742,3743],{"class":508,"line":533},[506,3744,3745],{},"[Service]\n",[506,3747,3748],{"class":508,"line":539},[506,3749,3750],{},"User=hermes\n",[506,3752,3753],{"class":508,"line":545},[506,3754,3755],{},"WorkingDirectory=\u002Fhome\u002Fhermes\n",[506,3757,3758],{"class":508,"line":551},[506,3759,3760],{},"ExecStart=\u002Fhome\u002Fhermes\u002F.local\u002Fbin\u002Fhermes dashboard --host 0.0.0.0\n",[506,3762,3763],{"class":508,"line":557},[506,3764,3765],{},"Restart=always\n",[506,3767,3768],{"class":508,"line":563},[506,3769,3770],{},"RestartSec=10\n",[506,3772,3773],{"class":508,"line":569},[506,3774,3775],{},"Environment=PATH=\u002Fhome\u002Fhermes\u002F.local\u002Fbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fbin:\u002Fbin\n",[506,3777,3778],{"class":508,"line":575},[506,3779,1099],{"emptyLinePlaceholder":1007},[506,3781,3782],{"class":508,"line":581},[506,3783,3784],{},"[Install]\n",[506,3786,3787],{"class":508,"line":587},[506,3788,3789],{},"WantedBy=multi-user.target\n",[1156,3791,3792],{"start":521},[481,3793,3794],{},"Habilite e inicie el servicio:",[498,3796,3798],{"className":1798,"code":3797,"language":1800,"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,3799,3800,3809,3820,3831],{"__ignoreMap":424},[506,3801,3802,3804,3806],{"class":508,"line":509},[506,3803,3291],{"class":1066},[506,3805,3294],{"class":1079},[506,3807,3808],{"class":1079}," daemon-reload\n",[506,3810,3811,3813,3815,3817],{"class":508,"line":515},[506,3812,3291],{"class":1066},[506,3814,3294],{"class":1079},[506,3816,3419],{"class":1079},[506,3818,3819],{"class":1079}," hermes-dashboard\n",[506,3821,3822,3824,3826,3829],{"class":508,"line":521},[506,3823,3291],{"class":1066},[506,3825,3294],{"class":1079},[506,3827,3828],{"class":1079}," start",[506,3830,3819],{"class":1079},[506,3832,3833,3835,3837,3839],{"class":508,"line":527},[506,3834,3291],{"class":1066},[506,3836,3294],{"class":1079},[506,3838,3319],{"class":1079},[506,3840,3819],{"class":1079},[1151,3842,3844],{"id":3843},"paso-6-instalar-el-cliente-cloudflare-warp-en-el-escritorio","Paso 6: Instalar el cliente Cloudflare WARP en el escritorio",[1156,3846,3847,3855,3858,3865,3872,3879],{},[481,3848,3849,3850,455],{},"Descargue el cliente Cloudflare WARP desde el ",[484,3851,3854],{"href":3852,"rel":3853},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fwarp-client\u002Fget-started\u002F",[488],"portal de Cloudflare",[481,3856,3857],{},"Abra e inicie el cliente Cloudflare WARP después de la instalación.",[481,3859,3860,3861],{},"Inicie sesión cuando se le solicite.\n",[884,3862],{"alt":3863,"src":3864},"Aviso de inicio de sesión del cliente de Cloudflare WARP en el ordenador de escritorio","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-warp-desktop-login-prompt.webp",[481,3866,3867,3868],{},"Se mostrará una página de 'Success' (Éxito) después de un inicio de sesión exitoso.\n",[884,3869],{"alt":3870,"src":3871},"Página web de éxito de autenticación tras iniciar sesión en Cloudflare Zero Trust en escritorio","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-warp-desktop-login-success.webp",[481,3873,3874,3875],{},"El cliente WARP ahora debería mostrar que está conectado a su equipo de Zero Trust.\n",[884,3876],{"alt":3877,"src":3878},"Cliente de Cloudflare WARP de escritorio que confirma la conexión activa a la red privada","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-warp-desktop-client-connected.webp",[481,3880,3881,3882,3885,3886],{},"Navegue a su navegador web e introduzca su IP privada (por ejemplo, ",[473,3883,3884],{},"100.96.0.3","). El Hermes Web Dashboard debería cargarse con éxito.\n",[884,3887],{"alt":3888,"src":3889},"Acceso al panel web de Hermes Agent privado desde el navegador del ordenador de escritorio","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fhermes-agent-dashboard-desktop-view.webp",[3891,3892,3893],"blockquote",{},[434,3894,3895,3898,3899,3903],{},[441,3896,3897],{},"Consejo profesional para usuarios de macOS:"," Si está utilizando el cliente WARP para acceder a varias cuentas de Cloudflare, consulte nuestra guía rápida sobre ",[441,3900,3901],{},[484,3902,423],{"href":399}," para cambiar de cuenta sin problemas.",[1151,3905,3907],{"id":3906},"paso-7-instalar-el-cliente-cloudflare-warp-en-dispositivos-ios","Paso 7: Instalar el cliente Cloudflare WARP en dispositivos iOS",[1156,3909,3910,3917,3925,3933,3941],{},[481,3911,3912,3913,3916],{},"Instale ",[441,3914,3915],{},"Cloudflare One"," desde la App Store.",[481,3918,3919,3920],{},"Abra la aplicación Cloudflare One e introduzca el nombre de su equipo cuando se le solicite.\n",[884,3921],{"alt":3922,"src":3923,"width":3924},"Introducir el nombre de equipo de Cloudflare Zero Trust en la aplicación Cloudflare One en 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,3926,3927,3928],{},"Inicie sesión utilizando la misma dirección de correo electrónico que se configuró en la regla de política anterior.\n",[884,3929],{"alt":3930,"src":3931,"width":3932},"Aviso de autenticación por correo electrónico para Cloudflare Zero Trust en iOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-one-ios-email-login.webp",229,[481,3934,3935,3936],{},"Una vez conectado, debería verse así:\n",[884,3937],{"alt":3938,"src":3939,"width":3940},"Aplicación Cloudflare One que muestra el estado de conexión activa en el dispositivo iOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-one-ios-client-connected.webp",322,[481,3942,3943,3944,3946,3947],{},"Navegue a su navegador web e introduzca la IP privada ",[473,3945,3884],{}," para acceder al Hermes Web Dashboard en su dispositivo móvil.\n",[884,3948],{"alt":3949,"src":3950,"width":3951},"Acceso a la interfaz del panel web de Hermes Agent desde el navegador móvil del teléfono","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fhermes-agent-dashboard-mobile-view.webp",345,[429,3953,950],{"id":949},[434,3955,3956,3957,3959,3960,3963],{},"Con ",[441,3958,3122],{}," manejando las políticas de identidad y el cliente ",[441,3961,3962],{},"WARP"," enrutando el tráfico a través de un túnel cifrado, su Hermes Agent es accesible de forma segura desde sus dispositivos en todo el mundo. Esta configuración establece una base segura y robusta para construir y acceder a una infraestructura de IA privada y totalmente remota.",[989,3965,3966],{},"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":3968},[3969,3972,3984],{"id":3136,"depth":515,"text":3137,"children":3970},[3971],{"id":3155,"depth":521,"text":3156},{"id":3167,"depth":515,"text":3168,"children":3973},[3974,3975,3976,3977,3978,3982,3983],{"id":3171,"depth":521,"text":3172},{"id":3224,"depth":521,"text":3225},{"id":3362,"depth":521,"text":3363},{"id":3400,"depth":521,"text":3401},{"id":3542,"depth":521,"text":3543,"children":3979},[3980,3981],{"id":3556,"depth":527,"text":3557},{"id":3684,"depth":527,"text":3685},{"id":3843,"depth":521,"text":3844},{"id":3906,"depth":521,"text":3907},{"id":949,"depth":515,"text":950},[1414,1000],"2026-07-09","Aprenda a exponer y acceder globalmente a su Hermes Agent de forma segura con Cloudflare WARP y Zero Trust, sin abrir puertos de entrada en el firewall.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002FES-Exposing-Hermes-Agent-to-Private-Network-Using-Cloudflare-WARP.webp","Exponer de forma segura Hermes Agent a una red privada mediante Cloudflare Zero Trust y el túnel WARP",{"schemaOrg":3991,"robots":1012,"sitemap":4023},[3992],{"@type":1011,"headline":3107,"description":3987,"name":3107,"image":3988,"step":3993},[3994,3999,4003,4007,4011,4015,4019],{"@type":3995,"name":3996,"text":3997,"url":3998,"image":3189},"HowToStep","Configurar Cloudflare Zero Trust","Inicie sesión en su Panel de Cloudflare. Haga clic en 'Zero Trust' en el menú de la izquierda. Si es su primera vez, se le pedirá que elija un plan (el nivel Gratuito es perfectamente válido para esta configuración) y que asigne un nombre a su equipo","#step-1",{"@type":3995,"name":4000,"text":4001,"url":4002,"image":3359},"Configurar el cliente Cloudflare WARP en el VPS","Ejecute sudo apt update y sudo apt install cloudflare-warp en la terminal de su VPS. Ejecute warp-cli registration new \u003CTEAM-NAME> en la terminal de su VPS, lo cual imprimirá una URL. Copie la URL impresa, que se verá como https:\u002F\u002F\u003Cteam>.cloudflareac","#step-2",{"@type":3995,"name":4004,"text":4005,"url":4006,"image":3372},"Configurar el enrutamiento del tráfico","Haga clic en el perfil de su VPS en el panel de Dispositivos. Desplácese hacia abajo hasta la sección 'Split Tunnels' (Túneles divididos). Haga clic en el botón 'Manage' (Administrar) y configure los ajustes como se muestra a continuación. Reemplace","#step-3",{"@type":3995,"name":4008,"text":4009,"url":4010},"Configurar el firewall en el VPS","Habilite el firewall para permitir únicamente la subred '100.96.0.0\u002F12', bloqueando el resto del acceso público entrante. bash Permita el tráfico loopback para evitar interrumpir los servicios locales: bash Recargue el firewall y verifique el estado:","#step-4",{"@type":3995,"name":4012,"text":4013,"url":4014},"Exponer Hermes Agent a la red privada","Expondremos el Hermes Agent Web Dashboard a nuestra red privada y usaremos el proveedor de autenticación predeterminado, Nous Research.","#step-5",{"@type":3995,"name":4016,"text":4017,"url":4018,"image":3864},"Instalar el cliente Cloudflare WARP en el escritorio","Descargue el cliente Cloudflare WARP desde el portal de Cloudflare. Abra e inicie el cliente Cloudflare WARP después de la instalación. Inicie sesión cuando se le solicite. Se mostrará una página de 'Success' (Éxito) después de un inicio de sesión ex","#step-6",{"@type":3995,"name":4020,"text":4021,"url":4022,"image":3923},"Instalar el cliente Cloudflare WARP en dispositivos iOS","Instale Cloudflare One desde la App Store. Abra la aplicación Cloudflare One e introduzca el nombre de su equipo cuando se le solicite. Inicie sesión utilizando la misma dirección de correo electrónico que se configuró en la regla de política anterio","#step-7",{"lastmod":4024},"2026-09-28",{"title":4026,"description":3987,"ogTitle":3107,"ogDescription":3987,"twitterTitle":3107,"twitterDescription":3987},"Acceso seguro a Hermes Agent con Cloudflare Zero Trust","es\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",[926,1019,3115,4029,4030],"Red privada","Tutorial","1Uqqvv_e2EG_KJYm_QsykKctzltK62Y5p8j4IVF9puk",1792490005433]