# As a condition of accessing this website, you agree to abide by the following # content signals: # (a) If a Content-Signal = yes, you may collect content for the corresponding # use. # (b) If a Content-Signal = no, you may not collect content for the # corresponding use. # (c) If the website operator does not include a Content-Signal for a # corresponding use, the website operator neither grants nor restricts # permission via Content-Signal with respect to the corresponding use. # The content signals and their meanings are: # search: building a search index and providing search results (e.g., returning # hyperlinks and short excerpts from your website's contents). Search does not # include providing AI-generated search summaries. # ai-input: inputting content into one or more AI models (e.g., retrieval # augmented generation, grounding, or other real-time taking of content for # generative AI search answers). # ai-train: training or fine-tuning AI models. # use: how AI systems may consume the content (immediate, reference, or full). # ANY RESTRICTIONS EXPRESSED VIA CONTENT SIGNALS ARE EXPRESS RESERVATIONS OF # RIGHTS UNDER ARTICLE 4 OF THE EUROPEAN UNION DIRECTIVE 2019/790 ON COPYRIGHT # AND RELATED RIGHTS IN THE DIGITAL SINGLE MARKET. # BEGIN Cloudflare Managed content User-agent: * Content-Signal: search=yes,ai-train=no,use=reference Allow: / User-agent: Amazonbot Disallow: / User-agent: Applebot-Extended Disallow: / User-agent: Bytespider Disallow: / User-agent: CCBot Disallow: / User-agent: ClaudeBot Disallow: / User-agent: CloudflareBrowserRenderingCrawler Disallow: / User-agent: Google-Extended Disallow: / User-agent: GPTBot Disallow: / User-agent: meta-externalagent Disallow: / # END Cloudflare Managed Content # robots.txt for the MeshCore Analyzer. # # This is advisory only: a well-behaved crawler obeys it, a scraper ignores it. # The enforced defences are elsewhere — the origin only accepts traffic through # Cloudflare (deploy/web/Caddyfile's (cfonly) guard) and every read API rate # limits per client (internal/ratelimit). This file just tells the polite bots # not to bother. # # The JSON APIs and the live stream are polled data endpoints, not indexable # pages, so no crawler has any reason to walk them; a bot looping over them is # exactly the automated pulling we want to discourage. The site itself is a # hash-routed single-page app, so its content is not made of separate crawlable # URLs anyway — indexing the entry document is all a search engine can do. User-agent: * Disallow: /api/ Disallow: /stream Disallow: /embed/ # Bulk content harvesters (AI training and dataset crawlers). These exist to # copy whole sites, which is the opposite of what this data is served for, so # they are asked off entirely. Ones that ignore robots.txt are caught by the # rate limit instead. User-agent: GPTBot Disallow: / User-agent: CCBot Disallow: / User-agent: ClaudeBot Disallow: / User-agent: Google-Extended Disallow: / User-agent: Bytespider Disallow: / User-agent: Amazonbot Disallow: /