id = "gptme"
name = "gptme"
homepage = "https://gptme.org/docs/"
description = "AI assistant in your terminal"
executables = ["gptme"]
[dotfiles]
paths = ["[configHome]/gptme/config.toml"]
secret = [
"[configHome]/gptme/config.local.toml",
"[configHome]/gptme/credentials.toml",
]
[commands]
format = 1
label = "Chat with gptme"
description = "Start or resume a gptme conversation, optionally non-interactive. Sub-commands such as gptme-util, server and agent tools, and context-budget options are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = true }
[[commands.source]]
id = "src"
kind = "help"
url = "https://github.com/gptme/gptme/blob/master/gptme/cli/main.py"
revision = "master 2026-10-27"
evidence = '''
"--name",
help="Conversation ID (used to resume). Defaults to a random name.",
"-m",
"--model",
help="Model to use, e.g. {model_examples}. If only provider given then a default is used.",
"-w",
"--workspace",
help="Path to workspace directory, or '@log' to use the log directory.",
"-r",
"--resume",
help="Load the most recent conversation in this workspace. Use --name ID to select one.",
"-y",
"--no-confirm",
help="Skip all confirmation prompts.",
"-n",
"--non-interactive",
help="Non-interactive mode. Implies --no-confirm.",
"--output-format",
type=click.Choice(["text", "json"]),
help="Output format for non-interactive mode. 'json' emits one JSON object per line on stdout.",
"-t",
"--tools",
"-v",
"--verbose",
"--no-workspace",
help="Skip all workspace context (prompt files and context_cmd). Tools and agent config are still included.",
'''
[[commands.field]]
id = "prompts"
label = "Prompt and context files"
description = "Words become the first prompt; existing file paths are added as context."
type = "string"
position = 0
multiple = true
sources = ["src"]
[[commands.field]]
id = "model"
label = "Model"
description = "For example anthropic/claude-sonnet-4-5 or just a provider name."
type = "string"
option = ["--model", "-m"]
sources = ["src"]
[[commands.field]]
id = "workspace"
label = "Workspace directory"
type = "path"
option = ["--workspace", "-w"]
path = { kind = "directory", role = "input", must_exist = true }
sources = ["src"]
[[commands.field]]
id = "resume"
label = "Resume most recent conversation"
type = "boolean"
option = ["--resume", "-r"]
sources = ["src"]
[[commands.field]]
id = "name"
label = "Conversation name"
type = "string"
option = ["--name"]
sources = ["src"]
[[commands.field]]
id = "non_interactive"
label = "Non-interactive"
description = "Run the prompt to completion without asking questions; implies skipping confirmations."
type = "boolean"
option = ["--non-interactive", "-n"]
sources = ["src"]
[[commands.field]]
id = "no_confirm"
label = "Skip confirmation prompts"
description = "Lets tools run without asking first."
type = "boolean"
option = ["--no-confirm", "-y"]
effect = "exec"
sources = ["src"]
[[commands.field]]
id = "output_format"
label = "Output format (non-interactive)"
type = "enum"
option = ["--output-format"]
choices = [{ value = "text", label = "Text" }, { value = "json", label = "JSON lines" }]
sources = ["src"]
[[commands.field]]
id = "tools"
label = "Allowed tools"
description = "Comma-separated tool names to allow."
type = "string"
option = ["--tools", "-t"]
sources = ["src"]
[[commands.field]]
id = "no_workspace"
label = "Skip workspace context"
type = "boolean"
option = ["--no-workspace"]
sources = ["src"]
[[commands.field]]
id = "verbose"
label = "Verbose"
type = "boolean"
option = ["--verbose", "-v"]
sources = ["src"]
[[commands.task]]
id = "chat"
label = "Start a chat"
fields = ["prompts", "model", "workspace"]
required = []
[[commands.task]]
id = "one-shot"
label = "One-shot, non-interactive run"
set = { non_interactive = [true] }
lock = ["non_interactive"]
fields = ["prompts", "model", "workspace", "output_format", "tools"]
required = ["prompts"]
[[commands.task]]
id = "resume"
label = "Resume last conversation"
set = { resume = [true] }
lock = ["resume"]
fields = ["resume", "workspace"]
required = []
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["prompts", "model", "workspace", "resume", "non_interactive"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["name", "no_confirm", "output_format", "tools", "no_workspace", "verbose"]