Files

2.4 KiB

JWeBot Configuration

JWeBot uses profile packages instead of repository-local environment files. Profiles are structurally similar to plugins: each package has a manifest, independent component files, private context, secrets, and optional overrides. Per-person SteamID mappings and Steam query aliases belong only in private context and are removed from redacted exports.

Public Template

config/templates/default/ is safe to commit and contains no real identity, host, account, API key, or incident data.

default/
  manifest.toml
  components/
    bot.toml
    providers.toml
    runtime.toml
    debug.toml
    notification.toml
    deployment.toml
  context/
    people.json
  secrets/
    runtime.env
  overrides/
    runtime.env
    root.env

Local Profile

Create and activate a local profile:

./tools/jwebot-config.py init personal --activate

The command writes only outside the repository:

~/.config/jwebot/
  current -> profiles/personal
  profiles/personal/
    ...source profile files...
    generated/
      runtime.env
      root.env
      private-context.json
      notification.json
      manifest.json

Source components are compiled into a temporary directory, validated, and renamed atomically. Runtime services read only current/generated/.

Private State

Runtime and migrated diagnostic material lives separately:

~/.local/state/jwebot/profiles/personal/
  debug/sessions/
  incidents/
  telemetry/
  archives/
  root/

Every profile and state directory is mode 0700; generated files, secrets, private context, and archives are mode 0600.

Import And Export

Import another profile directory or .tar.gz package:

./tools/jwebot-config.py import profile.tar.gz --activate

Create a redacted package for review:

./tools/jwebot-config.py export personal \
  --output /tmp/personal-redacted.tar.gz

The default export empties secrets and removes people/clock context. Use --include-private only for a deliberately protected local backup.

Legacy Migration

Archive old root-level debug files, incident reports, operational material, environment values, and static person aliases:

./tools/jwebot-config.py migrate-legacy personal \
  --repository /path/to/old/repository \
  --activate

Migration never adds private material to Git. The original source is left unchanged, and the imported material is copied into the private profile/state tree.