Skip to content

Config Schema

Triggerfish triggerfish.yaml மூலம் configure ஆகிறது, triggerfish dive இயக்கிய பிறகு ~/.triggerfish/triggerfish.yaml இல் இருக்கும். இந்த page ஒவ்வொரு configuration section உம் document செய்கிறது.

Secret References இந்த file இல் எந்த string value உம் OS keychain இல் stored credential reference செய்ய secret: prefix பயன்படுத்தலாம். உதாரணமாக, apiKey: "secret:provider:anthropic:apiKey" startup போது keychain இலிருந்து value resolve செய்கிறது. விவரங்களுக்கு Secrets Management பாருங்கள். :::

Full Annotated Example

yaml
# =============================================================================
# triggerfish.yaml -- Complete configuration reference
# =============================================================================

# ---------------------------------------------------------------------------
# Models: LLM provider configuration and failover
# ---------------------------------------------------------------------------
models:
  # Agent completions க்கு பயன்படுத்தப்படும் primary model
  primary:
    provider: anthropic
    model: claude-sonnet-4-5

  # Optional: image description க்கான separate vision model
  # Primary model vision support செய்யாதபோது, images தானாக
  # primary ஐ அடைவதற்கு முன்பு இந்த model மூலம் described ஆகின்றன.
  # vision: glm-4.5v

  # Streaming responses (default: true)
  # streaming: true

  # Provider-specific configuration
  # API keys secret: syntax மூலம் referenced மற்றும் OS keychain இலிருந்து resolved.
  # Setup செய்ய `triggerfish dive` அல்லது `triggerfish config migrate-secrets` இயக்கவும்.
  providers:
    anthropic:
      model: claude-sonnet-4-5
      # apiKey: "secret:provider:anthropic:apiKey"

    openai:
      model: gpt-4o

    google:
      model: gemini-pro

    ollama:
      model: llama3
      endpoint: "http://localhost:11434"

    lmstudio:
      model: lmstudio-community/Meta-Llama-3.1-8B-Instruct-GGUF
      endpoint: "http://localhost:1234"

    openrouter:
      model: anthropic/claude-sonnet-4-5

    zenmux:
      model: openai/gpt-5

    zai:
      model: glm-4.7

  # Ordered failover chain -- primary fail ஆகும்போது sequence இல் tried
  failover:
    - claude-haiku-4-5 # First fallback
    - gpt-4o # Second fallback
    - ollama/llama3 # Local fallback (internet தேவையில்லை)

  # Failover behavior
  failover_config:
    max_retries: 3 # Provider ஒன்றுக்கு next க்கு move ஆவதற்கு முன்பு Retries
    retry_delay_ms: 1000 # Retries இடையே Delay
    conditions: # Failover trigger செய்வது என்ன
      - rate_limited # Provider 429 return செய்தது
      - server_error # Provider 5xx return செய்தது
      - timeout # Request timeout exceed ஆனது

# ---------------------------------------------------------------------------
# Logging: Structured log output
# ---------------------------------------------------------------------------
logging:
  level: normal # quiet | normal | verbose | debug

# ---------------------------------------------------------------------------
# Channels: Messaging platform connections
# ---------------------------------------------------------------------------
# Secrets (bot tokens, API keys, passwords) OS keychain இல் stored.
# Securely enter செய்ய `triggerfish config add-channel <name>` இயக்கவும்.
# Non-secret configuration மட்டுமே இங்கே appear ஆகிறது.
channels:
  telegram:
    ownerId: 123456789 # உங்கள் Telegram numeric user ID
    classification: INTERNAL # Default: INTERNAL

  signal:
    endpoint: "tcp://127.0.0.1:7583" # signal-cli daemon endpoint
    account: "+14155552671" # உங்கள் Signal phone number (E.164)
    classification: PUBLIC # Default: PUBLIC
    defaultGroupMode: mentioned-only # always | mentioned-only | owner-only
    groups:
      "group-id-here":
        mode: always
        classification: INTERNAL

  slack:
    classification: PUBLIC # Default: PUBLIC

  discord:
    ownerId: "your-discord-user-id" # உங்கள் Discord user ID
    classification: PUBLIC # Default: PUBLIC

  whatsapp:
    phoneNumberId: "your-phone-number-id" # Meta Business Dashboard இலிருந்து
    classification: PUBLIC # Default: PUBLIC

  webchat:
    port: 8765 # Web client க்கான WebSocket port
    classification: PUBLIC # Default: PUBLIC (visitors)

  email:
    smtpApiUrl: "https://api.sendgrid.com/v3/mail/send"
    imapHost: "imap.gmail.com"
    imapPort: 993
    imapUser: "you@gmail.com"
    fromAddress: "bot@example.com"
    ownerEmail: "you@gmail.com"
    classification: CONFIDENTIAL # Default: CONFIDENTIAL

# ---------------------------------------------------------------------------
# Classification: Data sensitivity model
# ---------------------------------------------------------------------------
classification:
  mode: personal # "personal" or "enterprise" (coming soon)
# Levels: RESTRICTED > CONFIDENTIAL > INTERNAL > PUBLIC

# ---------------------------------------------------------------------------
# Policy: Custom enforcement rules (enterprise escape hatch)
# ---------------------------------------------------------------------------
policy:
  rules:
    - id: block-external-pii
      hook: PRE_OUTPUT
      priority: 100
      conditions:
        - type: recipient_is
          value: EXTERNAL
        - type: content_matches
          pattern: "\\b\\d{3}-\\d{2}-\\d{4}\\b" # SSN pattern
      action: REDACT
      message: "PII redacted for external recipient"

    - id: rate-limit-browser
      hook: PRE_TOOL_CALL
      priority: 50
      conditions:
        - type: tool_name
          value: browser
        - type: rate_exceeds
          value: 10/minute
      action: BLOCK
      message: "Browser tool rate limit exceeded"

# ---------------------------------------------------------------------------
# MCP Servers: External tool servers
# ---------------------------------------------------------------------------
mcp_servers:
  filesystem:
    command: "deno"
    args: ["run", "--allow-read", "--allow-write", "mcp-filesystem-server.ts"]
    classification: INTERNAL

  github:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-github"]
    classification: CONFIDENTIAL

# ---------------------------------------------------------------------------
# Plugins: Dynamic plugin configuration (optional)
# ---------------------------------------------------------------------------
# ~/.triggerfish/plugins/ இல் Plugins இங்கே enabled ஆகும்போது startup போது loaded.
# Runtime இல் agent load செய்த plugins (plugin_install மூலம்) config entry தேவையில்லை
# -- அவை sandboxed trust மற்றும் manifest classification default ஆக பயன்படுத்துகின்றன.
plugins:
  weather:
    enabled: true
    classification: PUBLIC
    trust: sandboxed # Full Deno permissions grant செய்ய "trusted"
    # Additional keys context.config ஆக plugin க்கு passed
    api_key: "secret:plugin:weather:apiKey"

  system-info:
    enabled: true
    classification: PUBLIC
    trust: trusted # manifest AND config இரண்டும் "trusted" என்று சொல்ல வேண்டும்

# ---------------------------------------------------------------------------
# Scheduler: Cron jobs and triggers
# ---------------------------------------------------------------------------
scheduler:
  cron:
    jobs:
      - id: morning-briefing
        schedule: "0 7 * * *" # 7 AM daily
        task: "Prepare morning briefing with calendar, unread emails, and weather"
        channel: telegram
        classification: INTERNAL

      - id: pipeline-check
        schedule: "0 */4 * * *" # Every 4 hours
        task: "Check Salesforce pipeline for changes and notify if significant"
        channel: slack
        classification: CONFIDENTIAL

      - id: pr-review-check
        schedule: "*/15 * * * *" # Every 15 minutes
        task: "Check open PR tracking files and query GitHub for new reviews"
        classification: INTERNAL

  trigger:
    interval: 30m # ஒவ்வொரு 30 minutes க்கும் Check
    classification: INTERNAL # Triggers க்கான Max taint ceiling
    quiet_hours: "22:00-07:00" # இந்த மணிநேரங்களில் Suppress

# ---------------------------------------------------------------------------
# Notifications: Delivery preferences
# ---------------------------------------------------------------------------
notifications:
  preferred_channel: telegram # Default delivery channel
  quiet_hours: "22:00-07:00" # Normal/low priority suppress
  batch_interval: 15m # Low-priority notifications batch செய்யவும்

# ---------------------------------------------------------------------------
# Agents: Multi-agent routing (optional)
# ---------------------------------------------------------------------------
agents:
  default: personal # Fallback agent
  list:
    - id: personal
      name: "Personal Assistant"
      channels: [whatsapp, telegram]
      tools:
        profile: "full"
      model: claude-opus-4-5
      classification_ceiling: INTERNAL

    - id: work
      name: "Work Assistant"
      channels: [slack, email]
      tools:
        profile: "coding"
        allow: [browser, github]
      model: claude-sonnet-4-5
      classification_ceiling: CONFIDENTIAL

# ---------------------------------------------------------------------------
# Voice: Speech configuration (optional)
# ---------------------------------------------------------------------------
voice:
  stt:
    provider: whisper # whisper | deepgram | openai
    model: base # Whisper model size
  tts:
    provider: elevenlabs # elevenlabs | openai | system
    voice_id: "your-voice-id"
  wake_word: "triggerfish"
  push_to_talk:
    shortcut: "Ctrl+Space"

# ---------------------------------------------------------------------------
# Webhooks: Inbound event endpoints (optional)
# ---------------------------------------------------------------------------
webhooks:
  endpoints:
    - id: github
      path: /webhook/github
      # Webhook secret OS keychain இல் stored
      classification: INTERNAL
      actions:
        - event: "pull_request.opened"
          task: "Review PR and post summary"
        - event: "pull_request_review"
          task: "A PR review was submitted. Read tracking file, address feedback, commit, push."
        - event: "pull_request_review_comment"
          task: "An inline review comment was posted. Read tracking file, address comment."
        - event: "issue_comment"
          task: "A comment was posted on a PR. If tracked, address feedback."
        - event: "pull_request.closed"
          task: "PR closed or merged. Clean up branches and archive tracking file."
        - event: "issues.opened"
          task: "Triage new issue"

# ---------------------------------------------------------------------------
# GitHub: GitHub integration settings (optional)
# ---------------------------------------------------------------------------
github:
  auto_merge: false # Default: false. Approved PRs auto-merge செய்ய true அமைக்கவும்.

# ---------------------------------------------------------------------------
# Groups: Group chat behavior (optional)
# ---------------------------------------------------------------------------
groups:
  default_behavior: "mentioned-only"
  overrides:
    - channel: slack
      channel_name: "#ai-assistant"
      behavior: "always"

# ---------------------------------------------------------------------------
# Web: Search and fetch configuration
# ---------------------------------------------------------------------------
web:
  search:
    provider: brave # Search backend (brave default)
# API key OS keychain இல் stored

# ---------------------------------------------------------------------------
# Remote: Remote access (optional)
# ---------------------------------------------------------------------------
remote:
  tailscale:
    serve: true
    funnel:
      enabled: true
      paths: ["/webhook/*"]
  auth:
# Auth token OS keychain இல் stored

Section Reference

models

KeyTypeவிளக்கம்
primaryobjectprovider மற்றும் model fields உடன் Primary model reference
primary.providerstringProvider name (anthropic, openai, google, ollama, lmstudio, openrouter, zenmux, zai)
primary.modelstringAgent completions க்கு பயன்படுத்தப்படும் Model identifier
visionstringAutomatic image description க்கான Optional vision model (பாருங்கள் Image and Vision)
streamingbooleanStreaming responses enable செய்யவும் (default: true)
providersobjectProvider-specific configuration (கீழே பாருங்கள்)
failoverstring[]Fallback models இன் Ordered list
failover_config.max_retriesnumberFailover க்கு முன்பு provider ஒன்றுக்கு Retries
failover_config.retry_delay_msnumberRetries இடையே milliseconds இல் Delay
failover_config.conditionsstring[]Failover trigger செய்யும் Conditions

channels

ஒவ்வொரு channel key உம் channel type. அனைத்து channel types உம் default classification level override செய்ய ஒரு classification field support செய்கின்றன.

அனைத்து secrets உம் (tokens, API keys, passwords) OS keychain இல் stored, இந்த file இல் அல்ல. Credentials securely enter செய்ய triggerfish config add-channel <name> இயக்கவும். :::

classification

KeyTypeவிளக்கம்
mode"personal" அல்லது "enterprise"Deployment mode (coming soon — தற்போது இரண்டும் அதே classification levels பயன்படுத்துகின்றன)

policy

Hook execution போது evaluated custom rules. ஒவ்வொரு rule உம் hook type, priority, conditions, மற்றும் action specify செய்கிறது. Higher priority numbers முதலில் evaluated.

mcp_servers

External MCP tool servers. ஒவ்வொரு server உம் launch செய்ய command, optional environment variables, classification level, மற்றும் per-tool permissions specify செய்கிறது.

plugins

Dynamic plugin configuration. ஒவ்வொரு key உம் ~/.triggerfish/plugins/ இல் directory உடன் match ஆகும் plugin name. Configuration optional -- Runtime இல் agent load செய்த plugins (plugin_install மூலம்) config entry இல்லாமல் வேலை செய்கின்றன.

KeyTypeDefaultவிளக்கம்
enabledbooleanfalseStartup போது இந்த plugin load செய்யவா
classificationstringfrom manifestPlugin இன் classification level override செய்யவும்
trust"sandboxed" அல்லது "trusted""sandboxed"Trust level grant. Manifest AND config இரண்டும் "trusted" சொல்ல வேண்டும்
(other keys)any--Plugin க்கு context.config ஆக passed

Plugins எழுதுவது, load செய்வது, மற்றும் manage செய்வது பற்றிய விவரங்களுக்கு Plugins பாருங்கள்.

scheduler

Cron job definitions மற்றும் trigger timing. விவரங்களுக்கு Cron and Triggers பாருங்கள்.

notifications

Notification delivery preferences. விவரங்களுக்கு Notifications பாருங்கள்.

web

KeyTypeவிளக்கம்
web.search.providerstringweb_search tool க்கான Search backend (தற்போது: brave)

விவரங்களுக்கு Web Search and Fetch பாருங்கள்.

logging

KeyTypeDefaultவிளக்கம்
levelstring"normal"Log verbosity: quiet (errors மட்டும்), normal (info), verbose (debug), debug (trace)

Log output மற்றும் file rotation பற்றிய விவரங்களுக்கு Structured Logging பாருங்கள்.

github

KeyTypeDefaultவிளக்கம்
auto_mergebooleanfalsetrue ஆகும்போது, approving review பெற்ற பிறகு agent PRs auto-merge செய்கிறது. false (default) ஆகும்போது, agent owner க்கு notify செய்து explicit merge instruction காத்திருக்கிறது.

Full setup instructions க்கு GitHub Integration guide பாருங்கள்.