id = "aichat" name = "AIChat" homepage = "https://github.com/sigoden/aichat" description = "All-in-one LLM CLI tool featuring Shell Assistant, Chat-REPL, RAG, AI Tools & Agents, and more." executables = ["aichat"] [dotfiles] # The project's configuration guide and environment-variable guide identify # the XDG config path, macOS Application Support path, and Windows APPDATA # path. config.yaml can contain clients.*.api_key (the official example shows # that shape), while .env is the adjacent API-key environment file. # https://github.com/sigoden/aichat/wiki/Configuration-Guide # https://github.com/sigoden/aichat/wiki/Environment-Variables # https://github.com/sigoden/aichat/blob/main/config.example.yaml paths = [ "[configHome]/aichat/config.yaml", "[appData]/aichat/config.yaml", "%APPDATA%/aichat/config.yaml", ] secret = [ "[configHome]/aichat/.env", "[appData]/aichat/.env", "%APPDATA%/aichat/.env", ] [[dotfiles.secret_paths]] file = ["[configHome]/aichat/config.yaml", "[appData]/aichat/config.yaml", "%APPDATA%/aichat/config.yaml"] format = "yaml" match = { key_path = ["clients.*.api_key"] } [commands] format = 1 label = "Ask AIChat" description = "Send a prompt to an LLM with an optional model, role, session and input files. RAG, agents, macros and the server mode are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false } [[commands.source]] id = "cli" kind = "help" url = "https://github.com/sigoden/aichat/blob/main/src/cli.rs" revision = "main 2026-10" evidence = """ /// Select a LLM model pub model: Option, /// Select a role pub role: Option, /// Start or join a session pub session: Option>, /// Execute commands in natural language pub execute: bool, /// Output code only pub code: bool, /// Include files, directories, or URLs #[clap(short = 'f', long, value_name = "FILE")] pub file: Vec, /// Turn off stream mode pub no_stream: bool, /// Display the message without sending it pub dry_run: bool, /// List all available chat models pub list_models: bool, /// List all roles pub list_roles: bool /// Input text text: Vec Long options: --model --role --session --execute --code --file --no-stream --dry-run --list-models --list-roles """ [[commands.field]] id = "text" label = "Prompt" type = "string" position = 0 multiple = true sources = ["cli"] [[commands.field]] id = "model" label = "Model" description = "Model id such as openai:gpt-4o." type = "string" option = ["--model"] sources = ["cli"] [[commands.field]] id = "role" label = "Role" type = "string" option = ["--role"] sources = ["cli"] [[commands.field]] id = "session" label = "Session" type = "string" option = ["--session"] sources = ["cli"] [[commands.field]] id = "file" label = "Include files or URLs" type = "string" option = ["--file"] multiple = true sources = ["cli"] [[commands.field]] id = "execute" label = "Natural-language shell command" type = "boolean" option = ["--execute"] sources = ["cli"] [[commands.field]] id = "code" label = "Output code only" type = "boolean" option = ["--code"] sources = ["cli"] [[commands.field]] id = "no_stream" label = "Disable streaming" type = "boolean" option = ["--no-stream"] sources = ["cli"] [[commands.field]] id = "dry_run" label = "Dry run" type = "boolean" option = ["--dry-run"] sources = ["cli"] [[commands.task]] id = "ask" label = "Ask a question" fields = ["text", "model", "file"] required = ["text"] [[commands.task]] id = "shell" label = "Suggest a shell command" fields = ["text", "execute"] required = ["text", "execute"] set = { execute = [true] } [[commands.group]] id = "basic" label = "Basic" fields = ["text", "model", "role", "file", "execute", "code"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["session", "no_stream", "dry_run"]