> [!WARNING] smelt is in active development. `main` is mid-refactor, so code and
> docs are not fully in sync and some features are unfinished. Use the latest
> pre-release tag and update often. The last stable release is significantly
> behind and not recommended.
## Why
Most coding agents are bloated and hard to customize. smelt is small, fast, and
scriptable in Lua like Neovim. Built from scratch, with care for the details.
## What's inside
- **Lua plugins.** Keymaps, commands, autocmds, custom tools, and custom modes.
- **Terminal renderer.** Its own grid and layout engine, not `ratatui`.
- **Vim editor.** Motions, text objects, registers, undo.
- **Deterministic fuzzing.** Fixed clock and stubbed I/O, so any crash can be
replayed.
- **No config needed.** Run with flags, or `smelt auth` for ChatGPT and Copilot.
## Install
Prebuilt binaries on the
[Releases](https://github.com/leonardcser/smelt/releases) page, or from source:
```bash
cargo install --git https://github.com/leonardcser/smelt.git
```
## Run
**Subscription providers** (ChatGPT Pro/Plus, GitHub Copilot, Kimi Code):
```bash
smelt auth # one-time login
smelt # provider auto-detected from credentials
```
**API-key providers** (any OpenAI-compatible endpoint):
```bash
# local model via Ollama
smelt --model qwen3.6:27b --api-base http://localhost:11434/v1
# OpenAI, Anthropic, OpenRouter, etc.
smelt --model gpt-5.5 --api-base https://api.openai.com/v1 --api-key-env OPENAI_API_KEY
```
Or just run `smelt` with no arguments and follow the wizard. By default the
mode cycle is Normal → Apply → Yolo; enable the optional Plan mode plugin with
`require("smelt.plugins.plan_mode")` in `~/.config/smelt/init.lua`.
## Docs
Full documentation for configuration, Lua API, keybindings, permissions,
providers, and plugin authoring lives at
**[leonardcser.github.io/smelt](https://leonardcser.github.io/smelt/)**.
## License
MIT, see [LICENSE](LICENSE). Inspired by
[Claude Code](https://github.com/anthropics/claude-code) and
[Neovim](https://github.com/neovim/neovim).