Documentation.
The detail, for people who want it: how the island decides, every default key, what leaves your computer, and how it is built.
The island’s rules
Hidden until needed is the only mode. The island has three states: hidden, the small island (a strip 32 pixels tall) and open.
| What happens | What the island does |
|---|---|
| The pointer touches the top-centre edge | The small island comes out, once the pointer has stayed for a twentieth of a second. A pointer that only crosses the edge brings nothing out. |
| The pointer rests on it for a quarter of a second, or clicks | It opens. Opening on hover can be turned off in Settings, Island. |
| The pointer leaves | Opened by hover, it folds after 0.6 seconds. Opened by a click, after 15 seconds (you can set 5 to 120). The small island hides after 2 seconds. |
| A click outside | The open island folds at once, unless a card is waiting for your answer or you pinned it. |
| A notice, an activity or an agent starting work | The small island shows for a moment, then hides again. |
| A permission card or a question | The island opens on it and stays until you answer. |
| A full-screen app is in front | The island stays away and notices wait. |
| Pause, in the tray menu | The island hides and its edge stops reacting until you resume. |
In Settings, Island you can keep the small island out “for a moment” (the default), “while an agent is working” or “until I dismiss it”. You can also choose the display, drag the island anywhere, and turn off the wheel gesture.
The island never takes the keyboard by appearing. Its window cannot be activated by a hover, a notice or a card. Your own window keeps the keyboard until you click the island or press one of its shortcuts.
Keyboard and shortcuts
Every global shortcut can be changed or turned off in Settings, Shortcuts. These are the defaults in version 1.0.0.
The app
| Keys | Action |
|---|---|
| Ctrl Alt Space | Open the chat |
| Ctrl Alt A | Go to the waiting permission or question |
| Ctrl Alt T | Open the terminal of the agent’s session |
| Ctrl Alt → / ← | Next pill, previous pill |
| Ctrl Alt S | Mute or unmute the mascot |
| Ctrl Alt N | Open or close the island. This one is off until you turn it on. |
| No key yet | Next tab of the island. Give it a key if you want one. |
Features
| Keys | Action | Feature |
|---|---|---|
| Ctrl Alt Shift 4 | Take a screenshot | Capture |
| Ctrl Alt Shift 3 | Capture the whole screen | Capture |
| Ctrl Alt Shift 5 | Start or stop a screen recording | Screen recorder |
| Ctrl Alt V | Open the clipboard history | Clipboard |
| Ctrl Alt Shift V | Paste as plain text | Clipboard |
| Ctrl Alt O | Switch to the next sound output | Audio mixer |
| Ctrl Alt U | Mute or unmute all microphones | Audio mixer |
| Ctrl Alt PgUp / PgDn | Brighter, dimmer (the display under the pointer) | Displays |
| Ctrl Space | Open the command bar | Command bar (off by default) |
| Ctrl Alt L | Open the snippet library | Input tools (off by default) |
| Ctrl Alt R | Open the first wheel | Radial menu (off by default) |
| Ctrl Alt B | Send the companion home or out | Companion (off by default) |
| Right Ctrl, alone | Talk to the assistant: tap, or hold | Voice (off by default) |
Other actions have no key until you give them one: pick a colour, copy text from the screen, measure, draw on the screen, capture a scrolling page, record the window in front, pause a recording, start the timer, keep awake, add a reminder.
Inside the island
| Keys | Action |
|---|---|
| Esc | One step back: a layer, the tab, then the small island |
| Ctrl K | The gallery of all tabs |
| Alt + a letter | Jump to a tab by its letter |
| Ctrl Tab | Next tab (Shift for the one before) |
| Ctrl P | Pin the island open |
| Mouse wheel on the small island | Down opens, up closes |
Settings
Right-click the tray icon and choose Settings. The window has a search field and a list of pages on the left: General, Island, Mascot, Pills, Sounds, Shortcuts and Features. Under them is one page for each feature that is on, in the same groups as the feature list: Island, Agents, Chat, Media and the rest.
- Features. One switch for each feature. A feature that is off shows as “Off” in the list of pages.
- Island. The tab the island opens on, the Dashboard cards, open on hover, auto-close (15 seconds unless you change it), how long the small island stays, keeping live activities on screen, the wheel on the strip, and keyboard jumps.
- Shortcuts. Every global shortcut, each with its keys and a switch.
- Coding agents. Connect or disconnect an agent. Lintel shows the change to the agent’s settings file and waits for your confirmation.
- Each feature’s own page. Its options, and its keys or downloads where it has them.
Settings can be exported to a file and imported again. When you import, your previous settings are kept in a file beside them.
Privacy: what leaves your computer
Lintel has no account and no server of its own. On a fresh install with default settings it makes no call to any host. There is no analytics, no crash reporting and no usage counter. This table lists every host the app can call.
| Host | What turns it on | What is sent |
|---|---|---|
| lrclib.net | Turning on the lyrics lookup, then a song playing | Song title, artist, album and length |
| open-meteo.com | Turning Weather on and choosing a city | The city name you typed, then its coordinates |
| speed.cloudflare.com | Clicking the speed test button | Random test data. Nothing about you. |
| github.com | Clicking “Check for updates” | A plain request for the release feed |
| winget sources | Clicking a check, a search or an install in Apps | What winget itself sends. Run by winget, not by Lintel. |
| huggingface.co | Clicking a download button for a speech, voice or text model | A plain download request for pinned files |
| Anthropic, OpenAI, Google, OpenRouter, or your own server | Saving a key or an address for chat, then sending a message | Your key (only to its own host), your message and the context you chose |
| GitHub, Stripe, Vercel, Resend, Notion, Cal.com, your n8n | Saving a key for that integration | Your key and a read request. An email also needs your click. |
| Your calendar link | Adding a calendar link | A plain request for the .ics file |
If you use a command-line agent for chat, that program makes its own calls. Lintel does not control them. Links that open in your browser when you click are not calls made by Lintel.
The rules it keeps
- Keys live in Windows Credential Manager. A key is sent only to the one host it belongs to.
- Agents are never approved automatically. A decision is tied to the card it was made on.
- An agent is never blocked. If Lintel does not answer, the hook exits at once and the agent goes on.
- Other programs’ settings files are changed only after showing you the difference, with a dated backup, on your click.
- Deleting always shows a list first and goes to the Recycle Bin.
- The clipboard history skips passwords, password managers and anything an app marks as private.
- The camera starts only from a click. The microphone opens only for a recording you start, or for the wake phrase if you turned that on, and an indicator is on screen the whole time.
- System settings that Lintel changes are written down first and restored when it quits.
The full page is docs/PRIVACY.md in the repository.
Hardware sensors and the one administrator prompt
Lintel itself runs without administrator rights, always. Reading processor temperatures, fans and drive health needs more than that, so a separate small program does it: the hardware helper.
- It is off by default. It starts only when you turn on Hardware sensors and agree.
- Windows then shows one administrator prompt, for the helper only.
- It reads sensors with LibreHardwareMonitor and the PawnIO driver. The driver is not bundled. Lintel offers to install it with winget, on your click, and never removes it.
- The helper talks only to the Lintel that started it, over a private pipe, and checks who is on the other end.
- Fan control is a beta. Use it with care. On some laptops the sensor library cannot read the fans.
The voice assistant
English only, off by default. Sound never leaves your PC. Text leaves only to a service you switched on, and only for the turns that need it.
| Part | What it does | Download |
|---|---|---|
| Speech model (Whistle) | Turns what you say into text. Required. | about 19 MB |
| Action model (Needle) | Understands a command said in your own words. | about 35 MB |
| Natural voice (Kokoro) | Speaks the answers. Until it is downloaded, a Windows voice speaks. | about 370 MB |
| Text model (Qwen3.5-4B) | Answers open questions on your PC. About 4.3 GB of memory while loaded. | about 2.7 GB |
Every file is downloaded only on your click, from a pinned version, and checked before it is kept and before it runs.
- Two ways in. The talk key (right Ctrl alone: tap or hold), or a wake phrase, “OK Lintel”, behind its own switch that starts off. While the wake phrase is on, a thin bar of light at the top of the screen shows that the microphone is open.
- Speed. A command such as a timer is answered in a few seconds. An open question to the local text model took 9 to 15 seconds to start speaking on a laptop when measured, and about half a minute when the model was not yet loaded.
- Online options. A free online model, your Claude key, an ElevenLabs voice and weather are each a switch that starts off.
- It can never: allow a permission or answer an agent’s question, send an email, delete or empty anything, start the camera, unmute the microphones, start an agent, install or uninstall, or paste without a yes.
- Known limits. Voice is new and has had little testing. It was tested with recorded clips more than with live speech, and the wake phrase has not been measured with many voices. There is no echo cancelling, so over loudspeakers it also hears its own voice.
Known limits of version 1.0.0
- The voice assistant understands English only, and it has had little testing with live speech.
- An answer from the local text model is slow on a laptop: 9 to 15 seconds before the first word, and about half a minute the first time after a start.
- Mirroring the notifications of other apps is not available. Windows allows it only to a signed and packaged app.
- The installer is not code-signed, so SmartScreen warns.
- The interface is translated into ten languages, but some newer lines are English only.
- With “The small island stays” on and the mascot shown, the resting island uses about 10 % of one processor core. With the mascot hidden it is about 1 %.
- The island lives on one display at a time.
- On some laptops the sensor library cannot read the fans.
The roadmap has the full list of what is left open.
Build from source
You need Windows 10 or 11, Node.js, the Rust toolchain and the WebView2 runtime.
npm install
npm run build # type-check and vite build (also builds the hook relay)
npm test # the node --test suites
cargo check --workspace # needs dist/ to exist, so run `npm run build` first
npm run tauri dev # run the app
npm run pack # make the installer, into release/
npm run fake-session # a pretend agent session, while the app runs
npm run pack also builds the hardware helper in helper/, which needs the .NET 8 SDK. Nothing else needs it.
Architecture in brief
- A Tauri 2 app. The core is Rust. The interface is plain TypeScript, the DOM and Canvas in a light web view, with no UI framework.
- One crate per feature. Each feature is a Rust crate in
crates/and a TypeScript folder insrc/features/. Nothing runs until itsstartis called, and everything ends instop. - Shared services. Audio, media, input, system events and the shell are services that features subscribe to. Dropping the handle unsubscribes.
- The relay. Agent programs start a tiny relay,
hook/, on each event. It talks to the app over a named pipe and exits at once if nobody answers. - The island. One transparent, topmost window that cannot be activated. Hidden, it shrinks to its strip and its drawing loop stops.
Read more in the repository: ARCHITECTURE.md, FEATURES.md, VOICE.md, PRIVACY.md, the roadmap and the changelog.