Skip to content

Plattformmerknader ​

Plattformspesifikk atferd, krav og særegenheter.

macOS ​

Tjenestebehandler: launchd ​

Triggerfish registrerer seg som en launchd-agent på:

~/Library/LaunchAgents/dev.triggerfish.agent.plist

Plist-filen er konfigurert med RunAtLoad: true og KeepAlive: true, slik at daemonen starter ved innlogging og restartes ved krasj.

PATH-opptak ​

Launchd-plist-filen tar opp din shell PATH på installasjonstidspunktet. Dette er avgjørende fordi launchd ikke importerer din shell-profil. Hvis du installerer MCP-serveravhengigheter (som npx, python) etter installasjon av daemonen, vil disse binærene ikke være i daemonens PATH.

Løsning: Reinstaller daemonen for å oppdatere den lagrede PATH:

bash
triggerfish stop
triggerfish dive --install-daemon

Karantene ​

macOS legger karanteneflagg på nedlastede binærfiler. Installasjonsprogrammet fjerner dette med xattr -cr, men hvis du lastet ned binærfilen manuelt:

bash
xattr -cr /usr/local/bin/triggerfish

Nøkkelring ​

Hemmeligheter lagres i macOS-innloggingsnøkkelringen via security CLI. Hvis Nøkkelringtilgang er låst, vil hemmelighetoperasjoner feile inntil du låser den opp (vanligvis ved å logge inn).

Homebrew Deno ​

Hvis du bygger fra kildekode og Deno ble installert via Homebrew, sørg for at Homebrew bin-mappen er i din PATH før du kjører installasjonsskriptet.


Linux ​

Tjenestebehandler: systemd (brukermodus) ​

Daemonen kjører som en systemd-brukertjeneste:

~/.config/systemd/user/triggerfish.service

Linger ​

Som standard stopper systemd-brukertjenester når brukeren logger ut. Triggerfish aktiverer linger ved installasjon:

bash
loginctl enable-linger $USER

Hvis dette mislykkes (f.eks. fordi systemadministratoren har deaktivert det), kjører daemonen bare mens du er innlogget. På servere der du vil at daemonen skal vedvare, be administratoren om å aktivere linger for din konto.

PATH og miljø ​

Systemd-enheten tar opp din PATH og setter DENO_DIR=~/.cache/deno. Som på macOS krever endringer i PATH etter installasjon at daemonen reinstalleres.

Enheten setter også Environment=PATH=... eksplisitt. Hvis daemonen ikke kan finne MCP-serverbinærfiler, er dette den mest sannsynlige årsaken.

Fedora Atomic / Silverblue / Bazzite ​

Fedora Atomic-skrivebord har /home symbollenket til /var/home. Triggerfish håndterer dette automatisk ved oppretting av hjemmemappen, ved å følge symbollenker for å finne den faktiske banen.

Flatpak-installerte nettlesere oppdages og startes via et innpakningsskript som kaller flatpak run.

Hodeløse servere ​

På servere uten et skrivebordsmiljø kjører kanskje ikke GNOME Keyring / Secret Service-daemonen. Se Hemmeligheter feilsøking for oppsettpsinstruksjoner.

SQLite FFI ​

SQLite-lagringsbackenden bruker @db/sqlite, som laster et native bibliotek via FFI. Dette krever --allow-ffi Deno-tillatelse (inkludert i den kompilerte binærfilen). På noen minimale Linux-distribusjoner kan det hende at det delte C-biblioteket eller relaterte avhengigheter mangler. Installer base utviklingsbiblioteker hvis du ser FFI-relaterte feil.


Windows ​

Tjenestebehandler: Windows Service ​

Triggerfish installeres som en Windows-tjeneste kalt "Triggerfish". Tjenesten er implementert av en C#-innpakning kompilert under installasjon ved hjelp av csc.exe fra .NET Framework 4.x.

Krav:

  • .NET Framework 4.x (installert på de fleste Windows 10/11-systemer)
  • Administratorrettigheter for tjenesteinstallasjon
  • csc.exe tilgjengelig i .NET Framework-mappen

Binærfilerstatning under oppdateringer ​

Windows tillater ikke overskrivning av en kjørende kjørbar fil. Oppdatereren:

  1. Gir den kjørende binærfilen nytt navn til triggerfish.exe.old
  2. Kopierer den nye binærfilen til den opprinnelige banen
  3. Restarter tjenesten
  4. Rydder opp .old-filen ved neste oppstart

Hvis omdøping eller kopiering mislykkes, stopp tjenesten manuelt før oppdatering.

ANSI-fargstøtte ​

Triggerfish aktiverer Virtual Terminal Processing for farget konsollutdata. Dette fungerer i moderne PowerShell og Windows Terminal. Eldre cmd.exe-vinduer gjengir kanskje ikke farger riktig.

Eksklusiv fillåsing ​

Windows bruker eksklusive fillåser. Hvis daemonen kjører og du prøver å starte en ny instans, hindrer loggfillåsen det:

Triggerfish is already running. Stop the existing instance first, or use 'triggerfish status' to check.

Denne deteksjonen er spesifikk for Windows og er basert på EBUSY / "os error 32" når loggfilen åpnes.

Hemmelighetlagring ​

Windows bruker den krypterte fillagringen (AES-256-GCM) på ~/.triggerfish/secrets.json. Det er ingen Windows Credential Manager-integrasjon. Behandle secrets.key-filen som sensitiv.

PowerShell-installasjonsmerknaer ​

PowerShell-installasjonsprogrammet (install.ps1):

  • Oppdager prosessorarkitektur (x64/arm64)
  • Installerer til %LOCALAPPDATA%\Triggerfish
  • Legger installasjonsmappen til bruker-PATH via registret
  • Kompilerer C#-tjenesteinpakningsskriptet
  • Registrerer og starter Windows-tjenesten

Hvis installasjonsprogrammet feiler ved tjenestekompilasjonstrinnet, kan du fortsatt kjøre Triggerfish manuelt:

powershell
triggerfish run    # Forgrunnsmedodus

Docker ​

Containerkjøretid ​

Docker-distribusjonen støtter både Docker og Podman. Deteksjon er automatisk, eller sett eksplisitt:

bash
TRIGGERFISH_CONTAINER_RUNTIME=podman

Bildedetaljer ​

  • Basis: gcr.io/distroless/cc-debian12 (minimal, ingen shell)
  • Feilsøkingsvariant: distroless:debug (inkluderer shell for feilsøking)
  • Kjører som UID 65534 (nonroot)
  • Init: true (PID 1 signalvideresending via tini)
  • Omstartspolicy: unless-stopped

Datapersistens ​

Alle vedvarende data er i /data-mappen inni containeren, støttet av et Docker navngitt volum:

/data/
  triggerfish.yaml        # Konfigurasjon
  secrets.json            # Krypterte hemmeligheter
  secrets.key             # Krypteringsnøkkel
  SPINE.md                # Agentidentitet
  TRIGGER.md              # Trigger-atferd
  data/triggerfish.db     # SQLite-database
  logs/                   # Loggfiler
  skills/                 # Installerte ferdigheter
  workspace/              # Agentarbeidsområder
  .deno/                  # Deno FFI-pluginbuffer

Miljøvariabler ​

VariabelStandardFormål
TRIGGERFISH_DATA_DIR/dataBasisdatakatalog
TRIGGERFISH_CONFIG/data/triggerfish.yamlKonfigurasjonsfilbane
TRIGGERFISH_DOCKERtrueAktiverer Docker-spesifikk atferd
DENO_DIR/data/.denoDeno-buffer (FFI-plugins)
HOME/dataHjemmekatalog for nonroot-bruker

Hemmeligheter i Docker ​

Docker-containere får ikke tilgang til vert-OS-nøkkelringen. Den krypterte fillagringen brukes automatisk. Krypteringsnøkkelen (secrets.key) og krypterte data (secrets.json) lagres i /data-volumet.

Sikkerhetsnotat: Alle med tilgang til Docker-volumet kan lese krypteringsnøkkelen. Sikre volumet på riktig måte. Vurder å bruke Docker secrets eller en hemmelighetbehandler for å injisere nøkkelen ved kjøretid i produksjon.

Porter ​

Compose-filen tilordner:

  • 18789 - Gateway WebSocket
  • 18790 - Tidepool A2UI

Ytterligere porter (WebChat på 8765, WhatsApp-webhook på 8443) må legges til i compose-filen hvis du aktiverer disse kanalene.

Kjøre oppsettveiviseren i Docker ​

bash
# Hvis containeren kjører
docker exec -it triggerfish triggerfish dive

# Hvis containeren ikke kjører (engangskjøring)
docker run -it -v triggerfish-data:/data ghcr.io/greghavens/triggerfish:latest dive

Oppdatering ​

bash
# Bruker innpakningsskriptet
triggerfish update

# Manuelt
docker compose pull
docker compose up -d

Feilsøking ​

Bruk feilsøkingsvarianten av bildet for problemsøking:

yaml
# I docker-compose.yml
image: ghcr.io/greghavens/triggerfish:debug

Dette inkluderer en shell slik at du kan kjøre kommandoer inne i containeren:

bash
docker exec -it triggerfish /busybox/sh

Flatpak (kun nettleser) ​

Triggerfish selv kjører ikke som en Flatpak, men kan bruke Flatpak-installerte nettlesere for nettleserautomatisering.

Oppdagede Flatpak-nettlesere ​

  • com.google.Chrome
  • org.chromium.Chromium
  • com.brave.Browser

Slik fungerer det ​

Triggerfish oppretter et midlertidig innpakningsskript som kaller flatpak run med hodeløse modusflagg, og starter deretter Chrome via det skriptet. Innpakningsskriptet skrives til en midlertidig katalog.

Vanlige problemer ​

  • Flatpak ikke installert. Binærfilen må være på /usr/bin/flatpak eller /usr/local/bin/flatpak.
  • Midlertidig katalog ikke skrivbar. Innpakningsskriptet må skrives til disk før kjøring.
  • Flatpak sandbox-konflikter. Noen Flatpak Chrome-bygg begrenser --remote-debugging-port. Hvis CDP-tilkoblingen mislykkes, prøv en ikke-Flatpak Chrome-installasjon.