A safe, opinionated coding agent
Asimi is an opinionated command-line interface that brings AI-powered coding assistance directly to your terminal. Built with modern Go libraries and a focus on developer experience, Asimi helps you write better code faster.
π¦ Integrated Podman Sandboxes - Agent's shell run in its own container
- π¨ vi mimicry - Asimi is based on the fittest dev tool and its reincarnations vim an neovim
- π€ Multiple AI Providers - Support for Ollama and Claude foe now. More are comming [TODO: Add a link to issues with a label of "new providers"]
- Less Clutter - Asimi's special files are under
.agentsdirectory and TOML is used for .conf - π§ Fast Shell** - Asimi's persistent, containerized shell is >100 times faster than the others
- π Context Awareness** - Smart token counting and context visualization
- π― Session Management** - Save and resume your coding sessions
We're still missing MCP support. If it's critical for you, please consider helping out #
Please choose your installer flavor:
go install github.com/affitestide/asimi-cliTODO: Release 0.2.0
Download the binary from your platform from latest releases and copy to your favorite bin directory e.g, /usr/local/bin.
TODO: add a one line installer probably at https://asimi.dev/installer
After To start Asimi in interactive mode type asimi.
-
Add the infrastructure to your project
:initTo add: -
Login to your AI provider:
:login -
Initialize your repo:
:init- Creates a AGENTS.md and Justfile if missing and.agents/Sandboxfor the container -
Check your container:*
:!uname -a- runs shell commands is a persistent, containrized bash:!pwd- should be the same path as on your host
Asimi mimics the vi/vim/neovim interface:
- Insert Mode Type normally
- Normal Mode Navigation and editing only
- Command Mode Entering agents commands
:help- Show help:context- View token usage and context:new- Start a new conversation:resume- resume an old session
Entering Insert Mode:
i- Insert at cursorI- Insert at line starta- Append after cursorA- Append at line endo- Open line belowO- Open line above
Entering Command Mode:
- ':' - In normal mode or as first character is Visual
Navigation (Normal Mode):
h/j/k/l- Left/Down/Up/Rightw/b- Word forward/backward0/$- Line start/endgg/G- Input start/end
Editing (Normal Mode):
x- Delete characterdw- Delete wordD- Delete to line endp- Paste
- Go 1.25 or higher
- Just command runner
We're using a Justfile to collect all our script.
If you need a new script please add a recipe in the Justfile.
# List recipes
just
# run Asimi
just run
# Run tests
just test
# measure shell's performance
just measureFlat. Please refrain from adding directories and files.
- LangChainGo - LLM communications and tools
- Bubble Tea - Terminal UI framework
- Koanf - Configuration management
- Kong - CLI argument parser
- Glamour - Markdown rendering
Asimi takes security seriously:
- API keys are stored securely in your system keyring
- No data is sent to third parties except your chosen AI provider
- Shell commands are executed in a containerized sandbox
We welcome contributions! Here are some ways you can help:
- Report bugs - Open an issue with details
- Suggest features - Share your ideas
- Submit PRs - Fix bugs or add features
We use present progressive tense for commit messages:
# Good
git commit -m "feat: adding markdown support"
git commit -m "bug: fixing context overflow bug"
# Avoid
git commit -m "added markdown support"
git commit -m "fixed context overflow bug"Asimi stores its configuration in ~/.config/asimi/asimi.toml (user-level) or .agents/asimi.toml (project-level):
[llm]
provider = "anthropic"
model = "claude-sonnet-4-20250514"
vi_mode = true # Enable vi-style keybindings (default: true)
max_output_tokens = 4096
[ui]
# Toggle Glamour-based markdown rendering (default: false). Set to true for full markdown.
markdown_enabled = false
[run_in_shell]
# Commands regex to run on the host instead of the container
run_on_host = ['^gh ']vi_mode- Enable/disable vi-style keybindings (default:true)- Set to
falseto use standard editing mode - Can also be set via environment variable:
ASIMI_LLM_VI_MODE=false
- Set to
provider- AI provider (anthropic, openai, googleai, qwen)model- Model name (provider-specific)max_output_tokens- Maximum tokens in AI responsesmax_turns- Maximum conversation turns before stoppingui.markdown_enabled- Enable Glamour markdown rendering whentrue(default:false); whenfalse, Asimi uses lightweight word wrapping for faster UI resizing. Override viaASIMI_UI_MARKDOWN_ENABLED=true|false.
EDITOR- Preferred text editor for export commandsASIMI_LAZYGIT_CMD- Custom lazygit command pathANTHROPIC_OAUTH_TOKEN- OAuth token for Anthropic API (takes priority over keyring). Supports three formats:- Raw access token:
sk-ant-... - JSON format:
{"access_token":"...", "refresh_token":"...", "expiry":"...", "provider":"anthropic"} - Base64-encoded JSON (useful if copying from keychain)
- Raw access token:
ANTHROPIC_API_KEY- API key for Anthropic (alternative to OAuth)ANTHROPIC_BASE_URL- Custom base URL for Anthropic API (e.g., for proxy or custom endpoint)
Logs are rotated and stored in ~/.local/share/asimi/. When running with --debug, logs are instead written to asimi.log in the project root for quick inspection.
Q: Asimi won't start
# Check if the binary is executable
chmod +x asimi
# Try running with verbose logging
./asimi --debugQ: API key not working
use :login
Q: Context overflow errors
# Check your context usage
:context
# Start a new conversation
/newSee issues for planned issues
- MCP Support
- Task delegation with sub-agents
- [ ]
[Add your license here]
- Built with β€οΈ using Go
- Inspired by vi and his great grandchildren - the coding agents
- Special thanks to the Bubble Tea and LangChainGo communities
Made with πͺΎ by the Asimi team
Safe, fun, and high-quality code generation