A command line agent harness for MSU students
catatui is the Montana State Command Line Agent.
It is an AI coding agent that runs in your terminal that uses the free (for MSU students & faculty) MSU CatChat AI models.
catatui is built as an extension on top of the excellent pi harness.
Like all coding agents, catatui can read your code, run commands, and write code for you.
By default catatui runs in ask mode and will ask before making any changes. You can also run in plan, where it will
write a plan to PLAN.md and make no other changes. Turn off plan to carry out the plan. In auto mode, it will
ask only when an action can do damage, and a safety check decides. You can also run it in yolo where it will
not ask permission to make changes.
There is a ta option, which works in any mode, that will have the agent teach you and offer hints, rather than writing code for you. We suggest
you use this option frequently.
There is a very simple sandbox mechanism that will prevent the agent from reading or modifying files outside of the directory you run the harness in. This is a defeatable sandbox by a determined agent.
Finally, the default of the agent is to use Simplified Technical English. This keeps the annoying chattiness of many AI models down. You may turn this off if you don't like the clipped responses it generates.
All of the above can be configured with the /mode command.
Important
catatui requires learning the command line. If you are unfamiliar with it, please see this Mozilla command line tutorial.
- An MSU account.
- A connection to the MSU network to make a key. If you are not on campus, connect to the MSU VPN.
On macOS or Linux, run this in your terminal:
curl -fsSL https://catatui.cs.montana.edu/install.sh | sh
On Windows, run this in PowerShell:
irm https://catatui.cs.montana.edu/install.ps1 | iex
The installer puts catatui and its own copy of Node.js in the ~/.catatui/app folder. It adds the catatui command to
your PATH. It does not change the Node.js that you use for other work.
After the install, open a new terminal.
To see your version and check for a newer version, run catatui --version.
To update catatui, run catatui --update. On Windows, this command shows the install command. Close catatui, then run
the install command.
If you use the fish shell, add ~/.catatui/app/bin to your PATH yourself.
If you have Node.js 22 or later and git, you can use npm:
- To run catatui without an install, run
npx github:msu/catatui. - To install the
catatuicommand, runnpm install -g github:msu/catatui.
- Go to your project folder in the terminal.
- Run
catatui. - Select "Sign in with your MSU account in a browser", then press Enter. catatui opens catchat access in your browser.
- Sign in with your MSU account, then click "Create key". catatui gets the key and saves it.
- Type your question or task, then press Enter.
The key is valid for 180 days. After that, catatui tells you to sign in again.
If the browser sign-in does not work, select "Make a key at catchat access and paste it". catatui shows the steps.
If you close the sign-in with Escape, press Enter to open it again.
catatui selects the model Qwen3.8-27B. To pick a different model, type /model.
To see the available models, run catatui --list-models. To see all command line options, run catatui --help.
These are the CatChat models. Type /model to pick one.
| Model | What it is |
|---|---|
Qwen3.8-27B |
Alibaba. General and coding model, with thinking. The default and our recommendation. |
gpt-oss:120b |
OpenAI open-weight model, with thinking. Good for coding. The fastest model. |
gemma4-31B-it |
Google. General model with a long context. Good for coding. |
muse-glimmer:30b |
Unknown Model. Very slow. |
nimble:9b |
Unknown Model. |
mistral-small:24b |
Mistral. General chat model. Weak at file edits. |
llama3.1:8b |
Meta. Small general model. |
codegemma:7b |
Google. Code completion model. Not for agent work. |
medgemma:4b |
Google. Medical model for text and images. Not for coding. |
Goedel-Prover-V2 |
Theorem prover (Lean). Not for general coding. |
CatChat can add or remove models. To see the current list, run catatui --list-models.
In addition to the pi tools (read, write, edit, bash, grep, find, ls), the agent has these tools:
| Tool | Use |
|---|---|
http |
Send HTTP requests, for example to read docs or test a server |
excel_read, excel_write |
Read and write Excel .xlsx files. Python is not necessary. |
pdf_read, pdf_write |
Read PDF files, and write accessible (tagged, PDF/UA) PDF files |
docx_read, docx_write |
Read and write accessible Word .docx files. Python is not necessary. |
a11y_check |
Find accessibility problems in PDF, Word, and HTML files |
show_page |
Show a quiz, form, or chart in your browser and send your answers to the agent |
server |
Start and stop your dev server in the background, so the agent can test it |
run |
Run a program with arguments and no shell, for example python main.py |
move, copy, delete, mkdir |
Move, copy, and delete files and folders. /undo puts them back. |
git_status, git_diff, git_log |
Show the git status, the changes, and the commits |
git_init, git_commit, git_restore |
Make a repository, commit, and put files back to the last commit |
git_clone, git_pull, git_push |
Get and send commits on GitHub (with /github login) |
The write tools, run, server, and the git change tools ask before they run, in the same way as write and bash.
git_clone, git_pull, and git_push always ask, also in yolo mode.
catatui comes with its own git, so you do not need to install git. The git tools do not run git hooks, and they do not
use your SSH keys or your other GitHub sign-ins. To push to GitHub, make a token for catatui with /github login.
A GitHub address that starts with git@github.com: works too. Other SSH servers do not work in catatui.
On Windows, the agent uses PowerShell, not bash, so you do not need Git for Windows.
| Command | Use |
|---|---|
/help |
Show what catatui can do, with example prompts |
/mode |
Pick the mode. Turn teaching assistant, the sandbox, and Simplified Technical English on or off. |
/undo |
Put back the files that the agent changed for your last request |
/model |
Pick a CatChat model |
/context |
Show what uses the context window of the model |
/suggest |
Turn the suggestions in the message box on or off. Tab accepts a suggestion. |
/catchat |
Show your sign-in status and get the model list again |
/catchat login |
Sign in to CatChat and get a new key |
/catchat logout |
Sign out of CatChat and stop catatui |
/github |
Show your GitHub sign-in for the git tools |
/github login |
Make a GitHub token for catatui and paste it |
/github logout |
Remove the GitHub token from catatui |
/hotkeys |
Show the keyboard keys |
To stop the agent while it works, press Escape.
The mode controls what the agent can do. The bottom line of the screen shows the mode.
To change the mode or an option, type /mode. Use the up and down arrows to move. Press Space or Enter to change the
line. Press Escape to close.
| Mode | What the agent does |
|---|---|
ask |
The agent will ask before each file change, command and http request. catatui starts in this mode. |
plan |
Planning mode. The model will write a plan file (PLAN.md) for work but make no changes. |
auto |
The agent will ask only when an action can do damage. A safety check decides. Needs the sandbox. |
yolo |
The agent will make changes without asking you to approve them. Use this mode with care. |
| Option | What it does | Start value |
|---|---|---|
ta |
Teaching assistant. The agent explains concepts and gives hints. It does not write your code. | off |
sandbox |
The agent can use only the files in the project folder. | on |
ste |
Simplified Technical English. The agent writes short, clear sentences. | on |
ta works in all modes. When ta is on, the agent cannot change files, also in yolo mode.
In ask mode, you can select "do not ask again" for some actions. This choice lasts until catatui stops.
Some commands always ask, for example rm, sudo, git push, npx, and commands with &&, ;, or |.
The agent can use only the files in the folder where you start catatui. This is the sandbox.
To let the agent use other folders, do one of these steps:
- Type
/mode, then turn offsandbox. - Start catatui with
catatui --no-sandbox.
The sandbox is not complete protection. A command can get around it. Read each command before you allow it.
The agent writes in Simplified Technical English. It uses short sentences and simple words. This makes the answers easier to read, also for non-native English speakers.
To turn it off, type /mode, then turn off ste. catatui keeps this choice for the next start.
If you do not like the agent's changes, type /undo. catatui shows the files that it will put back, then asks you to
confirm.
Each /undo goes back one request.
/undo has these limits:
- It does not undo changes from commands, for example
npm installorrm, or from the git tools. - It works only until catatui stops.
Use git to keep your work safe. Ask the agent to commit your work.
| Problem | Cause | Fix |
|---|---|---|
| The CatChat key page does not load. | The key page works only on the MSU network. | Connect to the MSU VPN, then try again. |
| catatui cannot connect to CatChat. | A network problem, or CatChat is down. | Check your network connection. If the problem continues, connect to the MSU VPN. |
| The agent gives a bad answer. | Some models are weaker. | Type /model and pick Qwen3.8-27B. |
| You want to sign in again. | Your key is old or wrong. | Type /catchat login. |
catatui keeps its settings and sessions in the ~/.catatui folder.
