A local LLM workhorse that keeps a private memory of your workday — search meeting transcripts and summaries, screen memory, and activity logs with on-device processing
LokalBot defines 9 tools with complete input schemas and descriptions. Naming follows verb_noun convention (list_, get_, search_, ask_). Descriptions are substantive (100-250 chars), explaining WHAT each tool does and prerequisites (e.g., 'Requires the separate screen-memory permission'). Parameters have types and descriptions. However, output schemas are not documented, LLMs cannot infer what fields to expect from responses. Error handling is minimal; no recovery guidance or actionable error messages visible. No tool annotations (readOnlyHint, destructiveHint). All tools are read-only, which is appropriate, but this should be declared explicitly via annotations for agent planning.
Ask a question and get an answer synthesized by LokalBot's local model from the meeting library, with meeting citations — raw transcripts never leave the Mac. Needs the LokalBot app running; the first call may take up to a minute while the model loads.
Aggregate tracked time by app for one local calendar day. Requires the separate screen-memory permission.
Fetch one meeting as markdown. Sections: metadata, summary, transcript.
Get recent app/window activity blocks, newest first. Requires the separate screen-memory permission.
Get captured text and metadata for one context-moment id. It reports whether encrypted pixels exist but never returns decrypted pixels or a file path. Requires the separate screen-memory permission.
Get activity blocks and screen-context metadata for one local calendar day. No pixels or encrypted file paths are returned. Requires the separate screen-memory permission.
Output schemas not documented. LLMs cannot infer response structure (fields, types, pagination). Agents must guess what data is available after each call, risking missed fields and wasted follow-up calls.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All 9 tools are read-only and safe to retry, but this is not declared. Agents cannot optimize retry logic or understand safety guarantees.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
List recorded meetings, newest first. Returns id, title, date, and duration for each.
Case-insensitive substring search across meeting titles, summaries, and transcripts. Hits are recency-ordered with kind, snippet, and timestamp.
Search locally captured screen text and window titles. Returns text snippets and context metadata only; never pixels or encrypted file paths. Requires the separate screen-memory permission.
No error handling guidance. Code shows gate checks (accessDisabledMessage, screenAccessDisabledMessage) but no recovery hints in tool definitions. Agents cannot self-correct when permissions are denied.
Pagination not documented. list_meetings and search_meetings accept 'limit' but no 'offset', 'cursor', or 'total_count' mentioned. Large result sets may exceed context window without clear pagination strategy.
Parameter 'include' in get_meeting uses comma-separated string instead of array. Agents must construct strings manually; array type is more robust and self-documenting.