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]
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<String>,
/// Select a role
pub role: Option<String>,
/// Start or join a session
pub session: Option<Option<String>>,
/// Execute commands in natural language
pub execute: bool,
/// Output code only
pub code: bool,
/// Include files, directories, or URLs
pub file: Vec<String>,
/// 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<String>
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"]