HANDOVER.md
# jfmsrv01 — Generic Web Hosting / AI / Transcription Server Handover Last updated: 2026-05-30 Server: jfmsrv01 Internal IP: 192.168.100.197 External IP: 103.138.201.66 Timezone: Australia/Perth ## Current workflow Use the generic server workflow: - /opt/jfmsrv01/scripts/HANDOVER.md - /opt/jfmsrv01/scripts/CHANGELOG.md - /opt/jfmsrv01/scripts/RULES.md - /opt/jfmsrv01/scripts/publish_handoff.sh Old /opt/legaltranscribe/scripts/ paths are stale historical references. ## Public handoff - https://vqngx6j8dc9q1lvt7g2a7a646q2t.jfmcommunications.com.au/vqngx6j8dc9q1lvt7g2a7a646q2t/ - https://vqngx6j8dc9q1lvt7g2a7a646q2t.jfmcommunications.com.au/server/HANDOVER.html Internal legacy handoff: - http://192.168.100.197:9002/vqngx6j8dc9q1lvt7g2a7a646q2t/ ## Projects ### Mainsite - URL: http://192.168.100.197/ - App path: /var/www/mainsite - Stack: Statamic / Laravel 13 / PHP 8.3-FPM - Nginx: /etc/nginx/sites-available/mainsite ### Admin - URL: http://192.168.100.197:8080/admin - App path: /var/www/admin - Stack: Filament / Laravel 13 / PHP 8.3-FPM - Nginx: /etc/nginx/sites-available/admin ### GoSeek AI Workbench - URL: http://192.168.100.197:8090/admin - Chat: http://192.168.100.197:8090/admin/chat - AI Providers: http://192.168.100.197:8090/admin/ai-providers - App path: /var/www/goseek - Stack: Filament / Laravel 13 / PHP 8.3-FPM - Nginx: /etc/nginx/sites-available/goseek Important GoSeek files: - app/Models/AiProvider.php - app/Filament/Resources/AiProviderResource.php - app/Services/GoSeek/ProviderRouter.php - app/Services/GoSeek/ChatService.php - app/Services/GoSeek/ToolEngine.php - app/Http/Controllers/Api/ChatController.php - resources/views/filament/pages/chat.blade.php - resources/views/chat.blade.php Provider rules: - Ollama is the only local provider. - OpenAI, Anthropic, Google, Deepseek, Kimi, Groq, Mistral, xAI and Cohere are cloud providers. - API keys must be stored encrypted. - API keys must never be printed in logs, handover files, source browsers, shell history, or chat. ## Handoff portal - Path: /var/www/handoff - Public root: /var/www/handoff/public - Canonical folder: /var/www/handoff/public/vqngx6j8dc9q1lvt7g2a7a646q2t - Nginx: /etc/nginx/sites-available/handoff and /etc/nginx/sites-available/handoff-public-ssl ## Rules - Use heredoc-to-file scripts for patches. - Back up files before editing. - Repair broken patches in place by default. - Roll back only for outage recovery or high-risk repair. - Update HANDOVER.md and CHANGELOG.md after changes. - Publish handoff after meaningful changes. - Do not publish .env, API keys, passwords, private keys, vendor, node_modules, sessions, cache files, or unsanitised logs. ## Public source browser note The public source browsers are enabled temporarily so ChatGPT can inspect first-party PHP code. Disable or restrict them when not actively needed. --- ## Update - 2026-05-30 - Fresh handoff run workflow A cache-busting handoff publish wrapper now exists: - /opt/jfmsrv01/scripts/publish_fresh_handoff_run.sh Use this when files need to be re-read regularly by ChatGPT or browsers. It creates: - https://vqngx6j8dc9q1lvt7g2a7a646q2t.jfmcommunications.com.au/vqngx6j8dc9q1lvt7g2a7a646q2t/runs/<timestamp>/ - https://vqngx6j8dc9q1lvt7g2a7a646q2t.jfmcommunications.com.au/vqngx6j8dc9q1lvt7g2a7a646q2t/runs/<timestamp>/server/HANDOVER.html - https://vqngx6j8dc9q1lvt7g2a7a646q2t.jfmcommunications.com.au/vqngx6j8dc9q1lvt7g2a7a646q2t/runs/<timestamp>/source/goseek/index.html The non-slug alias /server/HANDOVER.html is now routed to the current canonical slug tree to avoid stale root-level files. --- ## Fresh handoff run - 20260530-160357 Use this unique run URL for ChatGPT/browser inspection to avoid stale cache: - https://vqngx6j8dc9q1lvt7g2a7a646q2t.jfmcommunications.com.au/vqngx6j8dc9q1lvt7g2a7a646q2t/runs/20260530-160357/ - https://vqngx6j8dc9q1lvt7g2a7a646q2t.jfmcommunications.com.au/vqngx6j8dc9q1lvt7g2a7a646q2t/runs/20260530-160357/server/HANDOVER.html - https://vqngx6j8dc9q1lvt7g2a7a646q2t.jfmcommunications.com.au/vqngx6j8dc9q1lvt7g2a7a646q2t/runs/20260530-160357/source/goseek/index.html