KeiSeiKit-1.0/install/launchd-templates
Parfii-bot 0be354a920 KeiSeiKit-public — clean state
Single-commit clean baseline after security scrub of niche-tells,
project codenames, internal jargon, and contributor-email leaks.

Contents:
- 100 Rust crates (_primitives/_rust/)
- 37 agent manifests (_manifests/) + generated specs (_generated/)
- 67 user-invocable skills (skills/)
- 33 hooks (hooks/)
- Composition blocks (_blocks/)
- Documentation (docs/, README.md)
- TS adapter packages (_ts_packages/)
- Assembler (_assembler/)
- Roles (_roles/)
- Templates (_templates/)
- Forgejo CI (.forgejo/)

Author: Denis Parfionovich <info@greendragon.info>

License: see LICENSE.
2026-05-01 12:09:03 +08:00
..
book.toml.tmpl KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
datasette.plist.tmpl KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
forgejo-runner.config.yaml.tmpl KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
forgejo-runner.plist.tmpl KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
forgejo.app.ini.tmpl KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
forgejo.plist.tmpl KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
mdbook-rebuilder.plist.tmpl KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
mdbook-server.plist.tmpl KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
README.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
restic-backup.plist.tmpl KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
restic.env.tmpl KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
zoekt-indexer.plist.tmpl KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
zoekt-webserver.plist.tmpl KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00

launchd plist templates — dev-hub bundle

Each <service>.plist.tmpl is a launchd LaunchAgent template with ${VAR} placeholders that are substituted at install time by install/lib-launchd.sh.

Substitution variables

Variable Source Example
${HOME} $HOME env var of installing user /Users/alice
${USER} $USER env var alice
${BREW} $(brew --prefix) /opt/homebrew (Apple Silicon) or /usr/local
${KIT} ~/.claude/agents/_primitives full path to kit primitives root
${LOGS} ~/Library/Logs/keisei/<service> per-service log dir (auto-created)
${DATA} ~/Library/Application Support/keisei/<service> per-service data dir (auto-created)

Naming convention

  • File: <service>.plist.tmpl
  • Label: com.keisei.<service> (must match Label key inside)
  • Output: ~/Library/LaunchAgents/com.keisei.<service>.plist (rendered)

Convention for new templates

  1. Always RunAtLoad=true + KeepAlive=true for long-lived daemons
  2. Always set StandardOutPath and StandardErrorPath under ${LOGS}/
  3. Always WorkingDirectory=${DATA} so service has a writeable cwd
  4. Resource limits via SoftResourceLimits / HardResourceLimits dict
  5. macOS arm64 only (kit doesn't ship Linux service-mgmt)

Activation

Renderer (install/lib-launchd.sh::render_plist) reads <svc>.plist.tmpl, substitutes vars, writes to ~/Library/LaunchAgents/com.keisei.<svc>.plist, runs launchctl bootstrap gui/$(id -u) <path> to activate. brew services start <svc> is preferred when the service is brewed (it wraps launchctl).