Minimal Terminal Agent powered by RLMs
Project description
Microcode
Minimal Terminal Agent powered by RLMs
Microcode is an efficient terminal-based AI agent that provides an interactive REPL experience for coding assistance. It leverages Reasoning Language Models (RLMs) to help developers with coding tasks directly from the command line. Because we are using RLMs, it can handle extra large code snippets, file contents, and pasted content with ease.
Features
- Interactive CLI - Seamless conversational interface with AI models
- Multiple Model Support - Choose from various AI providers (OpenAI, Anthropic, Google, Qwen, etc.)
- MCP Integration - Model Context Protocol server support for extended capabilities
- Smart Caching - Persistent settings, API keys, and model configurations
- Rich Terminal UI - Beautiful output with markdown rendering, gradient banners, and status indicators
- Paste Support - Handle large code snippets and file contents with ease
- Configurable - Environment variables and CLI flags for full customization
Installation
Prerequisites
Install Deno with one of the following:
curl -fsSL https://deno.land/install.sh | sh
brew install deno
Install via uv (recommended)
uv tool install microcode
Upgrade via uv
uv tool upgrade microcode
Install via pip
pip install microcode
Install from source
git clone https://github.com/modaic-ai/microcode.git
cd microcode
uv sync # or: pip install -e .
Configuration
API Key Setup
Microcode uses OpenRouter for model access. Set your API key using one of these methods:
-
Environment Variable (recommended for CI/CD):
export OPENROUTER_API_KEY="your-api-key"
-
Interactive Setup (persisted to cache):
microcode /key # Then enter your API key when prompted
Environment Variables
| Variable | Description | Default |
|---|---|---|
OPENROUTER_API_KEY |
OpenRouter API key | - |
MICROCODE_MODEL |
Primary model ID | Auto-selected |
MICROCODE_SUB_LM |
Sub-model for auxiliary tasks | Auto-selected |
MICROCODE_MAX_ITERATIONS |
Max iterations per task | - |
MICROCODE_MAX_TOKENS |
Max tokens per response | - |
MICROCODE_MAX_OUTPUT_CHARS |
Max output characters | - |
MICROCODE_API_BASE |
Custom API base URL | - |
MICROCODE_VERBOSE |
Enable verbose logging (1/0) |
0 |
MODAIC_ENV / MICROCODE_ENV |
Environment (dev/prod) |
prod |
Usage
Starting the CLI
microcode
CLI Options
microcode --help
| Flag | Description |
|---|---|
--model, -m |
Override primary model |
--sub-lm, -s |
Override sub-model |
--api-key, -k |
Provide API key directly |
--max-iterations |
Set max iterations |
--max-tokens |
Set max tokens |
--max-output-chars |
Set max output characters |
--api-base |
Custom API base URL |
--verbose, -v |
Enable verbose output |
--env |
Set environment (dev/prod) |
--history-limit |
Conversation history limit |
--no-banner |
Disable startup banner |
Interactive Commands
Once in the CLI, use these commands:
| Command | Description |
|---|---|
/help, /h, ? |
Show help menu |
/q, exit |
Exit the CLI |
/clear, /cls |
Clear the terminal screen |
/c |
Clear conversation history |
/key [key] |
Set OpenRouter API key (or enter interactively) |
/key clear |
Remove stored API key |
/model |
Change primary model via TUI selector |
/model <id> |
Set primary model directly |
/mcp add <name> <command> |
Add an MCP server |
Available Models
| # | Model | Provider |
|---|---|---|
| 1 | GPT-5.2 Codex | OpenAI |
| 2 | GPT-5.2 | OpenAI |
| 3 | Claude Opus 4.5 | Anthropic |
| 4 | Claude Opus 4 | Anthropic |
| 5 | Qwen 3 Coder | Qwen |
| 6 | Gemini 3 Flash Preview | |
| 7 | Kimi K2 0905 | Moonshot AI |
| 8 | Minimax M2.1 | Minimax |
Project Structure
microcode/
├── main.py # Entry point and interactive CLI loop
├── pyproject.toml # Project configuration and dependencies
├── utils/
│ ├── __init__.py
│ ├── cache.py # API key and settings persistence
│ ├── constants.py # Colors, models, paths, and banner art
│ ├── display.py # Terminal rendering and UI utilities
│ ├── mcp.py # MCP server integration
│ ├── models.py # Model selection and configuration
│ └── paste.py # Clipboard and paste handling
└── tests/
└── test_main_settings.py
Key Components
main.py- Orchestrates the interactive session, handles user input, manages conversation history, and invokes the AI agent via Modaic'sAutoProgramutils/cache.py- Secure storage for API keys and user preferences using JSON filesutils/constants.py- Centralized configuration including available models, ANSI color codes, and file pathsutils/display.py- Terminal output formatting, markdown rendering, and the startup bannerutils/models.py- Model selection TUI using Textual, model ID normalization, and agent reconfigurationutils/mcp.py- Model Context Protocol server registration and managementutils/paste.py- Handles large text inputs via placeholder replacement
Development
Setting Up Development Environment
git clone https://github.com/modaic-ai/microcode.git
cd microcode
uv sync --dev
Running Tests
uv run pytest tests/
Code Style
The project follows standard Python conventions. Use type hints for all function signatures.
Dependencies
Core dependencies:
- click / typer - CLI framework
- modaic - RLM program execution
- dspy - Language model programming
- mcp2py - MCP integration
- rich - Rich terminal output
- textual - Terminal UI framework
- prompt-toolkit - Input handling
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Links
- Homepage: https://modaic.dev/
- Repository: https://github.com/modaic-ai/microcode
- Issues: https://github.com/modaic-ai/microcode/issues
Built with by Modaic
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 microcode-0.1.8.tar.gz.
File metadata
- Download URL: microcode-0.1.8.tar.gz
- Upload date:
- Size: 18.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d717fca129e0aa9c9d2b2c715d2aa1b827f4cabb6659b9ec8197f29fd2cf63ab
|
|
| MD5 |
a38382f669f29e7b923c54642d1d4806
|
|
| BLAKE2b-256 |
f96fbb72b147ddc108e001b1defaecc828d19cb85091dd25093e84930924d5d4
|
File details
Details for the file microcode-0.1.8-py3-none-any.whl.
File metadata
- Download URL: microcode-0.1.8-py3-none-any.whl
- Upload date:
- Size: 18.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e78514918b94cd713f8b15f89219fc84e0f631f41e9ecee66cb7f8ca78962c69
|
|
| MD5 |
c9f43c18a1101efc68f4ca26582868fe
|
|
| BLAKE2b-256 |
a4503819e49cb5f85bff6bf8cf29a7a7c2e6141312de8a9d34c3b95591ae4a49
|