Platform Notes
Platform-specific behavior, requirements, आणि quirks.
macOS
Service manager: launchd
Triggerfish येथे launchd agent म्हणून register होतो:
~/Library/LaunchAgents/dev.triggerfish.agent.plistPlist RunAtLoad: true आणि KeepAlive: true ला set आहे, त्यामुळे daemon login वर start होतो आणि crash झाल्यास restart होतो.
PATH capture
Launchd plist install वेळी तुमचा shell PATH capture करतो. हे critical आहे कारण launchd तुमचा shell profile source करत नाही. Daemon install केल्यानंतर MCP server dependencies (जसे npx, python) install केल्यास, ते binaries daemon च्या PATH मध्ये नसतील.
Fix: PATH update करण्यासाठी daemon re-install करा:
bash
triggerfish stop
triggerfish dive --install-daemonQuarantine
macOS downloaded binaries ला quarantine flag apply करतो. Installer हे xattr -cr सह clear करतो, पण तुम्ही binary manually download केले असल्यास:
bash
xattr -cr /usr/local/bin/triggerfishKeychain
Secrets security CLI द्वारे macOS login keychain मध्ये stored आहेत. Keychain Access locked असल्यास, तुम्ही unlock करेपर्यंत (साधारणतः login करून) secret operations fail होतील.
Homebrew Deno
तुम्ही source मधून build करत असल्यास आणि Deno Homebrew द्वारे installed असल्यास, install script run करण्यापूर्वी Homebrew bin directory तुमच्या PATH मध्ये असल्याची खात्री करा.
Linux
Service manager: systemd (user mode)
Daemon systemd user service म्हणून run होतो:
~/.config/systemd/user/triggerfish.serviceLinger
Default नुसार, user log out झाल्यावर systemd user services stop होतात. Triggerfish install वेळी linger enable करतो:
bash
loginctl enable-linger $USERहे fail झाल्यास (उदा. तुमच्या system administrator ने ते disabled केले), daemon फक्त तुम्ही logged in असताना run होतो. Servers वर जेथे daemon persist व्हावे, तुमच्या account साठी linger enable करण्यास admin ला सांगा.
PATH आणि environment
Systemd unit तुमचा PATH capture करतो आणि DENO_DIR=~/.cache/deno set करतो. macOS प्रमाणे, installation नंतर PATH च्या changes साठी daemon re-install करणे आवश्यक आहे.
Unit Environment=PATH=... explicitly set देखील करतो. Daemon MCP server binaries सापडत नसल्यास, हे most likely cause आहे.
Fedora Atomic / Silverblue / Bazzite
Fedora Atomic desktops ला /home /var/home ला symlinked आहे. Triggerfish home directory resolve करताना हे automatically handle करतो, real path सापडण्यासाठी symlinks follow करतो.
Flatpak-installed browsers detected आणि flatpak run call करणाऱ्या wrapper script द्वारे launched होतात.
Headless servers
Desktop environment नसलेल्या servers वर, GNOME Keyring / Secret Service daemon running नसू शकतो. Setup instructions साठी Secrets Troubleshooting पहा.
SQLite FFI
SQLite storage backend @db/sqlite वापरतो, जे FFI द्वारे native library load करतो. यासाठी --allow-ffi Deno permission आवश्यक आहे (compiled binary मध्ये included). काही minimal Linux distributions वर, shared C library किंवा related dependencies missing असू शकतात. FFI-related errors दिसल्यास base development libraries install करा.
Windows
Service manager: Windows Service
Triggerfish "Triggerfish" नावाचे Windows Service म्हणून install होतो. Service installation दरम्यान csc.exe वापरून compiled C# wrapper द्वारे implement केले आहे.
Requirements:
- .NET Framework 4.x (बहुतेक Windows 10/11 systems वर installed)
- Service installation साठी Administrator privileges
- .NET Framework directory मध्ये
csc.exeaccessible
Updates दरम्यान Binary replacement
Windows currently running executable overwrite करण्याची परवानगी देत नाही. Updater:
- Running binary ला
triggerfish.exe.oldrename करतो - New binary original path ला copy करतो
- Service restart करतो
- पुढील start वर
.oldfile clean up करतो
Rename किंवा copy fail झाल्यास, updating पूर्वी service manually stop करा.
ANSI color support
Triggerfish colored console output साठी Virtual Terminal Processing enable करतो. हे modern PowerShell आणि Windows Terminal मध्ये काम करतो. जुन्या cmd.exe windows मध्ये colors correctly render होऊ शकत नाहीत.
Exclusive file locking
Windows exclusive file locks वापरतो. Daemon running असल्यावर दुसरी instance start करण्याचा प्रयत्न केल्यास, log file lock ते रोखतो:
Triggerfish is already running. Stop the existing instance first, or use 'triggerfish status' to check.हे detection Windows ला specific आहे आणि log file उघडताना EBUSY / "os error 32" वर based आहे.
Secrets storage
Windows ~/.triggerfish/secrets.json वर encrypted file store (AES-256-GCM) वापरतो. Windows Credential Manager integration नाही. secrets.key file sensitive म्हणून treat करा.
PowerShell installer notes
PowerShell installer (install.ps1):
- Processor architecture detect करतो (x64/arm64)
%LOCALAPPDATA%\Triggerfishला install करतो- Registry द्वारे user PATH ला install directory जोडतो
- C# service wrapper compile करतो
- Windows Service register आणि start करतो
Service compilation step वर installer fail झाल्यास, Triggerfish manually run करू शकता:
powershell
triggerfish run # Foreground modeDocker
Container runtime
Docker deployment Docker आणि Podman दोन्ही support करतो. Detection automatic आहे, किंवा explicitly set करा:
bash
TRIGGERFISH_CONTAINER_RUNTIME=podmanImage details
- Base:
gcr.io/distroless/cc-debian12(minimal, shell नाही) - Debug variant:
distroless:debug(troubleshooting साठी shell include) - UID 65534 (nonroot) म्हणून Runs
- Init:
true(PID 1 signal forwardingtiniद्वारे) - Restart policy:
unless-stopped
Data persistence
Container च्या आत /data directory मधील सर्व persistent data Docker named volume द्वारे backed:
/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 cacheEnvironment variables
| Variable | Default | Purpose |
|---|---|---|
TRIGGERFISH_DATA_DIR | /data | Base data directory |
TRIGGERFISH_CONFIG | /data/triggerfish.yaml | Config file path |
TRIGGERFISH_DOCKER | true | Docker-specific behavior enable करतो |
DENO_DIR | /data/.deno | Deno cache (FFI plugins) |
HOME | /data | nonroot user साठी Home directory |
Docker मध्ये Secrets
Docker containers host OS keychain access करू शकत नाहीत. Encrypted file store automatically वापरला जातो. Encryption key (secrets.key) आणि encrypted data (secrets.json) /data volume मध्ये stored आहेत.
Security note: Docker volume ला access असलेला कोणीही encryption key read करू शकतो. Volume योग्यरित्या secure करा. Production मध्ये, runtime वर key inject करण्यासाठी Docker secrets किंवा secrets manager वापरण्याचा विचार करा.
Ports
Compose file maps करतो:
18789- Gateway WebSocket18790- Tidepool A2UI
Additional ports (WebChat on 8765, WhatsApp webhook on 8443) compose file ला जोडणे आवश्यक आहे जर तुम्ही ते channels enable केले.
Docker मध्ये Setup Wizard Run करणे
bash
# Container running असल्यास
docker exec -it triggerfish triggerfish dive
# Container running नसल्यास (one-shot)
docker run -it -v triggerfish-data:/data ghcr.io/greghavens/triggerfish:latest diveUpdating
bash
# Wrapper script वापरत असल्यास
triggerfish update
# Manually
docker compose pull
docker compose up -dDebugging
Troubleshooting साठी image चा debug variant वापरा:
yaml
# docker-compose.yml मध्ये
image: ghcr.io/greghavens/triggerfish:debugयात shell include आहे त्यामुळे तुम्ही container मध्ये exec करू शकता:
bash
docker exec -it triggerfish /busybox/shFlatpak (Browser Only)
Triggerfish स्वतः Flatpak म्हणून run होत नाही, पण browser automation साठी Flatpak-installed browsers वापरू शकतो.
Detected Flatpak browsers
com.google.Chromeorg.chromium.Chromiumcom.brave.Browser
हे कसे काम करते
Triggerfish एक temporary wrapper script create करतो जो headless mode flags सह flatpak run call करतो, नंतर त्या script द्वारे Chrome launch करतो. Wrapper temp directory ला written आहे.
Common issues
- Flatpak installed नाही. Binary
/usr/bin/flatpakकिंवा/usr/local/bin/flatpakवर असणे आवश्यक आहे. - Temp directory writable नाही. Wrapper script execution पूर्वी disk ला written असणे आवश्यक आहे.
- Flatpak sandbox conflicts. काही Flatpak Chrome builds
--remote-debugging-portrestrict करतात. CDP connection fail झाल्यास, non-Flatpak Chrome installation try करा.
