Skip to content

Mga Tala sa Platform ​

Platform-specific na behavior, requirements, at mga quirks.

macOS ​

Service manager: launchd ​

Nagre-register ang Triggerfish bilang launchd agent sa:

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

Ang plist ay naka-set sa RunAtLoad: true at KeepAlive: true, kaya nagsisimula ang daemon sa login at nagre-restart kung mag-crash ito.

PATH capture ​

Kina-capture ng launchd plist ang iyong shell PATH sa oras ng pag-install. Kritikal ito dahil hindi niso-source ng launchd ang iyong shell profile. Kung nag-install ka ng MCP server dependencies (tulad ng npx, python) pagkatapos i-install ang daemon, hindi mahahanap ang mga binaries na iyon sa PATH ng daemon.

Fix: I-re-install ang daemon para i-update ang captured PATH:

bash
triggerfish stop
triggerfish dive --install-daemon

Quarantine ​

Nagla-lagay ang macOS ng quarantine flag sa mga na-download na binaries. Nili-clear ito ng installer gamit ang xattr -cr, pero kung manual mong na-download ang binary:

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

Keychain ​

Ang mga secrets ay naka-store sa macOS login keychain sa pamamagitan ng security CLI. Kung naka-lock ang Keychain Access, mababigo ang secret operations hanggang ma-unlock mo ito (karaniwang sa pag-login).

Homebrew Deno ​

Kung nag-build ka mula sa source at na-install ang Deno sa pamamagitan ng Homebrew, siguraduhing nasa iyong PATH ang Homebrew bin directory bago patakbuhin ang install script.


Linux ​

Service manager: systemd (user mode) ​

Tumatakbo ang daemon bilang systemd user service:

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

Linger ​

By default, tumitigil ang systemd user services kapag nag-log out ang user. Ine-enable ng Triggerfish ang linger sa oras ng pag-install:

bash
loginctl enable-linger $USER

Kung mabigo ito (hal., na-disable ito ng iyong system administrator), tumatakbo lang ang daemon habang naka-log in ka. Sa mga servers kung saan gusto mong mag-persist ang daemon, hilingin sa iyong admin na i-enable ang linger para sa iyong account.

PATH at environment ​

Kina-capture ng systemd unit ang iyong PATH at sine-set ang DENO_DIR=~/.cache/deno. Tulad ng macOS, ang mga pagbabago sa PATH pagkatapos ng installation ay nangangailangan ng pag-re-install ng daemon.

Ang unit ay eksplisitong sine-set din ang Environment=PATH=.... Kung hindi mahanap ng daemon ang MCP server binaries, ito ang pinaka-likely na dahilan.

Fedora Atomic / Silverblue / Bazzite ​

Ang Fedora Atomic desktops ay may /home na naka-symlink sa /var/home. Awtomatikong hina-handle ito ng Triggerfish kapag nire-resolve ang home directory, sinusundan ang symlinks para hanapin ang tunay na path.

Ang mga Flatpak-installed browsers ay dine-detect at nila-launch sa pamamagitan ng wrapper script na tumatawag ng flatpak run.

Headless servers ​

Sa mga servers na walang desktop environment, maaaring hindi tumatakbo ang GNOME Keyring / Secret Service daemon. Tingnan ang Secrets Troubleshooting para sa setup instructions.

SQLite FFI ​

Ang SQLite storage backend ay gumagamit ng @db/sqlite, na naglo-load ng native library sa pamamagitan ng FFI. Nangangailangan ito ng --allow-ffi Deno permission (kasama sa compiled binary). Sa ilang minimal Linux distributions, maaaring nawawala ang shared C library o mga kaugnay na dependencies. I-install ang base development libraries kung makakita ka ng FFI-related errors.


Windows ​

Service manager: Windows Service ​

Nag-i-install ang Triggerfish bilang Windows Service na pinangalanang "Triggerfish". Ang service ay ini-implement ng C# wrapper na kino-compile sa oras ng installation gamit ang csc.exe mula sa .NET Framework 4.x.

Mga Requirements:

  • .NET Framework 4.x (naka-install sa karamihan ng Windows 10/11 systems)
  • Administrator privileges para sa service installation
  • csc.exe accessible sa .NET Framework directory

Binary replacement sa mga updates ​

Hindi pinapayagan ng Windows ang pag-overwrite ng executable na kasalukuyang tumatakbo. Ang updater ay:

  1. Rini-rename ang tumatakbong binary sa triggerfish.exe.old
  2. Kino-copy ang bagong binary sa orihinal na path
  3. Nire-restart ang service
  4. Nili-clean up ang .old file sa susunod na start

Kung mabigo ang rename o copy, i-stop nang manual ang service bago mag-update.

ANSI color support ​

Ine-enable ng Triggerfish ang Virtual Terminal Processing para sa colored console output. Gumagana ito sa modern PowerShell at Windows Terminal. Maaaring hindi maayos na mag-render ng colors ang mas lumang cmd.exe windows.

Exclusive file locking ​

Gumagamit ang Windows ng exclusive file locks. Kung tumatakbo ang daemon at subukan mong magsimula ng isa pang instance, pinipigilan ito ng log file lock:

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

Specific sa Windows ang detection na ito at batay sa EBUSY / "os error 32" kapag binubuksan ang log file.

Secrets storage ​

Gumagamit ang Windows ng encrypted file store (AES-256-GCM) sa ~/.triggerfish/secrets.json. Walang Windows Credential Manager integration. Tratuhin ang secrets.key file bilang sensitive.

Mga tala sa PowerShell installer ​

Ang PowerShell installer (install.ps1):

  • Dine-detect ang processor architecture (x64/arm64)
  • Nag-i-install sa %LOCALAPPDATA%\Triggerfish
  • Dina-dagdag ang install directory sa user PATH sa pamamagitan ng registry
  • Kino-compile ang C# service wrapper
  • Nire-register at sinisimulang ang Windows Service

Kung mabigo ang installer sa service compilation step, maaari mo pa ring patakbuhin ang Triggerfish nang manual:

powershell
triggerfish run    # Foreground mode

Docker ​

Container runtime ​

Sinusuportahan ng Docker deployment ang parehong Docker at Podman. Automatic ang detection, o i-set nang eksplisito:

bash
TRIGGERFISH_CONTAINER_RUNTIME=podman

Mga detalye ng image ​

  • Base: gcr.io/distroless/cc-debian12 (minimal, walang shell)
  • Debug variant: distroless:debug (may kasamang shell para sa troubleshooting)
  • Tumatakbo bilang UID 65534 (nonroot)
  • Init: true (PID 1 signal forwarding sa pamamagitan ng tini)
  • Restart policy: unless-stopped

Data persistence ​

Lahat ng persistent data ay nasa /data directory sa loob ng container, na backed ng Docker named volume:

/data/
  triggerfish.yaml        # Config
  secrets.json            # Encrypted secrets
  secrets.key             # Encryption key
  SPINE.md                # Agent identity
  TRIGGER.md              # Trigger behavior
  data/triggerfish.db     # SQLite database
  logs/                   # Log files
  skills/                 # Installed skills
  workspace/              # Agent workspaces
  .deno/                  # Deno FFI plugin cache

Environment variables ​

VariableDefaultLayunin
TRIGGERFISH_DATA_DIR/dataBase data directory
TRIGGERFISH_CONFIG/data/triggerfish.yamlConfig file path
TRIGGERFISH_DOCKERtrueIne-enable ang Docker-specific behavior
DENO_DIR/data/.denoDeno cache (FFI plugins)
HOME/dataHome directory para sa nonroot user

Secrets sa Docker ​

Hindi maa-access ng Docker containers ang host OS keychain. Awtomatikong ginagamit ang encrypted file store. Ang encryption key (secrets.key) at encrypted data (secrets.json) ay naka-store sa /data volume.

Security note: Sinumang may access sa Docker volume ay makakabasa ng encryption key. I-secure nang naaangkop ang volume. Sa production, isaalang-alang ang paggamit ng Docker secrets o secrets manager para i-inject ang key sa runtime.

Mga Port ​

Ang compose file ay nagma-map ng:

  • 18789 - Gateway WebSocket
  • 18790 - Tidepool A2UI

Ang mga karagdagang ports (WebChat sa 8765, WhatsApp webhook sa 8443) ay kailangang idagdag sa compose file kung ie-enable mo ang mga channels na iyon.

Pagpapatakbo ng setup wizard sa Docker ​

bash
# Kung tumatakbo ang container
docker exec -it triggerfish triggerfish dive

# Kung hindi tumatakbo ang container (one-shot)
docker run -it -v triggerfish-data:/data ghcr.io/greghavens/triggerfish:latest dive

Pag-update ​

bash
# Gamit ang wrapper script
triggerfish update

# Manual
docker compose pull
docker compose up -d

Debugging ​

Gamitin ang debug variant ng image para sa troubleshooting:

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

Kasama dito ang shell para maka-exec ka sa container:

bash
docker exec -it triggerfish /busybox/sh

Flatpak (Browser Lang) ​

Ang Triggerfish mismo ay hindi tumatakbo bilang Flatpak, pero maaari nitong gamitin ang Flatpak-installed browsers para sa browser automation.

Mga detected Flatpak browsers ​

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

Paano Gumagana ​

Gumagawa ang Triggerfish ng temporary wrapper script na tumatawag ng flatpak run na may headless mode flags, pagkatapos nila-launch ang Chrome sa pamamagitan ng script na iyon. Ang wrapper ay sinusulat sa temp directory.

Mga karaniwang issue ​

  • Hindi naka-install ang Flatpak. Ang binary ay kailangang nasa /usr/bin/flatpak o /usr/local/bin/flatpak.
  • Hindi writable ang temp directory. Kailangang maisulat sa disk ang wrapper script bago i-execute.
  • Flatpak sandbox conflicts. Nire-restrict ng ilang Flatpak Chrome builds ang --remote-debugging-port. Kung mabigo ang CDP connection, subukan ang non-Flatpak Chrome installation.