[{"data":1,"prerenderedAt":3284},["ShallowReactive",2],{"search-navigation":3,"index-articles-en":36},[4,8,12,16,20,24,28,32],{"title":5,"path":6,"stem":7,"children":-1},"Solving AI Agent Skills Fragmentation with npx skills","\u002Farticle\u002Fcentralised-the-skills-for-agents","en\u002Farticle\u002Fcentralised-the-skills-for-agents",{"title":9,"path":10,"stem":11,"children":-1},"Stop Exposing Your Vault: Secure NodeWarden with Cloudflare","\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare","en\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"title":13,"path":14,"stem":15,"children":-1},"How to Self-Host a BitWarden Compatible Password Vault","\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare","en\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"title":17,"path":18,"stem":19,"children":-1},"Google Antigravity 2 Hands-On: Setup & First Impressions","\u002Farticle\u002Fsetup-antigravity-2","en\u002Farticle\u002Fsetup-antigravity-2",{"title":21,"path":22,"stem":23,"children":-1},"NetSuite AI Connector Guide: MCP Setup & Use Cases","\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude","en\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"title":25,"path":26,"stem":27,"children":-1},"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":29,"path":30,"stem":31,"children":-1},"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":33,"path":34,"stem":35,"children":-1},"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",[37,521,731,956,1304,2049,2487,2734],{"id":38,"title":21,"author":39,"body":40,"category":39,"date":500,"description":501,"extension":502,"image":503,"imageAlt":504,"isPublished":505,"meta":506,"minRead":516,"navigation":505,"path":517,"seo":518,"stem":23,"__hash__":520},"article\u002Fen\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude.md",null,{"type":41,"value":42,"toc":483},"minimark",[43,47,63,68,78,94,98,239,243,298,302,354,358,363,369,374,378,384,396,400,410,426,430,436,441,445,451,454,458],[44,45,46],"p",{},"Oracle NetSuite has long been a cloud-based enterprise resource planning (ERP) platform for small to medium-sized businesses. However, its website UI is infamous for its steep learning curve, click-heavy navigation, and rigid reporting structures.",[44,48,49,50,54,55,58,59,62],{},"With the recent release of the ",[51,52,53],"strong",{},"NetSuite AI Connector Service",", users can leverage the ",[51,56,57],{},"Model Context Protocol (MCP)"," and ",[51,60,61],{},"AI (Artificial Intelligence) Assistants"," to directly ask questions in plain language and get real-time answers from their financial and operational data.",[64,65,67],"h2",{"id":66},"how-the-netsuite-mcp-ai-connector-works","How the NetSuite MCP AI Connector Works",[44,69,70,73,74,77],{},[51,71,72],{},"NetSuite’s MCP"," exposes a suite of tools to the ",[51,75,76],{},"AI",", such as running SuiteQL queries, reading Saved Searches and reports, or executing record operations like creating a new customer record. All tools are governed by NetSuite’s native role-based permissions.",[44,79,80,81,83,84,86,87,90,91,93],{},"When a user asks a question in plain language, the ",[51,82,76],{}," uses the ",[51,85,57],{}," to translate the request into structured operations that NetSuite understands. ",[51,88,89],{},"NetSuite"," executes the operations using the user's permissions, and the results are returned to the ",[51,92,76],{}," for analysis and presentation.",[64,95,97],{"id":96},"netsuite-ai-connector-setup-guide","NetSuite AI Connector Setup Guide",[99,100,101,162,176,185,192,199,220],"ol",{},[102,103,104,105,58,108,111],"li",{},"Enable ",[51,106,107],{},"Server SuiteScript",[51,109,110],{},"REST Web Services",[99,112,113,126,155],{},[102,114,115,116,120,121],{},"Go to ",[117,118,119],"em",{},"Setup > Company > Enable Features",".\n",[122,123],"img",{"alt":124,"src":125},"Oracle NetSuite Enable Features configuration interface for Company setup","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-setup-company-enable-features.webp",[102,127,128,129,132,133],{},"On the ",[51,130,131],{},"SuiteCloud"," subtab:\n",[134,135,136,146],"ul",{},[102,137,138,139,141,142],{},"Under SuiteScript, check the ",[51,140,107],{}," box.\n",[122,143],{"alt":144,"src":145},"Enabling Server SuiteScript in NetSuite SuiteCloud tab","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-enable-features-server-suitescript.webp",[102,147,148,149,141,151],{},"Under SuiteTalk (Web Services), check the ",[51,150,110],{},[122,152],{"alt":153,"src":154},"Enabling REST Web Services in NetSuite SuiteCloud tab","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-enable-features-rest-web-services.webp",[102,156,157,158,161],{},"Click ",[51,159,160],{},"Save",".",[102,163,164,165,168,169,120,172],{},"Install the ",[51,166,167],{},"NetSuite MCP Standard Tools"," first. Click on ",[117,170,171],{},"Customization > SuiteCloud Development > SuiteApp Marketplace",[122,173],{"alt":174,"src":175},"Navigating to NetSuite SuiteApp Marketplace under Customization","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-suiteapp-marketplace-navigation.webp",[102,177,178,179,120,181],{},"Search for ",[51,180,167],{},[122,182],{"alt":183,"src":184},"Searching for NetSuite MCP Standard Tools in the marketplace","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-suiteapp-marketplace-search-mcp-tools.webp",[102,186,187,188],{},"Once it is installed, you will see the status 'Installed' on the right.\n",[122,189],{"alt":190,"src":191},"NetSuite MCP Standard Tools displayed as Installed in the marketplace","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-suiteapp-installed-status-mcp-tools.webp",[102,193,194,195],{},"Follow the same instructions to install the 'NetSuite AI Connector Service Companion'.\n",[122,196],{"alt":197,"src":198},"NetSuite AI Connector Service Companion shown as Installed","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-suiteapp-installed-ai-connector-companion.webp",[102,200,201,202],{},"Set up an Integration Record\n",[99,203,204,213],{},[102,205,115,206,120,209],{},[117,207,208],{},"Setup > Integration > Manage Integrations",[122,210],{"alt":211,"src":212},"Navigating to Manage Integrations in NetSuite Setup menu","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-integration-manage-integrations-navigation.webp",[102,214,215,216],{},"Create an Integration Record for ChatGPT, and we will come back with the actual token_id:\n",[122,217],{"alt":218,"src":219},"Creating a new integration record in NetSuite for ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-create-integration-record-chatgpt.webp",[102,221,222,223,227,231,235],{},"Create a custom role for MCP with the minimum permissions and assign it to users. e.g.,\n",[122,224],{"alt":225,"src":226},"Configuring custom role permissions for NetSuite MCP - Part 1","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-custom-role-mcp-permissions-1.webp",[122,228],{"alt":229,"src":230},"Configuring custom role permissions for NetSuite MCP - Part 2","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-custom-role-mcp-permissions-2.webp",[122,232],{"alt":233,"src":234},"Configuring custom role permissions for NetSuite MCP - Part 3","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-custom-role-mcp-permissions-3.webp",[122,236],{"alt":237,"src":238},"Configuring custom role permissions for NetSuite MCP - Part 4","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-custom-role-mcp-permissions-4.webp",[64,240,242],{"id":241},"how-to-integrate-netsuite-mcp-with-chatgpt","How to Integrate NetSuite MCP with ChatGPT",[99,244,245,252,259,266,277,284,291],{},[102,246,247,248],{},"Click on 'Settings'.\n",[122,249],{"alt":250,"src":251},"Navigating to Settings in the ChatGPT user interface","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-settings-navigation.webp",[102,253,254,255],{},"Click on 'Apps' > 'Advanced settings'.\n",[122,256],{"alt":257,"src":258},"Navigating to Apps and Advanced Settings in ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-apps-advanced-settings.webp",[102,260,261,262],{},"Turn on 'Developer mode', then click on 'Create app'.\n",[122,263],{"alt":264,"src":265},"Enabling Developer Mode and clicking Create App in ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-developer-mode-create-app.webp",[102,267,268,269,120,273],{},"Enter the details. For Connection, enter ",[270,271,272],"code",{},"https:\u002F\u002F\u003Caccount_id>.suitetalk.api.netsuite.com\u002Fservices\u002Fmcp\u002Fv1\u002Fall",[122,274],{"alt":275,"src":276},"Entering NetSuite MCP connection URL details to create app in ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-create-app-netsuite-mcp-connection.webp",[102,278,279,280],{},"Click on 'Create'. Once it is integrated, you will see the following popup.\n",[122,281],{"alt":282,"src":283},"Pop-up confirmation showing NetSuite MCP integrated in ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-netsuite-mcp-integrated-popup.webp",[102,285,286,287],{},"Click on 'Sign in with NetSuite MCP'.\n",[122,288],{"alt":289,"src":290},"ChatGPT prompt to sign in with NetSuite MCP standard tools","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-sign-in-with-netsuite-mcp.webp",[102,292,293,294],{},"Click the 'Continue' button to grant permissions.\n",[122,295],{"alt":296,"src":297},"Granting connection permissions for NetSuite MCP in ChatGPT","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-grant-permissions-netsuite-mcp.webp",[64,299,301],{"id":300},"how-to-integrate-netsuite-mcp-with-claude-ai","How to Integrate NetSuite MCP with Claude AI",[99,303,304,311,318,325,340,347],{},[102,305,306,307],{},"Click on 'Customize'.\n",[122,308],{"alt":309,"src":310},"Clicking the Customize option in the Claude AI interface","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-customize-navigation.webp",[102,312,313,314],{},"Click on 'Connect your apps'.\n",[122,315],{"alt":316,"src":317},"Clicking Connect your apps in Claude AI customization settings","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-connect-your-apps.webp",[102,319,320,321],{},"Search for 'NetSuite'.\n",[122,322],{"alt":323,"src":324},"Searching for the NetSuite application in Claude AI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-search-netsuite-app.webp",[102,326,327,328,331,332,335,336],{},"Click on 'NetSuite' and enter the server URL: ",[270,329,330],{},"https:\u002F\u002F\u003Caccount_id>.suitetalk.api.netsuite.com\u002Fservices\u002Fmcp\u002Fv1\u002Fsuiteapp\u002Fcom.netsuite.mcpstandardtools",". Replace ",[270,333,334],{},"\u003Caccount_id>"," with your actual account ID.\n",[122,337],{"alt":338,"src":339},"Entering NetSuite MCP server connection URL in Claude AI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-netsuite-mcp-server-url-setup.webp",[102,341,342,343],{},"Click the 'Continue' button.\n",[122,344],{"alt":345,"src":346},"Clicking Continue to authenticate NetSuite MCP server in Claude","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-netsuite-mcp-continue-authentication.webp",[102,348,349,350],{},"Click 'Continue' to authenticate the connector.\n",[122,351],{"alt":352,"src":353},"Final authentication verification for NetSuite MCP in Claude AI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-netsuite-mcp-authenticate-connector.webp",[64,355,357],{"id":356},"netsuite-ai-use-cases","NetSuite AI Use Cases",[359,360,362],"h3",{"id":361},"use-case-in-chatgpt-show-overdue-invoices-over-30-days-in-netsuite","Use Case in ChatGPT: Show overdue invoices over 30 days in NetSuite",[44,364,365],{},[122,366],{"alt":367,"src":368},"ChatGPT running a SuiteQL query to show overdue NetSuite invoices","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-netsuite-overdue-invoices-query-result.webp",[134,370,371],{},[102,372,373],{},"ChatGPT created the SuiteQL query and ran it. This is very handy and saves a lot of time compared to creating a report using the NetSuite website UI.",[359,375,377],{"id":376},"use-case-in-chatgpt-and-claude-can-you-draw-the-sales-of-the-last-30-days-in-a-line-graph","Use Case in ChatGPT and Claude: Can you draw the sales of the last 30 days in a line graph?",[44,379,380],{},[122,381],{"alt":382,"src":383},"ChatGPT failing to render a sales line graph from NetSuite data","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-failed-render-netsuite-sales-line-graph.webp",[134,385,386,389],{},[102,387,388],{},"ChatGPT wasn't able to generate the line graph.",[102,390,391,392],{},"I tried on Claude, and it worked. The difference may be due to the large language model capabilities.\n",[122,393],{"alt":394,"src":395},"Claude AI successfully rendering a visual line graph of NetSuite sales","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-successfully-rendered-netsuite-sales-line-graph.webp",[359,397,399],{"id":398},"use-case-in-claude-create-a-customer-record","Use Case in Claude: Create a customer record",[44,401,402,406],{},[122,403],{"alt":404,"src":405},"Claude AI prompt to create a new customer record in NetSuite","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-create-netsuite-customer-record-prompt.webp",[122,407],{"alt":408,"src":409},"Claude AI confirmation of successful creation of NetSuite customer record","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-create-netsuite-customer-record-success.webp",[134,411,412,419],{},[102,413,414,415],{},"Double-checking the NetSuite website UI confirms the record was created.\n",[122,416],{"alt":417,"src":418},"Verifying newly created customer record in NetSuite user interface","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-ui-verify-new-customer-record-created.webp",[102,420,421,422],{},"Running it in ChatGPT shows the record is available:\n",[122,423],{"alt":424,"src":425},"ChatGPT confirming that the new NetSuite customer record is available","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-verify-netsuite-customer-record-available.webp",[359,427,429],{"id":428},"use-case-in-claude-run-suiteql-query","Use Case in Claude: Run SuiteQL Query",[44,431,432],{},[122,433],{"alt":434,"src":435},"Claude AI directly executing and displaying results of NetSuite SuiteQL query","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-run-suiteql-query-result.webp",[134,437,438],{},[102,439,440],{},"The SuiteQL query can be executed directly.",[64,442,444],{"id":443},"final-thoughts-on-the-netsuite-ai-connector","Final Thoughts on the NetSuite AI Connector",[44,446,447,448,450],{},"The biggest win in using MCP is for users who are not technical enough to create complex reports. These users can use plain language to query the data and ask the ",[51,449,76],{}," to present the report exactly the way they want.",[44,452,453],{},"To prevent prompt injection attacks and the misuse of 'write' operations, only grant write permissions to certain records and transactions. When the AI uses MCP to update or create a record, it executes this as server-side SuiteScript, which completely bypasses any client-side scripts or form validations.",[64,455,457],{"id":456},"reference","Reference:",[134,459,460,469,476],{},[102,461,462],{},[463,464,468],"a",{"href":465,"rel":466},"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fcloud\u002Fsaas\u002Fnetsuite\u002Fns-online-help\u002Farticle_0902023450.html#subsect_90090238176",[467],"nofollow","Installing the MCP Standard Tools SuiteApp",[102,470,471],{},[463,472,475],{"href":473,"rel":474},"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fcloud\u002Fsaas\u002Fnetsuite\u002Fns-online-help\u002Farticle_4160616848.html#subsect_0419123151",[467],"NetSuite AI Connector Service FAQ",[102,477,478],{},[463,479,482],{"href":480,"rel":481},"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fcloud\u002Fsaas\u002Fnetsuite\u002Fns-online-help\u002Fsection_0714082142.html#bridgehead_0804033331",[467],"Connect to the NetSuite AI Connector Service",{"title":484,"searchDepth":485,"depth":485,"links":486},"",2,[487,488,489,490,491,498,499],{"id":66,"depth":485,"text":67},{"id":96,"depth":485,"text":97},{"id":241,"depth":485,"text":242},{"id":300,"depth":485,"text":301},{"id":356,"depth":485,"text":357,"children":492},[493,495,496,497],{"id":361,"depth":494,"text":362},3,{"id":376,"depth":494,"text":377},{"id":398,"depth":494,"text":399},{"id":428,"depth":494,"text":429},{"id":443,"depth":485,"text":444},{"id":456,"depth":485,"text":457},"2026-06-13","Set up the NetSuite AI Connector (MCP) with ChatGPT and Claude. Discover how to query ERP data and automate tasks using plain language AI.","md","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002FEN-Setup-NetSuite-MCP-on-ChatGPT-%26-Claude.webp","NetSuite MCP AI Integration thumbnail featuring dark blue corporate background with ChatGPT and Claude logos connected to NetSuite cloud database",true,{"tags":507,"schemaOrg":511,"robots":514,"sitemap":515},[89,508,509,510,76],"MCP","ChatGPT","Claude",[512],{"@type":513,"headline":21,"description":501},"TechArticle","index, follow",{"lastmod":500},8,"\u002Fen\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"title":519,"description":501,"ogTitle":21,"ogDescription":501,"twitterTitle":21,"twitterDescription":501},"NetSuite MCP AI Integration: Connect ChatGPT & Claude","5OTx3YSBgo8Bqzkp38LRhE62SGs4B_pNfCKwR_fuyso",{"id":522,"title":25,"author":39,"body":523,"category":39,"date":715,"description":716,"extension":502,"image":717,"imageAlt":718,"isPublished":505,"meta":719,"minRead":727,"navigation":505,"path":728,"seo":729,"stem":27,"__hash__":730},"article\u002Fen\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis.md",{"type":41,"value":524,"toc":713},[525,536,547,550,556,572,582,588,594,600,622,631,645,653,671,674,685,694,697,710],[44,526,527,528,531,532],{},"On June 9, 2026, Anthropic released ",[51,529,530],{},"Claude Fable 5",", a Mythos-Class model with advanced safeguards in some areas such as cybersecurity, distillation, chemistry and biology.\n",[122,533],{"alt":534,"src":535},"Anthropic Claude Fable 5 launch announcement and model capabilities","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fclaude-fable-5-launch-announcement.webp",[44,537,538,539,542,543],{},"Anthropic has published numbers showing Fable 5 is ahead of Opus 4.8 and GPT-5.5 on several key benchmarks. In ",[51,540,541],{},"GDPval-AA (knowledge work)",", it is significantly ahead of Opus 4.8, GPT 5.5 and Gemini 3.1 Pro.\n",[122,544],{"alt":545,"src":546},"Claude Fable 5 benchmark comparison including GDPval-AA knowledge work score","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fclaude-fable-5-benchmarks-gdpval-aa.webp",[44,548,549],{},"According to Claude, \"Fable 5 shows strong performance on complex analytical tasks.\".",[44,551,552],{},[122,553],{"alt":554,"src":555},"Claude Fable 5 performance statement on complex analytical tasks","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fclaude-fable-5-analytical-performance-statement.webp",[44,557,558,559,562,563,566,567,161],{},"We decided to test ",[51,560,561],{},"Fable 5"," by running an analysis of 'Space Exploration Technologies Corporation(SpaceX)' for investment research purposes, using the '",[51,564,565],{},"comps-analysis","' skill. The 'skill.md' file was from ",[463,568,571],{"href":569,"rel":570},"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Ffinancial-services\u002Fblob\u002Fmain\u002Fplugins\u002Fagent-plugins\u002Fmarket-researcher\u002Fskills\u002Fcomps-analysis\u002FSKILL.md",[467],"Anthropic's financial-services GitHub repository",[44,573,574,578],{},[122,575],{"alt":576,"src":577},"Initiating SpaceX financial comps analysis skill in Claude chat","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fspacex-comps-analysis-skill-initiation.webp",[122,579],{"alt":580,"src":581},"Claude Fable 5 executing automated financial comps analysis for SpaceX","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fspacex-comps-analysis-running-progress.webp",[44,583,584],{},[122,585],{"alt":586,"src":587},"SpaceX automated financial comps analysis workflow final output","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fspacex-comps-analysis-skill-results-terminal.webp",[44,589,590,591,593],{},"The task took around 25 mins. Claude did not ask any clarifying questions except to request permission to access external websites. Impressively, ",[51,592,561],{}," was capable of finding the peer companies for comparison.",[44,595,596],{},[122,597],{"alt":598,"src":599},"Claude Fable 5 requesting explicit permission for external website access","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fclaude-fable-5-external-site-access-permission.webp",[44,601,602,606,607,610,611,616,617,161],{},[122,603],{"alt":604,"src":605},"SpaceX peer group companies identified autonomously by Claude Fable 5","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fclaude-fable-5-spacex-comps-excel-memo.webp","\n*",[51,608,609],{},"Please note:"," This is for research and educational purpose and does not constitute investment advice. Original generated files can be downloaded here, ",[463,612,615],{"href":613,"rel":614},"https:\u002F\u002Ftechvoyage.dev\u002FSpaceX_Comps_Analysis_2026-06-10.xlsx",[467],"SpaceX_Comps_Analysis_2026-06-10.xlsx",", and, ",[463,618,621],{"href":619,"rel":620},"https:\u002F\u002Ftechvoyage.dev\u002FSpaceX_Comps_Memo_2026-06-10.pdf",[467],"SpaceX_Comps_Memo_2026-06-10.pdf",[44,623,624,625,628,629,161],{},"When we tested the same skill using ",[51,626,627],{},"Qwen deep research",", we had to manually enter the peer companies. The numerical figures are differed slightly compared to ",[51,630,561],{},[44,632,633,637,641],{},[122,634],{"alt":635,"src":636},"Initiating SpaceX investment comps analysis in Qwen deep research","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fqwen-deep-research-spacex-comps-initiation.webp",[122,638],{"alt":639,"src":640},"Entering peer companies manually in Qwen deep research for SpaceX analysis","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fqwen-deep-research-spacex-comps-running.webp",[122,642],{"alt":643,"src":644},"SpaceX financial benchmark analysis report preview generated by Qwen","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fqwen-deep-research-spacex-comps-report-preview.webp",[44,646,647,648,161],{},"*The Qwen-generated report can be downloaded here, ",[463,649,652],{"href":650,"rel":651},"https:\u002F\u002Ftechvoyage.dev\u002FThe_SpaceX_Comp_Analysis_A_Statistical_Benchmark_of_Growth_Efficiency_and_Valuation_Against_Public_Peers.pdf",[467],"The_SpaceX_Comp_Analysis_A_Statistical_Benchmark_of_Growth_Efficiency_and_Valuation_Against_Public_Peers.pdf",[44,654,655,656,659,660,120,663,667],{},"Although both reports from Claude and Qwen were produced based on the same methodology specified in the skill, the numbers varied because Claude and Qwen pulled from different sources. For example, Claude Fable 5 used ",[51,657,658],{},"Stock Analysis"," while Qwen used ",[51,661,662],{},"SEC.gov",[122,664],{"alt":665,"src":666},"Financial data extracted from Stock Analysis by Claude Fable 5","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fclaude-fable-5-data-source-stock-analysis.webp",[122,668],{"alt":669,"src":670},"SEC filings and SEC.gov data source utilized by Qwen deep research","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fqwen-deep-research-data-source-sec-gov.webp",[44,672,673],{},"The report from Qwen also contained much more information regarding the business model, capital structure and operation.",[44,675,676,677,680,681],{},"After comparing reports, we have decided to try again with ",[270,678,679],{},"\u002Fresearch"," command in Claude desktop app.\n",[122,682],{"alt":683,"src":684},"Using the new research command in Claude desktop app for company analysis","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fclaude-desktop-research-command-spacex.webp",[44,686,687,688,693],{},"The newly generated analysis report, ",[463,689,692],{"href":690,"rel":691},"https:\u002F\u002Ftechvoyage.dev\u002FSpaceX_Analysis.pdf",[467],"SpaceX_Analysis.pdf",", included extra recommendations and caveats sections. Compared to Qwen deep search, it still lacked detailed company information such as operation and capital structure.",[44,695,696],{},"Is Fable 5 worth the premium price tag?  It might be for hard, long tasks and autonomous coding. But for certain knowledge work, like company analysis, it may not be the best value yet.",[44,698,699,700,702,703,120,706],{},"At then end,  we tested how well ",[51,701,561],{}," performs in translation. Strangely, the model auto switched back to ",[51,704,705],{},"Opus 4.8",[122,707],{"alt":708,"src":709},"Claude desktop app automatically switching model from Fable 5 to Opus 4.8","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002Fclaude-fable-5-translation-opus-switching.webp",[44,711,712],{},"Does this mean any long-context conversion will be reverted back to Opus 4.8 ? Is this just a temporary quirk during the usage before 22nd June? Or is the system simply smart enough to tell the translation doesn't require such a powerful model.",{"title":484,"searchDepth":485,"depth":485,"links":714},[],"2026-06-11","We test Anthropic's new Claude Fable 5 against Qwen Deep Research for financial analysis. Is it worth the upgrade?","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FTesting%20Claude%20Fable%205%20in%20Financial%20Analysis\u002FEN-Testing-Claude-Fable-5-in-Financial-Analysis.webp","Claude Fable 5 vs. Qwen: AI Financial Analysis Test",{"tags":720,"schemaOrg":724,"robots":514,"sitemap":726},[530,721,722,723],"Financial Analysis","Qwen Deep Research","AI Benchmarks",[725],{"@type":513,"headline":25,"description":716},{"lastmod":715},5,"\u002Fen\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"title":718,"description":716,"ogTitle":25,"ogDescription":716,"twitterTitle":25,"twitterDescription":716},"7IMijVENJ7UyveGCrTcSxcOnrnYxXKMuiNS08r03S6s",{"id":732,"title":29,"author":39,"body":733,"category":39,"date":945,"description":946,"extension":502,"image":947,"imageAlt":948,"isPublished":505,"meta":949,"minRead":727,"navigation":505,"path":953,"seo":954,"stem":31,"__hash__":955},"article\u002Fen\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2.md",{"type":41,"value":734,"toc":940},[735,749,753,758,767,782,788,791,802,806,809,816,823,834,837,843,854,863,873,886,896,906,909,915,919,930],[44,736,737,738,58,741,744,745,748],{},"The ",[270,739,740],{},"\u002Fbrowser",[270,742,743],{},"\u002Fschedule"," commands in ",[51,746,747],{},"Google Antigravity 2"," redefine how we interact with AI. These two commands transform Antigravity into a proactive automation platform that can interact with the live web and run recurring workflows.",[64,750,752],{"id":751},"browser-run","Browser Run",[44,754,737,755,757],{},[270,756,740],{}," command forces the use of the Chrome browser to complete a task. Users remain in control over when and how agents access the web during the workflow. Screenshots and video clips are taken during the process.",[44,759,760,763],{},[51,761,762],{},"Use Case:",[122,764],{"alt":765,"src":766},"Using the \u002Fbrowser command to submit sick leave","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fbrowser-command-sick-leave-prompt.webp",[44,768,769,770,774,778],{},"The following are the output from the agent:\n",[122,771],{"alt":772,"src":773},"Browser automation subagent starting the sick leave submission task","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fbrowser-automation-subagent-delegation.webp",[122,775],{"alt":776,"src":777},"Browser automator setting up Chrome with remote debugging and permissions","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fbrowser-automation-permissions-and-chrome-setup.webp",[122,779],{"alt":780,"src":781},"Browser subagent pausing at a login wall requesting user credentials","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fbrowser-automation-login-wall-encountered.webp",[44,783,784],{},[122,785],{"alt":786,"src":787},"Browser subagent waiting for the user to complete the login process","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fbrowser-automation-waiting-for-user-login.webp",[44,789,790],{},"Antigravity was capable of opening the page and submitting the form. When a login is required, the agent will wait until you have logged in to the website.",[44,792,793,798,799,801],{},[794,795],"video",{"alt":796,"src":797,"controls":505},"Video of the browser subagent executing the sick leave submission process","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fbrowser-automation-sick-leave-process.webm","\nThe ",[270,800,740],{}," command is useful when we need the most recent documentation from the web, change logs, testing web applications, or checking API statuses to complete a task.",[64,803,805],{"id":804},"schedule-task","Schedule Task",[44,807,808],{},"Antigravity 2 has built-in functionality for scheduling tasks. We will test it out by auto-entering a timesheet every 10 minutes.",[44,810,811,812],{},"Click on 'Scheduled Tasks':\n",[122,813],{"alt":814,"src":815},"Scheduled Tasks menu option in the sidebar","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fscheduled-tasks-menu-item.webp",[44,817,818,819],{},"Click on '+ New' button to create a new scheduled task:\n",[122,820],{"alt":821,"src":822},"Empty Scheduled Tasks view with a new task button","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fscheduled-tasks-empty-state-new-button.webp",[44,824,825,826,830],{},"Fill in the form and schedule the task to run every 10 minutes:\n",[122,827],{"alt":828,"src":829},"New Scheduled Task form filled out for auto timesheet entry","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fscheduled-tasks-new-task-form.webp",[122,831],{"alt":832,"src":833},"Active Auto Timesheet Entry task in the Scheduled Tasks list","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fscheduled-tasks-active-task-list.webp",[44,835,836],{},"The task was triggered, but it resulted in an error.",[44,838,839],{},[122,840],{"alt":841,"src":842},"Error message indicating no available models found for tier flash","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fscheduled-tasks-error-no-models.webp",[44,844,845,846,849,850,853],{},"We tried adding 'env' values to the ",[270,847,848],{},"sidecar.json"," file, which is located at ",[270,851,852],{},".gemini\u002Fconfig\u002Fsidecars\u002Fauto-timesheet-entry",", but we still received the same error.",[855,856,861],"pre",{"className":857,"code":859,"language":860},[858],"language-text","    \"env\": {\n        \"GEMINI_MODEL\": \"gemini-3.5-flash\",\n        \"GOOGLE_CLOUD_PROJECT\": \"your-gcp-project-id\"\n    }\n","text",[270,862,859],{"__ignoreMap":484},[44,864,865,866,869,870,161],{},"Inspecting the scheduled task logs located at ",[270,867,868],{},".gemini\u002Fantigravity\u002Fsidecar_data\u002F",", we can see ",[270,871,872],{},"[schedule] Triggering command: \"agentapi\" [new-conversation]",[44,874,875,876,881,882,885],{},"The response to our issue posted in the ",[463,877,880],{"href":878,"rel":879},"https:\u002F\u002Fdiscuss.ai.google.dev\u002Ft\u002Fscheduled-tasks-in-antigravity-2-ended-with-errors\u002F168013",[467],"Build with Google AI Forum"," suggests an API key is required for ",[270,883,884],{},"agentapi",". We tried using the API key, but still had no luck.",[44,887,888,889,891,892],{},"We tried again with the command, ",[270,890,743],{},", directly in the conversation box.\n",[122,893],{"alt":894,"src":895},"Using the \u002Fschedule command to prompt the timesheet automation task","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fschedule-command-timesheet-prompt.webp",[44,897,898,899,901,902],{},"Tasks scheduled using the ",[270,900,743],{}," command will not appear under the 'Scheduled Tasks' menu item.\n",[122,903],{"alt":904,"src":905},"Scheduled Tasks list not showing tasks created via CLI command","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fscheduled-tasks-list-missing-cli-task.webp",[44,907,908],{},"The cron task did get triggered.",[44,910,911],{},[122,912],{"alt":913,"src":914},"Cron job log confirming it was triggered","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002Fcron-job-triggered-log.webp",[64,916,918],{"id":917},"final-thoughts","Final thoughts",[44,920,737,921,923,924,926,927,929],{},[270,922,740],{},"and ",[270,925,743],{}," commands in Antigravity 2 are not just isolated features, combining them creates a powerful tool. For example, scheduling an agent to use ",[270,928,740],{}," to navigate to news and information websites every Monday morning at 6:00 AM, synthesise the info, and deliver a comprehensive daily briefing.",[44,931,932,933,936,937,939],{},"Other commands, such as ",[270,934,935],{},"\u002Fgrill-me"," (mentioned in the article ",[463,938,33],{"href":34},"), can be used when designing new scheduled tasks. It prompts the agent to ask users to clarify ambiguities and catch edge cases before finalising the design.",{"title":484,"searchDepth":485,"depth":485,"links":941},[942,943,944],{"id":751,"depth":485,"text":752},{"id":804,"depth":485,"text":805},{"id":917,"depth":485,"text":918},"2026-06-07","Discover how the \u002Fbrowser and \u002Fschedule commands elevate Google Antigravity 2 into a powerful AI automation platform.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Browser%20and%20Scheduler%20in%20Antigravity%202\u002FEN-Use-Browser-and-Scheduler-in-Antigravity-2.webp","Google Antigravity 2: Browser & Schedule Automation",{"schemaOrg":950,"robots":514,"sitemap":952},[951],{"@type":513,"headline":948,"description":946},{"lastmod":945},"\u002Fen\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"title":948,"description":946,"ogTitle":29,"ogDescription":946,"twitterTitle":29,"twitterDescription":946},"4mcPjN-m89F0bW0uV2vlHDsS_g7gItd9UCcxf8hMcAs",{"id":957,"title":33,"author":484,"body":958,"category":484,"date":1293,"description":1294,"extension":502,"image":1295,"imageAlt":1296,"isPublished":505,"meta":1297,"minRead":727,"navigation":505,"path":1301,"seo":1302,"stem":35,"__hash__":1303},"article\u002Fen\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2.md",{"type":41,"value":959,"toc":1283},[960,963,969,973,979,982,986,992,995,1001,1007,1013,1025,1030,1035,1043,1047,1053,1059,1065,1068,1074,1080,1085,1090,1093,1097,1107,1113,1117,1123,1129,1135,1138,1142,1145,1149,1155,1161,1167,1170,1257,1263,1273,1276,1279],[44,961,962],{},"Antigravity 2, as an agent-first desktop application, allows users to orchestrate a team of subagents to generate a daily brief from emails and calendars, or to build, test, and deploy an application. But what does this actually look like in practice?",[44,964,965,966,968],{},"Let’s explore what Antigravity 2 can do for you—from built-in commands and skills to how integrations like Firebase Model Context Protocol (MCP) servers are turning developers into full-stack architects. Please refer to this article, ",[463,967,17],{"href":18},", for setting up and configuring skills and MCP servers.",[64,970,972],{"id":971},"built-in-commands","Built-in Commands",[359,974,976],{"id":975},"goal",[270,977,978],{},"\u002Fgoal",[44,980,981],{},"With this command, you tell the agent to run until a specific task is completely finished.",[44,983,984],{},[51,985,762],{},[44,987,988],{},[122,989],{"alt":990,"src":991},"Prompting the Antigravity 2 goal command to build a Textris game","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-goal-command-prompt.webp",[44,993,994],{},"When we ask for dynamic subagents, three agents are spawned to complete the task.",[44,996,997],{},[122,998],{"alt":999,"src":1000},"Antigravity 2 spawning subagents to complete tasks autonomously","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-spawning-subagents-1.webp",[44,1002,1003],{},[122,1004],{"alt":1005,"src":1006},"Detailed progress of Antigravity 2 subagents executing steps","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-spawning-subagents-2.webp",[44,1008,1009],{},[122,1010],{"alt":1011,"src":1012},"Completion of autonomous tasks by Antigravity 2 subagents","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-spawning-subagents-3.webp",[44,1014,1015,1016,1020,1021],{},"To play the generated Textris game in HTML, please click this ",[463,1017,1019],{"href":1018},"\u002Ftextris","link",":\n",[794,1022],{"alt":1023,"src":1024,"controls":505},"AI generated Textris game in HTML","https:\u002F\u002Fpub-9791558bbefc4bb59834a03ae5c44137.r2.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fai-generated-textri-game-html.webm",[44,1026,737,1027,1029],{},[270,1028,978],{}," command creates a plan, executes it step by step, and reports the progress to you at each stage. Additionally, the agent will manage the context window itself without exceeding limits. This is suitable for lengthy tasks, such as performance optimisation or module refactoring, which require multiple rounds of iteration.",[359,1031,1033],{"id":1032},"grill-me",[270,1034,935],{},[44,1036,1037,1038,1042],{},"This command triggers the skill ",[463,1039,1032],{"href":1040,"rel":1041},"https:\u002F\u002Fgithub.com\u002Fmattpocock\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fproductivity\u002Fgrill-me\u002FSKILL.md",[467],", created by Matt Pocock. It is concise and highly effective. The idea behind it is to question you from multiple aspects, clarify edge cases, align the structures, and finalise the plan before implementation.",[44,1044,1045],{},[51,1046,762],{},[44,1048,1049],{},[122,1050],{"alt":1051,"src":1052},"Triggering the grill-me command for Cloudflare architecture in Antigravity 2","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-grill-me-command-prompt.webp",[44,1054,1055],{},[122,1056],{"alt":1057,"src":1058},"Interactive questioning session using the grill-me skill","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-grill-me-interaction-1.webp",[44,1060,1061],{},[122,1062],{"alt":1063,"src":1064},"Clarifying edge cases and structuring the plan with grill-me","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-grill-me-interaction-2.webp",[44,1066,1067],{},"It supports multi-select capabilities:",[44,1069,1070],{},[122,1071],{"alt":1072,"src":1073},"Using multi-select capabilities during the grill-me process","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-grill-me-multi-select-1.webp",[44,1075,1076],{},[122,1077],{"alt":1078,"src":1079},"Finalizing choices with the grill-me multi-select feature","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-grill-me-multi-select-2.webp",[44,1081,737,1082,1084],{},[270,1083,935],{}," command is quite impressive. It covers almost all aspects of architectural design for deploying to Cloudflare. This makes it suitable for the architectural design of an app, refactoring across multiple domains, and other potentially complex tasks.",[359,1086,1087],{"id":484},[270,1088,1089],{},"@\u002F ",[44,1091,1092],{},"This command doesn't appear on the available list, but we sometimes need it for our context window. It is used to add a folder or files (other than media) to the conversation box.",[64,1094,1096],{"id":1095},"skills","Skills",[44,1098,1099,1100,1103,1104,161],{},"We can type ",[270,1101,1102],{},"\u002F"," to activate the popup box and select a skill. Let's test out ",[270,1105,1106],{},"excalidraw-diagram",[44,1108,1109],{},[122,1110],{"alt":1111,"src":1112},"Selecting the Excalidraw diagram skill from the Antigravity popup box","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-skill-selection-excalidraw.webp",[44,1114,1115],{},[51,1116,762],{},[44,1118,1119],{},[122,1120],{"alt":1121,"src":1122},"Providing instructions to generate an Excalidraw diagram","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-excalidraw-diagram-prompt.webp",[44,1124,1125],{},[122,1126],{"alt":1127,"src":1128},"Successful generation of an Excalidraw architecture diagram","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-excalidraw-diagram-generation.webp",[44,1130,1131],{},[122,1132],{"alt":1133,"src":1134},"Antigravity architecture diagram","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-architecture.webp",[44,1136,1137],{},"The skill was successfully executed after a couple of rounds of permission confirmations.",[64,1139,1141],{"id":1140},"mcp-servers","MCP Servers",[44,1143,1144],{},"When the agent builds a backend, you usually have to open a web console, create a database, copy API keys, and paste them back. By leveraging MCP servers directly in Antigravity, the agent gains \"hands\" to manipulate your cloud infrastructure.",[44,1146,1147],{},[51,1148,762],{},[44,1150,1151],{},[122,1152],{"alt":1153,"src":1154},"Instructing the MCP server to create a Firebase web application","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-mcp-server-firebase-prompt.webp",[44,1156,1157],{},[122,1158],{"alt":1159,"src":1160},"Antigravity using MCP servers to manipulate Firebase infrastructure","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-mcp-server-firebase-execution-1.webp",[44,1162,1163],{},[122,1164],{"alt":1165,"src":1166},"Successful creation of a Firebase app via Antigravity MCP servers","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-mcp-server-firebase-execution-2.webp",[44,1168,1169],{},"The agent successfully managed to create the web app in Firebase using MCP servers. Let's check the repository.",[855,1171,1175],{"className":1172,"code":1173,"language":1174,"meta":484,"style":484},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Create a new public GitHub repository called ‘to-do-app-techvoyage’. Then push all the current project files to it with the commit message ‘Initial commit — to-do-app’.\n","bash",[270,1176,1177],{"__ignoreMap":484},[1178,1179,1182,1186,1190,1193,1196,1199,1202,1205,1208,1211,1214,1217,1220,1223,1226,1229,1232,1235,1238,1240,1243,1246,1249,1251,1254],"span",{"class":1180,"line":1181},"line",1,[1178,1183,1185],{"class":1184},"sBMFI","Create",[1178,1187,1189],{"class":1188},"sfazB"," a",[1178,1191,1192],{"class":1188}," new",[1178,1194,1195],{"class":1188}," public",[1178,1197,1198],{"class":1188}," GitHub",[1178,1200,1201],{"class":1188}," repository",[1178,1203,1204],{"class":1188}," called",[1178,1206,1207],{"class":1188}," ‘to-do-app-techvoyage’.",[1178,1209,1210],{"class":1188}," Then",[1178,1212,1213],{"class":1188}," push",[1178,1215,1216],{"class":1188}," all",[1178,1218,1219],{"class":1188}," the",[1178,1221,1222],{"class":1188}," current",[1178,1224,1225],{"class":1188}," project",[1178,1227,1228],{"class":1188}," files",[1178,1230,1231],{"class":1188}," to",[1178,1233,1234],{"class":1188}," it",[1178,1236,1237],{"class":1188}," with",[1178,1239,1219],{"class":1188},[1178,1241,1242],{"class":1188}," commit",[1178,1244,1245],{"class":1188}," message",[1178,1247,1248],{"class":1188}," ‘Initial",[1178,1250,1242],{"class":1188},[1178,1252,1253],{"class":1188}," —",[1178,1255,1256],{"class":1188}," to-do-app’.\n",[44,1258,1259],{},[122,1260],{"alt":1261,"src":1262},"Agent automatically pushing project files to a new GitHub repository","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002Fantigravity-github-repository-push.webp",[44,1264,737,1265,1268,1269,161],{},[270,1266,1267],{},"to-do-app-techvoyage"," repository is available on GitHub via this ",[463,1270,1019],{"href":1271,"rel":1272},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fto-do-app-techvoyage",[467],[64,1274,1275],{"id":917},"Final Thoughts",[44,1277,1278],{},"While MCP and Skills in Antigravity 2—powered by Gemini 3.5 Flash—deliver blazing speed, the agentic flow is currently bottlenecked by constant permission interruptions and a lack of checkpoints for rollbacks. Until the checkpoint feature is introduced, frequent Git commits are your mandatory safety net.",[1280,1281,1282],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":484,"searchDepth":485,"depth":485,"links":1284},[1285,1290,1291,1292],{"id":971,"depth":485,"text":972,"children":1286},[1287,1288,1289],{"id":975,"depth":494,"text":978},{"id":1032,"depth":494,"text":935},{"id":484,"depth":494,"text":1089},{"id":1095,"depth":485,"text":1096},{"id":1140,"depth":485,"text":1141},{"id":917,"depth":485,"text":1275},"2026-06-06","Explore Antigravity 2, an agent-first desktop app. Learn to orchestrate AI subagents, use built-in skills, and leverage MCP servers to build full-stack apps.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FWhat%20can%20we%20do%20with%20Antigravity%202\u002FEN-What-can-we-do-with-Antigravity-2.webp","Antigravity 2 Tutorial: AI Agents, Skills & MCP Servers",{"schemaOrg":1298,"robots":514,"sitemap":1300},[1299],{"@type":513,"headline":33,"description":1294},{"lastmod":1293},"\u002Fen\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"title":1296,"description":1294,"ogTitle":33,"ogDescription":1294,"twitterTitle":33,"twitterDescription":1294},"JeSkC_527Foa9wnhH3eb2fNNcILJzNwlr9BteGQ5eIg",{"id":1305,"title":17,"author":39,"body":1306,"category":39,"date":2038,"description":2039,"extension":502,"image":2040,"imageAlt":2041,"isPublished":505,"meta":2042,"minRead":1589,"navigation":505,"path":2046,"seo":2047,"stem":19,"__hash__":2048},"article\u002Fen\u002Farticle\u002Fsetup-antigravity-2.md",{"type":41,"value":1307,"toc":2029},[1308,1319,1323,1326,1337,1340,1344,1353,1359,1366,1372,1379,1389,1391,1395,1402,1408,1411,1417,1422,1425,1439,1453,1460,1473,1483,1497,1499,1503,1506,1521,1524,1870,1880,1886,1897,1903,1909,1915,1917,1921,1932,1945,1951,1957,1964,1983,1986,1992,1994,1998,2001,2007,2010,2016,2018,2020,2023,2026],[44,1309,1310,1311,1314,1315,1318],{},"At Google I\u002FO 2026, Google announced ",[51,1312,1313],{},"Antigravity 2",", a standalone desktop application that treats the ",[51,1316,1317],{},"agent"," as the primary user interface. You simply describe what you want to achieve, and the agent will then generate a plan, break it down into manageable subtasks, and execute them.",[359,1320,1322],{"id":1321},"prerequisites","Prerequisites",[44,1324,1325],{},"Before we begin, you will need:",[134,1327,1328,1331,1334],{},[102,1329,1330],{},"A computer (macOS is used in this guide)",[102,1332,1333],{},"A modern web browser",[102,1335,1336],{},"A Gmail account",[1338,1339],"hr",{},[64,1341,1343],{"id":1342},"_1-install-antigravity-2","1. Install Antigravity 2",[44,1345,1346,1347,1352],{},"Download Antigravity 2 from ",[463,1348,1351],{"href":1349,"rel":1350},"https:\u002F\u002Fantigravity.google\u002Fdownload",[467],"antigravity.google"," and install it on your computer. On the first launch, you will be prompted to sign in using your Gmail account.",[44,1354,1355],{},[122,1356],{"alt":1357,"src":1358},"Google account login screen for Antigravity 2 first launch","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-gmail-login.webp",[44,1360,1361,1362,1365],{},"Once signed in, you will notice a ",[51,1363,1364],{},"voice button"," in the input field, allowing you to record voice prompts instead of typing them.",[44,1367,1368],{},[122,1369],{"alt":1370,"src":1371},"Voice dictation and prompt recording button in Antigravity 2 text field","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-voice-input-field.webp",[44,1373,1374,1375,1378],{},"Antigravity 2 also introduces the concept of a ",[51,1376,1377],{},"Project",", which can span multiple local folders and operate with its own specific agent settings and permissions.",[44,1380,1381,1385],{},[122,1382],{"alt":1383,"src":1384},"Project selection and configuration menu in Antigravity 2 settings","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-project-menu.webp",[122,1386],{"alt":1387,"src":1388},"Creating a new AI project with folder path in Antigravity 2","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-project-creation.webp",[1338,1390],{},[64,1392,1394],{"id":1393},"_2-set-up-mcps-and-plugins","2. Set Up MCPs and Plugins",[44,1396,1397,1398,1401],{},"All Model Context Protocol (MCP) servers, plugins, and skills are managed under the ",[51,1399,1400],{},"Customizations"," section in the Settings menu:",[44,1403,1404],{},[122,1405],{"alt":1406,"src":1407},"Customizations tab in settings for managing MCP servers and skills","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-settings-customizations.webp",[44,1409,1410],{},"Currently, the only available plugins are from Google, but hopefully, more will be released in the future.",[44,1412,1413],{},[122,1414],{"alt":1415,"src":1416},"List of official Google plugins and integrations in Antigravity 2","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-google-plugins-list.webp",[1418,1419,1421],"h4",{"id":1420},"adding-an-available-mcp-server","Adding an Available MCP Server",[44,1423,1424],{},"To install a pre-configured MCP Server (e.g., GitHub):",[99,1426,1427,1433],{},[102,1428,1429,1430,161],{},"Click on ",[51,1431,1432],{},"Add MCP+",[102,1434,1435,1436,161],{},"Select the ",[51,1437,1438],{},"GitHub MCP Server",[44,1440,1441,1445,1449],{},[122,1442],{"alt":1443,"src":1444},"Adding a pre-configured MCP server by clicking Add MCP plus button","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-add-mcp-button.webp",[122,1446],{"alt":1447,"src":1448},"Selecting GitHub MCP Server from the list of available integrations","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-select-github-mcp.webp",[122,1450],{"alt":1451,"src":1452},"GitHub MCP server authorization and installation setup wizard","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-github-mcp-setup.webp",[44,1454,1455,1456],{},"The GitHub MCP Server setup ended with an error:\n",[122,1457],{"alt":1458,"src":1459},"Configuration error during GitHub MCP Server installation process","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-github-mcp-error.webp",[44,1461,1462,1463,1466,1467,1469,1470,1472],{},"Since we already have ",[270,1464,1465],{},"git"," installed on macOS, we can bypass this by executing the ",[270,1468,1465],{}," command directly within the conversation. However, we first need to explicitly add the ",[270,1471,1465],{}," command to our Antigravity permissions.",[44,1474,1475,1479],{},[122,1476],{"alt":1477,"src":1478},"Request dialog to add git command to sandboxed terminal permissions","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-add-git-permission-1.webp",[122,1480],{"alt":1481,"src":1482},"Granting git command execution permission in settings menu","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-add-git-permission-2.webp",[44,1484,1485,1486,1488,1489,1493],{},"Let's test out the prompt to see if the ",[270,1487,1465],{}," command now works:\n",[122,1490],{"alt":1491,"src":1492},"Submitting git status request within AI agent prompt box","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-git-command-test-1.webp",[122,1494],{"alt":1495,"src":1496},"Successful terminal execution of git status command inside the chat","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-git-command-test-2.webp",[1338,1498],{},[64,1500,1502],{"id":1501},"_3-add-custom-mcp-servers","3. Add Custom MCP Servers",[44,1504,1505],{},"If the MCP Server you want isn't on the default list, you can add it by editing the MCP configuration file directly. The configuration is located at:",[855,1507,1509],{"className":1172,"code":1508,"language":1174,"meta":484,"style":484},"~\u002F.gemini\u002Fconfig\u002Fmcp_config.json\n",[270,1510,1511],{"__ignoreMap":484},[1178,1512,1513,1517],{"class":1180,"line":1181},[1178,1514,1516],{"class":1515},"sMK4o","~",[1178,1518,1520],{"class":1519},"sTEyZ","\u002F.gemini\u002Fconfig\u002Fmcp_config.json\n",[44,1522,1523],{},"Let's add some Cloudflare MCP Servers as an example. Because Cloudflare supports dynamic client registration, we only need to enable OAuth. Add the following to your JSON configuration:",[855,1525,1529],{"className":1526,"code":1527,"language":1528,"meta":484,"style":484},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","    \"cloudflare-api\": {\n      \"serverUrl\": \"https:\u002F\u002Fmcp.cloudflare.com\u002Fmcp\",\n      \"oauth\": {\n        \"enabled\": true\n      }\n    },\n    \"cloudflare-docs\": {\n      \"serverUrl\": \"https:\u002F\u002Fdocs.mcp.cloudflare.com\u002Fmcp\"\n    },\n    \"cloudflare-bindings\": {\n      \"serverUrl\": \"https:\u002F\u002Fbindings.mcp.cloudflare.com\u002Fmcp\",\n      \"oauth\": {\n        \"enabled\": true\n      }\n    },\n    \"cloudflare-builds\": {\n      \"serverUrl\": \"https:\u002F\u002Fbuilds.mcp.cloudflare.com\u002Fmcp\",\n      \"oauth\": {\n        \"enabled\": true\n      }\n    },\n    \"cloudflare-observability\": {\n      \"serverUrl\": \"https:\u002F\u002Fobservability.mcp.cloudflare.com\u002Fmcp\",\n      \"oauth\": {\n        \"enabled\": true\n      }\n    }\n","json",[270,1530,1531,1548,1573,1587,1603,1608,1616,1630,1648,1655,1669,1689,1702,1715,1720,1727,1741,1761,1774,1787,1792,1799,1813,1833,1846,1859,1864],{"__ignoreMap":484},[1178,1532,1533,1536,1539,1542,1545],{"class":1180,"line":1181},[1178,1534,1535],{"class":1515},"    \"",[1178,1537,1538],{"class":1188},"cloudflare-api",[1178,1540,1541],{"class":1515},"\"",[1178,1543,1544],{"class":1519},": ",[1178,1546,1547],{"class":1515},"{\n",[1178,1549,1550,1553,1557,1559,1562,1565,1568,1570],{"class":1180,"line":485},[1178,1551,1552],{"class":1515},"      \"",[1178,1554,1556],{"class":1555},"spNyl","serverUrl",[1178,1558,1541],{"class":1515},[1178,1560,1561],{"class":1515},":",[1178,1563,1564],{"class":1515}," \"",[1178,1566,1567],{"class":1188},"https:\u002F\u002Fmcp.cloudflare.com\u002Fmcp",[1178,1569,1541],{"class":1515},[1178,1571,1572],{"class":1515},",\n",[1178,1574,1575,1577,1580,1582,1584],{"class":1180,"line":494},[1178,1576,1552],{"class":1515},[1178,1578,1579],{"class":1555},"oauth",[1178,1581,1541],{"class":1515},[1178,1583,1561],{"class":1515},[1178,1585,1586],{"class":1515}," {\n",[1178,1588,1590,1593,1596,1598,1600],{"class":1180,"line":1589},4,[1178,1591,1592],{"class":1515},"        \"",[1178,1594,1595],{"class":1184},"enabled",[1178,1597,1541],{"class":1515},[1178,1599,1561],{"class":1515},[1178,1601,1602],{"class":1515}," true\n",[1178,1604,1605],{"class":1180,"line":727},[1178,1606,1607],{"class":1515},"      }\n",[1178,1609,1611,1614],{"class":1180,"line":1610},6,[1178,1612,1613],{"class":1515},"    }",[1178,1615,1572],{"class":1519},[1178,1617,1619,1621,1624,1626,1628],{"class":1180,"line":1618},7,[1178,1620,1535],{"class":1515},[1178,1622,1623],{"class":1188},"cloudflare-docs",[1178,1625,1541],{"class":1515},[1178,1627,1544],{"class":1519},[1178,1629,1547],{"class":1515},[1178,1631,1632,1634,1636,1638,1640,1642,1645],{"class":1180,"line":516},[1178,1633,1552],{"class":1515},[1178,1635,1556],{"class":1555},[1178,1637,1541],{"class":1515},[1178,1639,1561],{"class":1515},[1178,1641,1564],{"class":1515},[1178,1643,1644],{"class":1188},"https:\u002F\u002Fdocs.mcp.cloudflare.com\u002Fmcp",[1178,1646,1647],{"class":1515},"\"\n",[1178,1649,1651,1653],{"class":1180,"line":1650},9,[1178,1652,1613],{"class":1515},[1178,1654,1572],{"class":1519},[1178,1656,1658,1660,1663,1665,1667],{"class":1180,"line":1657},10,[1178,1659,1535],{"class":1515},[1178,1661,1662],{"class":1188},"cloudflare-bindings",[1178,1664,1541],{"class":1515},[1178,1666,1544],{"class":1519},[1178,1668,1547],{"class":1515},[1178,1670,1672,1674,1676,1678,1680,1682,1685,1687],{"class":1180,"line":1671},11,[1178,1673,1552],{"class":1515},[1178,1675,1556],{"class":1555},[1178,1677,1541],{"class":1515},[1178,1679,1561],{"class":1515},[1178,1681,1564],{"class":1515},[1178,1683,1684],{"class":1188},"https:\u002F\u002Fbindings.mcp.cloudflare.com\u002Fmcp",[1178,1686,1541],{"class":1515},[1178,1688,1572],{"class":1515},[1178,1690,1692,1694,1696,1698,1700],{"class":1180,"line":1691},12,[1178,1693,1552],{"class":1515},[1178,1695,1579],{"class":1555},[1178,1697,1541],{"class":1515},[1178,1699,1561],{"class":1515},[1178,1701,1586],{"class":1515},[1178,1703,1705,1707,1709,1711,1713],{"class":1180,"line":1704},13,[1178,1706,1592],{"class":1515},[1178,1708,1595],{"class":1184},[1178,1710,1541],{"class":1515},[1178,1712,1561],{"class":1515},[1178,1714,1602],{"class":1515},[1178,1716,1718],{"class":1180,"line":1717},14,[1178,1719,1607],{"class":1515},[1178,1721,1723,1725],{"class":1180,"line":1722},15,[1178,1724,1613],{"class":1515},[1178,1726,1572],{"class":1519},[1178,1728,1730,1732,1735,1737,1739],{"class":1180,"line":1729},16,[1178,1731,1535],{"class":1515},[1178,1733,1734],{"class":1188},"cloudflare-builds",[1178,1736,1541],{"class":1515},[1178,1738,1544],{"class":1519},[1178,1740,1547],{"class":1515},[1178,1742,1744,1746,1748,1750,1752,1754,1757,1759],{"class":1180,"line":1743},17,[1178,1745,1552],{"class":1515},[1178,1747,1556],{"class":1555},[1178,1749,1541],{"class":1515},[1178,1751,1561],{"class":1515},[1178,1753,1564],{"class":1515},[1178,1755,1756],{"class":1188},"https:\u002F\u002Fbuilds.mcp.cloudflare.com\u002Fmcp",[1178,1758,1541],{"class":1515},[1178,1760,1572],{"class":1515},[1178,1762,1764,1766,1768,1770,1772],{"class":1180,"line":1763},18,[1178,1765,1552],{"class":1515},[1178,1767,1579],{"class":1555},[1178,1769,1541],{"class":1515},[1178,1771,1561],{"class":1515},[1178,1773,1586],{"class":1515},[1178,1775,1777,1779,1781,1783,1785],{"class":1180,"line":1776},19,[1178,1778,1592],{"class":1515},[1178,1780,1595],{"class":1184},[1178,1782,1541],{"class":1515},[1178,1784,1561],{"class":1515},[1178,1786,1602],{"class":1515},[1178,1788,1790],{"class":1180,"line":1789},20,[1178,1791,1607],{"class":1515},[1178,1793,1795,1797],{"class":1180,"line":1794},21,[1178,1796,1613],{"class":1515},[1178,1798,1572],{"class":1519},[1178,1800,1802,1804,1807,1809,1811],{"class":1180,"line":1801},22,[1178,1803,1535],{"class":1515},[1178,1805,1806],{"class":1188},"cloudflare-observability",[1178,1808,1541],{"class":1515},[1178,1810,1544],{"class":1519},[1178,1812,1547],{"class":1515},[1178,1814,1816,1818,1820,1822,1824,1826,1829,1831],{"class":1180,"line":1815},23,[1178,1817,1552],{"class":1515},[1178,1819,1556],{"class":1555},[1178,1821,1541],{"class":1515},[1178,1823,1561],{"class":1515},[1178,1825,1564],{"class":1515},[1178,1827,1828],{"class":1188},"https:\u002F\u002Fobservability.mcp.cloudflare.com\u002Fmcp",[1178,1830,1541],{"class":1515},[1178,1832,1572],{"class":1515},[1178,1834,1836,1838,1840,1842,1844],{"class":1180,"line":1835},24,[1178,1837,1552],{"class":1515},[1178,1839,1579],{"class":1555},[1178,1841,1541],{"class":1515},[1178,1843,1561],{"class":1515},[1178,1845,1586],{"class":1515},[1178,1847,1849,1851,1853,1855,1857],{"class":1180,"line":1848},25,[1178,1850,1592],{"class":1515},[1178,1852,1595],{"class":1184},[1178,1854,1541],{"class":1515},[1178,1856,1561],{"class":1515},[1178,1858,1602],{"class":1515},[1178,1860,1862],{"class":1180,"line":1861},26,[1178,1863,1607],{"class":1515},[1178,1865,1867],{"class":1180,"line":1866},27,[1178,1868,1869],{"class":1515},"    }\n",[44,1871,1872,1873,1875,1876,1879],{},"Go back to the ",[51,1874,1400],{}," section in the app and click the ",[51,1877,1878],{},"Refresh"," button. You will now see the Cloudflare MCP Servers listed, pending authorisation.",[44,1881,1882],{},[122,1883],{"alt":1884,"src":1885},"Cloudflare MCP servers listed in customization menu pending authorization","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-cloudflare-mcp-pending.webp",[44,1887,1888,1889,1892,1893,1896],{},"Click ",[51,1890,1891],{},"Authenticate"," next to the MCP Server. This will open an authentication page in your web browser. Once authenticated, an ",[51,1894,1895],{},"auth code"," will be generated.",[44,1898,1899],{},[122,1900],{"alt":1901,"src":1902},"Web browser displaying dynamic OAuth authorization code for Cloudflare MCP","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-cloudflare-auth-code.webp",[44,1904,1905,1906,161],{},"Copy this auth code, paste it back into the text input field in Antigravity, and click ",[51,1907,1908],{},"Submit",[44,1910,1911],{},[122,1912],{"alt":1913,"src":1914},"Submitting OAuth verification code in Antigravity setup interface","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-cloudflare-auth-submit.webp",[1338,1916],{},[64,1918,1920],{"id":1919},"_4-add-custom-skills","4. Add Custom Skills",[44,1922,1923,1924,1927,1928,1931],{},"Currently, adding custom skills ",[51,1925,1926],{},"cannot"," be done directly through the desktop application's UI. Instead, they must be added directly to the ",[270,1929,1930],{},"~\u002F.gemini\u002Fconfig\u002Fskills"," folder.",[44,1933,1934,1935,1938,1939],{},"Because we use the ",[270,1936,1937],{},"npx skills"," CLI to centralise all our agent skills, any newly added skill can be made available to all agents, including Antigravity. ",[117,1940,1941,1942,1944],{},"(For a deeper dive on this, refer to our article: ",[463,1943,5],{"href":6},").",[44,1946,1947,1948,1950],{},"Initially, when typing ",[270,1949,1102],{}," in the conversation box, the skills list appears empty:",[44,1952,1953],{},[122,1954],{"alt":1955,"src":1956},"Command box displaying empty skills list when typing slash shortcut","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-empty-skills-list.webp",[44,1958,1959,1960,1963],{},"It appears Antigravity 2 doesn't automatically read from the global skills folder (",[270,1961,1962],{},"~\u002F.agents\u002Fskills","). To fix this, we need to create a symbolic link pointing to the Antigravity config directory:",[855,1965,1967],{"className":1172,"code":1966,"language":1174,"meta":484,"style":484},"ln -s ~\u002F.agents\u002Fskills\u002Fexcalidraw-diagram ~\u002F.gemini\u002Fconfig\u002Fskills\u002Fexcalidraw-diagram\n",[270,1968,1969],{"__ignoreMap":484},[1178,1970,1971,1974,1977,1980],{"class":1180,"line":1181},[1178,1972,1973],{"class":1184},"ln",[1178,1975,1976],{"class":1188}," -s",[1178,1978,1979],{"class":1188}," ~\u002F.agents\u002Fskills\u002Fexcalidraw-diagram",[1178,1981,1982],{"class":1188}," ~\u002F.gemini\u002Fconfig\u002Fskills\u002Fexcalidraw-diagram\n",[44,1984,1985],{},"Once linked, the skill becomes available in the application!",[44,1987,1988],{},[122,1989],{"alt":1990,"src":1991},"Excalidraw diagram skill successfully showing in Antigravity command list","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-excalidraw-skill-available.webp",[1338,1993],{},[64,1995,1997],{"id":1996},"_5-test-a-simple-task","5. Test a Simple Task",[44,1999,2000],{},"Now that everything is configured, let's run a test.",[44,2002,2003],{},[122,2004],{"alt":2005,"src":2006},"Submitting a test task to list D1 databases via Cloudflare server","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-test-simple-task-prompt.webp",[44,2008,2009],{},"As shown below, the model successfully detects and utilises the newly added Cloudflare MCP Server to handle the request.",[44,2011,2012],{},[122,2013],{"alt":2014,"src":2015},"AI agent successfully executing D1 database listing using Cloudflare MCP","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-test-task-success.webp",[1338,2017],{},[64,2019,1275],{"id":917},[44,2021,2022],{},"Antigravity 2 represents a major shift from a traditional IDE to an accessible desktop application, empowering everyday users to act as orchestrators for any task.",[44,2024,2025],{},"However, Antigravity 2 needs some polish. When functionalities fail, debugging can be frustrating due to vague error handling. Additionally, the official documentation feels unrefined—likely AI-generated—as several references and file paths are currently incorrect.",[1280,2027,2028],{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":484,"searchDepth":485,"depth":485,"links":2030},[2031,2032,2033,2034,2035,2036,2037],{"id":1321,"depth":494,"text":1322},{"id":1342,"depth":485,"text":1343},{"id":1393,"depth":485,"text":1394},{"id":1501,"depth":485,"text":1502},{"id":1919,"depth":485,"text":1920},{"id":1996,"depth":485,"text":1997},{"id":917,"depth":485,"text":1275},"2026-06-05","Discover what's new in Google Antigravity 2. Read our hands-on guide to installing the app, testing AI agent tasks, and manually adding custom MCP servers","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002FEN-Setup-Antigravity-2.0.webp","Google Antigravity 2 Review & Setup: AI Agents, MCPs & Plugins",{"schemaOrg":2043,"robots":514,"sitemap":2045},[2044],{"@type":513,"headline":2041,"description":2039},{"lastmod":2038},"\u002Fen\u002Farticle\u002Fsetup-antigravity-2",{"title":2041,"description":2039,"ogTitle":17,"ogDescription":2039,"twitterTitle":17,"twitterDescription":2039},"MMadP0g3zfw4rPkQMdWeSDpbxS4cgDVo64g5MU-nIkY",{"id":2050,"title":5,"author":39,"body":2051,"category":39,"date":2474,"description":2475,"extension":502,"image":2476,"imageAlt":2477,"isPublished":505,"meta":2478,"minRead":1589,"navigation":505,"path":2484,"seo":2485,"stem":7,"__hash__":2486},"article\u002Fen\u002Farticle\u002Fcentralised-the-skills-for-agents.md",{"type":41,"value":2052,"toc":2464},[2053,2063,2066,2089,2104,2108,2118,2134,2144,2151,2154,2179,2185,2196,2214,2223,2233,2237,2244,2265,2268,2274,2284,2291,2294,2314,2324,2328,2334,2409,2415,2419,2455,2461],[44,2054,2055,2056,2059,2060,2062],{},"If you run multiple AI agents or CLIs on your computer—whether it's Hermes, Claude Code, Codex, Antigravity, Kimi, or other supported tools—you've probably hit a frustrating issue: ",[51,2057,2058],{},"skills fragmentation",". Every agent or CLI maintains its own separate ",[270,2061,1095],{}," folder, which leads to duplicate installations, version drift, and management overhead.",[44,2064,2065],{},"In our work with AI agents, we frequently ran into the following issues:",[134,2067,2068,2074,2080],{},[102,2069,2070,2073],{},[51,2071,2072],{},"Multiple installs",": Installing a new skill for one agent, then install it again and again for others.",[102,2075,2076,2079],{},[51,2077,2078],{},"Version drift",": Customising or fixing a skill for one agent, forgetting to update the rest, and ending up with agents behaving differently.",[102,2081,2082,2085,2086,2088],{},[51,2083,2084],{},"Skills management",": Having to go through every ",[270,2087,1095],{}," folder for each agent across our system to see what skills were actually installed.",[44,2090,737,2091,2093,2094,2096,2097,161],{},[270,2092,1937],{}," CLI, an open-source CLI from Vercel,  solves the issue by letting you manage one centralised ",[270,2095,1095],{}," folder and share it across all your agents. You can check out the ",[463,2098,2101,2103],{"href":2099,"rel":2100},"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fskills",[467],[270,2102,1937],{},"GitHub repo",[64,2105,2107],{"id":2106},"centralised-folder","Centralised Folder",[44,2109,2110,2111,2113,2114,2117],{},"The concept is simple: if we point every agent's ",[270,2112,1095],{}," folder to the ",[51,2115,2116],{},"same physical folder",", the fragmentation problem completely disappears.",[44,2119,2120,2121,2123,2124,2126,2127,2130,2131,2133],{},"When you install a skill using ",[270,2122,1937],{}," CLI, the skill is downloaded to the centralised folder on your machine (",[270,2125,1962],{},"). The CLI then creates a ",[51,2128,2129],{},"symlink"," (which is just a pointer) from each agent's ",[270,2132,1095],{}," folder back to that centralised folder.",[44,2135,2136,2137,2140,2141,2143],{},"For example, when Claude Code looks for skills in ",[270,2138,2139],{},"~\u002F.claude\u002Fskills\u002F",", it gets transparently redirected to ",[270,2142,1962],{},". If you make a tweak to a skill in that centralised folder, every single agent sees the update instantly. No manual copying, no sync scripts, and no wasted disk storage.",[64,2145,2147,2148,2150],{"id":2146},"installing-npx-skills-and-adding-a-skill","Installing ",[270,2149,1937],{}," and Adding a Skill",[44,2152,2153],{},"Run the following command to get it started, and add our first skill:",[855,2155,2157],{"className":1172,"code":2156,"language":1174,"meta":484,"style":484},"npx skills add https:\u002F\u002Fgithub.com\u002Fcoleam00\u002Fexcalidraw-diagram-skill --skill excalidraw-diagram\n",[270,2158,2159],{"__ignoreMap":484},[1178,2160,2161,2164,2167,2170,2173,2176],{"class":1180,"line":1181},[1178,2162,2163],{"class":1184},"npx",[1178,2165,2166],{"class":1188}," skills",[1178,2168,2169],{"class":1188}," add",[1178,2171,2172],{"class":1188}," https:\u002F\u002Fgithub.com\u002Fcoleam00\u002Fexcalidraw-diagram-skill",[1178,2174,2175],{"class":1188}," --skill",[1178,2177,2178],{"class":1188}," excalidraw-diagram\n",[44,2180,2181],{},[122,2182],{"alt":2183,"src":2184},"Using npx skills add command to install a skill from GitHub","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-add-command.webp",[44,2186,2187,2188,2191,2192],{},"The CLI will ask whether to set this up for a specific project or globally. We usually recommend choosing ",[51,2189,2190],{},"global"," so all supported agents can access it:\n",[122,2193],{"alt":2194,"src":2195},"Selecting global installation option in npx skills CLI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-install-global-prompt.webp",[44,2197,2198,2199,2202,2203,1020,2206,2210],{},"Next, make sure to select ",[270,2200,2201],{},"Symlink"," to ensure a ",[51,2204,2205],{},"single source of truth",[122,2207],{"alt":2208,"src":2209},"Choosing symlink method for skill synchronization","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-symlink-option.webp",[122,2211],{"alt":2212,"src":2213},"Successful installation and symlink creation confirmation in CLI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-installation-completed.webp",[44,2215,2216,2217,1020,2219],{},"Once done, we can verify that the skill is installed in the centralised folder at ",[270,2218,1962],{},[122,2220],{"alt":2221,"src":2222},"Verifying installed skills in the centralized directory","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-directory-verification.webp",[44,2224,2225,2226,2228,2229],{},"Open up the Kimi CLI (or any other agent), and the ",[270,2227,1106],{}," skill is available and ready to use!\n",[122,2230],{"alt":2231,"src":2232},"Kimi CLI showing loaded and ready centralized skills","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fkimi-cli-skills-integration.webp",[64,2234,2236],{"id":2235},"creating-a-skill-from-scratch","Creating a Skill from Scratch",[44,2238,2239,2240,2243],{},"To build your own skills, you can use Anthropic's ",[270,2241,2242],{},"skill-creator"," tool. Install it like this:",[855,2245,2247],{"className":1172,"code":2246,"language":1174,"meta":484,"style":484},"npx skills add https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills --skill skill-creator\n",[270,2248,2249],{"__ignoreMap":484},[1178,2250,2251,2253,2255,2257,2260,2262],{"class":1180,"line":1181},[1178,2252,2163],{"class":1184},[1178,2254,2166],{"class":1188},[1178,2256,2169],{"class":1188},[1178,2258,2259],{"class":1188}," https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills",[1178,2261,2175],{"class":1188},[1178,2263,2264],{"class":1188}," skill-creator\n",[44,2266,2267],{},"Now, in Kimi or any other agent, enter the following prompt:",[855,2269,2272],{"className":2270,"code":2271,"language":860},[858],"Use the skill-creator to help me build a skill for creating a product landing page\n",[270,2273,2271],{"__ignoreMap":484},[44,2275,2276,2277,2279,2280],{},"Kimi or your agent will automatically pick up the ",[270,2278,2242],{}," and walk you through the process step-by-step:\n",[122,2281],{"alt":2282,"src":2283},"Interactive skill-creator wizard executing in Kimi CLI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fkimi-cli-skill-creator-setup.webp",[64,2285,2287,2288,2290],{"id":2286},"other-handy-npx-skills-commands","Other Handy ",[270,2289,1937],{}," Commands",[44,2292,2293],{},"Here are some other handy commands:",[134,2295,2296,2302,2308],{},[102,2297,2298,2301],{},[270,2299,2300],{},"npx skills ls -g",": List all globally installed skills",[102,2303,2304,2307],{},[270,2305,2306],{},"npx skills update",": Keep all skills up to date with one command",[102,2309,2310,2313],{},[270,2311,2312],{},"npx skills remove",": Interactively uninstall\u002Fremove a skill",[44,2315,2316,2317,2323],{},"Please refer to the ",[463,2318,2320,2322],{"href":2099,"rel":2319},[467],[270,2321,1937],{}," GitHub repo"," for more commands and reference.",[64,2325,2327],{"id":2326},"taking-it-a-step-further","Taking It a Step Further",[44,2329,2330,2331,2333],{},"Since all skills are now in one place (",[270,2332,1962],{},"), we can initialise it as a Git repository and push it to GitHub or GitLab.",[855,2335,2337],{"className":1172,"code":2336,"language":1174,"meta":484,"style":484},"cd ~\u002F.agents\u002Fskills\ngit init\ngit add .\ngit commit -m \"Initial skills folder\"\ngit remote add origin https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fskills\ngit push -u origin main\n",[270,2338,2339,2348,2355,2364,2380,2395],{"__ignoreMap":484},[1178,2340,2341,2345],{"class":1180,"line":1181},[1178,2342,2344],{"class":2343},"s2Zo4","cd",[1178,2346,2347],{"class":1188}," ~\u002F.agents\u002Fskills\n",[1178,2349,2350,2352],{"class":1180,"line":485},[1178,2351,1465],{"class":1184},[1178,2353,2354],{"class":1188}," init\n",[1178,2356,2357,2359,2361],{"class":1180,"line":494},[1178,2358,1465],{"class":1184},[1178,2360,2169],{"class":1188},[1178,2362,2363],{"class":1188}," .\n",[1178,2365,2366,2368,2370,2373,2375,2378],{"class":1180,"line":1589},[1178,2367,1465],{"class":1184},[1178,2369,1242],{"class":1188},[1178,2371,2372],{"class":1188}," -m",[1178,2374,1564],{"class":1515},[1178,2376,2377],{"class":1188},"Initial skills folder",[1178,2379,1647],{"class":1515},[1178,2381,2382,2384,2387,2389,2392],{"class":1180,"line":727},[1178,2383,1465],{"class":1184},[1178,2385,2386],{"class":1188}," remote",[1178,2388,2169],{"class":1188},[1178,2390,2391],{"class":1188}," origin",[1178,2393,2394],{"class":1188}," https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fskills\n",[1178,2396,2397,2399,2401,2404,2406],{"class":1180,"line":1610},[1178,2398,1465],{"class":1184},[1178,2400,1213],{"class":1188},[1178,2402,2403],{"class":1188}," -u",[1178,2405,2391],{"class":1188},[1178,2407,2408],{"class":1188}," main\n",[44,2410,2411,2412,161],{},"Now, we have a complete history of all skill changes, meaning we can easily roll back if an update breaks something. Plus, we can seamlessly sync the skills across multiple machines (like a laptop and desktop) by running a quick ",[270,2413,2414],{},"git pull",[64,2416,2418],{"id":2417},"a-few-things-to-keep-in-mind-security-risks","A Few Things to Keep in Mind (Security & Risks)",[134,2420,2421,2427,2433,2443,2449],{},[102,2422,2423,2426],{},[51,2424,2425],{},"Compatibility varies",": Not all agent platforms support every feature (like custom hooks or specific allowed tools) yet. A skill might work great in one agent but fall short in another.",[102,2428,2429,2432],{},[51,2430,2431],{},"Trust the source",": Only install skills from trusted sources.",[102,2434,2435,2438,2439,2442],{},[51,2436,2437],{},"Review before running",": If you are using a custom or third-party skill, review the files (especially in the ",[270,2440,2441],{},"scripts\u002F"," folder) before letting your agent run it.",[102,2444,2445,2448],{},[51,2446,2447],{},"Least privilege",": Try not to give a skill more tool permissions or access than it absolutely needs to do its job.",[102,2450,2451,2454],{},[51,2452,2453],{},"Never hardcode secrets",": Keep your API keys and secrets out of your skill files.",[44,2456,2457,2458,2460],{},"Setting up a centralised \"single source of truth\" with ",[270,2459,1937],{}," has saved our team from frustration and duplicate work. It is highly recommended to give it a try—the AI capabilities scale as skills grow!",[1280,2462,2463],{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":484,"searchDepth":485,"depth":485,"links":2465},[2466,2467,2469,2470,2472,2473],{"id":2106,"depth":485,"text":2107},{"id":2146,"depth":485,"text":2468},"Installing npx skills and Adding a Skill",{"id":2235,"depth":485,"text":2236},{"id":2286,"depth":485,"text":2471},"Other Handy npx skills Commands",{"id":2326,"depth":485,"text":2327},{"id":2417,"depth":485,"text":2418},"2026-06-04","Running multiple AI agents like Claude Code or Kimi? Learn how to fix skills fragmentation and manage a single, centralized skills folder using npx skills CLI.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002FSolving-AI-Agent-Skills-Fragmentation-with-npx-skills.webp","How to solve AI agent skills fragmentation using npx skills",{"schemaOrg":2479,"robots":514,"sitemap":2482},[2480],{"@type":513,"headline":2481,"description":2475},"How to Solve AI Agent Skills Fragmentation Using npx skills",{"lastmod":2483},"2026-06-03","\u002Fen\u002Farticle\u002Fcentralised-the-skills-for-agents",{"title":2481,"description":2475,"ogTitle":5,"ogDescription":2475,"twitterTitle":5,"twitterDescription":2475},"NwxIwYRWVSTBGttk2H6IRhsFpEvLEQrNCbTpGUkF58A",{"id":2488,"title":9,"author":39,"body":2489,"category":39,"date":2723,"description":2724,"extension":502,"image":2725,"imageAlt":2726,"isPublished":505,"meta":2727,"minRead":516,"navigation":505,"path":2731,"seo":2732,"stem":11,"__hash__":2733},"article\u002Fen\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare.md",{"type":41,"value":2490,"toc":2715},[2491,2494,2497,2511,2515,2522,2524,2528,2531,2535,2565,2569,2572,2639,2643,2646,2708,2712],[44,2492,2493],{},"The moment your NodeWarden is exposed to the public on the Internet, it starts attracting thousands of automated bots scrapping for vulnerabilities 24\u002F7. To protect your sensitive data, You need to put NodeWarden instance in the maximum lockdown possible.",[44,2495,2496],{},"To secure your NodeWarden instance, you can use one of two Cloudflare features:",[134,2498,2499,2505],{},[102,2500,2501,2504],{},[51,2502,2503],{},"Cloudflare IP Access Rules:"," Allows you to block, challenge, or permit traffic based on specific IP addresses or countries.",[102,2506,2507,2510],{},[51,2508,2509],{},"Cloudflare Zero Trust (Recommend):"," Acts as a secure gateway that makes your NodeWarden instance completely invisible to the public, only letting authorised users through.",[1418,2512,2514],{"id":2513},"why-we-recommend-cloudflare-zero-trust","Why we recommend Cloudflare Zero Trust",[44,2516,2517,2518,2521],{},"We strongly advise using Cloudflare Zero Trust since IP Access Rules are tied to IP addresses or countries, meaning you need to manually update the your rules every time you travel or if you have a dynamic IP address. Cloudflare Zero Trust on the other hand relies on your ",[51,2519,2520],{},"identity",", not your location—giving you seamless, secure access to NodeWarden.",[1338,2523],{},[64,2525,2527],{"id":2526},"configuration-guide","Configuration Guide",[44,2529,2530],{},"Follow these steps to configure Cloudflare Zero Trust for NodeWarden.",[359,2532,2534],{"id":2533},"phase-1-getting-started","Phase 1: Getting Started",[99,2536,2537,2544,2551,2558],{},[102,2538,2539,2540],{},"In your Cloudflare dashboard, click on 'Zero Trust' from left menu\n",[122,2541],{"alt":2542,"src":2543},"Cloudflare dashboard sidebar showing the Zero Trust option selected in the navigation menu.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-dashboard-zero-trust-sidebar.webp",[102,2545,2546,2547],{},"Click on 'Access controls' then click on 'Applications'\n",[122,2548],{"alt":2549,"src":2550},"Cloudflare Zero Trust navigation menu with Access controls section expanded.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-zero-trust-access-controls-menu.webp",[102,2552,2553,2554],{},"You may be asked to 'Choose a plan'.\n",[122,2555],{"alt":2556,"src":2557},"Cloudflare Zero Trust account setup screen prompting the user to choose a subscription plan.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-zero-trust-choose-plan-setup.webp",[102,2559,2560,2561],{},"Click on the 'Choose a plan' button and choose the 'Zero Trust Free'.\n",[122,2562],{"alt":2563,"src":2564},"The Zero Trust Free plan details page on Cloudflare, highlighting the Select plan button.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-zero-trust-free-plan-selection.webp",[359,2566,2568],{"id":2567},"phase-2-secure-your-web-interface","Phase 2: Secure Your Web Interface",[44,2570,2571],{},"First, we will create an application to protect the NodeWarden web dashboard.",[99,2573,2574,2581,2588,2595,2602,2609,2616,2619,2626,2629],{},[102,2575,2576,2577],{},"Click on 'Create new application' to create the first application\n",[122,2578],{"alt":2579,"src":2580},"Cloudflare Access Applications dashboard featuring the Create new application button.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-create-new-application.webp",[102,2582,2583,2584],{},"Choose the 'Self-hosted and private'\n",[122,2585],{"alt":2586,"src":2587},"The Add an application modal in Cloudflare Access with Self-hosted and private application type selected.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-add-self-hosted-application.webp",[102,2589,2590,2591],{},"Enter the domain name of the NodeWarden.\n",[122,2592],{"alt":2593,"src":2594},"Cloudflare Access application configuration screen showing the public hostname set to warden.techvoyage.dev.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-application-public-hostname.webp",[102,2596,2597,2598],{},"Click on 'Create new policy' to create a policy.\n",[122,2599],{"alt":2600,"src":2601},"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.webp",[102,2603,2604,2605],{},"Select 'Emails' and enter an email under 'Policy rules'.\n",[122,2606],{"alt":2607,"src":2608},"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.webp",[102,2610,2611,2612],{},"Enter a name and select 'Allow' under 'Policy details'.\n",[122,2613],{"alt":2614,"src":2615},"Cloudflare Access policy details screen showing the policy name NodeWarden-Web and the action set to Allow.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-details-allow.webp",[102,2617,2618],{},"Click 'Save Policy' to create the policy.",[102,2620,2621,2622],{},"Enter a name and select '1 month' under the 'Details' section.\n",[122,2623],{"alt":2624,"src":2625},"Final configuration summary for a Cloudflare Access application named NodeWarden-Web with a one-month session duration.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-application-final-details.webp",[102,2627,2628],{},"Click on 'Create' to create the application.",[102,2630,2631,2634,2635],{},[51,2632,2633],{},"Test it:"," Open the domain on the web browser, you will see the 'Cloudflare Access' asking for email.\n",[122,2636],{"alt":2637,"src":2638},"A preview of the Cloudflare Access login screen for NodeWarden-Web, prompting for an email address.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-login-screen-preview.webp",[359,2640,2642],{"id":2641},"phase-3-allow-bitwarden-clients-syncing-api-bypass","Phase 3: Allow BitWarden Clients Syncing (API Bypass)",[44,2644,2645],{},"The desktop and mobile BitWarden apps cannot process Cloudflare's email login screen, we need to create a second application that allows traffic to bypass the login screen specifically for API syncing.",[99,2647,2648,2659,2674,2678,2685,2692,2694,2701],{},[102,2649,2650,2651,2654,2655,2658],{},"Go back to Applications and click ",[51,2652,2653],{},"Create new application",", choosing ",[51,2656,2657],{},"Self-hosted and private"," again.",[102,2660,2661,2662,2665,2666,2669,2670],{},"Enter the 'api\u002F",[117,2663,2664],{},"', 'identity\u002F","', 'notifications\u002F",[117,2667,2668],{},"', and 'icons\u002F","' in the Destinations.\n",[122,2671],{"alt":2672,"src":2673},"Configuring multiple public hostnames for API bypass in Cloudflare Access, including api, identity, notifications, and icons paths.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-api-bypass-destinations.webp",[102,2675,2597,2676],{},[122,2677],{"alt":2600,"src":2601},[102,2679,2680,2681],{},"Select 'Everyone' under 'Policy rules'.\n",[122,2682],{"alt":2683,"src":2684},"Cloudflare Access policy rule configuration with Everyone selected to allow broad access for specific paths.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-rule-everyone.webp",[102,2686,2687,2688],{},"Enter a name and select 'Bypass' under 'Policy details'.\n",[122,2689],{"alt":2690,"src":2691},"Cloudflare Access policy details for NodeWarden-API with the action set to Bypass.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-details-bypass.webp",[102,2693,2618],{},[102,2695,2696,2697],{},"Enter a name and select '1 month' for 'Session Duration'.\n",[122,2698],{"alt":2699,"src":2700},"Final configuration screen for the NodeWarden-API application in Cloudflare Access.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-api-application-final-details.webp",[102,2702,2703,2704],{},"You should have 2 applications created.\n",[122,2705],{"alt":2706,"src":2707},"The Cloudflare Access applications dashboard showing both the Web and API applications successfully created.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-applications-list-final.webp",[64,2709,2711],{"id":2710},"final-thought","Final thought",[44,2713,2714],{},"Just remember that Cloudflare is your outer shield. To maintain a truly secure vault, ensure you are still using a strong master password, utilising Two-Factor Authentication (2FA) , and keeping your Cloudflare account secure.",{"title":484,"searchDepth":485,"depth":485,"links":2716},[2717,2722],{"id":2526,"depth":485,"text":2527,"children":2718},[2719,2720,2721],{"id":2533,"depth":494,"text":2534},{"id":2567,"depth":494,"text":2568},{"id":2641,"depth":494,"text":2642},{"id":2710,"depth":485,"text":2711},"2026-05-27","The moment your NodeWarden is exposed to the public on the Internet, it starts attracting thousands of automated bots scrapping for vulnerabilities 24\u002F7.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fsecure-nodewarden-cloudflare-integration-guide.webp","Step-by-step guide thumbnail for securing a NodeWarden vault with Cloudflare integration, featuring a digital safe with a padlock and a server rack protected by Cloudflare security.",{"schemaOrg":2728,"robots":514,"sitemap":2730},[2729],{"@type":513,"headline":9,"description":2724},{"lastmod":2723},"\u002Fen\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"title":9,"description":2724,"ogTitle":9,"ogDescription":2724,"twitterTitle":9,"twitterDescription":2724},"xtXEwIvRit22QP7fb6fzAxG3CnL8OCgJlj1CMY8ctWg",{"id":2735,"title":13,"author":39,"body":2736,"category":39,"date":3272,"description":3273,"extension":502,"image":3274,"imageAlt":3275,"isPublished":505,"meta":3276,"minRead":516,"navigation":505,"path":3281,"seo":3282,"stem":15,"__hash__":3283},"article\u002Fen\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare.md",{"type":41,"value":2737,"toc":3264},[2738,2741,2747,2751,2941,2945,2964,2968,2994,2998,3051,3055,3095,3099,3129,3133,3136,3140,3165,3169,3188,3192,3195,3212,3217,3220,3223,3235,3239,3252,3255],[44,2739,2740],{},"Your passwords are your most critical digital property, and keeping them secure means keeping them in your own hands. By self-hosting your password manager; you take control of your own security.",[44,2742,2743,2746],{},[51,2744,2745],{},"BitWarden"," is widely regarded as one of most trusted in password management domain and its source code is made available under AGPL-3.0 licence. An unofficial BitWarden compatible server, NodeWarden, is written in Typescript and can be deployed for free on Cloudflare.",[1418,2748,2750],{"id":2749},"feature-comparison-with-the-official-bitwarden-server","Feature Comparison with the Official BitWarden Server",[2752,2753,2754,2772],"table",{},[2755,2756,2757],"thead",{},[2758,2759,2760,2764,2766,2769],"tr",{},[2761,2762,2763],"th",{},"Capability",[2761,2765,2745],{},[2761,2767,2768],{},"NodeWarden",[2761,2770,2771],{},"Notes",[2773,2774,2775,2791,2806,2818,2830,2845,2862,2877,2893,2905,2917,2930],"tbody",{},[2758,2776,2777,2781,2784,2786],{},[2778,2779,2780],"td",{},"Web Vault",[2778,2782,2783],{},"✅",[2778,2785,2783],{},[2778,2787,2788],{},[51,2789,2790],{},"Original Web Vault interface",[2758,2792,2793,2799,2801,2803],{},[2778,2794,2795,2796],{},"Full sync ",[270,2797,2798],{},"\u002Fapi\u002Fsync",[2778,2800,2783],{},[2778,2802,2783],{},[2778,2804,2805],{},"Compatibility optimised for official clients",[2758,2807,2808,2811,2813,2815],{},[2778,2809,2810],{},"Attachment upload \u002F download",[2778,2812,2783],{},[2778,2814,2783],{},[2778,2816,2817],{},"Cloudflare R2 or KV",[2758,2819,2820,2823,2825,2827],{},[2778,2821,2822],{},"Send",[2778,2824,2783],{},[2778,2826,2783],{},[2778,2828,2829],{},"Supports both text and file Sends",[2758,2831,2832,2835,2837,2839],{},[2778,2833,2834],{},"Import \u002F Export",[2778,2836,2783],{},[2778,2838,2783],{},[2778,2840,2841,2842],{},"Supports BitWarden JSON \u002F CSV \u002F ",[51,2843,2844],{},"ZIP import with attachments",[2758,2846,2847,2852,2855,2857],{},[2778,2848,2849],{},[51,2850,2851],{},"Cloud Backup Center",[2778,2853,2854],{},"❌",[2778,2856,2783],{},[2778,2858,2859],{},[51,2860,2861],{},"Scheduled backup to WebDAV \u002F S3",[2758,2863,2864,2867,2870,2872],{},[2778,2865,2866],{},"Password hint (web)",[2778,2868,2869],{},"⚠️ Limited",[2778,2871,2783],{},[2778,2873,2874],{},[51,2875,2876],{},"No email required",[2758,2878,2879,2882,2884,2886],{},[2778,2880,2881],{},"TOTP \u002F Steam TOTP",[2778,2883,2783],{},[2778,2885,2783],{},[2778,2887,2888,2889,2892],{},"Includes ",[270,2890,2891],{},"steam:\u002F\u002F"," support",[2758,2894,2895,2898,2900,2902],{},[2778,2896,2897],{},"Multi-user",[2778,2899,2783],{},[2778,2901,2783],{},[2778,2903,2904],{},"Invite-based registration",[2758,2906,2907,2910,2912,2914],{},[2778,2908,2909],{},"Organizations \u002F Collections \u002F Member roles",[2778,2911,2783],{},[2778,2913,2854],{},[2778,2915,2916],{},"Not implemented",[2758,2918,2919,2922,2924,2927],{},[2778,2920,2921],{},"Login 2FA",[2778,2923,2783],{},[2778,2925,2926],{},"⚠️ Partial",[2778,2928,2929],{},"Currently only user-level TOTP",[2758,2931,2932,2935,2937,2939],{},[2778,2933,2934],{},"SSO \u002F SCIM \u002F Enterprise directory",[2778,2936,2783],{},[2778,2938,2854],{},[2778,2940,2916],{},[359,2942,2944],{"id":2943},"what-we-need","What we need:",[99,2946,2947,2952,2958],{},[102,2948,2949],{},[51,2950,2951],{},"A GitHub Account",[102,2953,2954,2957],{},[51,2955,2956],{},"A Cloudflare Account"," (Free) with R2 Storage enabled.",[102,2959,2960,2963],{},[117,2961,2962],{},"Optional:"," A custom domain name managed in Cloudflare.",[359,2965,2967],{"id":2966},"phase-1-prepare-the-code","Phase 1: Prepare the Code:",[99,2969,2970,2987],{},[102,2971,2972,2973,2977,2978,2982,2983],{},"Fork the NodeWarden repository from ",[463,2974,2975],{"href":2975,"rel":2976},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fnodewarden",[467]," or original repository, ",[463,2979,2980],{"href":2980,"rel":2981},"https:\u002F\u002Fgithub.com\u002Fshuaiplus\u002Fnodewarden",[467]," in GitHub\n",[122,2984],{"alt":2985,"src":2986},"Forking the NodeWarden repository on GitHub","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Ffork-nodewarden-repo.webp",[102,2988,2989,2990],{},"Enable the Sync Upstream Workflow\n",[122,2991],{"alt":2992,"src":2993},"Enabling the Sync Upstream workflow in GitHub Actions","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fenable-sync-upstream.webp",[359,2995,2997],{"id":2996},"phase-2-deploy-to-cloudflare","Phase 2: Deploy to Cloudflare",[99,2999,3000,3007,3018],{},[102,3001,3002,3003],{},"Create a Worker Application in Cloudflare\n",[122,3004],{"alt":3005,"src":3006},"Creating a new Worker application in the Cloudflare dashboard","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcreate-cloudflare-worker.webp",[102,3008,3009,3010,3014],{},"Select 'Continue with GitHub' to deploy the app.\n",[122,3011],{"alt":3012,"src":3013},"Deploying the NodeWarden app by connecting to GitHub","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fdeploy-github-repo.webp",[122,3015],{"alt":3016,"src":3017},"Cloudflare Worker build and deployment progress","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-deploy-status.webp",[102,3019,3020,3021,3024,3025,3028,3029,3032,3033],{},"Wait a few moments for Cloudflare to build and deploy your app. It will give you a default ",[270,3022,3023],{},"worker.dev"," URL.\n",[51,3026,3027],{},"(Optional) Add a Custom Domain:"," * In your Cloudflare Worker settings, go to the ",[51,3030,3031],{},"Settings"," tab.\n",[134,3034,3035,3040],{},[102,3036,1888,3037,161],{},[51,3038,3039],{},"+ Add",[102,3041,3042,3043,3047],{},"Type in your preferred domain and follow the prompts.\n",[122,3044],{"alt":3045,"src":3046},"Navigating to custom domain settings in Cloudflare Worker","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fworker-settings-custom-domain.webp",[122,3048],{"alt":3049,"src":3050},"Adding a custom domain to the Cloudflare Worker","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fadd-custom-domain.webp",[359,3052,3054],{"id":3053},"phase-3-secure-your-server-the-jwt-secret","Phase 3: Secure Your Server (The JWT Secret)",[99,3056,3057,3060,3070,3088],{},[102,3058,3059],{},"Head to the web browser and enter the custom domain name or the generated 'worker.dev' domain.",[102,3061,3062,3063,120,3066],{},"You will get '",[51,3064,3065],{},"JWT_SECRET is missing'",[122,3067],{"alt":3068,"src":3069},"JWT_SECRET is missing error message on NodeWarden server","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fjwt-secret-missing-error.webp",[102,3071,3072,3073,3075,3076,3079,3080,3084],{},"Copy the generated secret key and head back to the Settings tab on the NodeWarden Worker, then click on '",[51,3074,3039],{},"' button on '",[51,3077,3078],{},"Variables and Secrets","' section.\n",[122,3081],{"alt":3082,"src":3083},"Variables and Secrets section in Cloudflare Worker settings","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fworker-variables-secrets.webp",[122,3085],{"alt":3086,"src":3087},"Adding the generated JWT secret to Cloudflare Worker variables","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fadd-jwt-secret.webp",[102,3089,3090,3091,3094],{},"Enter the generated secret and click on the '",[51,3092,3093],{},"Deploy \u002F Save","' button.",[359,3096,3098],{"id":3097},"phase-4-create-your-admin-account","Phase 4: Create Your Admin Account",[99,3100,3101,3108,3119,3126],{},[102,3102,3103,3104],{},"Go back to the web browser and refresh the page, you will get the following login page.\n",[122,3105],{"alt":3106,"src":3107},"NodeWarden server login page","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fnodewarden-login.webp",[102,3109,3110,3111,3114,3115],{},"Click on '",[51,3112,3113],{},"Create Account","' to create the admin account.\n",[122,3116],{"alt":3117,"src":3118},"Clicking the Create Account button on NodeWarden login page","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcreate-account-button.webp",[102,3120,3121,3122],{},"Login using the created admin account to the Dashboard.\n",[122,3123],{"alt":3124,"src":3125},"NodeWarden admin dashboard overview","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fnodewarden-dashboard.webp",[102,3127,3128],{},"Now we have the server deployed and running. We start configuring the BitWarden clients.",[359,3130,3132],{"id":3131},"phase-5-connect-your-devices","Phase 5: Connect Your Devices",[44,3134,3135],{},"You can use the official BitWarden apps on all your devices.",[1418,3137,3139],{"id":3138},"chrome-extension","Chrome Extension",[99,3141,3142,3145,3148,3155,3162],{},[102,3143,3144],{},"Install the BitWarden Chrome extension",[102,3146,3147],{},"Open the extension.",[102,3149,3150,3151],{},"Click the link next to 'Accessing:' at the bottom of the popup.\n",[122,3152],{"alt":3153,"src":3154},"Selecting self-hosted option in Bitwarden Chrome extension","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-extension-self-hosted.webp",[102,3156,3157,3158],{},"Enter the domain name of the NodeWarden server.\n",[122,3159],{"alt":3160,"src":3161},"Entering server URL in Bitwarden Chrome extension","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-extension-domain.webp",[102,3163,3164],{},"Save the settings and log in with your account.",[1418,3166,3168],{"id":3167},"ios-app","iOS App",[99,3170,3171,3174,3181],{},[102,3172,3173],{},"Install the BitWarden app from the App Store",[102,3175,3176,3177],{},"Open the app and click on 'Self-hosted' next to 'Logging in on:'\n",[122,3178],{"alt":3179,"src":3180},"Accessing self-hosted settings in Bitwarden iOS app","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-ios-self-hosted.webp",[102,3182,3183,3184],{},"Enter the domain name of the NodeWarden server and click on '✓' button.\n",[122,3185],{"alt":3186,"src":3187},"Configuring server URL in Bitwarden iOS app","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-ios-domain.webp",[1418,3189,3191],{"id":3190},"other-clients","Other Clients",[44,3193,3194],{},"NodeWarden has been tested and confirmed compatible with these official BitWarden clients:",[134,3196,3197,3200,3203,3206,3209],{},[102,3198,3199],{},"✅ Windows desktop",[102,3201,3202],{},"✅ Android\u002FiOS mobile apps",[102,3204,3205],{},"✅ Browser extensions",[102,3207,3208],{},"✅ Linux desktop",[102,3210,3211],{},"⚠️ macOS desktop (not fully verified)",[3213,3214,3216],"h1",{"id":3215},"vault-backup","Vault Backup",[44,3218,3219],{},"NodeWarden allows you to back up your vault to a local computer or remote storage (WebDAV or S3-compatible storage).",[44,3221,3222],{},"To automate remote backups:",[134,3224,3225,3228],{},[102,3226,3227],{},"Configure the remote storage details inside the NodeWarden dashboard.",[102,3229,3230,3231],{},"Make sure the Cron task is set on Cloudflare Worker settings for auto remote backup.\n",[122,3232],{"alt":3233,"src":3234},"Configuring Cron triggers for automatic vault backups in Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-worker-cron.webp",[3213,3236,3238],{"id":3237},"final-security-thoughts","Final Security thoughts",[134,3240,3241,3244,3247],{},[102,3242,3243],{},"Secure the Cloudflare account access, otherwise the data can be compromised. Enable the Two-Factor Authentication (2FA) or Passkey on your Cloudflare account immediately.",[102,3245,3246],{},"Host the NodeWarden on a dedicated Cloudflare account. Do not share resources with other web apps to minimise the security risks.",[102,3248,3249],{},[463,3250,3251],{"href":10},"Secure NodeWarden with Cloudflare",[3213,3253,3254],{"id":456},"Reference",[134,3256,3257],{},[102,3258,3259],{},[463,3260,3263],{"href":3261,"rel":3262},"https:\u002F\u002Fnodewarden.app\u002Fguide\u002Fstart",[467],"Official NodeWarden Start Guide",{"title":484,"searchDepth":485,"depth":485,"links":3265},[3266,3267,3268,3269,3270,3271],{"id":2943,"depth":494,"text":2944},{"id":2966,"depth":494,"text":2967},{"id":2996,"depth":494,"text":2997},{"id":3053,"depth":494,"text":3054},{"id":3097,"depth":494,"text":3098},{"id":3131,"depth":494,"text":3132},"2026-05-25","Your passwords are your most critical digital property, and keeping them secure means keeping them in your own hands.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fself-hosting-bitwarden-vault.webp","Thumbnail for self-hosting Bitwarden compatible server tutorial, showing a digital vault and a secure server rack.",{"schemaOrg":3277,"robots":514,"sitemap":3280},[3278],{"@type":513,"headline":3279,"description":3273},"How to Lock Passwords in Your Own Vault by Self Hosting BitWarden Compatible Server",{"lastmod":3272},"\u002Fen\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"title":3279,"description":3273,"ogTitle":3279,"ogDescription":3273,"twitterTitle":3279,"twitterDescription":3273},"WBOKFlSD1GZLEL8XT8ri6y7GEfqUNtI9Rmp48F1YVRI",1781435110483]