Developer tabs
Pages served from your own Mac get extra help. A tab on localhost,
127.0.0.1, or a host ending in .test, .local or .localhost is a
developer tab, with no setup needed.
Server status
- The port shows next to the tab in the sidebar, for example :3000.
- Litr checks every two seconds whether the server answers. When it doesn't, the tab shows a red ●.
- When the server comes back (you restarted it, or it finished rebuilding), Litr reloads the page, so you see what it serves now.
Only tabs that are loaded are checked.
Reloading when files change
Litr can watch the project's folder and reload the page whenever you save a file.
-
Open the tab and choose Tabs → Developer Tab… (⌥⌘D).
-
Litr finds the project folder itself when it can:
- it looks up the process serving the port (
npm run dev,cargo run,php artisan serve,python3 -m http.server, …) and uses the folder it runs in, - for a
.test,.localor.localhosthost (Valet, Herd), it looks for a folder of that name in ~/Code, ~/Sites, ~/Herd, ~/Projects, ~/Developer and similar places.
If it can't, click Choose… and pick the folder. Detect tries again.
- it looks up the process serving the port (
-
Set Reload when files change to On.
Changes in dependencies, build output and caches are ignored, so they can't
cause endless reloads: .git, node_modules, vendor, target, storage,
dist, build, .next, .nuxt, .svelte-kit, .turbo, .cache,
bootstrap/cache, public/build, tmp and .idea, as well as hidden files
(except .env), editor swap files and logs. Several saves in quick succession
cause one reload.
Leave it off for tools that already update the page themselves, such as Vite's hot module replacement.
The settings are remembered per site (scheme, host and port).
Errors
A developer tab counts what goes wrong on its page: script errors, files that didn't load (a script, stylesheet or image that gave a 404), and promise rejections nothing handled. The count shows in red next to the tab in the sidebar, for example ⚠3. Click it to open Developer Tab…, which lists them, newest first, with the file and line where there is one. Clear starts over; loading or reloading the page does too.
Litr listens from its own isolated script world, so it doesn't touch the
page's scripts or its console. console.error messages aren't counted; Web
Inspector has those and the full details.
Only pages served from this Mac are counted. Other sites get nothing extra.
Network
Developer Tab… also lists the calls the page makes to its API with
fetch and XMLHttpRequest, newest first: method, status, address and
time. Litr's own site's calls show by path; calls to other servers in full.
Statuses from 400 show in orange, from 500 and failed calls in red. The list
updates while the panel is open. Clear empties it; loading or reloading
the page does too.
Each call has Copy as cURL, which copies a curl command that sends it
again: its method, the headers the page set, what it sent (text, JSON or a
form's fields), and the page's cookies if they went with it. Paste it in a
terminal to see the raw answer, try the call with other values, or share it
with a teammate. A file in a form is sent as @name, so put the file
beside the command first. Litr keeps the first 16 KB of what each call sent;
the list says when some of it is missing (more than that, or not text).
Litr watches from a page's load on, so reload pages that were open before. It keeps the newest 500 calls per page, only in the page itself, and only on pages served from this Mac.
Opening the project
With the project folder known, Developer Tab… has buttons to open it in your terminal and your code editor, named after the apps: for example Open in iTerm and Open in Zed. They are also in the Tabs menu and the command palette as Open Project in Terminal and Open Project in Editor.
Litr uses the first app it finds in Applications:
- Terminal: eterm, iTerm, Ghostty, WezTerm, Warp, then macOS's Terminal (eterm 0.9.2 or later opens the folder in a new tab)
- Editor: Zed, Cursor, Visual Studio Code, Windsurf, Sublime Text, Nova, PhpStorm, WebStorm, RustRover
Copy as cURL
Tabs → Copy as cURL (or the command palette) copies a curl command that
asks for the page as the tab does: its address, Litr's user agent, and the
cookies the tab would send (a forget tab's own cookies, in a forget tab).
Paste it in a terminal to see the raw response, or to share a request with
a teammate.
It works on any web page, not only developer tabs. The cookies can sign you
in, so treat the command like a password: Litr says how many cookies it
holds, or which header signs it in (Authorization, a token or a key). Only
the page itself is copied this way; the calls it makes afterwards are in the
network list on developer tabs.
Agents
Coding agents such as Claude Code and Codex can look at developer tabs themselves: the page, console, network, errors, an audit of common layout and accessibility faults, and a screenshot. See Agents (MCP).
JSON
A page that is JSON (an API response, a .json file) shows as a tree
instead of one long line, on any site. See
Browsing.