Skip to content

Plattformsanteckningar ​

Plattformsspecifikt beteende, krav och egenheter.

macOS ​

Tjänsthanterare: launchd ​

Triggerfish registreras som en launchd-agent på:

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

Plist:en är inställd på RunAtLoad: true och KeepAlive: true, så daemonen startar vid inloggning och startar om om den kraschar.

PATH-fångst ​

Launchd plist:en fångar din skal-PATH vid installeringstillfället. Det är kritiskt eftersom launchd inte läser in din skalsprofil. Om du installerar MCP-serverberoenden (som npx, python) efter att ha installerat daemonen kommer dessa binärer inte att finnas i daemonens PATH.

Åtgärd: Ominstallera daemonen för att uppdatera den fångade PATH:

bash
triggerfish stop
triggerfish dive --install-daemon

Karantän ​

macOS tillämpar en karantänflagga på nedladdade binärer. Installationsverktyget rensar detta med xattr -cr, men om du laddade ner binären manuellt:

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

Nyckelring ​

Hemligheter lagras i macOS-inloggningsnyckelringen via CLI:et security. Om Keychain Access är låst kommer hemliga operationer att misslyckas tills du låser upp det (vanligtvis genom att logga in).

Homebrew Deno ​

Om du bygger från källkod och Deno installerades via Homebrew, se till att Homebrews bin-katalog finns i din PATH innan du kör installationsskriptet.


Linux ​

Tjänsthanterare: systemd (användarläge) ​

Daemonen körs som en systemd-användartjänst:

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

Linger ​

Som standard slutar systemd-användartjänster när användaren loggar ut. Triggerfish aktiverar linger vid installeringstillfället:

bash
loginctl enable-linger $USER

Om detta misslyckas (t.ex. din systemadministratör har inaktiverat det) körs daemonen bara medan du är inloggad. På servrar där du vill att daemonen ska kvarstå, be din administratör att aktivera linger för ditt konto.

PATH och miljö ​

Systemd-enheten fångar din PATH och anger DENO_DIR=~/.cache/deno. Precis som macOS kräver ändringar av PATH efter installation ominstallation av daemonen.

Enheten anger också Environment=PATH=... explicit. Om daemonen inte kan hitta MCP-serverbinärer är detta den troligaste orsaken.

Fedora Atomic / Silverblue / Bazzite ​

Fedora Atomic-skrivbord har /home symlänkat till /var/home. Triggerfish hanterar detta automatiskt när hemkatalogen löses upp, följer symboliska länkar för att hitta den verkliga sökvägen.

Flatpak-installerade webbläsare identifieras och startas via ett omskriptsskript som anropar flatpak run.

Headless-servrar ​

På servrar utan skrivbordsmiljö kanske GNOME Keyring / Secret Service-daemonen inte körs. Se Hemligheter-felsökning för installationsinstruktioner.

SQLite FFI ​

SQLite-lagringsbakänden använder @db/sqlite, som laddar ett inbyggt bibliotek via FFI. Det kräver --allow-ffi-Deno-behörigheten (inkluderad i den kompilerade binären). På vissa minimala Linux-distributioner kan det delade C-biblioteket eller relaterade beroenden saknas. Installera basutvecklingsbibliotek om du ser FFI-relaterade fel.


Windows ​

Tjänsthanterare: Windows-tjänst ​

Triggerfish installeras som en Windows-tjänst med namnet "Triggerfish". Tjänsten implementeras av ett C#-omskript kompilerat under installationen med csc.exe från .NET Framework 4.x.

Krav:

  • .NET Framework 4.x (installerat på de flesta Windows 10/11-system)
  • Administratörsprivilegier för tjänsteinstallation
  • csc.exe tillgänglig i .NET Framework-katalogen

Binärersättning under uppdateringar ​

Windows tillåter inte att skriva över en körbar fil som körs för närvarande. Uppdateringsverktyget:

  1. Byter namn på den körande binären till triggerfish.exe.old
  2. Kopierar den nya binären till den ursprungliga sökvägen
  3. Startar om tjänsten
  4. Rensar upp .old-filen vid nästa start

Om namnbyte eller kopiering misslyckas, stoppa tjänsten manuellt innan uppdatering.

ANSI-färgstöd ​

Triggerfish aktiverar Virtual Terminal Processing för färgad konsoloutput. Det fungerar i modern PowerShell och Windows Terminal. Äldre cmd.exe-fönster kanske inte renderar färger korrekt.

Exklusiv fillåsning ​

Windows använder exklusiva fillåsningar. Om daemonen körs och du försöker starta en annan instans förhindrar loggfillåsningen det:

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

Denna identifiering är specifik för Windows och baseras på EBUSY / "os error 32" när loggfilen öppnas.

Hemlighetlagring ​

Windows använder det krypterade filarkivet (AES-256-GCM) på ~/.triggerfish/secrets.json. Det finns ingen Windows Credential Manager-integration. Behandla filen secrets.key som känslig.

PowerShell-installationsanteckningar ​

PowerShell-installationsskriptet (install.ps1):

  • Identifierar processorarkitektur (x64/arm64)
  • Installerar till %LOCALAPPDATA%\Triggerfish
  • Lägger till installationskatalogen till användar-PATH via registret
  • Kompilerar C#-tjänsteomskriptet
  • Registrerar och startar Windows-tjänsten

Om installationsverktyget misslyckas vid tjänstekompileringssteget kan du fortfarande köra Triggerfish manuellt:

powershell
triggerfish run    # Förgrundsläge

Docker ​

Containerkörtid ​

Docker-distributionen stöder både Docker och Podman. Identifiering är automatisk, eller ange explicit:

bash
TRIGGERFISH_CONTAINER_RUNTIME=podman

Avbildningsdetaljer ​

  • Bas: gcr.io/distroless/cc-debian12 (minimal, inget skal)
  • Felsökningsvariant: distroless:debug (inkluderar skal för felsökning)
  • Körs som UID 65534 (nonroot)
  • Init: true (PID 1 signalvidarebefordran via tini)
  • Omstartspolicy: unless-stopped

Datapersistens ​

All beständig data finns i katalogen /data inuti containern, backas upp av en Docker-namngiven volym:

/data/
  triggerfish.yaml        # Konfiguration
  secrets.json            # Krypterade hemligheter
  secrets.key             # Krypteringsnyckel
  SPINE.md                # Agentidentitet
  TRIGGER.md              # Triggerbeteende
  data/triggerfish.db     # SQLite-databas
  logs/                   # Loggfiler
  skills/                 # Installerade kunskaper
  workspace/              # Agentarbetsytor
  .deno/                  # Deno FFI-plugincache

Miljövariabler ​

VariabelStandardSyfte
TRIGGERFISH_DATA_DIR/dataBasdata-katalog
TRIGGERFISH_CONFIG/data/triggerfish.yamlKonfigurationsfilsökväg
TRIGGERFISH_DOCKERtrueAktiverar Docker-specifikt beteende
DENO_DIR/data/.denoDeno-cache (FFI-plugins)
HOME/dataHemkatalog för nonroot-användare

Hemligheter i Docker ​

Docker-containrar kan inte komma åt värdens OS-nyckelring. Det krypterade filarkivet används automatiskt. Krypteringsnyckeln (secrets.key) och krypterade data (secrets.json) lagras i /data-volymen.

Säkerhetsnotering: Alla med tillgång till Docker-volymen kan läsa krypteringsnyckeln. Säkra volymen på lämpligt sätt. I produktion, överväg att använda Docker-hemligheter eller en hemlighethanterare för att injicera nyckeln vid körtid.

Portar ​

Compose-filen mappar:

  • 18789 — Gateway WebSocket
  • 18790 — Tidepool A2UI

Ytterligare portar (WebChat på 8765, WhatsApp webhook på 8443) måste läggas till i compose-filen om du aktiverar dessa kanaler.

Köra installationsguiden i Docker ​

bash
# Om containern körs
docker exec -it triggerfish triggerfish dive

# Om containern inte körs (engångskörning)
docker run -it -v triggerfish-data:/data ghcr.io/greghavens/triggerfish:latest dive

Uppdatering ​

bash
# Använda omskriptsskriptet
triggerfish update

# Manuellt
docker compose pull
docker compose up -d

Felsökning ​

Använd felsökningsvarianten av avbildningen för felsökning:

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

Det inkluderar ett skal så att du kan köra exec in i containern:

bash
docker exec -it triggerfish /busybox/sh

Flatpak (Enbart webbläsare) ​

Triggerfish självt körs inte som ett Flatpak, men det kan använda Flatpak-installerade webbläsare för webbläsarautomatisering.

Identifierade Flatpak-webbläsare ​

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

Hur det fungerar ​

Triggerfish skapar ett temporärt omskriptsskript som anropar flatpak run med headless-lägesflaggor och startar sedan Chrome via det skriptet. Omskriptet skrivs till en temp-katalog.

Vanliga problem ​

  • Flatpak inte installerat. Binären måste finnas på /usr/bin/flatpak eller /usr/local/bin/flatpak.
  • Temp-katalog inte skrivbar. Omskriptsskriptet måste skrivas till disk innan körning.
  • Flatpak-sandboxkonflikter. Vissa Flatpak Chrome-byggen begränsar --remote-debugging-port. Om CDP-anslutning misslyckas, prova en icke-Flatpak Chrome-installation.