feat: system service management (gyandoot service install|remove|status)

- Create systemd + launchd service templates in resources/
- Add gyandoot-core/src/service.rs module with full lifecycle
  - systemd: user service, daemon-reload, enable, start, stop, disable
  - launchd: macOS plist, load/unload, start/stop (launchctl)
- Add 'gyandoot service install|remove|status' CLI subcommand
- Update setup wizard: prompts 'Install system service? [y/N]'
- Update install.sh: prompts user for service install after binary
- Browser auto-starts at runtime (browser_manager), no separate service needed
- Camoufox installed via npm, auto-started by GyanDoot agent loop
This commit is contained in:
2026-06-11 23:23:49 +05:30
parent f2d612bd28
commit b2650a569c
8 changed files with 615 additions and 83 deletions

View File

@@ -0,0 +1,31 @@
[Unit]
Description=GyanDoot v2.0 — AI Agent Platform
Documentation=https://git.gyannetra.in/gnpl_admin/gyandoot-v2
After=network.target network-online.target
Wants=network-online.target
[Service]
Type=simple
User=%USER%
Group=%GROUP%
ExecStart=%BINARY% serve --host 127.0.0.1 --port 8777
Restart=on-failure
RestartSec=5
TimeoutStopSec=10
KillMode=mixed
StandardOutput=append:%HOME%/.gyandoot/service.log
StandardError=append:%HOME%/.gyandoot/service.log
# Environment
Environment=GYANDOOT_CONFIG=%HOME%/.config/gyandoot/config.toml
Environment=GYANDOOT_LOG=info
# Security hardening
NoNewPrivileges=true
PrivateTmp=true
ProtectHome=read-only
ProtectSystem=strict
ReadWritePaths=%HOME%/.gyandoot %HOME%/.config/gyandoot
[Install]
WantedBy=multi-user.target