Mia is a coding and personal assistant AI agent designed to be unobtrusive, configurable and easy to use. Mia grows with you.
This project way inspired by Hermes Agent. Although it borrows ideas from it, this is not a direct derivation or modification of the project.
- The agent should never write to the system without getting permission from the user.
- Guardrails should be implemented in code, not in prompts.
- The agent should act as an additional tool to the user not as a replacement for everything they already use.
- Minimal terminal UI
- Multi turn agent loop
- Agent memory
- Session and prompt history
- Full markdown rendering in terminal (thanks to termimad)
- OpenAI Compatible API access
- Web search and extract using Tavily
- Whatsapp and Discord gateways
- Agent skills
- MCP connectivity
Currently Mia has the following tools:
| Tool | Description | Permission Required | |
|---|---|---|---|
| 📅 | datetime |
Get the current date and time | No |
| 📁 | fs_list_dir |
List files in a directory | No |
| 📖 | fs_read_file |
Read a file from the filesystem | No |
| 🔍 | fs_grep_files |
Search file contents | No |
| 🧭 | fs_search_dirs |
Search for files in a directory | No |
| ✍️ | fs_write_file |
Write content to a file | Yes |
| 🧠 | memory |
Manage memory about the user and the agent | No |
| 🐍 | exec_python |
Execute Python 3 code | Yes |
| 🐚 | exec_shell |
Run shell commands | Yes |
| | web_extract |
Extract content from a URL | No |
| 🌐 | web_search |
Search the web | No |
winget install Mach50.MiaAgent
Mia requires rust nightly
rustup toolchain install nightly
rustup default nightly
Cargo can fetch, build and install mia.
cargo install --git https://github.com/mastermach50/mia-agent
Run the given command to test out mia on your system.
nix run github:mastermach50/mia-agent
To install it, add to your system packages using the same flake.
Mia requires an Openrouter API key (can be obtained for free, there are also free models), currently this is the only way to access LLMs.
Support for using any OpenAI compatible API is planned for the future (very soon).
- On the first run, the agent will create all required folders and files, but will not start because of no API keys.
mia
- Edit
~/.mia/.envon Linux orC:\Users\<username>\.mia\.envon Windows and add
OPENROUTER_API_KEY=<your-openrouter-api-key>
-
Run
mia tuito start the agent. -
(Optional) Add your Tavily API key (can be obtained for free and has a reasonable number of free searches per month) to
.mia/.envallow theweb_searchtool.
TAVILY_API_KEY=<your-tavily-api-key>
- (Optional) Run
mia toolsto see if all the tools are usable and find which components are missing if any.
Currently the external tools required by mia are
Use mia --help to acces the full cli help menu.
The tui supports certain commands use /help while in the tui to see them.
Mia uses rust nightly as it is required for whatsapp-rust and certain necessary features.
We DO NOT accept vibecoded contributions or contributions from agents.
However AI assisted code is fine as long as you the human are the one contributing.
Human contributions are always welcome.
