MahanAI: terminal AI agent for NVIDIA NIM (OpenAI-compatible), tools, streaming, /api-key, safety prompts.
Project description
What is MahanAI?
MahanAI is a terminal AI agent you install with pip. It gives you a powerful chat interface, agentic tool use (run commands, read/write files, search the web), and a local gateway server that makes all your configured AI providers available as a single unified API endpoint — so any tool that speaks OpenAI or Anthropic format can point at it.
On top of that: a plugin system (.mmd files) with a GitHub-backed store, custom themes (.mai files), conversation branching, effort levels, plan mode, and 60+ slash commands.
Install
pip install mahanai
mahanai
That's it. An onboarding wizard runs on first launch to help you pick a model and set up API keys.
Highlights
- Gateway server — expose all your providers behind one OpenAI/Anthropic-compatible endpoint; works with Cursor, Continue, LM Studio, Claude Code, and more
- Plugin store — install community
.mmdplugins with/store install, publish your own with/store upload - Custom themes — write
.maitheme files with gradients, color aliases, and display name overrides - Multi-model — Claude (via Claude Code), NVIDIA NIM, OpenAI Codex, Ollama, and any OpenAI-compatible endpoint
- Agentic tools — shell commands, file read/write/edit, web search, Python REPL, URL fetch — all with approval prompts and inline diffs
- Plan mode & effort levels —
/plan onto outline before acting;/effort highfor deeper reasoning - Conversation branching — save and restore conversation states to explore multiple paths
- Shell history awareness — inject your recent bash/zsh history into context with
/shell-history inject - Cost tracking —
/costshows session token usage and estimated spend - Desktop notifications — get pinged when a long generation finishes
Gateway Server
Start a local HTTP server that routes requests to the right backend automatically:
mahanai --server # OpenAI-compatible on port 8080
mahanai --server --type anthropic # Anthropic-compatible
mahanai --server --port 9000 --api-key sk-gaming
Point any OpenAI-compatible client at http://localhost:8080 and use model IDs like claude-sonnet-4-6, meta/llama-3.3-70b-instruct, or your Ollama model name — MahanAI routes and converts formats automatically, including SSE streaming end-to-end.
A browser-based chat UI is also available at http://localhost:8080 when the server is running.
Models
Switch models interactively with /models or quick-switch with /mode claude / /mode default.
| Provider | How to connect |
|---|---|
| Claude (Opus, Sonnet, Haiku) | Install Claude Code and sign in |
| NVIDIA NIM (Llama 3.3 70B) | /api-key-nvidia your-key |
| OpenAI Codex | /codex-login (browser OAuth, no API key needed) |
| Ollama | /add-ollama name localhost 11434 |
| Any OpenAI-compatible API | /custom http://your-server/v1 model-name |
Default model on first launch: Claude Haiku 4.5
Plugins
Plugins are .mmd files that register new slash commands. They can delegate to Claude Code, MahanAI itself, or the shell.
# Install from the store
/store install mahancreate/maifoundation.example.mahmod
# Load a local plugin
/plugin-load path/to/my-plugin.mmd
# Browse the store
/store browse
/store search compact
Publishing your own plugin is one command:
/store upload path/to/my-plugin.mmd
This creates a public GitHub repo, pushes the .mmd file, and tags it so it shows up in /store browse.
Themes
Four built-in themes (midnight, light, midnight-cb, light-cb) plus full custom theme support via .mai files:
/themes midnight # switch theme
/theme-load mytheme.mai # load a custom theme
A .mai theme file looks like this:
theme.name = my-theme
theme.pretty.name = My Custom Theme
blue = #5B8DEF
gold = #F5C842
ascii-art.default.color = gradient("blue -> gold")
message.ai.color = color("blue")
message.user.color = color("gold")
message.ai.name = text("assistant")
Project Config (.mahanairc)
Place a .mahanairc in any project directory and MahanAI loads it automatically — pre-loading context files, auto-installing plugins, and activating dev kit extras scoped to that workspace.
load(location="context.md" type=context)
load(location="plugins/my-plugin.mmd" type=mmd)
load(python-dev-kit)
Key Commands
| Command | Description |
|---|---|
/models |
Interactive model picker |
/effort <low|medium|high|very-high> |
Set reasoning depth |
/plan on|off |
Outline approach before every response |
/auto on|off |
Autonomous mode (skip approval prompts) |
/branch save <name> |
Snapshot conversation state |
/branch load <name> |
Restore a snapshot |
/cost |
Show session token usage and cost |
/memory add <text> |
Save a persistent memory |
/shell-history inject |
Add recent shell history to context |
/store browse |
Browse the plugin store |
/cmd |
Fuzzy-search all 60+ commands |
/init |
Generate a MAHANAI.md workspace context file |
Full command reference: mahancreate.github.io/mahanai
API Keys
| Provider | How |
|---|---|
| NVIDIA NIM | /api-key your-key or MAHANAI_API_KEY=... |
| NVIDIA direct | /api-key-nvidia your-key |
| Claude | Handled by Claude Code — no extra config |
| OpenAI Codex | /codex-login (browser OAuth) |
Keys are stored in ~/.config/mahanai/config.json (Linux/macOS) or %APPDATA%\MahanAI\config.json (Windows).
Environment Variables
| Variable | Purpose |
|---|---|
MAHANAI_API_KEY |
Override saved server API key |
MAHANAI_MODEL |
Override default model |
MAHANAI_STREAM |
Set to 0 to disable streaming |
MAHANAI_CONFIG_DIR |
Override config directory |
NO_COLOR |
Disable terminal colors |
License
MIT © The MahanAI Foundation
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mahanai-7.3.0.tar.gz.
File metadata
- Download URL: mahanai-7.3.0.tar.gz
- Upload date:
- Size: 72.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33c8a789c847a477ac84a6ffa4906a03914d267fd1d84c75f8cbcd8ed581916b
|
|
| MD5 |
6e7c06f6b9d8e3540efd39bb655f6d2f
|
|
| BLAKE2b-256 |
d5366ed9c8afe401cdf9fe0bfe652b386dc48fe5fdea5db062cf560729b65572
|
File details
Details for the file mahanai-7.3.0-py3-none-any.whl.
File metadata
- Download URL: mahanai-7.3.0-py3-none-any.whl
- Upload date:
- Size: 73.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0fcfb8104a2770536ae4caa3f389dfca2c013f4518184f432ebc41f75cda627f
|
|
| MD5 |
03ab75498c28670765c6e1723528d9eb
|
|
| BLAKE2b-256 |
cf87d975601f730d10f0f75d59f6c2f507eb3e8d10adcf98f85609a3663ea7ff
|