Skip to main content

her-sync

Linux-native Sync-Tool für Agent-Share-Filesysteme (BDE, Email, CalDAV).
CLI-Befehl: her

Installation

pipx install "her-sync[watch]"

Aus Git:

pipx install --force "git+https://gitea.example.com/you/her-sync@main#egg=her-sync[watch]"

Entwicklung: pip install -e ".[watch,dev]"

Konfiguration

~/.her/

~/.her/
├── config.yml
├── profiles/bde-work/
│   ├── profile.yml       # share, event_handlers
│   ├── crm.yml           # bde: { ... }   (CRM/BDE-API)
│   ├── mail.yml          # email: { ... }
│   ├── calendar.yml      # caldav: { ... }
│   ├── files.yml         # files: { collections: [...] }
│   └── local.yml         # optional: Overrides (alphabetisch später = gewinnt)
├── state/bde-work/
└── share-bde/            # optional — Share kann auch woanders liegen

Alle .yml-Dateien im Profilordner werden alphabetisch geladen und deep-gemergt. Welches Plugin aktiv ist, ergibt sich nur aus dem YAML-Key (bde:, email:, caldav:, files:) — der Dateiname spielt keine Rolle. Fehlender Key = Plugin deaktiviert.

# profile.yml — Querverdrahtung zwischen Plugins
event_handlers:
  email:
    changed:
      debounce_seconds: 10
      handlers:
        - email: { command: sync }
        - caldav: { command: sync }

# local.yml — optional, überschreibt Teile aus calendar.yml o.ä.
caldav:
  months_past: 6
her profile init bde-work
her profile migrate-env --env-file .env --name bde-work
her secrets set bde-work/bde-password
her --profile bde-work status

CLI

her profile list|show|init|migrate-env|validate
her secrets set|delete|test
her daemon run|start|stop|status
her status

her bde collect cashflows
her bde collect cashflow-history --force
her bde apply cost-centers --dry-run

her files copy                 # alle Sammlungen kopieren
her files copy receipts        # nur eine Sammlung
her files move receipts        # verschieben statt kopieren

her email sync
her caldav ls
her caldav sync

Files-Plugin

Generisches Kopieren von Quellordnern ins Share-FS. Jede Sammlung definiert source, dest (relativ zum Share-Root oder absolut), optionale allow/deny-Glob-Muster und optional flat: true (nur Dateiname im Ziel, ohne Unterordner).

files:
  enabled: true
  collections:
    - name: receipts
      source: ~/Documents/Belege/incoming
      dest: inbox/receipts
      flat: true
      allow: ["*.pdf", "*.png", "*.jpg"]
      deny: ["*.tmp", "archiv/**"]

Paketstruktur

src/her_sync/
├── cli.py, profile.py, runtime.py, config.py   # Root: CLI + Profile + Facade
├── share_fs/layout.py                          # Share-Pfade (Agent-Vertrag)
├── io/paths.py                                 # Shared Pfad-Hilfen
├── events/                                     # Event-Orchestrierung (Daemon)
└── plugins/
    ├── bde/          # CRM: api/, collect/, apply/, schemas, config
    ├── files/        # Datei copy/move, config, collections
    ├── email/        # Mail-Sync (mbox/msf), filters, watcher
    └── caldav/       # Kalender-Sync, client, filters

Daemon

Start/Stop/Autostart laufen über systemd user — die Unit wird beim ersten her daemon start automatisch installiert (kein separates Install-Skript nötig).

her daemon start --profile bde-work              # starten
her daemon start --profile bde-work --autostart  # + Autostart beim Login
her daemon stop --profile bde-work
her daemon enable --profile bde-work           # nur Autostart an
her daemon disable --profile bde-work          # nur Autostart aus
her daemon status --profile bde-work           # Status + Log-Befehle

# Debug im Vordergrund (ohne systemd):
her daemon run --profile bde-work

Logs (Ausgabe auch bei daemon start / daemon status):

journalctl --user -u her@bde-work.service -f

Release (Repo-Checkout)

her secrets set release/her-pypi-token   # einmalig lokal
./scripts/her-release release --bump patch --pypi
pipx upgrade "her-sync[watch]"
# Falls Version nicht gefunden: python3 -m pip cache purge
#   pipx install --force --pip-args='--no-cache-dir' "her-sync[watch]"

Details: deploy/DISTRIBUTION.md

Metadata

Release files for her-sync 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for her-sync 0.6.0
File Size Uploaded
her_sync-0.6.0.tar.gz 74.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for her-sync 0.6.0
File Interpreter ABI Platform
her_sync-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 152.0 kB

Release files / her_sync-0.6.0.tar.gz

Download URL her_sync-0.6.0.tar.gz
Size 74.6 kB
Tags Source
SHA-256 checksum
How to use checksums
6286873310744211339694714a4b476f6c1b89019fb047d2f5853bf8c8246fd5
BLAKE2b-256 checksum
How to use checksums
51ecfc5534f8f11c449d1278a1870745c83846d8f96551c514c8778d230f90d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.5

Release files / her_sync-0.6.0-py3-none-any.whl

Download URL her_sync-0.6.0-py3-none-any.whl
Size 77.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7782cf8f42483d6f935d492b60e5b5d4dd2a5bcba164d37e49222e02f06d3ea6
BLAKE2b-256 checksum
How to use checksums
59bac4e20bfd7f0026066e927a1ef762997a20c8a74c51fe9f2cb3321062d4e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page