id = "gptme" name = "gptme" homepage = "https://gptme.org/docs/" description = "AI assistant in your terminal" executables = ["gptme"] [dotfiles] # gptme's official configuration guide places the global TOML and local # override in ~/.config/gptme; its provider guide documents credentials.toml # in the same directory and says XDG_CONFIG_HOME may override that base. # https://gptme.org/docs/config.html # https://gptme.org/docs/providers.html 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"]