Guide ·
llms.txt for a software product: what we put in ours
llms.txt is a short text file at the root of a site that tells language models what the site is and which pages matter. Basalt Studio added one to its sites on 19 Oct 2026, and to KahveDrop with its deploy the next day. Here is what we put in, with excerpts from the live files, and what to expect from it.
What it is
A proposal, not a standard
llms.txt is a proposal published at llmstxt.org. The file lives at /llms.txt and is written in Markdown: the site’s name as a heading, a short summary in a quote block, any notes, then sections of links with a line on each. A section called “Optional” marks links a model can skip when it is short of space.
It is not robots.txt. It does not allow or block anything. It is a summary for a reader that is a program.
What we put in
Four parts in every file
Each of Basalt’s product sites has its own file. The excerpts below are copied from the live files, fetched on 20 Oct 2026.
A one-paragraph summary
The product’s name as the title, then one paragraph in a quote block: what it is, who it is for, what it costs and who makes it. Upright’s, from its live file:
# Upright
> Upright is a free, open-source (MIT) macOS menu-bar app that remaps the buttons on Logitech mice without Logi Options+. It talks to the mouse directly over Logitech's HID++ protocol: gestures, per-app profiles, pointer speed (DPI) presets and battery alerts, with no account, no analytics and no background daemon. Made by Basalt Studio (https://hellobasalt.dev/).A page list, one line each
Every page worth reading, with a link and one line on what is on it. The line says what a reader learns there, not just the page’s title. From ByeWall’s file:
## Pages
- [ByeWall home](https://byewall.hellobasalt.dev/): what it does, how to install it, and FAQ
- [archive.today extension](https://byewall.hellobasalt.dev/archive-today-extension): how ByeWall works as an archive.today extension, how it compares with Archive Page and the Wayback Machine extension, and what to do when archive.today is down
- [Privacy](https://byewall.hellobasalt.dev/privacy): what the extension and the website handle, and how to contact usLimits, and what the product does not do
The facts an assistant is most likely to get wrong: platforms, requirements, prices and what the product does not do. From ByeWall’s file, then Outcrop’s:
ByeWall is listed on Firefox Add-ons. Chrome and Safari are development installs from the website; ByeWall is not on the Chrome Web Store. It does not capture pages automatically and does not unlock every paywall: it only finds copies that already exist in public archives.
Prices are fixed, in US dollars before VAT. No calls: scope and delivery happen in writing. Outcrop does not guarantee rankings, does not promise placement in AI answers, and does not buy links or do outreach in a client's name.Contact
Where to write, in plain text. From the studio’s file at hellobasalt.dev:
Each product has its own site with its own llms.txt where available. Contact: hello@hellobasalt.dev (general), support@hellobasalt.dev (help with any product).Writing yours
Rules we kept
- Say what it is in the first sentence. “A free Mac app that…” beats a tagline.
- Use full addresses, the same ones as in your sitemap and canonical tags.
- State the limits. Platforms, requirements, prices, and what the product does not do. These are the facts most often wrong in AI answers.
- Keep it in step with the site. Add a line when a page goes live. Outcrop’s file is written by the same build script as its pages, from the same list of packages and prices, so the two cannot drift apart.
- Serve it as text. A 200 response with
text/plainortext/markdown.
Check it
8 of our 8 product sites serve it today
On 19 Oct 2026, before the change, none of Basalt’s 8 product sites had an llms.txt. On 20 Oct 2026 at 10:56 UTC, all 8 returned one with a 200. To check your own:
curl -s -o /dev/null -w '%{http_code} %{content_type}\n' https://example.com/llms.txt
Basalt’s 8 product sites, 20 Oct 2026
Each /llms.txt fetched with curl, trimmed to the address, status, content type and size.
hellobasalt.dev 200 text/plain; charset=utf-8 3274 bytes
upright.hellobasalt.dev 200 text/plain; charset=utf-8 3067 bytes
lull.hellobasalt.dev 200 text/plain; charset=utf-8 1821 bytes
gocmeden.hellobasalt.workers.dev 200 text/plain; charset=utf-8 4839 bytes
byewall.hellobasalt.dev 200 text/plain 1446 bytes
kacpapel.app 200 text/markdown; charset=utf-8 6566 bytes
kahve.hellobasalt.dev 200 text/plain 2546 bytes
cosmicpost.lol 200 text/plain 2991 bytesWhat to expect
A cheap test, not a ranking factor
No AI company has confirmed that its crawlers or assistants read llms.txt. It is not a ranking factor in Google or, as far as anyone has shown, anywhere else. Adding one will not move you up a results page.
We added it anyway because it is cheap: one small file, written once and kept up to date by the build. If an assistant does read it, it gets an accurate description of the product in our own words, limits included. If none does, it cost us a few lines of text. Your server logs can tell you whether anything fetches it.