gateway: port: 9000 components: central-context: description: Content storage API useful to get context into my data dir from anywhere on the LAN source: components/central-context notification-bridge: description: Desktop notification forwarder. This taps into your notifications system on the desktop and will forward all notifications the the central context server. source: components/notification-bridge castle-api: description: Castle API source: castle-api protonmail: description: ProtonMail email sync via Bridge source: components/protonmail install: path: alias: protonmail backup-collect: description: Collect files from various sources into backup directory source: components/backup-collect tool: system_dependencies: - rsync castle-app: description: Castle web app source: app build: commands: - - pnpm - build outputs: - dist/ devbox-connect: description: SSH tunnel manager with auto-reconnect source: components/devbox-connect install: path: alias: devbox-connect mbox2eml: description: MBOX to EML email converter source: components/mbox2eml install: path: alias: mbox2eml android-backup: description: Backup Android device using ADB source: components/android-backup install: path: alias: android-backup tool: system_dependencies: - adb browser: description: Browse the web using natural language via browser-use source: components/browser install: path: alias: browser docx-extractor: description: Extract content and metadata from Word .docx files source: components/docx-extractor install: path: alias: docx-extractor tool: system_dependencies: - pandoc docx2md: description: Convert Word .docx files to Markdown source: components/docx2md install: path: alias: docx2md tool: system_dependencies: - pandoc gpt: description: OpenAI text generation utility source: components/gpt install: path: alias: gpt html2text: description: Convert HTML content to plain text source: components/html2text install: path: alias: html2text md2pdf: description: Convert Markdown files to PDF source: components/md2pdf install: path: alias: md2pdf tool: system_dependencies: - pandoc - texlive-latex-base mdscraper: description: Combine text files into a single markdown document source: components/mdscraper install: path: alias: mdscraper pdf-extractor: description: Extract content and metadata from PDF files source: components/pdf-extractor install: path: alias: pdf-extractor pdf2md: description: Convert PDF files to Markdown source: components/pdf2md install: path: alias: pdf2md tool: system_dependencies: - pandoc - poppler-utils schedule: description: Manage systemd user timers and scheduled tasks source: components/schedule install: path: alias: schedule search: description: Manage self-contained searchable collections of files source: components/search install: path: alias: search text-extractor: description: Extract content and metadata from text files source: components/text-extractor install: path: alias: text-extractor services: castle-gateway: description: Caddy reverse proxy gateway run: runner: command argv: - caddy - run - --config - /home/payne/.castle/generated/Caddyfile - --adapter - caddyfile manage: systemd: exec_reload: caddy reload --config /home/payne/.castle/generated/Caddyfile --adapter caddyfile expose: http: internal: port: 9000 health_path: / central-context: component: central-context run: runner: python tool: central-context manage: systemd: {} expose: http: internal: port: 9001 health_path: /health proxy: caddy: path_prefix: /central-context notification-bridge: component: notification-bridge run: runner: python tool: notification-bridge defaults: env: CENTRAL_CONTEXT_URL: http://localhost:9001 BUCKET_NAME: notifications PORT: '9002' manage: systemd: {} expose: http: internal: port: 9002 health_path: /health proxy: caddy: path_prefix: /notifications castle-api: component: castle-api run: runner: python tool: castle-api manage: systemd: {} expose: http: internal: port: 9020 health_path: /health proxy: caddy: path_prefix: /api castle-mqtt: description: MQTT broker for inter-node mesh coordination run: runner: container image: eclipse-mosquitto:2 ports: 1883: 1883 volumes: - /data/castle/castle-mqtt/config:/mosquitto/config - /data/castle/castle-mqtt/data:/mosquitto/data manage: systemd: {} expose: http: internal: port: 1883 jobs: protonmail-sync: component: protonmail description: Sync ProtonMail email run: runner: command argv: - protonmail - sync schedule: '*/5 * * * *' defaults: env: PROTONMAIL_USERNAME: paul@payne.io PROTONMAIL_API_KEY: ${secret:PROTONMAIL_API_KEY} manage: systemd: {} backup-collect: component: backup-collect description: Collect files from various sources into backup directory run: runner: command argv: - backup-collect schedule: 0 2 * * * defaults: env: DBACKUP: /data/backup manage: systemd: {} backup-data: description: Nightly restic backup of /data to /storage run: runner: command argv: - backup-data schedule: 30 3 * * * defaults: env: RESTIC_REPOSITORY: /storage/restic-data RESTIC_PASSWORD_FILE: /home/payne/.config/restic-password manage: systemd: {}