Local AI assistant for the Mac terminal (MacBook Air, MacBook Pro, Mac mini, iMac, Mac Studio on Apple Silicon). Chats, reads PDF/Word/Excel, writes files – offline and private via LM Studio and Gemma 4.
Python
1
21 commits
updated Sep 26, 2026
A local AI assistant for the macOS terminal. Flashcat chats with you, reads and writes files in the folder you start it in, looks at images, reads PDFs, Word and Excel files (even scans), and can search the web — all with a model that runs on your own Mac through LM Studio. Nothing you ask leaves your computer unless you allow a web request: a private, offline AI chat for your MacBook, powered by a local LLM (Google Gemma 4).
Named after Flash, my cat. 🐈
curl -fsSL https://raw.githubusercontent.com/TomTomsen765/flashcat/main/install.sh | bash
The installer checks your Mac, installs the flashcat command into ~/.local/bin and downloads the
default model, Gemma 4 26B (about 15.6 GB), through LM Studio.
Requirements: macOS on Apple Silicon and Apple's command line tools (xcode-select --install)
for Python.
Good habit. Download the repository, look at the installer, then run it from there – it then uses the files you just read instead of downloading them:
git clone https://github.com/TomTomsen765/flashcat.git
cd flashcat
less install.sh # what it does, in about 140 lines
bash install.sh
What the installer changes on your Mac, and nothing else:
flashcat, flashcat-chat.py and flashcat-cleanup from bin/ into ~/.local/bin~/.local/bin to your PATH in ~/.zshrc, if it isn't there yetpygments for colored code (pip install --user, optional)FLASHCAT_SKIP_MODEL=1 bash install.sh)Flashcat itself is one Python file using only the standard library
(bin/flashcat-chat.py) and a short launcher (bin/flashcat).
Flashcat is built and tuned on a MacBook Air M5 with 24 GB of memory — that is the sweet spot for the default model (Gemma 4 26B, 64k context).
| Memory | Experience |
|---|---|
| less than 24 GB | difficult – the model barely fits, answers get slow, close other apps |
| 24 GB | good – what Flashcat is optimized for |
| more than 24 GB | great – plenty of room for other apps and larger contexts |
It should run on any Apple Silicon Mac (M1 or newer) with enough memory, but older chips are untested – expect slower answers, since speed depends mostly on the chip, not on Flashcat. Most base M1 and M2 models have at most 16 GB, which is too little for the default model. If you try it on another Mac, please let me know how it runs.
cd ~/Documents/my-project
flashcat
Then just talk to it:
❯ Summarize @contract.pdf and put the deadlines into deadlines.md
◇ reads contract.pdf ✓ 0.4 s
◇ writes deadlines.md
? Write? [Y/N] y
✓ created: deadlines.md
⏺ The contract runs until …
| Command | |
|---|---|
/help | all commands |
/undo | undo the last file change |
/copy, /save | copy or save the last answer |
/resume | earlier chats in this folder |
/compact | summarize the chat to free context |
/think | think more thoroughly (slower) |
Esc | cancel the current answer |
@file | attach a file to your message (Tab completes) |
Start options: flashcat --continue (last chat), flashcat --models, flashcat --model <name>,
flashcat --update.
Put standing instructions into a FLASHCAT.md in your project folder (or ~/.flashcat/FLASHCAT.md
for all folders). A folder's FLASHCAT.md is shown and only loaded after you agree – the first time
and whenever it changes.
| Environment variable | |
|---|---|
FLASHCAT_CONTEXT | context size in tokens – default 65536 on Macs with 24 GB or more, 16384 below |
FLASHCAT_API_KEY | only needed if you turned on Require authentication in LM Studio's server settings |
Flashcat uses the port set in LM Studio's server settings automatically.
Your chats are stored only on your Mac, in ~/.flashcat/sessions (/resume lists them).
Troubleshooting: open LM Studio once, check that the model is downloaded (flashcat --models), and close other large apps if answers are slow.
.docx) and PDF documents;
rename and move filesFlashcat is built so that nothing happens behind your back. In short: it only sees the folder you start it in, it asks before every change and every internet access, and your private data stays locked. Details: SECURITY.md.
Your files
../, absolute paths and
links pointing outside are blocked.~/.ssh, ~/.zshrc, ~/.config, shell history, …), ~/Library (keychains,
browser data, mail, messages) and private key files (id_rsa, *.pem, …). If you really need one
of them, Flashcat asks first – in red – and unlocks only that item, only for the current chat.Every change asks first
Y. Long previews are
shortened – answer A to see everything first..flashcat-backup/ (kept out of git automatically); /undo
reverts the last change. Flashcat itself cannot change or remove the backups.Every internet access asks first
Y – nothing leaves your Mac before that,
not even a name lookup. You always see the complete address or search term, never a cut-off one.Instructions from others
FLASHCAT.md in a folder (e.g. in a downloaded project) is shown to you and only used after you
allow it – and again whenever it changes.Your data stays on your Mac
~/.flashcat, readable only by your
user account. LM Studio is unloaded again when the last Flashcat window closes, so the memory is freed.Installing and updating
flashcat --update uses the same installer and keeps your chats and the model.Found a security problem? Please report it privately – see SECURITY.md.
Please double-check important results. Flashcat is powered by a language model, and language models make mistakes – with numbers, dates and facts too. Check anything that matters (contracts, amounts, deadlines) against the original.
flashcat --update
Installs the newest version. Your chats, settings and the downloaded model stay. (Versions before this command existed: run the install command once more.)
curl -fsSL https://raw.githubusercontent.com/TomTomsen765/flashcat/main/uninstall.sh | bash
Flashcat is released under the MIT License.
The default model is not part of Flashcat: the installer downloads
Gemma 4 26B (QAT, GGUF) from
Hugging Face through LM Studio. It is made by Google and comes with its own license and terms of use –
see the model page. The same applies to any other model you use with flashcat --model.
LM Studio has its own terms as well.
21 commits
Python
89.5%
Shell
10.5%
Local AI assistant for the Mac terminal (MacBook Air, MacBook Pro, Mac mini, iMac, Mac Studio on Apple Silicon). Chats, reads PDF/Word/Excel, writes files – offline and private via LM Studio and Gemma 4.
Python
1
21 commits
updated Sep 26, 2026
A local AI assistant for the macOS terminal. Flashcat chats with you, reads and writes files in the folder you start it in, looks at images, reads PDFs, Word and Excel files (even scans), and can search the web — all with a model that runs on your own Mac through LM Studio. Nothing you ask leaves your computer unless you allow a web request: a private, offline AI chat for your MacBook, powered by a local LLM (Google Gemma 4).
Named after Flash, my cat. 🐈
curl -fsSL https://raw.githubusercontent.com/TomTomsen765/flashcat/main/install.sh | bash
The installer checks your Mac, installs the flashcat command into ~/.local/bin and downloads the
default model, Gemma 4 26B (about 15.6 GB), through LM Studio.
Requirements: macOS on Apple Silicon and Apple's command line tools (xcode-select --install)
for Python.
Good habit. Download the repository, look at the installer, then run it from there – it then uses the files you just read instead of downloading them:
git clone https://github.com/TomTomsen765/flashcat.git
cd flashcat
less install.sh # what it does, in about 140 lines
bash install.sh
What the installer changes on your Mac, and nothing else:
flashcat, flashcat-chat.py and flashcat-cleanup from bin/ into ~/.local/bin~/.local/bin to your PATH in ~/.zshrc, if it isn't there yetpygments for colored code (pip install --user, optional)FLASHCAT_SKIP_MODEL=1 bash install.sh)Flashcat itself is one Python file using only the standard library
(bin/flashcat-chat.py) and a short launcher (bin/flashcat).
Flashcat is built and tuned on a MacBook Air M5 with 24 GB of memory — that is the sweet spot for the default model (Gemma 4 26B, 64k context).
| Memory | Experience |
|---|---|
| less than 24 GB | difficult – the model barely fits, answers get slow, close other apps |
| 24 GB | good – what Flashcat is optimized for |
| more than 24 GB | great – plenty of room for other apps and larger contexts |
It should run on any Apple Silicon Mac (M1 or newer) with enough memory, but older chips are untested – expect slower answers, since speed depends mostly on the chip, not on Flashcat. Most base M1 and M2 models have at most 16 GB, which is too little for the default model. If you try it on another Mac, please let me know how it runs.
cd ~/Documents/my-project
flashcat
Then just talk to it:
❯ Summarize @contract.pdf and put the deadlines into deadlines.md
◇ reads contract.pdf ✓ 0.4 s
◇ writes deadlines.md
? Write? [Y/N] y
✓ created: deadlines.md
⏺ The contract runs until …
| Command | |
|---|---|
/help | all commands |
/undo | undo the last file change |
/copy, /save | copy or save the last answer |
/resume | earlier chats in this folder |
/compact | summarize the chat to free context |
/think | think more thoroughly (slower) |
Esc | cancel the current answer |
@file | attach a file to your message (Tab completes) |
Start options: flashcat --continue (last chat), flashcat --models, flashcat --model <name>,
flashcat --update.
Put standing instructions into a FLASHCAT.md in your project folder (or ~/.flashcat/FLASHCAT.md
for all folders). A folder's FLASHCAT.md is shown and only loaded after you agree – the first time
and whenever it changes.
| Environment variable | |
|---|---|
FLASHCAT_CONTEXT | context size in tokens – default 65536 on Macs with 24 GB or more, 16384 below |
FLASHCAT_API_KEY | only needed if you turned on Require authentication in LM Studio's server settings |
Flashcat uses the port set in LM Studio's server settings automatically.
Your chats are stored only on your Mac, in ~/.flashcat/sessions (/resume lists them).
Troubleshooting: open LM Studio once, check that the model is downloaded (flashcat --models), and close other large apps if answers are slow.
.docx) and PDF documents;
rename and move filesFlashcat is built so that nothing happens behind your back. In short: it only sees the folder you start it in, it asks before every change and every internet access, and your private data stays locked. Details: SECURITY.md.
Your files
../, absolute paths and
links pointing outside are blocked.~/.ssh, ~/.zshrc, ~/.config, shell history, …), ~/Library (keychains,
browser data, mail, messages) and private key files (id_rsa, *.pem, …). If you really need one
of them, Flashcat asks first – in red – and unlocks only that item, only for the current chat.Every change asks first
Y. Long previews are
shortened – answer A to see everything first..flashcat-backup/ (kept out of git automatically); /undo
reverts the last change. Flashcat itself cannot change or remove the backups.Every internet access asks first
Y – nothing leaves your Mac before that,
not even a name lookup. You always see the complete address or search term, never a cut-off one.Instructions from others
FLASHCAT.md in a folder (e.g. in a downloaded project) is shown to you and only used after you
allow it – and again whenever it changes.Your data stays on your Mac
~/.flashcat, readable only by your
user account. LM Studio is unloaded again when the last Flashcat window closes, so the memory is freed.Installing and updating
flashcat --update uses the same installer and keeps your chats and the model.Found a security problem? Please report it privately – see SECURITY.md.
Please double-check important results. Flashcat is powered by a language model, and language models make mistakes – with numbers, dates and facts too. Check anything that matters (contracts, amounts, deadlines) against the original.
flashcat --update
Installs the newest version. Your chats, settings and the downloaded model stay. (Versions before this command existed: run the install command once more.)
curl -fsSL https://raw.githubusercontent.com/TomTomsen765/flashcat/main/uninstall.sh | bash
Flashcat is released under the MIT License.
The default model is not part of Flashcat: the installer downloads
Gemma 4 26B (QAT, GGUF) from
Hugging Face through LM Studio. It is made by Google and comes with its own license and terms of use –
see the model page. The same applies to any other model you use with flashcat --model.
LM Studio has its own terms as well.
21 commits
Python
89.5%
Shell
10.5%