Litr · · 7 min read

Litr 1.4: a small browser for the way work actually is

Litr 1.4 adds rooms, link rules, timed sign-out, localhost-aware tabs and an on-device assistant, and still weighs 3.9 MB with one network request of its own.

Litr 1.4: a small browser for the way work actually is

Last time we wrote about Litr, the story was what it didn't have. It had no bundled engine, no telemetry and no account, and it came in a download under 4 MB. That's still true, and we checked: 1.4 is 3.9 MB, and Litr itself still makes exactly one request, the daily "is there a newer version?".

This release is about what it now does. None of it is here for the sake of a feature list. It's here because of what real days look like: three clients open at once, a bank you forget to sign out of, a link from Slack that opens in the wrong place, and a localhost tab that has quietly stopped answering. Here's the tour, and the reason behind each stop.

Rooms: one set of tabs per project

The problem. Your sidebar has 41 tabs. Eleven are for one client, nine for another, six are docs for the thing you're building, and the rest are the internet. Each time you switch jobs you scan all 41 looking for the six you need, and every tab you aren't using is in the way.

Rooms give each project its own set of tabs. Make one for each client and switch between whole rooms with ⌥⌘1–9, or with the strip at the bottom of the sidebar:

  ⌥⌘1  Acme        — their Jira, their staging site, their Figma
  ⌥⌘2  Freddy      — localhost, the docs, the PR you're reviewing
  ⌥⌘3  Personal

The part that matters: the room you leave is unloaded. Only one room uses memory at a time, so three clients' worth of tabs cost you one client's. Drag a tab onto a room to move it there, or use Move Tab to … in the command palette. A web app can open along with a room, in the background, so switching to Acme brings up their chat as well as their tabs.

And for the sidebar that has already got away from you, Tidy Tabs… suggests groups that belong together. It sorts them by topic using Apple's on-device model, or by site, so you can move them to a new room or close them. It also finds the tabs you've opened twice. A gentle hint appears once a room reaches twelve tabs, which is about when most of us stop being able to see what's there.

Links that go where they belong

The problem. Someone pastes a Jira link in Slack. You click it and it opens in whatever your default browser is, in whatever window happens to be in front. You're now looking at the client's ticket in your personal session, logged in as the wrong person.

Two things fix that. Litr can be your default browser: Settings → Default browser asks macOS, and links from other apps open in Litr. And link rules send links for a site to the right place:

  • Jira links → the Jira web app, with its own window and its own login

  • a client's domain → that client's room

  • a site you'd rather not keep history for → a forget tab

Set a rule once, and every link from Slack, Mail or your terminal lands where it belongs.

Privacy you can set a timer on

Sign out automatically. You check your bank. You close the tab. You're still signed in, and you'll stay signed in for weeks, because closing a tab isn't signing out. Open the schedule panel (⌥⌘S) and add Sign out. It deletes that site's cookies and data, for example 15 minutes after you leave your bank. It can also run once, or every day at a set time. Tabs → Sign Out of This Site does it immediately.

Forget tabs (⇧⌘N) are for the times you don't want a trace. A forget tab keeps no history and starts with no cookies. Whatever the site stores while you use it lives in memory, and it's deleted when you close the tab. Forget tabs are violet, so you always know which kind you're in, and you can't type your real password into the wrong one by mistake.

The privacy report. A small shield in the address bar counts the ads and trackers blocked on the page. Click it and you get the list of hosts, plus the last seven days across all tabs: requests blocked, trackers, and an estimate of the data you didn't download. In keeping with everything else, only the blocked hosts and daily counts are kept, for 30 days, on your Mac. The report is about what was blocked, not about where you went.

Tabs that know they're localhost

This part is for the developers, and it's the part we use most ourselves.

Pages served from your own Mac now get help of their own. That covers localhost, 127.0.0.1, and anything on .test, .local or .localhost, so a Grove site like freddy.test counts too. Those tabs show their port, and a red dot when the server isn't answering. They reload by themselves when it comes back. Restart your dev server and the tab catches up on its own. You don't have to keep hitting refresh against a closed port.

A related fix: a tab whose page fails to load, such as a local server that's down, now keeps its address and title instead of turning into an empty tab you can't identify.

Reload when files change (Tabs → Developer Tab…, or ⌥⌘D). Litr works out the project folder from the process serving the port, or from the host name. When you save a file it reloads the page, and it ignores node_modules, dependencies and build output, so an npm install doesn't set off forty reloads. This is hot reload without adding anything to your project.

Responsive view (⌥⌘R) shows the page at phone, tablet and desktop widths side by side, at the same scale. Scroll one and all three scroll. Follow a link in one and all three navigate. ⌘R reloads them together. It's the fastest way to catch the thing that looks fine at 1440 pixels and falls apart at 390.

Reading, without sending anything

The assistant (⌥⌘A) opens a pane beside the page. You can summarise it, ask questions about it, or translate it. It runs on Apple's on-device model and translation, so the page and your questions never leave your Mac. There's no key to paste and no service in the middle. It needs macOS 26 or later with Apple Intelligence. On older systems it simply isn't there, rather than quietly sending your pages somewhere to make up for it.

Reader mode (⇧⌘R, or Aa in the toolbar on articles) shows the article as plain, comfortable text, light or dark to match the system. It drops the original page along with its scripts and ads, so a long read uses a fraction of the memory. Press ⇧⌘R again and you're back on the page where you left it.

Memory you can see, and set

The first Litr's best trick was loading only the tabs you use. 1.4 makes memory something you can see and control.

  • A memory limit. Litr keeps itself and its pages within a limit, 1 GB by default. If it goes over, the heaviest background tab is unloaded. You can choose anything from 500 MB to 3 GB, or turn the limit off.

  • What every tab costs. Each loaded tab shows its memory in the sidebar, and a meter at the bottom shows the total against the limit. It's hard to argue with "this dashboard is using 380 MB" when it's written next to the tab.

  • Unloaded tabs come back instantly. Litr keeps a small picture of each tab you leave and shows it while the page reloads, so switching to an unloaded tab no longer means a blank flash. Restored tabs look instant after a restart too.

  • Music and calls are never cut off. A tab playing sound or using the camera or microphone is never unloaded automatically, whether by the limit, the idle timer or memory pressure. It shows ♪ in the sidebar. Your stand-up call won't be "saved some memory" out from under you.

Why all this still fits

It's reasonable to ask how a browser gains rooms, an assistant, a privacy report, responsive view and file-watching reload, and still weighs 3.9 MB.

The answer is the same as last time. Litr keeps using what your Mac already has. The pages are rendered by the system's WebKit. The assistant uses Apple's on-device model, and translation is Apple's too. Tidy Tabs sorts with the same on-device model. Litr adds the window, the rooms, the rules and the timing, all of it small. The intelligence was already on your machine, so Litr didn't need to download it, host it, or send your pages to it.

It also explains why nothing new talks to the network. There's no model to call and no report to upload. The privacy report lives in the same local database as your tabs. The one request is still the daily update check, and it can still be turned off.

Get it

Litr 1.4 is at elyracode.com/litr: 3.9 MB, signed and notarized, for Apple silicon Macs on macOS 13 or later, with the assistant on macOS 26. Already running Litr? It's offering you the update now, and it'll check the signature before it replaces anything.

Make a room for your current project. Put its tabs in it. Press ⌥⌘2, then ⌥⌘1, and watch the memory meter.