Mthandizi Code
/report and send it to us (see Reporting a problem).What you need
- A paid Mthandizi plan. Free plans cannot run the agent; see the plans.
- Node.js 22.13 or newer. Type
node --versionin a terminal to check; you can get Node.js from nodejs.org. - A terminal on Windows, macOS or Linux (WSL included), and an internet connection.
Install
Install Node.js 22.13 or newer for your system (below), then install Mthandizi Code with the same command everywhere:
npm install -g mthandizi-codeThen check it is there:
mthandizi-code --versionWindows
Install Node.js with the Windows installer (LTS) from nodejs.org, or in PowerShell:
winget install OpenJS.NodeJS.LTSOpen a new PowerShell or Command Prompt window, check node --version, then run the install command above. If PowerShell says running scripts is disabled on this system, use Command Prompt instead, or allow scripts for your own account only:
Set-ExecutionPolicy -Scope CurrentUser RemoteSignedmacOS
Install Node.js with the macOS installer (LTS) from nodejs.org, or with Homebrew:
brew install nodeThen run the install command above in Terminal. If npm says EACCES (permission denied), do not use sudo: install Node.js with nvm instead, as for Linux below, so global installs go into your own folder.
Linux
Your distribution's Node.js is often too old. Install nvm, the Node version manager (follow the steps at github.com/nvm-sh/nvm), open a new terminal, then:
nvm install 22Then run the install command above, without sudo. If npm says EACCES (permission denied), Node.js was installed for the whole system: use nvm as above.
WSL (Windows Subsystem for Linux)
Mthandizi Code works inside WSL as on Linux: install Node.js inside WSL with the Linux steps, because Node.js installed on Windows is not used inside WSL. Keep your projects in WSL's own folders (for example ~/my-app), not under /mnt/c, which is much slower. When you sign in, open the printed address in your Windows browser.
Sign in
mthandizi-code loginIt prints an address and a code. Open the address in your browser, check that the code matches, and approve. If you start the agent without signing in, it starts this sign-in for you.
On macOS the sign-in is kept in the Keychain and on Windows in the Credential Manager; on Linux and WSL it lasts until you exit. Signing in, checking your account and choosing a model spend no credits.
Your first task
Go to your project folder (or make one for a new project) and start the agent there:
mkdir my-app
cd my-app
mthandizi-codeThe first time in a folder it asks whether to trust it: working there sends the code it reads to Mthandizi's AI model, and your answer is remembered for that folder. Then type what you want, for example:
mthandizi-code> Build a small booking page in FlaskEverything you type goes to the agent, and a follow-up carries the earlier messages ("now add a test for it"). /new starts fresh. It works only in the folder you start it in, and refuses your home folder, the top of a drive and system folders.
Changes and commands
Each change is shown before it is written: the whole of a new file, a diff for an edit. Answer y to write it, a to write it and every other change in this task, or anything else for no. A change to a file that decides what commands run (package.json, a Makefile, a CI workflow, a shell script) is always asked about. /undo reverses everything the agent wrote in its last task.
The agent may ask to run a command a project needs: installs, builds, tests, the app itself, git. It shows the exact command and the folder, and nothing runs without your yes. A risky command (deleting files, downloading and running code, administrator rights, reaching outside the folder) runs only if you type yes in full. Ctrl+C (or Esc) stops the agent at any moment.
Commands
Type these at the prompt. Anything else you type goes to the agent.
| Command | What it does |
|---|---|
| /help | This list |
| /new | Start a new conversation; stops background commands |
| /resume [number] | Pick up an earlier conversation in this folder (kept 30 days on this computer) |
| /undo | Reverse everything the agent wrote in its last task |
| /status | Folder, model, data mode and background commands (no network) |
| /cost | What this session and the last task cost, and your balance |
| /report | Save a bug report to email us (no code, messages or file names) |
| /whoami | Your account and credits |
| /model [name|default] | Choose the model the agent uses |
| /data low|normal | Use less mobile data, or normal |
| /theme [name] | Choose how it looks: dark, light, colour-blind friendly, your terminal's colours or none |
| /limit [MWK|off] | Ask before a task goes past a kwacha amount, such as /limit 500 |
| /learn [mode] | End each task with a plain explanation of its changes: on, chichewa or off |
| /login | Sign in through your browser |
| /logout | Sign out; stops background commands |
| /exit | Leave (exit and quit work too); stops background commands |
/model lists the models your plan can use in Code, with what each one is for and how much it costs, from ●○○ to ●●●; GPT-5.6 Luna is the default. After you choose, it says how many credits a step can hold. Unused credits come back.
/limit 500 asks before a task goes past MWK 500, so a long task never surprises you. /learn on ends each task with a short, plain explanation of what changed and why; /learn chichewa writes it in Chichewa. Both are kept on your computer until you change them.
Type @ and part of a file name to fill in a file from your folder; Up and Down bring back what you typed before. When you leave, it shows what the session changed, ran and cost.
/theme chooses how it looks in your terminal: dark, light, a colour-blind friendly dark or light, your terminal's own colours, or no colour. The picker shows each one on a sample change before you choose, and the first session asks once. Your choice is kept on this computer. --plain and the NO_COLOR setting turn colours off.
Start-up options
| Option | What it does |
|---|---|
| -h, --help | Show this help and exit |
| -v, --version | Show the version and exit |
| --no-store | keep the sign-in until you exit |
| --debug | add technical detail to error messages (never secrets) |
| --low-data | use less mobile data (compressed steps, shorter history) |
| --plain | plain text; no colours, interactive menus or live status |
| --continue | pick up the last conversation in this folder |
| --resume | choose an earlier conversation in this folder to pick up |
Picking up later
cd my-app
mthandizi-code --continue--continue picks up the last conversation in the folder; --resume or /resume lets you choose one. Each conversation is kept on your computer for 30 days, readable by you only, and is never uploaded.
Costs
Each step costs credits. The total so far shows as the agent works, and each task ends with its cost in credits and kwacha. /cost shows what this session and the last task cost, and your balance. When your balance is low it warns you; if your credits run out, the task pauses until your plan's credits renew or you upgrade, and carries on from the same step.
Privacy and safety
- The agent reads, lists and searches the files of the folder it works in, and sends what it reads to Mthandizi's AI model.
- Secret files (.env, keys, .npmrc and the like) are never read, and lines that look like passwords, keys or tokens are withheld before anything leaves your computer.
- Commands run as you, with your files and your network: this is not a sandbox, and /undo does not reverse what a command changed.
- Once a day it asks the npm registry for the latest version number, to tell you when an update is out; nothing about you is sent. Set MTHANDIZI_CODE_NO_UPDATE_CHECK=1 to turn it off.
The privacy policy has the full detail.
Using less data
On mobile data, type /data low or start with --low-data: steps are compressed and the history sent is shorter.
Troubleshooting
- It refuses my folder. Start it inside a project folder, not your home folder or the top of a drive:
mkdir my-appandcd my-app. - It says another window is using this folder. One window works in a folder at a time; close the other one first.
- It says my plan isn't a paid one. The agent needs a paid plan: see the plans.
- The command is not found after installing. Close the terminal and open a new one. If it is still missing, npm's global folder is not on your PATH.
- A test run found no tests. It says so ("No tests were found, so nothing was checked") rather than reporting success.
Updating and removing
When a new version is out, Mthandizi Code asks at the start: Update now? y/n. Type y and it updates itself and starts the new version; anything else carries on, and it doesn't ask again that day. You can also update by hand:
npm install -g mthandizi-code@latestTo remove it, sign out first so its sign-in is revoked, then uninstall:
mthandizi-code logout
npm uninstall -g mthandizi-codeReporting a problem
Type /report. It saves a report file with versions, steps, credits and outcomes, and no code, messages, file names, commands or account details. Attach it to an email to support@mthandizi.com with "Beta" in the subject.