chabeau 0.7.1

A full-screen terminal chat interface that connects to various AI APIs for real-time conversations
Documentation
# Sample Chabeau configuration file.
# Copy this to your platform's config directory to customize defaults:
#   Linux:   ~/.config/chabeau/config.toml
#   macOS:   ~/Library/Application Support/org.permacommons.chabeau/config.toml
#   Windows: %APPDATA%/chabeau/config.toml

# Select which provider Chabeau starts with.
# Use `chabeau set default-provider <provider>` to update this interactively.
default_provider = "poe"

# Enable or disable rich text rendering features.
# These options also toggle when you run `/markdown` or `/syntax` in the TUI.
markdown = true
syntax = true

# Choose a theme. Built-in options include: dark, light, solarized-dark, solarized-light.
# Use `/theme` (Alt+Enter to persist) or `chabeau set theme <theme-id>`.
theme = "dark"

# Uncomment to hide built-in presets that ship with Chabeau.
# builtin_presets = false

# Persist default models per provider.
# Set them with: `chabeau set default-model <provider> <model>`
[default_models]
poe = "gpt-5-chat"
anthropic = "claude-sonnet-4-5-20250929"

# Configure default characters by provider and model.
# Values refer to filenames in your cards directory without extensions
# (e.g., hypatia for hypatia.json or hypatia.png).
[default_characters]
  [default_characters.poe]
  "gpt-5-chat" = "hypatia"

# Configure default personas by provider and model.
# Values refer to persona IDs defined in the [[personas]] section below.
[default_personas]
  [default_personas.poe]
  "gpt-5-chat" = "developer"

# Configure default presets by provider and model.
# Values refer to preset IDs defined in the [[presets]] section below.
[default_presets]
  [default_presets.poe]
  "gpt-5-chat" = "focus"

# Register custom OpenAI-compatible providers, each in its own
# [[custom_providers]] block.
#
# These appear alongside built-ins when you run `/provider` or `chabeau -p`.
[[custom_providers]]
id = "myproxy"
display_name = "My Proxy"
base_url = "https://api.example.com/v1"

# Configure MCP servers for MCP-over-HTTP access.
#
# Tokens are stored in the system keyring under each server id.
# The preferred way to configure MCP servres is via OAuth,
# which is done automatically if you add an MCP server via
#
# 	chabeau mcp add
#
# For servers that require a bearer token, you can set it with:
#
#	chabeau mcp token <server-id>
#
[[mcp_servers]]
id = "local-mcp"
display_name = "Local MCP"
base_url = "http://localhost:3333"
transport = "streamable-http"
enabled = true
allowed_tools = ["weather.lookup", "time.now"]
# headers = { SOME_SERVICE_API_KEY = "your-key" } # Optional custom HTTP headers (advanced mode in CLI)
# yolo = true  # Skip permission prompts for this server (use with care).
# protocol_version = "2024-11-05" # If you need to specify an earlier version
# tool_payloads = "turn" # Retention of raw tool payloads: turn | window | all
# tool_payload_window = 5 # When set to "window", retain payloads for n turns

# Configure MCP servers that launch over stdio.
[[mcp_servers]]
id = "local-stdio"
display_name = "Local MCP (stdio)"
transport = "stdio"
command = "mcp-server"
args = ["--mode", "stdio"]
# env = { MCP_SERVER_TOKEN = "local-dev" } # Passed to the MCP server process (not the client).
enabled = true
# yolo = false

# Add custom themes, each in its own [[custom_themes]] block.
#
# Select them with `/theme` in the app.
[[custom_themes]]
id = "midnight"
display_name = "Midnight"
background = "#050810"
cursor_color = "#9cdcfe"
user_text = "#9cdcfe"
assistant_text = "#ce9178"
selection_highlight = "#264f78"
input_border = "#3a3d41"
# Optional: customize app messages emitted by Chabeau itself
app_info_prefix = "ℹ️  "
app_info_prefix_style = "#4fc1ff"
app_info_text = "#9cdcfe"
app_warning_prefix = "⚠️  "
app_warning_prefix_style = "#d19a66"
app_warning_text = "#d7ba7d"
app_error_prefix = "⛔  "
app_error_prefix_style = "#f44747"
app_error_text = "#f44747"

# Define personas to represent different user identities in conversations.
# Use `/persona` in the TUI or `--persona <id>` on the CLI to activate.
[[personas]]
id = "developer"
display_name = "Alex"
bio = "Alex is a senior software developer with expertise in Rust and distributed systems."

[[personas]]
id = "student"
display_name = "Sam"
bio = "Sam is a computer science student learning about AI and machine learning."

[[personas]]
id = "casual"
display_name = "Jordan"
# bio is optional - persona will just change the display name

# Define presets for reusable system instructions.
# Use `/preset` in the TUI or `--preset <id>` on the CLI to activate.
[[presets]]
id = "focus"
pre = """
You are collaborating with {{user}}. Keep responses focused and direct.
"""
post = """
Before finishing, list any follow-up actions for {{char}}.
"""

[[presets]]
id = "explain"
pre = """
Explain concepts clearly for a curious learner.
"""
post = """
End with a reflective question for {{user}}.
"""

[[presets]]
id = "concise"
pre = """
Be concise and to the point. Avoid unnecessary elaboration.
"""
# post is optional