# See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
User-agent: *
Allow: /
# Content Signals — declare AI content-usage preferences (contentsignals.org,
# draft-romm-aipref-contentsignals). These signals apply only to crawlable
# content, which is our public marketing site (landing, blog, docs) — all user
# data is client-side encrypted and auth-walled. We allow AI usage of that
# marketing content for discoverability (Answer Engine Optimization), which is
# the same goal as our llms.txt:
# search=yes — allow indexing for search results
# ai-input=yes — allow use as live AI input (RAG/grounding) in answers
# ai-train=yes — allow use to train AI models
Content-Signal: search=yes, ai-input=yes, ai-train=yes
# Sitemap location
Sitemap: https://killswitch.app/sitemap.xml
# LLM/AI context file (AEO - Answer Engine Optimization)
# See https://llmstxt.org for specification
# LLMsTxt: https://killswitch.app/llms.txt
# LLMsFullTxt: https://killswitch.app/llms-full.txt
# Disallow admin and authenticated areas.
#
# Patterns use:
# /path$ — exact match for the bare URL only
# /path/ — anything under that directory
#
# Together these block both the index route and all sub-routes without
# prefix-matching unrelated public URLs (e.g. /deadman$ + /deadman/
# blocks /deadman and /deadman/123 but does NOT block the public SEO
# page /deadman-switch-email). Google, Bing, and all major crawlers
# support $ and *; older bots that don't will see no match and may
# crawl the auth-walled URL, which the application then redirects to
# sign-in — harmless.
#
# Whenever you add a new top-level authenticated route, add BOTH a
# /path$ and a /path/ entry here.
Disallow: /admin$
Disallow: /admin/
Disallow: /dashboard$
Disallow: /dashboard/
Disallow: /notebooks$
Disallow: /notebooks/
Disallow: /notebook-media/
Disallow: /notebook-entries/
Disallow: /settings$
Disallow: /settings/
Disallow: /beneficiaries$
Disallow: /beneficiaries/
Disallow: /deadman$
Disallow: /deadman/
Disallow: /shares$
Disallow: /shares/
Disallow: /api$
Disallow: /api/
Disallow: /webhooks$
Disallow: /webhooks/
Disallow: /auth$
Disallow: /auth/
# NOT blocked here, deliberately (killswit-mnd):
#
# /register — the trial page. Blog CTAs link to it, so Google found it via
# those links and then could not fetch it, which is what produced the GSC
# "Indexed, though blocked by robots.txt" warning. It is a public
# conversion page and should be indexed normally.
#
# /sign-in — carries a `noindex` meta instead (SignInLive assigns
# `noindex: true`; see root.html.heex). Blocking it here would be
# counter-productive: a disallowed URL can still be indexed from inbound
# links, and Google can never see a noindex on a page it is not allowed to
# fetch. Letting it be crawled is what lets Google read the noindex and
# DROP the leftover indexation.
#
# The rule of thumb: robots.txt controls crawling, not indexing. To keep a
# page OUT of the index, let it be crawled and serve `noindex`.
Disallow: /reset$
Disallow: /password-reset/
Disallow: /dev$
Disallow: /dev/