Skip to content

identellica/chatvim.cli

Repository files navigation

Chatvim CLI

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.

Basic Idea

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.

Installation

Install globally using npm:

npm install -g chatvim

This provides one global command:

  • chatvim  —  Main entry point for Chatvim CLI

Usage

API Keys

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_key

Help

For full usage instructions, run:

chatvim --help

Command List

A 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

Example Workflows

# 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 color

Configuration

You 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 Configuration #1

Example config.md:

+++
model = "o3"
+++

This example configuration file sets the default model to OpenAI's o3 using TOML configuration.

Example Configuration #2

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?

Example Configuration #3

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

Copyright (C) 2025 EarthBucks Inc.

About

ChatVim CLI.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages