Chat with markdown files on the command line.
Chatvim CLI is the back-end for chatvim.nvim, a Neovim plugin that lets you chat with markdown files in Neovim.
The basic idea of Chatvim CLI is to put LLMs on the command line, like this:
chatvim complete "What is 1 + 1?"Output
1 + 1 is 2.Read on for more details.
Install globally using npm:
npm install -g chatvimThis provides one global command:
chatvim— Main entry point for Chatvim CLI
You MUST first set at least one API key for an LLM provider.
export OPENAI_API_KEY=your_openai_api_key
export ANTHROPIC_API_KEY=your_anthropic_api_key
export XAI_API_KEY=your_xai_api_keyFor full usage instructions, run:
chatvim --helpA brief overview of available commands:
- complete — Send a prompt to the LLM and get a response
- log — Save a prompt and response to a markdown file
- buffer — Buffer input for later processing
- format — Format markdown output for better readability
- color — Colorize markdown output for better visibility
- models — List available LLM models
- providers — List available LLM providers
# Simple math prompt
chatvim complete "What is 2 plus 2?"
# Code generation
chatvim complete "Generate a JavaScript function that reverses an array"
# Use a markdown file as context and log the response
chatvim log --file chat.md "Generate a Python function to calculate factorial"
# If you don't specify the file name, it will default to `chat.md`
chatvim log "Generate a Python function to calculate Fibonacci sequence"
# ^ This will create or overwrite `chat.md`
# Pipe input as prompt
cat my-instructions.txt | chatvim complete
# Generate, buffer, format, and colorize Markdown output
chatvim complete "Show me a Python bubble sort function with comments in Markdown." | chatvim buffer | chatvim format | chatvim color
# Buffer and format direct Markdown input
echo "# Quick Note\n\nThis is a short note with a code block:\n\n\`\`\`bash\necho 'Hello, World!'\n\`\`\`" | chatvim buffer | chatvim format
# Format and colorize without buffering
chatvim complete "Write a short Markdown note." | chatvim format | chatvim colorYou can set global configuration for Chatvim CLI by creating a file at
${XDG_CONFIG_HOME}/chatvim/config.md) (usually ~/.config/chatvim/config.md).
Yes, that's right, Chatvim CLI uses a markdown file for configuration.
You can set YAML/TOML configuration at the top, and then you can also specify a chat lot to be used in all chats (defaults to empty).
Example config.md:
+++
model = "o3"
+++This example configuration file sets the default model to OpenAI's o3 using
TOML configuration.
Global chat history example with TOML configuration:
+++
model = "grok-3"
userDelimiter = "# === USER ==="
assistantDelimiter = "# === ASSISTANT ==="
+++
Your name is Codey Beaver, a helpful coding assistant. You are a beaver who just
loves nothing more than to help the user code their app!
# === ASSISTANT ===
Hello, my name is Codey Beaver! I'm here to help you with your coding tasks. How
can I assist you today?YAML configuration example:
---
model: "claude-sonnet-4-0"
userDelimiter: "**user**"
assistantDelimiter: "**assistant**"
---
Your name is Codey Beaver, a helpful coding assistant. You are a beaver who just
loves nothing more than to help the user code their app!
**assistant**
Hello, my name is Codey Beaver! I'm here to help you with your coding tasks. How
can I assist you today?Copyright (C) 2025 EarthBucks Inc.