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.
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. Only the page itself is copied, not the requests it makes afterwards; use Web Inspector for those.
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.