- Updated the terminology from "components" to "programs" across the codebase, including in config loading, saving, and manifest specifications. - Introduced a new `stacks.py` file to handle lifecycle actions for development stacks, implementing handlers for Python and React Vite stacks. - Adjusted tests to reflect the new program structure and ensure proper functionality. - Revised documentation to align with the new terminology and structure, ensuring clarity on the purpose and configuration of programs, services, and jobs.
298 lines
6.8 KiB
YAML
298 lines
6.8 KiB
YAML
gateway:
|
|
port: 9000
|
|
|
|
programs:
|
|
central-context:
|
|
description: Content storage API useful to get context into my data dir from anywhere
|
|
on the LAN
|
|
source: components/central-context
|
|
stack: python-fastapi
|
|
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
|
|
stack: python-fastapi
|
|
castle-api:
|
|
description: Castle API
|
|
source: castle-api
|
|
stack: python-fastapi
|
|
protonmail:
|
|
description: ProtonMail email sync via Bridge
|
|
source: components/protonmail
|
|
stack: python-cli
|
|
install:
|
|
path:
|
|
alias: protonmail
|
|
backup-collect:
|
|
description: Collect files from various sources into backup directory
|
|
source: components/backup-collect
|
|
stack: python-cli
|
|
tool:
|
|
system_dependencies:
|
|
- rsync
|
|
castle-app:
|
|
description: Castle web app
|
|
source: app
|
|
stack: react-vite
|
|
build:
|
|
commands:
|
|
- - pnpm
|
|
- build
|
|
outputs:
|
|
- dist/
|
|
devbox-connect:
|
|
description: SSH tunnel manager with auto-reconnect
|
|
source: components/devbox-connect
|
|
stack: python-cli
|
|
install:
|
|
path:
|
|
alias: devbox-connect
|
|
mbox2eml:
|
|
description: MBOX to EML email converter
|
|
source: components/mbox2eml
|
|
stack: python-cli
|
|
install:
|
|
path:
|
|
alias: mbox2eml
|
|
android-backup:
|
|
description: Backup Android device using ADB
|
|
source: components/android-backup
|
|
stack: python-cli
|
|
install:
|
|
path:
|
|
alias: android-backup
|
|
tool:
|
|
system_dependencies:
|
|
- adb
|
|
browser:
|
|
description: Browse the web using natural language via browser-use
|
|
source: components/browser
|
|
stack: python-cli
|
|
install:
|
|
path:
|
|
alias: browser
|
|
docx-extractor:
|
|
description: Extract content and metadata from Word .docx files
|
|
source: components/docx-extractor
|
|
stack: python-cli
|
|
install:
|
|
path:
|
|
alias: docx-extractor
|
|
tool:
|
|
system_dependencies:
|
|
- pandoc
|
|
docx2md:
|
|
description: Convert Word .docx files to Markdown
|
|
source: components/docx2md
|
|
stack: python-cli
|
|
install:
|
|
path:
|
|
alias: docx2md
|
|
tool:
|
|
system_dependencies:
|
|
- pandoc
|
|
gpt:
|
|
description: OpenAI text generation utility
|
|
source: components/gpt
|
|
stack: python-cli
|
|
install:
|
|
path:
|
|
alias: gpt
|
|
html2text:
|
|
description: Convert HTML content to plain text
|
|
source: components/html2text
|
|
stack: python-cli
|
|
install:
|
|
path:
|
|
alias: html2text
|
|
md2pdf:
|
|
description: Convert Markdown files to PDF
|
|
source: components/md2pdf
|
|
stack: python-cli
|
|
install:
|
|
path:
|
|
alias: md2pdf
|
|
tool:
|
|
system_dependencies:
|
|
- pandoc
|
|
- texlive-latex-base
|
|
mdscraper:
|
|
description: Combine text files into a single markdown document
|
|
source: components/mdscraper
|
|
stack: python-cli
|
|
install:
|
|
path:
|
|
alias: mdscraper
|
|
pdf-extractor:
|
|
description: Extract content and metadata from PDF files
|
|
source: components/pdf-extractor
|
|
stack: python-cli
|
|
install:
|
|
path:
|
|
alias: pdf-extractor
|
|
pdf2md:
|
|
description: Convert PDF files to Markdown
|
|
source: components/pdf2md
|
|
stack: python-cli
|
|
install:
|
|
path:
|
|
alias: pdf2md
|
|
tool:
|
|
system_dependencies:
|
|
- pandoc
|
|
- poppler-utils
|
|
schedule:
|
|
description: Manage systemd user timers and scheduled tasks
|
|
source: components/schedule
|
|
stack: python-cli
|
|
install:
|
|
path:
|
|
alias: schedule
|
|
search:
|
|
description: Manage self-contained searchable collections of files
|
|
source: components/search
|
|
stack: python-cli
|
|
install:
|
|
path:
|
|
alias: search
|
|
text-extractor:
|
|
description: Extract content and metadata from text files
|
|
source: components/text-extractor
|
|
stack: python-cli
|
|
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: {}
|