Hey Mint
Reference

Reference

Installing, where everything lives, fixing common problems, testing, and every tool Mint has.

Reference

Installing

./set-key.sh          # paste your Gemini key
./install.sh          # builds ~/Applications/Mint.app
open ~/Applications/Mint.app

Permissions

Microphone first. Accessibility from the menu bar icon (clicking, typing, menus, scrolling). Screen Recording, Automation (per app), Calendars, Reminders and Files and Folders are asked for the first time a tool needs them.

Keys

In .env, readable only by you: GEMINI_API_KEY, TYPESAFE_API_KEY (Jev), optionally OPENAI_API_KEY / OPENROUTER_API_KEY (agents) and EXA_API_KEY / TAVILY_API_KEY (web search).

The installed app runs from ~/Library/Application Support/Mint; re-run ./install.sh after changing code.

Reference

What runs Mint

ModelWhat it does
Gemini LiveListens, talks, reasons, plans, and calls the tools
JevFast, careful choices from real lists: which button, which skill, which memories, which app you meant, whether you were talking to Mint
Gemini FlashBackground work: summaries, learning facts, writing skills, reading screenshots
GPT-6 Luna, CodexThe agents
Reference

Where everything lives

WhereWhat
.envKeys and model settings
settings.jsonAppearance, microphone, voice, shortcuts, stop words
custom.jsonAccounts, workspaces, aliases, routines, instructions
agents.jsonAgents
skills/Skills by category; _archive/ for removed ones
memory/bank.json, memory/MEMORY.mdMemories
history.jsonl, summary.mdConversation log and running summary
~/Documents/Mint/Files Mint makes: PDFs, notes, agent work
…/Mint/backups/Earlier versions of files Mint overwrote
~/Library/Logs/Mint/mint.logThe log: every tool call and result
Reference

Fixing common problems

ProblemFix
“Mint lacks Accessibility permission”Menu bar ▸ Grant Accessibility…, switch Mint on
“has not allowed Mint to control that app”System Settings ▸ Privacy & Security ▸ Automation ▸ Mint
Browser JavaScript from Apple Events is offReading and clicking still work. For raw JavaScript: Chrome ▸ View ▸ Developer
“macOS did not let Mint read it”System Settings ▸ Privacy & Security ▸ Files and Folders ▸ Mint
It hears the roomTrain your voice, or turn the mic off and type (⌘J)
It mishears a nameTell it once (see Words it gets wrong)
It hangskill -USR1 <pid> writes every thread's stack to the log
Reference

Testing it yourself

.venv/bin/python -m mint --demo                  # the animation tour
.venv/bin/python -m mint --say "do a trick"      # talk to the running Mint by text
.venv/bin/python bench/harness_bench.py          # files, guards, browser helpers, web
.venv/bin/python guide/make_clips.py             # re-record this guide's clips (keep the screen quiet)
.venv/bin/python guide/encode_clips.py && .venv/bin/python guide/build.py
Reference

Every tool

What Mint can call, with the first line of each description. You never need these names: just say what you want.

All tools
ToolArgumentsWhat it does
open_appnameInstantly launch or switch to a Mac application by name.
open_urlurl, browserInstantly open a web address in a new browser tab (reuses a tab already showing it).
open_foldernameInstantly open a folder in Finder.
scrolldirection, amountInstantly scroll the window under the pointer.
press_keykey, modifiers, timesInstantly press a key, optionally with modifiers.
set_volumelevelInstantly set the Mac's output volume.
media_keyactionInstantly send a media key: play/pause, next or previous track.
frontmost_appWhich application is in front right now.
list_windowsList the visible windows as app name and title.
quit_appnameAsk an application to quit.
type_texttext, press_return, fieldInstantly insert text at the cursor in whatever field is focused, in any app.
get_selected_textRead the text the user has selected in the front app.
get_statusCurrent local time and date, battery level, and volume.
set_timerminutes, labelStart a timer.
notifytitle, messageShow a macOS notification.
system_actionactionLock the screen, sleep the display, switch dark mode, or mute.
calendar_eventsdaysThe user's calendar events from today onwards.
create_remindertitle, in_minutes, whenCreate a reminder in the Reminders app, optionally due at a time.
create_notetitle, bodyCreate a note in the Notes app.
compose_emailto, subject, bodyOpen a pre-filled email draft in the user's mail app for them to review and send.
list_emailscountList the newest messages in the macOS MAIL APP's inbox.
read_emailnumberRead one message from the macOS Mail app's inbox in full (see list_emails).
open_chromeaccount, urlOpen Google Chrome as one particular account (Chrome profile), optionally at a URL.
open_slackworkspace, channelOpen Slack, optionally switch to a workspace, and optionally jump to a channel, DM or person by name.
list_accountsList the Chrome profiles and Slack workspaces available.
read_windowmax_charsRead ALL the text in the front window - a web page, a Gmail inbox or open email, a document, an app - exactly, including parts scrolled out of view.
list_openWhat is open right now: the app in front, and every Chrome window with its profile and tabs (* = the selected tab).
switch_towhatBring an already-open Chrome tab or window to the front, by words from its title, e.g.
export_doc_pdfopen_afterExport the open Google Doc itself as a PDF, exactly as Docs renders it, and open it.
plan_taskgoal, stepsStart a multi-step task: state the goal and the ordered steps BEFORE doing any of them.
step_donestep, result, failedMark a step of the current task finished (or failed), with a one-line result.
create_pdftitle, content, open_afterWrite a nicely formatted PDF and open it.
run_routinenameRun one of the user's saved routines by name.
desktopgoalDrive the screen to do something that the instant tools cannot: click a specific button or link, type into a particular field, choose a menu item, pick a search result.
set_preferencesetting, valueChange how you (Mint) behave or look, when the user asks: 'don't speak, just chat' -> spoken_replies off; 'talk to me again' / 'speak' -> spoken_replies on; 'turn off the mic' -> microphone off (then they can only type); 'make it purple' -> theme; 'move to the bottom left' -> position; also the orb's face, the on-screen effects, word-by-word captions, and whether you listen while you work.
chat_actionactionManage the chat window's conversation when the user asks: 'clear the chat' -> clear (window only; memory is kept); 'summarise / compact our conversation' -> summarize (a Flash model summarises it, a summary card appears, and you are restarted with just that summary as context - like compacting); 'start a new session / start fresh / new conversation' -> new_session (saves this conversation to memory, then restarts you with a clean context).
show_chatopenOpen or close the chat window (conversation history, typing box, settings).
stop_listeningGo back to sleep and wait for the wake word.
lookdisplayCapture the screen and look at it.
ui_actaction, target, text, press_return, appTHE way to click, type into or pick anything in an app's window.
ui_elementsList the controls in the front window right now (numbered, with role, label and where they are; says if a dialog is open).
click_texttext, doubleClick a piece of text you can name on screen - a sidebar item, tab, button or link label - in apps the desktop tool cannot see into (Slack, some Electron apps).
click_atx, y, button, doubleClick a point you can see in the latest look screenshot.
find_skilltask, appFind the saved skill (a learned how-to) for a task.
skill_resultname, worked, noteReport how following a skill went, so good skills rise and bad ones get fixed.
create_skilltitle, when, steps, notes, category, appsSave a new skill: how to do a kind of task, as steps that worked.
update_skillname, steps, note, whenChange a saved skill: replace its steps, add a note (e.g.
list_skillscategoryList saved skills by category, ranked by how well they work.
delete_skillnameRemove a saved skill (a copy is archived).
rememberfact, group, fixedSave a fact about the user for future conversations: people, accounts by name, work, schedule, preferences, places, or a word you misheard.
recallquestionLook up what you remember that is relevant to a question.
update_memorywhat, new_fact, fixed, groupChange a saved fact (the user says it changed or was wrong), or make it fixed / not fixed.
forgetwhatForget a saved fact the user no longer wants kept.
list_memoriesgroupList what is remembered, optionally one group.
show_skills_and_memorytabOpen the Skills & Memory window on screen, where the user can see and edit every skill and every remembered fact.
show_on_screentext, style, note, scroll, appShow the user where something is, in whatever app is in front (a PDF, a web page, a chat, a document, code): it finds the words on screen - scrolling the window to them if needed - and draws a box, underline, highlight, circle or arrow around them, with an optional short note; your orb flies over beside it.
mark_areax, y, w, h, style, noteMark a region with no text (an image, a chart, an icon) using 0-1000 coordinates of your latest look screenshot: x, y of its top-left corner, and its width and height.
clear_marksRemove the marks you drew on screen.
move_orbdirection, amountMove your orb on screen when the user asks: 'go a little down', 'move up', 'move left a lot', 'you are covering that' (direction away), 'go to the middle'.
screen_share_visibilityvisibleShow or hide Mint in screen sharing, recordings and screenshots.
expressemotion, requestedPlay an expression on your orb body.
set_voicevoice, styleChange your speaking voice and/or style when the user asks ('use a deeper voice', 'sound more cheerful', 'talk slower', 'use Puck').
list_agentsList your sub-agents: name, what each is for, its model, and what each is doing now.
delegate_taskagent, task, why, thinking, context, folder, attach_windowHand a substantial task to a sub-agent, which works in the background while you keep talking.
delegate_taskstasksStart several sub-agent tasks at once (in parallel), e.g.
agent_statusagentWhat your sub-agents are doing, or have finished, right now.
message_agentagent, message, thinkingSend new or changed instructions to a running sub-agent - when the user changes what they want mid-task ('tell Luna to use pytest', 'make it shorter').
answer_agentagent, answerPass the user's answer to a sub-agent that asked a question.
stop_agentagentStop a running sub-agent, or 'all'.
create_agentname, role, instructions, thinking, web, colorCreate (or update) a named sub-agent when the user asks for one: its name, what it is for, how it should work, and optionally which model.
wait_until_doneapp, until_text, timeout_minutesWait until an app has FINISHED what it is doing before you use the result: ChatGPT (or any AI chat) still writing its answer, a page loading, something generating.
preview_sitepathShow a web page or site that was built on this Mac (e.g.
screenshotwhat, target, size, copy, save, name, formatTake a screenshot and save it as a file (and copy it to the clipboard).
clipboardaction, text, path, indexManage the clipboard.
read_filepath, start_line, max_charsRead a file on this Mac: text, code, Markdown, CSV, JSON, PDF, Word/RTF/Pages-exported docs.
write_filepath, content, mode, findCreate or change a text file (notes, code, Markdown, CSV, HTML...).
find_filesquery, folder, kind, content, limitFind files and folders by name or content with Spotlight, newest first.
file_actionaction, path, toDo something with a file or folder: open (in its default app), reveal (in Finder), info, move / copy / rename (to to), make_folder, trash (moves it to the Trash - only when the user asked to delete it; it can be restored from there).
web_searchquery, max_resultsSearch the web and get titles, links and snippets - for facts, news, prices, docs, anything current.
read_urlurl, max_charsFetch a web page or text URL and get its readable text, without opening it on screen.
browseraction, target, text, browserFull control of the web browser (Chrome, Safari, Brave, Arc, Edge) - faster and surer than clicking pixels.
scroll_totarget, where, direction, amountScroll so something is visible, in any app: target is text or a control to bring into view (scrolls a long list or page until it appears).
menupath, action, appUse the app's menu bar - every command an app has is there, with its keyboard shortcut.
wait_for_texttext, seconds, goneShort wait (seconds, at most 2 minutes) for text to appear in the front window - or to go away, with gone=true (a 'Loading…' or 'Exporting…' label, a dialog closing).
pointeractionThe user's mouse pointer: where (what is under it - the control, its app, nearby text) or click / double_click / right_click right where it is.
quit_mintQuit Mint itself completely - the assistant (you), everything you started (sub-agents, Codex, preview servers) and the screen-control engine - when the user says 'quit Mint', 'turn yourself off', 'shut down Mint', 'close Mint'.
run_applescriptscriptRun an AppleScript for apps with a scripting dictionary: Finder, Music, Notes, Reminders, Calendar, Mail drafts, Safari/Chrome tabs, System Events UI scripting.
fix_hearingheard, meant, forgetRemember a word or name you misheard, so it is heard right from now on.