Skip to content

Konfiguration

Triggerfish konfigureras via en enda YAML-fil på ~/.triggerfish/triggerfish.yaml. Installationsguiden (triggerfish dive) skapar den här filen åt dig, men du kan redigera den manuellt när som helst.

Konfigurationsfilens plats

~/.triggerfish/triggerfish.yaml

Du kan ange enskilda värden från kommandoraden med punktnotation:

bash
triggerfish config set <nyckel> <värde>
triggerfish config get <nyckel>

Booleanska värden och heltalsvärden konverteras automatiskt. Hemligheter maskeras i utdata.

Validera din konfiguration med:

bash
triggerfish config validate

Modeller

Avsnittet models konfigurerar dina LLM-leverantörer och failover-beteende.

yaml
models:
  # Vilken leverantör och modell som ska användas som standard
  primary:
    provider: anthropic
    model: claude-sonnet-4-5-20250929

  # Valfritt: synmodell för automatisk bildbeskrivning när primär
  # modell saknar synstöd
  # vision: gemini-2.0-flash

  # Strömningssvar (standard: true)
  # streaming: true

  providers:
    anthropic:
      model: claude-sonnet-4-5-20250929

    openai:
      model: gpt-4o

    google:
      model: gemini-2.5-pro

    ollama:
      model: llama3
      endpoint: "http://localhost:11434" # Ollama-standard

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

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

    zenmux:
      model: openai/gpt-5

    zai:
      model: glm-4.7

  # Failover-kedja: om primär misslyckas, prova dessa i ordning
  failover:
    - openai
    - google

API-nycklar lagras i OS-nyckelringen, inte i den här filen. Installationsguiden (triggerfish dive) frågar efter din API-nyckel och lagrar den säkert. Ollama och LM Studio är lokala och kräver ingen autentisering.

Kanaler

Avsnittet channels definierar vilka meddelandeplattformar din agent ansluter till och klassificeringsnivån för var och en.

yaml
channels:
  cli:
    enabled: true
    classification: INTERNAL

  telegram:
    enabled: true
    ownerId: 123456789
    classification: INTERNAL

  signal:
    enabled: true
    endpoint: "tcp://127.0.0.1:7583"
    account: "+14155552671"
    classification: PUBLIC
    defaultGroupMode: mentioned-only

  slack:
    enabled: true
    classification: PUBLIC

  discord:
    enabled: true
    ownerId: "ditt-discord-användar-id"
    classification: PUBLIC

  whatsapp:
    enabled: true
    phoneNumberId: "ditt-telefonnummer-id"
    classification: PUBLIC

  webchat:
    enabled: true
    classification: PUBLIC
    port: 18790

  email:
    enabled: true
    imapHost: "imap.gmail.com"
    smtpApiUrl: "https://api.sendgrid.com/v3/mail/send"
    imapUser: "du@gmail.com"
    fromAddress: "bot@example.com"
    ownerEmail: "du@gmail.com"
    classification: CONFIDENTIAL

Tokens, lösenord och API-nycklar för varje kanal lagras i OS-nyckelringen. Kör triggerfish config add-channel <namn> för att ange uppgifter interaktivt — de sparas i nyckelringen, aldrig i den här filen.

Kanalkonfigurationsnycklar

Icke-hemlig konfiguration i triggerfish.yaml:

KanalKonfigurationsnycklarValfria nycklar
CLIenabledclassification
Telegramenabled, ownerIdclassification
Signalenabled, endpoint, accountclassification, defaultGroupMode, groups, ownerPhone, pairing
Slackenabledclassification, ownerId
Discordenabled, ownerIdclassification
WhatsAppenabled, phoneNumberIdclassification, ownerPhone, webhookPort
WebChatenabledclassification, port, allowedOrigins
E-postenabled, smtpApiUrl, imapHost, imapUser, fromAddressclassification, ownerEmail, imapPort, pollInterval

Hemligheter (bot-tokens, API-nycklar, lösenord, signeringshemligheter) anges under kanalinställning och lagras i OS-nyckelringen.

Standardklassificeringsnivåer

KanalStandard
CLIINTERNAL
TelegramINTERNAL
SignalPUBLIC
SlackPUBLIC
DiscordPUBLIC
WhatsAppPUBLIC
WebChatPUBLIC
E-postCONFIDENTIAL

Alla standardvärden är konfigurerbara. Ange vilken kanal som helst till vilken klassificeringsnivå som helst.

MCP-servrar

Anslut externa MCP-servrar för att ge din agent tillgång till ytterligare verktyg. Se MCP Gateway för den fullständiga säkerhetsmodellen.

yaml
mcp_servers:
  github:
    command: npx
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "keychain:github-pat"
    classification: CONFIDENTIAL

  filesystem:
    command: npx
    args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/du/docs"]
    classification: INTERNAL

Varje server måste ha en classification-nivå annars avvisas den (neka som standard). Använd command + args för lokala servrar (startas som underprocesser) eller url för fjärrservrar (HTTP SSE). Miljövärden med prefixet keychain: hämtas från OS-nyckelringen.

För hjälp att välja klassificeringsnivåer, se Klassificeringsguiden.

Klassificering

Avsnittet classification styr hur Triggerfish klassificerar och skyddar data.

yaml
classification:
  mode: personal # "personal" eller "enterprise" (kommer snart)

Klassificeringsnivåer:

NivåBeskrivningExempel
RESTRICTEDMest känsligFusionsdokument, personuppgifter, bankkonton, journaler
CONFIDENTIALKänsligCRM-data, ekonomi, kontrakt, skatteuppgifter
INTERNALEndast interntInterna wikis, personliga anteckningar, kontakter
PUBLICSäker för allaMarknadsföringsmaterial, offentlig info, allmänt webbinnehåll

För detaljerad vägledning om att välja rätt nivå för dina integrationer, kanaler och MCP-servrar, se Klassificeringsguiden.

Policy

Avsnittet policy konfigurerar anpassade hanteringsregler utöver de inbyggda skydden.

yaml
policy:
  # Standardåtgärd när ingen regel matchar
  default_action: ALLOW

  # Anpassade regler
  rules:
    # Blockera verktygsvar som innehåller personnummermönster
    - hook: POST_TOOL_RESPONSE
      conditions:
        - tool_name: "salesforce.*"
        - content_matches: '\b\d{3}-\d{2}-\d{4}\b'
      action: REDACT
      redaction_pattern: "[PERSONNUMMER BORTTAGET]"
      log_level: ALERT

    # Begränsa externa API-anrop
    - hook: PRE_TOOL_CALL
      conditions:
        - tool_category: external_api
      rate_limit: 100/hour
      action: BLOCK

De grundläggande säkerhetsreglerna — inget nedskrivningsförbud, session-taint-eskalering, revisionsloggning — tillämpas alltid och kan inte inaktiveras. Anpassade policyregler lägger till ytterligare kontroller ovanpå dessa fasta skydd. :::

Webbsökning och hämtning

Avsnittet web konfigurerar webbsökning och innehållshämtning, inklusive domänsäkerhetskontroller.

yaml
web:
  search:
    provider: brave # Sökmotor (brave stöds för närvarande)
    max_results: 10
    safe_search: moderate # av, moderat, strikt
  fetch:
    rate_limit: 10 # Förfrågningar per minut
    max_content_length: 50000
    timeout: 30000
    default_mode: readability # readability eller raw
  domains:
    denylist:
      - "*.malware-site.com"
    allowlist: [] # Tom = tillåt alla (minus denylist)
    classifications:
      - pattern: "*.internal.corp"
        classification: CONFIDENTIAL

Ställ in sökning från kommandoraden:

bash
triggerfish config set web.search.provider brave

Brave API-nyckeln anges under triggerfish dive och lagras i OS-nyckelringen.

Hämta en Brave Search API-nyckel på brave.com/search/api. Den kostnadsfria nivån inkluderar 2 000 sökningar/månad. :::

Cron-jobb

Schemalägg återkommande uppgifter för din agent:

yaml
cron:
  jobs:
    - id: morning-briefing
      schedule: "0 7 * * *" # Kl 7 varje dag
      task: "Förbered morgonbriefing med kalender, olästa e-post och väder"
      channel: telegram # Var leveransresultaten ska skickas
      classification: INTERNAL # Max taint-tak för det här jobbet

    - id: pipeline-check
      schedule: "0 */4 * * *" # Var 4:e timme
      task: "Kontrollera Salesforce-pipelinen för ändringar"
      channel: slack
      classification: CONFIDENTIAL

Varje cron-jobb körs i sin egen isolerade session med ett klassificeringstak. Alla cron-åtgärder passerar de normala policy-hooksen.

Triggertiming

Konfigurera hur ofta din agent utför proaktiva incheckningar:

yaml
trigger:
  interval: 30m # Kontrollera var 30:e minut
  classification: INTERNAL # Max taint-tak för triggersessioner
  quiet_hours: "22:00-07:00" # Utlös inte under tysta timmar

Triggersystemet läser din ~/.triggerfish/TRIGGER.md-fil för att avgöra vad som ska kontrolleras vid varje uppvaknande. Se SPINE och Triggers för detaljer om att skriva din TRIGGER.md.

Webhooks

Ta emot inkommande händelser från externa tjänster:

yaml
webhooks:
  endpoints:
    - id: github-events
      path: /webhook/github
      classification: INTERNAL
      actions:
        - event: "pull_request.opened"
          task: "Granska PR och posta sammanfattning"
        - event: "issues.opened"
          task: "Prioritera nytt ärende"

    - id: sentry-alerts
      path: /webhook/sentry
      classification: CONFIDENTIAL
      actions:
        - event: "error"
          task: "Undersök fel och skapa fix-PR om möjligt"

Fullständigt exempel

Här är ett komplett konfigurationsexempel med kommentarer:

yaml
# ~/.triggerfish/triggerfish.yaml

# --- LLM-leverantörer ---
models:
  primary:
    provider: anthropic
    model: claude-sonnet-4-5-20250929
  providers:
    anthropic:
      model: claude-sonnet-4-5-20250929
    openai:
      model: gpt-4o
  failover:
    - openai

# --- Kanaler ---
channels:
  cli:
    enabled: true
    classification: INTERNAL
  telegram:
    enabled: true
    ownerId: 123456789
    classification: INTERNAL
  signal:
    enabled: false
  slack:
    enabled: false

# --- Klassificering ---
classification:
  mode: personal

# --- Policy ---
policy:
  default_action: ALLOW

# --- Cron ---
cron:
  jobs:
    - id: morning-briefing
      schedule: "0 7 * * *"
      task: "Förbered morgonbriefing"
      channel: telegram
      classification: INTERNAL

# --- Triggers ---
trigger:
  interval: 30m
  classification: INTERNAL
  quiet_hours: "22:00-07:00"

Nästa steg