280 lines
19 KiB
YAML
280 lines
19 KiB
YAML
# Coyote configuration. Generated by the first-run wizard.
|
|
# Every setting is listed with its effective value and a short description.
|
|
# For richer examples of each section, see
|
|
# https://github.com/Dark-Alex-17/coyote/blob/main/config.example.yaml
|
|
|
|
# ---- LLM ----
|
|
__MODEL_BLOCK__
|
|
temperature: null # Set default temperature parameter (0, 1)
|
|
top_p: null # Set default top-p parameter, with a range of (0, 1) or (0, 2) depending on the model
|
|
|
|
# ---- Behavior ----
|
|
dry_run: false # Display the messages that would be sent to the LLM without actually sending them
|
|
stream: true # Controls whether to use the stream-style APIs when querying for completions from LLM clients
|
|
save: true # Indicates whether to persist the conversation to messages.md for posterity
|
|
keybindings: emacs # Choose keybinding style (emacs, vi)
|
|
editor: null # Specifies the editor used to edit the input buffer or session. (e.g. vim, emacs, nano, hx). Defaults to $EDITOR
|
|
wrap: auto # Controls text wrapping (no, auto, <max-width>)
|
|
wrap_code: false # Enables or disables the wrapping of code blocks
|
|
|
|
# ---- Vault ----
|
|
# See the [Vault documentation](https://github.com/Dark-Alex-17/coyote/wiki/Vault) for more information on the Coyote vault.
|
|
#
|
|
# The secrets_provider tells Coyote where to read and write secrets referenced via {{SECRET_NAME}} syntax.
|
|
#
|
|
# Shorthand: set vault_password_file to enable the local provider with that password
|
|
# file (it cannot be a secret template).
|
|
#
|
|
# Explicit: set secrets_provider to one of the supported types below. When secrets_provider is set,
|
|
# vault_password_file is ignored. Note: secrets_provider itself cannot use secret template syntax.
|
|
# The vault must be initialized before any secrets can be resolved.
|
|
#
|
|
# Local (same as the shorthand above):
|
|
# secrets_provider:
|
|
# type: local
|
|
# password_file: ~/.coyote_password
|
|
#
|
|
# AWS Secrets Manager (requires an authenticated AWS CLI; see `aws sso login` or `aws configure`):
|
|
# secrets_provider:
|
|
# type: aws_secrets_manager
|
|
# aws_profile: default
|
|
# aws_region: us-east-1
|
|
#
|
|
# GCP Secret Manager (requires `gcloud auth application-default login`):
|
|
# secrets_provider:
|
|
# type: gcp_secret_manager
|
|
# gcp_project_id: my-project-id
|
|
#
|
|
# Azure Key Vault (requires `az login`):
|
|
# secrets_provider:
|
|
# type: azure_key_vault
|
|
# vault_name: my-vault-name
|
|
#
|
|
# gopass (requires the `gopass` CLI to be installed and initialized):
|
|
# secrets_provider:
|
|
# type: gopass
|
|
# store: my-store # Optional; omit to use the default store
|
|
#
|
|
# 1Password (requires the `op` CLI to be installed and signed in via `op signin`):
|
|
# secrets_provider:
|
|
# type: one_password
|
|
# vault: Production # Optional; omit to use the default vault
|
|
# account: my.1password.com # Optional; omit to use the default account
|
|
__SECRETS_BLOCK__
|
|
|
|
# ---- Function Calling ----
|
|
# See the [Tools documentation](https://github.com/Dark-Alex-17/coyote/wiki/Tools) for more details
|
|
function_calling_support: true # Enables or disables function calling (globally)
|
|
mapping_tools: {} # Alias for a tool or toolset
|
|
# Example:
|
|
# mapping_tools:
|
|
# fs: 'fs_cat,fs_ls,fs_mkdir,fs_rm,fs_write,fs_read,fs_glob,fs_grep'
|
|
enabled_tools: null # Which tools to enable by default.
|
|
# Accepts either a YAML list or a comma-separated string. Use 'all' to enable everything.
|
|
# Example (list form):
|
|
# enabled_tools:
|
|
# - fs
|
|
# - web_search_coyote
|
|
# Example (comma-separated form):
|
|
# enabled_tools: fs,web_search_coyote
|
|
visible_tools: null # Which tools are visible to be compiled (and are thus able to be defined in 'enabled_tools').
|
|
# Null/missing = all tools in the global tools dir are visible; [] = none;
|
|
# an explicit list makes only those tools visible.
|
|
# Example:
|
|
# visible_tools:
|
|
# - execute_command.sh
|
|
# - fs_cat.sh
|
|
# - fs_ls.sh
|
|
|
|
# ---- Skills ----
|
|
# Skills are modular knowledge or capability packs the LLM can load and unload mid-conversation.
|
|
# See the [Skills documentation](https://github.com/Dark-Alex-17/coyote/wiki/Skills) for more details.
|
|
skills_enabled: true # Master switch. Set to false to hide all skill management tools from the model.
|
|
# Skills also require `function_calling_support: true` above to work at all.
|
|
enabled_skills: null # Which skills are available by default (no role/agent/session active). null = all visible.
|
|
# Accepts either a YAML list or a comma-separated string.
|
|
# Example (list form):
|
|
# enabled_skills:
|
|
# - git-master
|
|
# - ai-slop-remover
|
|
# Example (comma-separated form):
|
|
# enabled_skills: git-master,ai-slop-remover
|
|
visible_skills: null # The universe of skills allowed to be enabled in any context. null = all installed.
|
|
# Example:
|
|
# visible_skills:
|
|
# - ai-slop-remover
|
|
# - code-review
|
|
# - git-master
|
|
|
|
# ---- Macros ----
|
|
# Macros are Coyote's custom commands: named sequences of REPL commands and prompts, invoked directly by name
|
|
# (a macro file named `review.yaml` runs as `.review [args]`; built-in commands always win a name collision).
|
|
# Workspace-local macros in `.coyote/macros/` shadow same-named global macros (skip them with --no-workspace-macros).
|
|
# See the [Macros documentation](https://github.com/Dark-Alex-17/coyote/wiki/Macros) for more details.
|
|
enabled_macros: null # Which macros are invocable by default (no role/agent/session active). null = all visible.
|
|
# An empty list means NO macros are invocable. Accepts either a YAML list or a
|
|
# comma-separated string. Roles, agents, and sessions may define their own
|
|
# `enabled_macros`; the most specific active one wins (session > agent > role > global).
|
|
# Example (list form):
|
|
# enabled_macros:
|
|
# - generate-commit-message
|
|
# Example (comma-separated form):
|
|
# enabled_macros: generate-commit-message,review
|
|
|
|
# ---- MCP Servers ----
|
|
# See the [MCP Servers documentation](https://github.com/Dark-Alex-17/coyote/wiki/MCP-Servers) for more details
|
|
mcp_server_support: true # Enables or disables MCP servers (globally)
|
|
mapping_mcp_servers: {} # Alias for an MCP server or set of servers
|
|
# Example:
|
|
# mapping_mcp_servers:
|
|
# git: github,gitmcp
|
|
enabled_mcp_servers: null # Which MCP servers to enable by default.
|
|
# Accepts either a YAML list or a comma-separated string. Use 'all' to enable everything.
|
|
# Example (list form):
|
|
# enabled_mcp_servers:
|
|
# - github
|
|
# - slack
|
|
# Example (comma-separated form):
|
|
# enabled_mcp_servers: github,slack,ddg-search
|
|
mcp_tools: null # Per-server MCP tool allowlists (glob patterns: * and ? supported).
|
|
# Tools that match no pattern are hidden from the model as if they
|
|
# don't exist. Stacks with the other allowlist layers (mcp.json
|
|
# `allowedTools`, role, agent, session, skill, graph node). Every
|
|
# configured layer must allow a tool, so layers only ever narrow.
|
|
# An empty list blocks all of a server's tools.
|
|
# Example:
|
|
# mcp_tools:
|
|
# github:
|
|
# - get_*
|
|
# - list_*
|
|
# slack: []
|
|
|
|
# ---- Auto-Continue (Todo System) ----
|
|
# The auto-continue system provides built-in task tracking for improved reliability.
|
|
# When enabled, the model can create todo lists and the system will automatically
|
|
# prompt it to continue when incomplete tasks remain.
|
|
# See the [Todo System documentation](https://github.com/Dark-Alex-17/coyote/wiki/TODO-System) for more information
|
|
auto_continue: false # Enable automatic continuation when incomplete todos remain (default: false)
|
|
max_auto_continues: 10 # Maximum number of automatic continuations before stopping (default: 10)
|
|
inject_todo_instructions: true # Inject default todo usage instructions into the system prompt (default: true)
|
|
continuation_prompt: null # Custom prompt used when auto-continuing. If null, uses built-in default
|
|
inject_skill_instructions: true # Inject a short hint pointing the model at `skill__list` when skills are enabled
|
|
# in this context. Only injected if `function_calling_support`, `skills_enabled`, and the
|
|
# effective enabled skill set is non-empty (default: true)
|
|
skill_instructions: null # Custom text used for the skill hint when injected. If null, uses built-in default
|
|
|
|
# ---- Prelude ----
|
|
repl_prelude: null # Set a default session or role for REPL mode to use (e.g. role:<name>, session:<name>, <session>:<role>)
|
|
cmd_prelude: null # Set a default session or role for CMD mode to use (e.g. role:<name>, session:<name>, <session>:<role>)
|
|
agent_session: null # Set a session to use when starting an agent (e.g. temp, default)
|
|
|
|
# ---- Session ----
|
|
# See the [Session documentation](https://github.com/Dark-Alex-17/coyote/wiki/Sessions) for more information
|
|
save_session: null # Controls the persistence of the session. If true, auto save; if false, don't auto-save; if null, ask the user what to do
|
|
compression_threshold: 4000 # Compress the session when the token count reaches or exceeds this threshold
|
|
compression_keep_last: 0 # Number of most-recent messages to keep visible after compression (0 = compress all messages)
|
|
summarization_prompt: null # The text prompt used for creating a concise summary of session messages. If null, uses built-in default
|
|
summary_context_prompt: null # The text prompt used for including the summary of the entire session as context to the model. If null, uses built-in default
|
|
max_tool_result_chars: null # Cap on tool result characters forwarded to the model per call (null = no cap)
|
|
max_concurrent_jobs: null # Max background jobs (`job__*` tools) running at once per context (null = 5; 0 disables background jobs entirely)
|
|
|
|
# ---- Memory ----
|
|
# See the [Memory documentation](https://github.com/Dark-Alex-17/coyote/wiki/Memory) for more information.
|
|
# Memory is opt-in by workspace presence (`.coyote/memory/MEMORY.md`) and global
|
|
# presence (`<config_dir>/memory/MEMORY.md`). Set `memory: false` to disable
|
|
# even when memory files exist. The cascade is: agent > session > role > app.
|
|
# Bootstrap with `coyote --init-memory [global|workspace]` to create the marker file
|
|
# the LLM needs before it will write any memory.
|
|
memory: null # null = enabled when memory exists on disk; true = force on; false = force off
|
|
memory_cap_with_tools: null # Char cap for injected memory when function calling is available (null = 6000).
|
|
# Only MEMORY.md indexes are injected; the LLM uses memory__read to fetch drill files.
|
|
memory_cap_without_tools: null # Char cap when function calling is unavailable (null = 12000).
|
|
# Indexes plus drill file bodies are injected up to this cap.
|
|
|
|
# ---- Workspace Instructions ----
|
|
# Human-curated project instructions injected read-only into the system prompt, in full.
|
|
# Coyote walks up from the current directory and injects the first match from the file
|
|
# chain below (per directory, in order). Scaffold with `coyote --init-instructions`.
|
|
# Disable per-invocation with --no-workspace-instructions, or override the chain with
|
|
# repeatable --workspace-instructions-file flags.
|
|
workspace_instructions: null # null/true = inject when an instructions file exists; false = never inject
|
|
workspace_instructions_files: null # File name chain to search, in priority order.
|
|
# Default: [COYOTE.md, AGENTS.md, CLAUDE.md, GEMINI.md]
|
|
# Set to a custom list to reorder or drop fallbacks, e.g.:
|
|
# workspace_instructions_files: [COYOTE.md]
|
|
|
|
# ---- RAG ----
|
|
# See the [RAG Docs](https://github.com/Dark-Alex-17/coyote/wiki/RAG) for more details.
|
|
rag_embedding_model: null # Specifies the embedding model used for context retrieval
|
|
rag_reranker_model: null # Specifies the reranker model used for sorting retrieved documents; Coyote uses Reciprocal Rank Fusion by default
|
|
rag_top_k: 5 # Specifies the number of documents to retrieve for answering queries
|
|
rag_chunk_size: null # Defines the size of chunks for document processing in characters
|
|
rag_chunk_overlap: null # Defines the overlap between chunks
|
|
rag_template: null # Defines the query structure using variables like __CONTEXT__, __SOURCES__, and __INPUT__
|
|
# to tailor searches to specific needs. If null, uses built-in default
|
|
rag_extractor_model: null # LLM model for graph-based entity/relationship extraction; when set, enables a graph RAG signal alongside vector and BM25
|
|
rag_extractor_prompt: null # Custom extraction prompt template; must contain __CHUNK__ placeholder; defaults to built-in prompt when null
|
|
rag_graph_hops: 1 # Number of hops to expand from matched entities at query time (0 = seed nodes only; 1 = direct neighbors; increase for denser graphs)
|
|
|
|
# Define document loaders to control how RAG and `.file`/`--file` load files of specific formats.
|
|
document_loaders: {}
|
|
# You can add custom loaders using the following syntax:
|
|
# <file-extension>: <command-to-load-the-file>
|
|
# Note: Use `$1` for input file and `$2` for output file. If `$2` is omitted, use stdout as output.
|
|
# Examples:
|
|
# document_loaders:
|
|
# pdf: 'pdftotext $1 -' # https://poppler.freedesktop.org
|
|
# docx: 'pandoc --to plain $1' # https://pandoc.org
|
|
# jina: 'curl -fsSL https://r.jina.ai/$1 -H "Authorization: Bearer {{JINA_API_KEY}}"' # Requires a Jina API key in the Coyote vault
|
|
|
|
# ---- Appearance ----
|
|
highlight: true # Controls syntax highlighting
|
|
raw_markdown: false # When true, render markdown as raw text with syntax highlighting only. When false (default), transforms markdown syntax (headings, bold, lists, etc.) into styled terminal output
|
|
theme: null # null = the built-in dark theme; set to `light` for the built-in light theme.
|
|
# Custom themes: place a `dark.tmTheme` or `light.tmTheme` file in the Coyote config
|
|
# directory and it is used in place of the corresponding built-in.
|
|
|
|
# ---- REPL Prompt ----
|
|
# Custom REPL left/right prompts; see the [REPL Prompt Documentation](https://github.com/Dark-Alex-17/coyote/wiki/REPL-Prompt) for more information
|
|
left_prompt: null # If null, uses the built-in default:
|
|
# '{color.red}{model}){color.green}{?session {?agent {agent}>}{session}{?role /}}{!session {?agent {agent}>}}{role}{?rag @{rag}}{color.cyan}{?session )}{!session >}{color.reset} '
|
|
right_prompt: null # If null, uses the built-in default:
|
|
# '{color.cyan}{?reasoning_effort [{reasoning_effort}] }{color.purple}{?session {?consume_tokens {consume_tokens}({consume_percent}%)}{!consume_tokens {consume_tokens}}}{color.reset}'
|
|
|
|
# ---- Miscellaneous ----
|
|
user_agent: null # Set User-Agent HTTP header, use `auto` for coyote/<current-version>
|
|
save_shell_history: true # Whether to save shell execution command to the history file
|
|
sync_models_url: null # URL to sync model changes from. If null, uses the built-in default:
|
|
# https://raw.githubusercontent.com/Dark-Alex-17/coyote/refs/heads/main/models.yaml
|
|
|
|
# ---- Clients ----
|
|
# See the [Clients documentation](https://github.com/Dark-Alex-17/coyote/wiki/Clients) for more details
|
|
#
|
|
# All clients have the following configuration:
|
|
# - type: xxxx
|
|
# name: xxxx # Only use it to distinguish clients with the same client type. Optional
|
|
# models:
|
|
# - name: xxxx # Chat model
|
|
# max_input_tokens: 100000
|
|
# supports_vision: true
|
|
# supports_function_calling: true
|
|
# - name: xxxx # Embedding model
|
|
# type: embedding
|
|
# default_chunk_size: 1500
|
|
# max_batch_size: 100
|
|
# - name: xxxx # Reranker model
|
|
# type: reranker
|
|
# patch: # Patch API calls
|
|
# chat_completions: # API type; Possible values: chat_completions, embeddings, and rerank
|
|
# <regex>: # The regex to match model names, e.g. '.*' 'gpt-4o' 'gpt-4o|gpt-4-.*'
|
|
# url: '' # Patch request URL
|
|
# body: # Patch request body
|
|
# <json>
|
|
# headers: # Patch request headers
|
|
# <key>: <value>
|
|
# extra:
|
|
# proxy: socks5://127.0.0.1:1080 # Set proxy
|
|
# connect_timeout: 10 # Set timeout in seconds for connect to api
|
|
# read_timeout: 300 # Set timeout in seconds for a read stall (no bytes received); 0 disables (default: 300)
|
|
__CLIENTS_BLOCK__
|