Connectors
What the on-device model can see, and what it deliberately can't
Connectors are what let LocalLM Lab's on-device model answer questions using real information from your Mac — your calendar, your contacts, the weather, where you are — instead of just what it already knows. Every connector is off by default, and you turn each one on individually in Local AI Settings.
Building your own app instead? Most of these are available as ready-made
Tools in the SDK, so you don't have to write your own
adapters.
Two rules apply across all of them. First, every connector is read-only by default — the model can look things up, but not edit or delete anything on your Mac or in your accounts. Calendar and Reminders are the two exceptions: the model can also create a new calendar event or reminder by default, though it still can't modify or delete an existing one unless you separately turn on Full Access (see below) — an extra, off-by-default switch for exactly that. Second, everything stays on your device by default; the one exception (Weather) is clearly flagged in the app, since it's the only connector that sends anything over the network.
The examples below won't do anything until you turn the relevant connector on in Local AI Settings first — and for Calendar, Reminders, Contacts, and Location, turning one on for the first time will prompt you for the matching macOS permission, same as any other app asking for that data. Try them and see what the model actually does with them — that's the point of LocalLM Lab.
🕐 System Clock
LocalLets the model read the current date and time on your Mac.
Tool calls: getCurrentTime
Try in Prompt Playground
- "What time is it right now?"
📁 Filesystem
LocalLets the model read files from a single folder you choose — nothing else on your Mac. It can list what's in that folder and read plain text files from it.
Read-only. Can't write, create, delete, or reach outside the folder you granted.
Tool calls: listFiles, readFile
Building your own app on the SDK instead? The same
single-folder scoping is available via WorkspaceTools, but broader — it also
supports creating and editing files, not just reading them. See the SDK page's
workspace-buddy example.
Try in Prompt Playground
- "What files are in my folder?"
- "Summarize the file [filename] in a couple sentences."
🌤️ Weather
Leaves this MacLooks up current conditions for a place you name — temperature, feels-like, humidity, wind, and a plain-English description. The only connector that sends anything over the network: your location query goes to Open-Meteo, a third-party weather service, to resolve it. Note that the place name cannot include additional qualifiers e.g. "San Jose, CA". Use only the city name, such as "San Jose".
Tool calls: getWeather
Try in Prompt Playground
- "What's the weather like in Tokyo right now?"
- "Should I bring a jacket if I'm in Chicago today?"
📅 Calendar
LocalLets the model list your upcoming Calendar events — title, time, calendar, and location — and create new quick events (title, date, time, duration) on your default calendar.
Can list and create events by default. No invitees are ever added. With Full Access turned on, the model can also modify or permanently delete an existing event.
Tool calls: getUpcomingEvents, addCalendarEvent — with Full Access, also updateCalendarEvent, deleteCalendarEvent
Try in Prompt Playground
- "What's on my calendar for the rest of the week?"
- "Add a 30-minute event called 'Team sync' tomorrow at 2pm."
- "Move my dentist appointment to 3pm." (needs Full Access)
✅ Reminders
LocalLets the model list your upcoming Reminders — title, due date, list, and priority — and create new reminders with a title and an optional due date/time.
Can list and create reminders by default. With Full Access turned on, the model can also modify, mark complete, or permanently delete an existing reminder.
Tool calls: getUpcomingReminders, addReminder — with Full Access, also updateReminder, deleteReminder
The model doesn't know today's date on its own. LocalLM Lab is raw in, raw out — it doesn't inject today's date into what the model sees, so a relative phrase like "tomorrow" or "next Friday" can resolve to the wrong day, or even the wrong year. Two ways around it: enable the Clock connector alongside Reminders so the model can check getCurrentTime before it computes a date, or just tell it directly — add a line like "Today's date is 2026-08-23" to the System Prompt in Prompt Playground, or say the date in your own message. Giving addReminder/updateReminder an exact date (e.g. "due 2026-08-25") sidesteps the problem entirely.
Try in Prompt Playground
- "What do I have on my reminders list this week?"
- "Remind me to call the dentist tomorrow morning."
- "Mark my 'call the dentist' reminder as done." (needs Full Access)
👤 Contacts
LocalLets the model search or list your Contacts — name, organization, phone numbers, and email addresses.
Read-only by default — the only connector with no default write capability at all. With Full Access turned on, the model can also create, modify, or permanently delete a contact.
Tool calls: searchContacts, listContacts — with Full Access, also addContact, updateContact, deleteContact
Updating a contact can occasionally touch a field you didn't ask about. See Known Issues — most update requests behave correctly, but it's worth a glance at the result after a Full Access update.
Try in Prompt Playground
- "Do I have a contact for [a name from your own contacts]?"
- "What's the phone number for [name]?"
- "Add a contact for Jane Doe with this phone number." (needs Full Access)
- "Update Jane Doe's organization to Acme Corp." (needs Full Access)
📍 Location
LocalLets the model look up where your Mac currently is — a single, one-time reading, not continuous tracking. Includes a resolved place name alongside the coordinates, so the model doesn't have to guess where that actually is.
One-shot only. LocalLM Lab never tracks your location in the background.
Tool calls: getCurrentLocation
Try in Prompt Playground
- "Where am I right now?"
- "What city am I in?"
Turning on many connectors at once can exhaust the model's context
Apple's on-device model has a small context window. Every connector (and MCP tool) you enable adds its schema to that budget before your prompt is even considered — with several connectors and MCP servers all turned on simultaneously, that alone can leave almost no room for an actual answer, and a request can fail with a context-window error. See Known Issues for the full explanation and a guideline on how many to enable at once.
Every connector needs your permission first
Calendar, Reminders, Contacts, and Location all require you to grant macOS's real system permission before they'll work — the same permission dialog you'd see from any other app asking for that data. LocalLM Lab can't read any of it until you say yes, and you can revoke access at any time in System Settings → Privacy & Security.
These are two separate switches, not one. The toggle in Local AI Settings controls whether the model is offered the connector at all — turn it off and the model has no way to even attempt a lookup, regardless of what macOS has granted. The macOS permission (checked in System Settings) controls whether the connector can actually read your data once it's offered. Turning the in-app toggle off never revokes the macOS permission — only System Settings or an OS-level reset can do that — so re-enabling the toggle later won't prompt you again if you've already said yes once.
Full Access: letting the model change or delete things
Off by default. Full Access is a separate switch — not a macOS permission, just a setting inside LocalLM Lab itself — that unlocks modifying and permanently deleting existing Calendar events and Reminders, and creating, modifying, or deleting Contacts. Without it, those three connectors stay limited to what's described above no matter what macOS permission you've granted.
A few things worth knowing before you turn it on:
- It resets every time LocalLM Lab launches. It's not saved anywhere — turning it on only lasts for that run of the app, and it's off again the next time you open LocalLM Lab.
- Prompt Playground and API Lab each have their own separate Full Access switch. Turning one on has no effect on the other — enabling it for Prompt Playground testing doesn't expose the same capability to a script calling the API, and vice versa.
- Deletions can't be undone. There's no confirmation step between the model deciding to delete something and it actually happening — the same way any of the model's tool calls work. Only turn this on when you're comfortable with that.
Turn it on in Local AI Settings (for Prompt Playground) or API Settings (for API Lab) — each has its own "Full Access" toggle, right alongside the other connector controls.
Everything above describes LocalLM Lab the app. The SDK and CLI toolkit reach the same connectors through different rules entirely:
- SDK — no Full Access toggle at all. If you're building your own native
app on
LocalLMLabSDKCore, every read and write method (including modify and delete) is available unconditionally, the moment the person using your app grants the matching macOS permission. There's no separate switch to check and nothing to turn on — it's entirely up to your app which of those methods you actually call, and whether you add your own confirmation step before anything destructive. See the SDK page for details. - CLI — inherits whichever toggle matches how it was called, and can never turn
either on itself.
localai-cli's--runmode checks Prompt Playground's Full Access toggle; its--chatmode checks API Lab's — the same two independent switches described above, not a third one. Either way, alocalai-clirequest only reaches a modify/delete tool if a human already switched the matching toggle on in that same already-running LocalLM Lab — see the CLI page's Full Access section for the full mechanics.
Contact
Reading is available for every connector by default; Calendar and Reminders can also create by default. Modifying or deleting an existing item, or creating a Contact, needs Full Access turned on (see above). If you need something beyond what's described on this page, let us know what you're trying to do.
Questions about a specific connector, or want capabilities beyond what's listed here? Contact neuron@thisbrain.ai or join our Discord.